Browse Source

added more methods in PluginManager

tags/release-0.3
Decebal Suiu 11 years ago
parent
commit
465001c984

+ 0
- 1
demo/plugin1/pom.xml View File

@@ -21,7 +21,6 @@
</license>
</licenses>


<properties>
<plugin.id>welcome-plugin</plugin.id>
<plugin.class>ro.fortsoft.pf4j.demo.welcome.WelcomePlugin</plugin.class>

+ 14
- 0
pf4j/src/main/java/ro/fortsoft/pf4j/DefaultPluginManager.java View File

@@ -76,6 +76,11 @@ public class DefaultPluginManager implements PluginManager {
*/
private List<PluginWrapper> disabledPlugins;
/**
* A list with started plugins.
*/
private List<PluginWrapper> startedPlugins;
private UberClassLoader uberClassLoader;

/**
@@ -93,15 +98,19 @@ public class DefaultPluginManager implements PluginManager {
*/
public DefaultPluginManager(File pluginsDirectory) {
this.pluginsDirectory = pluginsDirectory;
plugins = new HashMap<String, PluginWrapper>();
pluginClassLoaders = new HashMap<String, PluginClassLoader>();
pathToIdMap = new HashMap<String, String>();
unresolvedPlugins = new ArrayList<PluginWrapper>();
resolvedPlugins = new ArrayList<PluginWrapper>();
disabledPlugins = new ArrayList<PluginWrapper>();
startedPlugins = new ArrayList<PluginWrapper>();
pluginDescriptorFinder = new DefaultPluginDescriptorFinder();
uberClassLoader = new UberClassLoader();
extensionFinder = new DefaultExtensionFinder(uberClassLoader);
System.setProperty("pf4j.pluginsDir", pluginsDirectory.getAbsolutePath());
}

/**
@@ -127,6 +136,10 @@ public class DefaultPluginManager implements PluginManager {
return disabledPlugins;
}

public List<PluginWrapper> getStartedPlugins() {
return startedPlugins;
}
/**
* Start all active plugins.
*/
@@ -136,6 +149,7 @@ public class DefaultPluginManager implements PluginManager {
try {
LOG.info("Start plugin '" + pluginWrapper.getDescriptor().getPluginId() + "'");
pluginWrapper.getPlugin().start();
startedPlugins.add(pluginWrapper);
} catch (PluginException e) {
LOG.error(e.getMessage(), e);
}

+ 1
- 1
pf4j/src/main/java/ro/fortsoft/pf4j/Plugin.java View File

@@ -31,7 +31,7 @@ public abstract class Plugin {
/**
* Wrapper of the plugin.
*/
PluginWrapper wrapper;
protected PluginWrapper wrapper;

/**
* Constructor to be used by plugin manager for plugin instantiation.

+ 1
- 1
pf4j/src/main/java/ro/fortsoft/pf4j/PluginClassLoader.java View File

@@ -21,7 +21,7 @@ import java.util.List;
*
* @author Decebal Suiu
*/
class PluginClassLoader extends URLClassLoader {
public class PluginClassLoader extends URLClassLoader {

private static final String JAVA_PACKAGE_PREFIX = "java.";
private static final String JAVAX_PACKAGE_PREFIX = "javax.";

+ 1
- 1
pf4j/src/main/java/ro/fortsoft/pf4j/PluginDescriptor.java View File

@@ -27,7 +27,7 @@ import org.apache.commons.lang.builder.ToStringStyle;
*
* @author Decebal Suiu
*/
class PluginDescriptor {
public class PluginDescriptor {

private String pluginId;
private String pluginClass;

+ 15
- 0
pf4j/src/main/java/ro/fortsoft/pf4j/PluginManager.java View File

@@ -27,6 +27,21 @@ public interface PluginManager {
*/
public List<PluginWrapper> getPlugins();

/**
* Retrieves all resolved plugins (with resolved dependency).
*/
public List<PluginWrapper> getResolvedPlugins();

/**
* Retrieves all unresolved plugins (with unresolved dependency).
*/
public List<PluginWrapper> getUnresolvedPlugins();
/**
* Retrieves all started plugins.
*/
public List<PluginWrapper> getStartedPlugins();

/**
* Load plugins.
*/

+ 20
- 0
pf4j/src/main/java/ro/fortsoft/pf4j/PluginWrapper.java View File

@@ -15,6 +15,8 @@ package ro.fortsoft.pf4j;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

@@ -91,6 +93,24 @@ public class PluginWrapper {
}

@Override
public int hashCode() {
return new HashCodeBuilder().append(descriptor.getPluginId())
.toHashCode();
}

@Override
public boolean equals(Object obj) {
if (!(obj instanceof PluginWrapper)) {
return false;
}
PluginWrapper wrapper = (PluginWrapper) obj;
return new EqualsBuilder().append(descriptor.getPluginId(), wrapper.getDescriptor().getPluginId())
.isEquals();
}

@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("descriptor", descriptor)

Loading…
Cancel
Save