mirror of https://github.com/pf4j/pf4j.git
Decebal Suiu
10 years ago
21 changed files with 383 additions and 0 deletions
@ -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.+' |
||||
} |
@ -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(); |
||||
|
||||
} |
@ -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' |
||||
} |
@ -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)); |
||||
} |
||||
|
||||
} |
@ -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"; |
||||
} |
||||
|
||||
} |
@ -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 |
@ -0,0 +1,13 @@
|
||||
subprojects { |
||||
apply plugin: 'java' |
||||
|
||||
repositories { |
||||
mavenLocal() |
||||
mavenCentral() |
||||
} |
||||
|
||||
|
||||
task wrapper(type: Wrapper) { |
||||
gradleVersion = '1.11' |
||||
} |
||||
} |
@ -0,0 +1,6 @@
|
||||
######################################## |
||||
# - load all plugins except these |
||||
# - add one plugin id on each line |
||||
# - put this file in plugins folder |
||||
######################################## |
||||
#welcome-plugin |
@ -0,0 +1,6 @@
|
||||
######################################## |
||||
# - load only these plugins |
||||
# - add one plugin id on each line |
||||
# - put this file in plugins folder |
||||
######################################## |
||||
#welcome-plugin |
@ -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.+' |
||||
} |
@ -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= |
@ -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"; |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
@ -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.+' |
||||
} |
@ -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= |
@ -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"; |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue