Ver código fonte

added base files

tags/release-0.10.0
Stix 9 anos atrás
pai
commit
0b3ac7fa74

+ 1
- 0
demo_gradle/.gitignore Ver arquivo

@@ -0,0 +1 @@
build

+ 1
- 0
demo_gradle/api/.gitignore Ver arquivo

@@ -0,0 +1 @@
build

+ 5
- 0
demo_gradle/api/build.gradle Ver arquivo

@@ -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
- 0
demo_gradle/api/src/main/java/ro/fortsoft/pf4j/demo/api/Greeting.java Ver arquivo

@@ -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
- 0
demo_gradle/app/.gitignore Ver arquivo

@@ -0,0 +1 @@
build

+ 11
- 0
demo_gradle/app/build.gradle Ver arquivo

@@ -0,0 +1,11 @@
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'
}

+ 93
- 0
demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/Boot.java Ver arquivo

@@ -0,0 +1,93 @@
/*
* 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.lang.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();
// 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
- 0
demo_gradle/app/src/main/java/ro/fortsoft/pf4j/demo/WhazzupGreeting.java Ver arquivo

@@ -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
- 0
demo_gradle/app/src/main/resources/log4j.properties Ver arquivo

@@ -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
- 0
demo_gradle/build.gradle Ver arquivo

@@ -0,0 +1,13 @@
subprojects {
apply plugin: 'java'

repositories {
mavenLocal()
mavenCentral()
}


task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
}

+ 6
- 0
demo_gradle/plugins/disabled.txt Ver arquivo

@@ -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
- 0
demo_gradle/plugins/enabled.txt Ver arquivo

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

+ 1
- 0
demo_gradle/plugins/plugin1/.gitignore Ver arquivo

@@ -0,0 +1 @@
build

+ 25
- 0
demo_gradle/plugins/plugin1/build.gradle Ver arquivo

@@ -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' : 'Yannick Bäumer'
}
}

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
- 0
demo_gradle/plugins/plugin1/plugin.properties Ver arquivo

@@ -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=

+ 56
- 0
demo_gradle/plugins/plugin1/src/main/java/ro/fortsoft/pf4j/demo/welcome/WelcomePlugin.java Ver arquivo

@@ -0,0 +1,56 @@
/*
* 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.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;

/**
* @author Decebal Suiu
*/
public class WelcomePlugin extends Plugin {

public WelcomePlugin(PluginWrapper wrapper) {
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()");
}

@Extension
public static class WelcomeGreeting implements Greeting {

@Override
public String getGreeting() {
return "Welcome";
}

}

}

+ 1
- 0
demo_gradle/plugins/plugin2/.gitignore Ver arquivo

@@ -0,0 +1 @@
build

+ 25
- 0
demo_gradle/plugins/plugin2/build.gradle Ver arquivo

@@ -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' : 'Yannick Bäumer'
}
}

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
- 0
demo_gradle/plugins/plugin2/plugin.properties Ver arquivo

@@ -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
- 0
demo_gradle/plugins/plugin2/src/main/java/ro/fortsoft/pf4j/demo/hello/HelloPlugin.java Ver arquivo

@@ -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";
}

}

}

+ 3
- 0
demo_gradle/settings.gradle Ver arquivo

@@ -0,0 +1,3 @@
include 'api'
include 'app'
include 'plugins'

Carregando…
Cancelar
Salvar