@@ -24,6 +24,8 @@ import java.nio.file.Paths; | |||
/** | |||
* Default implementation of the {@link PluginManager} interface. | |||
* In essence it is a {@link ZipPluginManager} plus a {@link JarPluginManager}. | |||
* So, it can load plugins from jar and zip, simultaneous. | |||
* | |||
* <p>This class is not thread-safe. | |||
* |
@@ -0,0 +1,42 @@ | |||
/* | |||
* Copyright (C) 2012-present the original author or authors. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); | |||
* you may not use this file except in compliance with the License. | |||
* You may obtain a copy of the License 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 org.pf4j; | |||
/** | |||
* It's a {@link PluginManager} that loads each plugin from a {@code jar} file. | |||
* Actually, a plugin is a fat jar, a jar which contains classes from all the libraries, | |||
* on which your project depends and, of course, the classes of current project. | |||
* | |||
* @author Decebal Suiu | |||
*/ | |||
public class JarPluginManager extends DefaultPluginManager { | |||
@Override | |||
protected PluginDescriptorFinder createPluginDescriptorFinder() { | |||
return new ManifestPluginDescriptorFinder(); | |||
} | |||
@Override | |||
protected PluginLoader createPluginLoader() { | |||
return new JarPluginLoader(this); | |||
} | |||
@Override | |||
protected PluginRepository createPluginRepository() { | |||
return new JarPluginRepository(getPluginsRoot()); | |||
} | |||
} |
@@ -0,0 +1,43 @@ | |||
/* | |||
* Copyright (C) 2012-present the original author or authors. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); | |||
* you may not use this file except in compliance with the License. | |||
* You may obtain a copy of the License 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 org.pf4j; | |||
/** | |||
* It's a {@link PluginManager} that loads each plugin from a {@code zip} file. | |||
* The structure of the zip file is: | |||
* - {@code lib} directory that contains all dependencies (as jar files); it's optional (no dependencies) | |||
* - {@code classes} directory that contains all plugin's classes | |||
* | |||
* @author Decebal Suiu | |||
*/ | |||
public class ZipPluginManager extends DefaultPluginManager { | |||
@Override | |||
protected PluginDescriptorFinder createPluginDescriptorFinder() { | |||
return new PropertiesPluginDescriptorFinder(); | |||
} | |||
@Override | |||
protected PluginLoader createPluginLoader() { | |||
return new DefaultPluginLoader(this, pluginClasspath); | |||
} | |||
@Override | |||
protected PluginRepository createPluginRepository() { | |||
return new DefaultPluginRepository(getPluginsRoot(), isDevelopment()); | |||
} | |||
} |