Browse Source

Merge pull request #33 from stiXits/master

Demo build configuration with gradle
pull/34/merge
Decebal Suiu 10 years ago
parent
commit
baee04b909
  1. 2
      demo_gradle/.gitignore
  2. 1
      demo_gradle/api/.gitignore
  3. 5
      demo_gradle/api/build.gradle
  4. 24
      demo_gradle/api/src/main/java/ro/fortsoft/pf4j/demo/api/Greeting.java
  5. 1
      demo_gradle/app/.gitignore
  6. 15
      demo_gradle/app/build.gradle
  7. 96
      demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java
  8. 29
      demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/WhazzupGreeting.java
  9. 16
      demo_gradle/app/src/main/resources/log4j.properties
  10. 13
      demo_gradle/build.gradle
  11. 6
      demo_gradle/plugins/disabled.txt
  12. 6
      demo_gradle/plugins/enabled.txt
  13. 1
      demo_gradle/plugins/plugin1/.gitignore
  14. 25
      demo_gradle/plugins/plugin1/build.gradle
  15. 5
      demo_gradle/plugins/plugin1/plugin.properties
  16. 52
      demo_gradle/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java
  17. 1
      demo_gradle/plugins/plugin2/.gitignore
  18. 25
      demo_gradle/plugins/plugin2/build.gradle
  19. 5
      demo_gradle/plugins/plugin2/plugin.properties
  20. 51
      demo_gradle/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java
  21. 4
      demo_gradle/settings.gradle

2
demo_gradle/.gitignore vendored

@ -0,0 +1,2 @@
build
.gradle

1
demo_gradle/api/.gitignore vendored

@ -0,0 +1 @@
build

5
demo_gradle/api/build.gradle

@ -0,0 +1,5 @@
dependencies {
compile 'ro.fortsoft.pf4j:pf4j:0.4'
compile 'org.apache.commons:commons-lang3:3.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

24
demo_gradle/api/src/main/java/ro/fortsoft/pf4j/demo/api/Greeting.java

@ -0,0 +1,24 @@
/*
* Copyright 2012 Decebal Suiu
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
* the License. You may obtain a copy of the License in the LICENSE file, or at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package ro.fortsoft.pf4j.demo.api;
import ro.fortsoft.pf4j.ExtensionPoint;
/**
* @author Decebal Suiu
*/
public interface Greeting extends ExtensionPoint {
public String getGreeting();
}

1
demo_gradle/app/.gitignore vendored

@ -0,0 +1 @@
build

15
demo_gradle/app/build.gradle

@ -0,0 +1,15 @@
apply plugin:'application'
mainClassName = 'ro.fortsoft.pf4j.demo.Boot'
dependencies {
compile project(':api')
compile 'ro.fortsoft.pf4j:pf4j:0.4'
compile 'org.apache.commons:commons-lang3:3.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
jar {
baseName = 'Plugin Demo'
version = '0.1.0'
}

96
demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java

@ -0,0 +1,96 @@
/*
* Copyright 2012 Decebal Suiu
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
* the License. You may obtain a copy of the License in the LICENSE file, or at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package ro.fortsoft.pf4j.demo;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import ro.fortsoft.pf4j.DefaultPluginManager;
import ro.fortsoft.pf4j.PluginManager;
import ro.fortsoft.pf4j.PluginWrapper;
import ro.fortsoft.pf4j.demo.api.Greeting;
/**
* A boot class that start the demo.
*
* @author Decebal Suiu
*/
public class Boot {
public static void main(String[] args) {
// print logo
printLogo();
// create the plugin manager
final PluginManager pluginManager = new DefaultPluginManager();
// load the plugins
pluginManager.loadPlugins();
// enable a disabled plugin
// pluginManager.enablePlugin("welcome-plugin");
// start (active/resolved) the plugins
pluginManager.startPlugins();
System.out.println("Plugindirectory: ");
System.out.println("\t" + System.getProperty("pf4j.pluginsDir", "plugins") + "\n");
// retrieves the extensions for Greeting extension point
List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);
System.out.println(String.format("Found %d extensions for extension point '%s'", greetings.size(), Greeting.class.getName()));
for (Greeting greeting : greetings) {
System.out.println(">>> " + greeting.getGreeting());
}
// // print extensions from classpath (non plugin)
// System.out.println(String.format("Extensions added by classpath:"));
// Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null);
// for (String extension : extensionClassNames) {
// System.out.println(" " + extension);
// }
// print extensions for each started plugin
List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins();
for (PluginWrapper plugin : startedPlugins) {
String pluginId = plugin.getDescriptor().getPluginId();
System.out.println(String.format("Extensions added by plugin '%s':", pluginId));
// extensionClassNames = pluginManager.getExtensionClassNames(pluginId);
// for (String extension : extensionClassNames) {
// System.out.println(" " + extension);
// }
}
// stop the plugins
pluginManager.stopPlugins();
/*
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
pluginManager.stopPlugins();
}
});
*/
}
private static void printLogo() {
System.out.println(StringUtils.repeat("#", 40));
System.out.println(StringUtils.center("PF4J-DEMO", 40));
System.out.println(StringUtils.repeat("#", 40));
}
}

29
demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/WhazzupGreeting.java

@ -0,0 +1,29 @@
/*
* Copyright 2014 Decebal Suiu
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
* the License. You may obtain a copy of the License in the LICENSE file, or at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package ro.fortsoft.pf4j.demo;
import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.demo.api.Greeting;
/**
* @author Decebal Suiu
*/
@Extension
public class WhazzupGreeting implements Greeting {
@Override
public String getGreeting() {
return "Whazzup";
}
}

16
demo_gradle/app/src/main/resources/log4j.properties

@ -0,0 +1,16 @@
log4j.rootLogger=DEBUG, Console
#
# PF4J log
#
log4j.logger.ro.fortsoft.pf4j=DEBUG, Console
log4j.logger.ro.fortsoft.pf4j.PluginClassLoader=WARN, Console
log4j.additivity.ro.fortsoft.pf4j=false
#
# Appenders
#
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.conversionPattern=%-5p - %-32.32c{1} - %m\n
log4j.appender.Console.layout.ConversionPattern=%d %p %c - %m%n

13
demo_gradle/build.gradle

@ -0,0 +1,13 @@
subprojects {
apply plugin: 'java'
repositories {
mavenLocal()
mavenCentral()
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
}

6
demo_gradle/plugins/disabled.txt

@ -0,0 +1,6 @@
########################################
# - load all plugins except these
# - add one plugin id on each line
# - put this file in plugins folder
########################################
#welcome-plugin

6
demo_gradle/plugins/enabled.txt

@ -0,0 +1,6 @@
########################################
# - load only these plugins
# - add one plugin id on each line
# - put this file in plugins folder
########################################
#welcome-plugin

1
demo_gradle/plugins/plugin1/.gitignore vendored

@ -0,0 +1 @@
build

25
demo_gradle/plugins/plugin1/build.gradle

@ -0,0 +1,25 @@
jar {
baseName = 'WelcomePlugin'
version = '0.1.0'
manifest {
attributes 'Plugin-Class' : 'ro.fortsoft.pf4j.demo.welcome.WelcomePlugin',
'Plugin-Id' : 'WelcomePlugin',
'Plugin-Version' : '1.0',
'Plugin-Provider' : 'Decebal Suiu'
}
}
task plugin(type: Jar) {
baseName = 'WelcomePlugin'
version = '0.1.0'
into('classes')
extension('zip')
with jar
}
dependencies {
compile project(':api')
compile 'ro.fortsoft.pf4j:pf4j:0.4'
compile 'org.apache.commons:commons-lang3:3.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

5
demo_gradle/plugins/plugin1/plugin.properties

@ -0,0 +1,5 @@
plugin.id=welcome-plugin
plugin.class=ro.fortsoft.pf4j.demo.welcome.WelcomePlugin
plugin.version=0.0.1
plugin.provider=Decebal Suiu
plugin.dependencies=

52
demo_gradle/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java

@ -0,0 +1,52 @@
/*
* Copyright 2012 Decebal Suiu
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
* the License. You may obtain a copy of the License in the LICENSE file, or at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package ro.fortsoft.pf4j.demo.welcome;
import org.apache.commons.lang3.StringUtils;
import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper;
import ro.fortsoft.pf4j.demo.api.Greeting;
/**
* @author Decebal Suiu
*/
public class WelcomePlugin extends Plugin {
public WelcomePlugin(PluginWrapper wrapper) {
super(wrapper);
}
@Override
public void start() {
System.out.println("WelcomePlugin.start()");
System.out.println(StringUtils.upperCase("WelcomePlugin"));
}
@Override
public void stop() {
System.out.println("WelcomePlugin.stop()");
}
@Extension
public static class WelcomeGreeting implements Greeting {
@Override
public String getGreeting() {
return "Welcome";
}
}
}

1
demo_gradle/plugins/plugin2/.gitignore vendored

@ -0,0 +1 @@
build

25
demo_gradle/plugins/plugin2/build.gradle

@ -0,0 +1,25 @@
jar {
baseName = 'HelloPlugin'
version = '0.1.0'
manifest {
attributes 'Plugin-Class' : 'ro.fortsoft.pf4j.demo.welcome.HelloPlugin',
'Plugin-Id' : 'HelloPlugin',
'Plugin-Version' : '1.0',
'Plugin-Provider' : 'Decebal Suiu'
}
}
task plugin(type: Jar) {
baseName = 'HelloPlugin'
version = '0.1.0'
into('classes')
extension('zip')
with jar
}
dependencies {
compile project(':api')
compile 'ro.fortsoft.pf4j:pf4j:0.4'
compile 'org.apache.commons:commons-lang3:3.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

5
demo_gradle/plugins/plugin2/plugin.properties

@ -0,0 +1,5 @@
plugin.id=hello-plugin
plugin.class=ro.fortsoft.pf4j.demo.hello.HelloPlugin
plugin.version=0.0.1
plugin.provider=Decebal Suiu
plugin.dependencies=

51
demo_gradle/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java

@ -0,0 +1,51 @@
/*
* Copyright 2012 Decebal Suiu
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with
* the License. You may obtain a copy of the License in the LICENSE file, or at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package ro.fortsoft.pf4j.demo.hello;
import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper;
import ro.fortsoft.pf4j.demo.api.Greeting;
/**
* A very simple plugin.
*
* @author Decebal Suiu
*/
public class HelloPlugin extends Plugin {
public HelloPlugin(PluginWrapper wrapper) {
super(wrapper);
}
@Override
public void start() {
System.out.println("HelloPlugin.start()");
}
@Override
public void stop() {
System.out.println("HelloPlugin.stop()");
}
@Extension(ordinal=1)
public static class HelloGreeting implements Greeting {
@Override
public String getGreeting() {
return "Hello";
}
}
}

4
demo_gradle/settings.gradle

@ -0,0 +1,4 @@
include 'api'
include 'app'
include 'plugins/plugin1'
include 'plugins/plugin2'
Loading…
Cancel
Save