Browse Source

Merge remote-tracking branch 'origin/#307' into pf4j_3

async
Decebal Suiu 6 years ago
parent
commit
74d9637f40
  1. 2
      pf4j/src/main/java/org/pf4j/DefaultPluginManager.java
  2. 42
      pf4j/src/main/java/org/pf4j/JarPluginManager.java
  3. 43
      pf4j/src/main/java/org/pf4j/ZipPluginManager.java

2
pf4j/src/main/java/org/pf4j/DefaultPluginManager.java

@ -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.
*

42
pf4j/src/main/java/org/pf4j/JarPluginManager.java

@ -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());
}
}

43
pf4j/src/main/java/org/pf4j/ZipPluginManager.java

@ -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());
}
}
Loading…
Cancel
Save