From 6df8db4c34abb0fbbeddda7cee39124a53c4cdf5 Mon Sep 17 00:00:00 2001 From: Decebal Suiu Date: Thu, 3 Oct 2013 16:01:16 +0300 Subject: add RuntimeMode with DEVELOPMENT and DEPLOYMENT values and working on DEVELOPMENT mode --- .../src/main/java/ro/fortsoft/pf4j/demo/Boot.java | 212 ++++++----------- demo/plugins/plugin1/pom.xml | 254 ++++++++++----------- .../fortsoft/pf4j/demo/welcome/WelcomePlugin.java | 10 + demo/plugins/plugin2/pom.xml | 246 ++++++++++---------- .../ro/fortsoft/pf4j/demo/hello/HelloPlugin.java | 3 + demo/plugins/pom.xml | 143 +++++++++--- 6 files changed, 424 insertions(+), 444 deletions(-) (limited to 'demo') diff --git a/demo/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java b/demo/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java index 7681a75..8dde182 100644 --- a/demo/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java +++ b/demo/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java @@ -1,145 +1,67 @@ -/* - * 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.io.File; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; - -import org.apache.commons.lang.StringUtils; - -import ro.fortsoft.pf4j.DefaultPluginManager; -import ro.fortsoft.pf4j.PluginClasspath; -import ro.fortsoft.pf4j.PluginDescriptorFinder; -import ro.fortsoft.pf4j.PluginManager; -import ro.fortsoft.pf4j.PropertiesPluginDescriptorFinder; -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 = createPluginManager(); - - // load and start (active/resolved) the plugins - pluginManager.loadPlugins(); - pluginManager.startPlugins(); - - // retrieves the extensions for Greeting extension point - List greetings = pluginManager.getExtensions(Greeting.class); - for (Greeting greeting : greetings) { - System.out.println(">>> " + greeting.getGreeting()); - } - - // stop the plugins - pluginManager.stopPlugins(); - /* - Runtime.getRuntime().addShutdownHook(new Thread() { - - @Override - public void run() { - pluginManager.stopPlugins(); - } - - }); - */ - } - - private static PluginManager createPluginManager() { - // retrieves the pf4j runtime mode - String modeAsString = System.getProperty("pf4j.mode", RuntimeMode.PROD.toString()); - RuntimeMode mode = RuntimeMode.byName(modeAsString); - - System.out.println("PF4J runtime mode: '" + mode + "'"); - - // create the plugin manager depending on runtime mode - PluginManager pluginManager = null; - if (mode == RuntimeMode.PROD) { - pluginManager = new DefaultPluginManager(); - } else if (mode == RuntimeMode.DEV) { - // run from eclipse IDE (for example) - pluginManager = new DefaultPluginManager(new File("../plugins")) { - - @Override - protected PluginClasspath createPluginClasspath() { - PluginClasspath pluginClasspath = super.createPluginClasspath(); - // modify plugin classes - List pluginClasses = pluginClasspath.getClassesDirectories(); - pluginClasses.clear(); - pluginClasses.add("target/classes"); - - return pluginClasspath; - } - - @Override - protected PluginDescriptorFinder createPluginDescriptorFinder() { - return new PropertiesPluginDescriptorFinder(); - } - - }; - } - - return pluginManager; - } - - private static void printLogo() { - System.out.println(StringUtils.repeat("#", 40)); - System.out.println(StringUtils.center("PF4J-DEMO", 40)); - System.out.println(StringUtils.repeat("#", 40)); - } - - public enum RuntimeMode { - - DEV("dev"), // development - PROD("prod"); // production - - private final String name; - - private static final Map map = new HashMap(); - - static { - for (RuntimeMode mode : RuntimeMode.values()) { - map.put(mode.name, mode); - } - } - - private RuntimeMode(final String name) { - this.name = name; - } - - @Override - public String toString() { - return name; - } - - public static RuntimeMode byName(String name) { - if (map.containsKey(name)) { - return map.get(name); - } - - throw new NoSuchElementException("Cannot found PF4J runtime mode with name '" + name + "'"); - } - - } - -} +/* + * 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 org.apache.commons.lang.StringUtils; + +import ro.fortsoft.pf4j.DefaultPluginManager; +import ro.fortsoft.pf4j.PluginManager; +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 and start (active/resolved) the plugins + pluginManager.loadPlugins(); + pluginManager.startPlugins(); + + // retrieves the extensions for Greeting extension point + List greetings = pluginManager.getExtensions(Greeting.class); + for (Greeting greeting : greetings) { + System.out.println(">>> " + greeting.getGreeting()); + } + + // 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)); + } + +} diff --git a/demo/plugins/plugin1/pom.xml b/demo/plugins/plugin1/pom.xml index 8fe5f7b..bf8abe5 100644 --- a/demo/plugins/plugin1/pom.xml +++ b/demo/plugins/plugin1/pom.xml @@ -1,131 +1,123 @@ - - - - - ro.fortsoft.pf4j.demo - pf4j-demo-plugins - 0.6-SNAPSHOT - - - 4.0.0 - pf4j-demo-plugin1 - 0.6-SNAPSHOT - jar - Demo Plugin #1 - - - welcome-plugin - ro.fortsoft.pf4j.demo.welcome.WelcomePlugin - 0.0.1 - Decebal Suiu - - - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.6 - - - unzip jar file - package - - - - - - - run - - - - - - - maven-assembly-plugin - 2.3 - - - - src/main/assembly/assembly.xml - - - false - - - - make-assembly - package - - attached - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.4 - - - - ${plugin.id} - ${plugin.class} - ${plugin.version} - ${plugin.provider} - ${plugin.dependencies} - - - - - - - maven-deploy-plugin - - true - - - - - - - - ro.fortsoft.pf4j - pf4j - ${project.version} - provided - - - - ro.fortsoft.pf4j.demo - pf4j-demo-api - ${project.version} - provided - - - - + + + + + ro.fortsoft.pf4j.demo + pf4j-demo-plugins + 0.6-SNAPSHOT + + + 4.0.0 + pf4j-demo-plugin1 + 0.6-SNAPSHOT + jar + Demo Plugin #1 + + + welcome-plugin + ro.fortsoft.pf4j.demo.welcome.WelcomePlugin + 0.0.1 + Decebal Suiu + + + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.6 + + + unzip jar file + package + + + + + + + run + + + + + + + maven-assembly-plugin + 2.3 + + + + src/main/assembly/assembly.xml + + + false + + + + make-assembly + package + + attached + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + ${plugin.id} + ${plugin.class} + ${plugin.version} + ${plugin.provider} + ${plugin.dependencies} + + + + + + + maven-deploy-plugin + + true + + + + + + + + commons-lang + commons-lang + 2.6 + + + + diff --git a/demo/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java b/demo/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java index d10d3dd..1c35259 100644 --- a/demo/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java +++ b/demo/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java @@ -12,9 +12,12 @@ */ package ro.fortsoft.pf4j.demo.welcome; +import org.apache.commons.lang.StringUtils; + import ro.fortsoft.pf4j.Extension; import ro.fortsoft.pf4j.Plugin; import ro.fortsoft.pf4j.PluginWrapper; +import ro.fortsoft.pf4j.RuntimeMode; import ro.fortsoft.pf4j.demo.api.Greeting; /** @@ -26,10 +29,16 @@ public class WelcomePlugin extends Plugin { super(wrapper); } + @Override public void start() { System.out.println("WelcomePlugin.start()"); + // for testing the development mode + if (RuntimeMode.DEVELOPMENT.equals(wrapper.getRuntimeMode())) { + System.out.println(StringUtils.upperCase("WelcomePlugin")); + } } + @Override public void stop() { System.out.println("WelcomePlugin.stop()"); } @@ -37,6 +46,7 @@ public class WelcomePlugin extends Plugin { @Extension public static class WelcomeGreeting implements Greeting { + @Override public String getGreeting() { return "Welcome"; } diff --git a/demo/plugins/plugin2/pom.xml b/demo/plugins/plugin2/pom.xml index 2bf0dd8..4b84e9f 100644 --- a/demo/plugins/plugin2/pom.xml +++ b/demo/plugins/plugin2/pom.xml @@ -1,131 +1,115 @@ - - - - - ro.fortsoft.pf4j.demo - pf4j-demo-plugins - 0.6-SNAPSHOT - - - 4.0.0 - pf4j-demo-plugin2 - 0.6-SNAPSHOT - jar - Demo Plugin #2 - - - hello-plugin - ro.fortsoft.pf4j.demo.hello.HelloPlugin - 0.0.1 - Decebal Suiu - - - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 1.6 - - - unzip jar file - package - - - - - - - run - - - - - - - maven-assembly-plugin - 2.3 - - - - src/main/assembly/assembly.xml - - - false - - - - make-assembly - package - - attached - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.4 - - - - ${plugin.id} - ${plugin.class} - ${plugin.version} - ${plugin.provider} - ${plugin.dependencies} - - - - - - - maven-deploy-plugin - - true - - - - - - - - ro.fortsoft.pf4j - pf4j - ${project.version} - provided - - - - ro.fortsoft.pf4j.demo - pf4j-demo-api - ${project.version} - provided - - - - + + + + + ro.fortsoft.pf4j.demo + pf4j-demo-plugins + 0.6-SNAPSHOT + + + 4.0.0 + pf4j-demo-plugin2 + 0.6-SNAPSHOT + jar + Demo Plugin #2 + + + hello-plugin + ro.fortsoft.pf4j.demo.hello.HelloPlugin + 0.0.1 + Decebal Suiu + + + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.6 + + + unzip jar file + package + + + + + + + run + + + + + + + maven-assembly-plugin + 2.3 + + + + src/main/assembly/assembly.xml + + + false + + + + make-assembly + package + + attached + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + ${plugin.id} + ${plugin.class} + ${plugin.version} + ${plugin.provider} + ${plugin.dependencies} + + + + + + + maven-deploy-plugin + + true + + + + + + diff --git a/demo/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java b/demo/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java index 8f12e23..d8963fc 100644 --- a/demo/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java +++ b/demo/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java @@ -28,10 +28,12 @@ public class HelloPlugin extends Plugin { super(wrapper); } + @Override public void start() { System.out.println("HelloPlugin.start()"); } + @Override public void stop() { System.out.println("HelloPlugin.stop()"); } @@ -39,6 +41,7 @@ public class HelloPlugin extends Plugin { @Extension public static class HelloGreeting implements Greeting { + @Override public String getGreeting() { return "Hello"; } diff --git a/demo/plugins/pom.xml b/demo/plugins/pom.xml index d451b31..05f6c27 100644 --- a/demo/plugins/pom.xml +++ b/demo/plugins/pom.xml @@ -1,37 +1,106 @@ - - - - - ro.fortsoft.pf4j.demo - pf4j-demo-parent - 0.6-SNAPSHOT - - - 4.0.0 - ro.fortsoft.pf4j.demo - pf4j-demo-plugins - 0.6-SNAPSHOT - pom - Demo Plugins Parent - - - - - false - src/main/java - - **/*.java - - - - src/main/resources - - - - - - plugin1 - plugin2 - - - + + + + + ro.fortsoft.pf4j.demo + pf4j-demo-parent + 0.6-SNAPSHOT + + + 4.0.0 + ro.fortsoft.pf4j.demo + pf4j-demo-plugins + 0.6-SNAPSHOT + pom + Demo Plugins Parent + + + + + false + src/main/java + + **/*.java + + + + src/main/resources + + + + + + maven-dependency-plugin + + + process-sources + + copy-dependencies + + + ${project.build.directory}/lib + provided + + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.maven.plugins + maven-dependency-plugin + [2.0,) + + copy-dependencies + + + + + + true + true + + + + + + + + + + + + + plugin1 + plugin2 + + + + + ro.fortsoft.pf4j + pf4j + ${project.version} + provided + + + + ro.fortsoft.pf4j.demo + pf4j-demo-api + ${project.version} + provided + + + + -- cgit v1.2.3