Browse Source

Convert PluginException in PluginRuntimeException and use unchecked exceptions

tags/release-3.0.0
Decebal Suiu 5 years ago
parent
commit
e81d9054f7
29 changed files with 105 additions and 103 deletions
  1. 22
    22
      pf4j/src/main/java/org/pf4j/AbstractPluginManager.java
  2. 2
    2
      pf4j/src/main/java/org/pf4j/BasePluginRepository.java
  3. 2
    2
      pf4j/src/main/java/org/pf4j/CompoundPluginDescriptorFinder.java
  4. 1
    1
      pf4j/src/main/java/org/pf4j/CompoundPluginRepository.java
  5. 2
    2
      pf4j/src/main/java/org/pf4j/DefaultExtensionFactory.java
  6. 4
    3
      pf4j/src/main/java/org/pf4j/DefaultPluginManager.java
  7. 1
    2
      pf4j/src/main/java/org/pf4j/DefaultPluginRepository.java
  8. 4
    4
      pf4j/src/main/java/org/pf4j/DefaultPluginStatusProvider.java
  9. 3
    3
      pf4j/src/main/java/org/pf4j/DependencyResolver.java
  10. 1
    1
      pf4j/src/main/java/org/pf4j/ExtensionFactory.java
  11. 1
    1
      pf4j/src/main/java/org/pf4j/ExtensionWrapper.java
  12. 6
    6
      pf4j/src/main/java/org/pf4j/ManifestPluginDescriptorFinder.java
  13. 3
    3
      pf4j/src/main/java/org/pf4j/Plugin.java
  14. 1
    1
      pf4j/src/main/java/org/pf4j/PluginAlreadyLoadedException.java
  15. 1
    4
      pf4j/src/main/java/org/pf4j/PluginDescriptorFinder.java
  16. 17
    11
      pf4j/src/main/java/org/pf4j/PluginManager.java
  17. 2
    1
      pf4j/src/main/java/org/pf4j/PluginRepository.java
  18. 6
    10
      pf4j/src/main/java/org/pf4j/PluginRuntimeException.java
  19. 4
    2
      pf4j/src/main/java/org/pf4j/PluginStatusProvider.java
  20. 7
    7
      pf4j/src/main/java/org/pf4j/PropertiesPluginDescriptorFinder.java
  21. 1
    1
      pf4j/src/main/java/org/pf4j/SingletonExtensionFactory.java
  22. 1
    1
      pf4j/src/test/java/org/pf4j/CompoundPluginDescriptorFinderTest.java
  23. 2
    2
      pf4j/src/test/java/org/pf4j/DefaultExtensionFactoryTest.java
  24. 4
    4
      pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java
  25. 1
    1
      pf4j/src/test/java/org/pf4j/DefaultPluginRepositoryTest.java
  26. 2
    2
      pf4j/src/test/java/org/pf4j/LoadPluginsTest.java
  27. 1
    1
      pf4j/src/test/java/org/pf4j/ManifestPluginDescriptorFinderTest.java
  28. 1
    1
      pf4j/src/test/java/org/pf4j/PropertiesPluginDescriptorFinderTest.java
  29. 2
    2
      pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java

+ 22
- 22
pf4j/src/main/java/org/pf4j/AbstractPluginManager.java View File

@@ -180,7 +180,7 @@ public abstract class AbstractPluginManager implements PluginManager {
}

@Override
public String loadPlugin(Path pluginPath) throws PluginException {
public String loadPlugin(Path pluginPath) {
if ((pluginPath == null) || Files.notExists(pluginPath)) {
throw new IllegalArgumentException(String.format("Specified plugin %s does not exist!", pluginPath));
}
@@ -222,7 +222,7 @@ public abstract class AbstractPluginManager implements PluginManager {
for (Path pluginPath : pluginPaths) {
try {
loadPluginFromPath(pluginPath);
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
log.error(e.getMessage(), e);
}
}
@@ -230,7 +230,7 @@ public abstract class AbstractPluginManager implements PluginManager {
// resolve plugins
try {
resolvePlugins();
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
log.error(e.getMessage(), e);
}
}
@@ -239,11 +239,11 @@ public abstract class AbstractPluginManager implements PluginManager {
* Unload the specified plugin and it's dependents.
*/
@Override
public boolean unloadPlugin(String pluginId) throws PluginException {
public boolean unloadPlugin(String pluginId) {
return unloadPlugin(pluginId, true);
}

private boolean unloadPlugin(String pluginId, boolean unloadDependents) throws PluginException {
private boolean unloadPlugin(String pluginId, boolean unloadDependents) {
try {
if (unloadDependents) {
List<String> dependents = dependencyResolver.getDependents(pluginId);
@@ -276,7 +276,7 @@ public abstract class AbstractPluginManager implements PluginManager {
try {
((Closeable) classLoader).close();
} catch (IOException e) {
throw new PluginException("Cannot close classloader", e);
throw new PluginRuntimeException(e, "Cannot close classloader");
}
}
}
@@ -290,7 +290,7 @@ public abstract class AbstractPluginManager implements PluginManager {
}

@Override
public boolean deletePlugin(String pluginId) throws PluginException {
public boolean deletePlugin(String pluginId) {
checkPluginId(pluginId);

PluginWrapper pluginWrapper = getPlugin(pluginId);
@@ -344,7 +344,7 @@ public abstract class AbstractPluginManager implements PluginManager {
* Start the specified plugin and its dependencies.
*/
@Override
public PluginState startPlugin(String pluginId) throws PluginException {
public PluginState startPlugin(String pluginId) {
checkPluginId(pluginId);

PluginWrapper pluginWrapper = getPlugin(pluginId);
@@ -400,7 +400,7 @@ public abstract class AbstractPluginManager implements PluginManager {
itr.remove();

firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState));
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
log.error(e.getMessage(), e);
}
}
@@ -411,11 +411,11 @@ public abstract class AbstractPluginManager implements PluginManager {
* Stop the specified plugin and it's dependents.
*/
@Override
public PluginState stopPlugin(String pluginId) throws PluginException {
public PluginState stopPlugin(String pluginId) {
return stopPlugin(pluginId, true);
}

private PluginState stopPlugin(String pluginId, boolean stopDependents) throws PluginException {
private PluginState stopPlugin(String pluginId, boolean stopDependents) {
checkPluginId(pluginId);

PluginWrapper pluginWrapper = getPlugin(pluginId);
@@ -458,7 +458,7 @@ public abstract class AbstractPluginManager implements PluginManager {
}

@Override
public boolean disablePlugin(String pluginId) throws PluginException {
public boolean disablePlugin(String pluginId) {
checkPluginId(pluginId);

PluginWrapper pluginWrapper = getPlugin(pluginId);
@@ -484,7 +484,7 @@ public abstract class AbstractPluginManager implements PluginManager {
}

@Override
public boolean enablePlugin(String pluginId) throws PluginException {
public boolean enablePlugin(String pluginId) {
checkPluginId(pluginId);

PluginWrapper pluginWrapper = getPlugin(pluginId);
@@ -560,7 +560,7 @@ public abstract class AbstractPluginManager implements PluginManager {
for (ExtensionWrapper extensionWrapper : extensionsWrapper) {
try {
extensions.add(extensionWrapper.getExtension());
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
log.error("Cannot retrieve extension", e);
}
}
@@ -732,7 +732,7 @@ public abstract class AbstractPluginManager implements PluginManager {
return pluginStatusProvider.isPluginDisabled(pluginId);
}

protected void resolvePlugins() throws PluginException {
protected void resolvePlugins() {
// retrieves the plugins descriptors
List<PluginDescriptor> descriptors = new ArrayList<>();
for (PluginWrapper plugin : plugins.values()) {
@@ -781,7 +781,7 @@ public abstract class AbstractPluginManager implements PluginManager {
}
}

protected PluginWrapper loadPluginFromPath(Path pluginPath) throws PluginException {
protected PluginWrapper loadPluginFromPath(Path pluginPath) {
// Test for plugin path duplication
String pluginId = idForPath(pluginPath);
if (pluginId != null) {
@@ -799,7 +799,7 @@ public abstract class AbstractPluginManager implements PluginManager {
pluginId = pluginDescriptor.getPluginId();
if (plugins.containsKey(pluginId)) {
PluginWrapper loadedPlugin = getPlugin(pluginId);
throw new PluginException("There is an already loaded plugin ({}) "
throw new PluginRuntimeException("There is an already loaded plugin ({}) "
+ "with the same id ({}) as the plugin at path '{}'. Simultaneous loading "
+ "of plugins with the same PluginId is not currently supported.\n"
+ "As a workaround you may include PluginVersion and PluginProvider "
@@ -867,15 +867,15 @@ public abstract class AbstractPluginManager implements PluginManager {
* Override this to change the validation criteria.
*
* @param descriptor the plugin descriptor to validate
* @throws PluginException if validation fails
* @throws PluginRuntimeException if validation fails
*/
protected void validatePluginDescriptor(PluginDescriptor descriptor) throws PluginException {
protected void validatePluginDescriptor(PluginDescriptor descriptor) {
if (StringUtils.isNullOrEmpty(descriptor.getPluginId())) {
throw new PluginException("Field 'id' cannot be empty");
throw new PluginRuntimeException("Field 'id' cannot be empty");
}

if (descriptor.getVersion() == null) {
throw new PluginException("Field 'version' cannot be empty");
throw new PluginRuntimeException("Field 'version' cannot be empty");
}
}

@@ -925,7 +925,7 @@ public abstract class AbstractPluginManager implements PluginManager {
for (ExtensionWrapper<T> extensionWrapper : extensionsWrapper) {
try {
extensions.add(extensionWrapper.getExtension());
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
log.error("Cannot retrieve extension", e);
}
}

+ 2
- 2
pf4j/src/main/java/org/pf4j/BasePluginRepository.java View File

@@ -86,7 +86,7 @@ public class BasePluginRepository implements PluginRepository {
}

@Override
public boolean deletePluginPath(Path pluginPath) throws PluginException {
public boolean deletePluginPath(Path pluginPath) {
if (!filter.accept(pluginPath.toFile())) {
return false;
}
@@ -97,7 +97,7 @@ public class BasePluginRepository implements PluginRepository {
} catch (NoSuchFileException e) {
return false; // Return false on not found to be compatible with previous API (#135)
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}


+ 2
- 2
pf4j/src/main/java/org/pf4j/CompoundPluginDescriptorFinder.java View File

@@ -57,7 +57,7 @@ public class CompoundPluginDescriptorFinder implements PluginDescriptorFinder {
}

@Override
public PluginDescriptor find(Path pluginPath) throws PluginException {
public PluginDescriptor find(Path pluginPath) {
for (PluginDescriptorFinder finder : finders) {
if (finder.isApplicable(pluginPath)) {
log.debug("'{}' is applicable for plugin '{}'", finder, pluginPath);
@@ -81,7 +81,7 @@ public class CompoundPluginDescriptorFinder implements PluginDescriptorFinder {
}
}

throw new PluginException("No PluginDescriptorFinder for plugin '{}'", pluginPath);
throw new PluginRuntimeException("No PluginDescriptorFinder for plugin '{}'", pluginPath);
}

}

+ 1
- 1
pf4j/src/main/java/org/pf4j/CompoundPluginRepository.java View File

@@ -66,7 +66,7 @@ public class CompoundPluginRepository implements PluginRepository {
}

@Override
public boolean deletePluginPath(Path pluginPath) throws PluginException {
public boolean deletePluginPath(Path pluginPath) {
for (PluginRepository repository : repositories) {
if (repository.deletePluginPath(pluginPath)) {
return true;

+ 2
- 2
pf4j/src/main/java/org/pf4j/DefaultExtensionFactory.java View File

@@ -32,12 +32,12 @@ public class DefaultExtensionFactory implements ExtensionFactory {
* Creates an extension instance.
*/
@Override
public <T> T create(Class<T> extensionClass) throws PluginException {
public <T> T create(Class<T> extensionClass) {
log.debug("Create instance for extension '{}'", extensionClass.getName());
try {
return extensionClass.newInstance();
} catch (Exception e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}


+ 4
- 3
pf4j/src/main/java/org/pf4j/DefaultPluginManager.java View File

@@ -111,13 +111,14 @@ public class DefaultPluginManager extends AbstractPluginManager {
}

/**
* Load a plugin from disk. If the path is a zip file, first unpack
* Load a plugin from disk. If the path is a zip file, first unpack.
*
* @param pluginPath plugin location on disk
* @return PluginWrapper for the loaded plugin or null if not loaded
* @throws PluginException if problems during load
* @throws PluginRuntimeException if problems during load
*/
@Override
protected PluginWrapper loadPluginFromPath(Path pluginPath) throws PluginException {
protected PluginWrapper loadPluginFromPath(Path pluginPath) {
// First unzip any ZIP files
try {
pluginPath = FileUtils.expandIfZip(pluginPath);

+ 1
- 2
pf4j/src/main/java/org/pf4j/DefaultPluginRepository.java View File

@@ -24,7 +24,6 @@ import org.pf4j.util.OrFileFilter;
import org.pf4j.util.ZipFileFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.pf4j.util.NameFileFilter;

import java.io.File;
import java.io.FileFilter;
@@ -54,7 +53,7 @@ public class DefaultPluginRepository extends BasePluginRepository {
}

@Override
public boolean deletePluginPath(Path pluginPath) throws PluginException {
public boolean deletePluginPath(Path pluginPath) {
FileUtils.optimisticDelete(FileUtils.findWithEnding(pluginPath, ".zip", ".ZIP", ".Zip"));
return super.deletePluginPath(pluginPath);
}

+ 4
- 4
pf4j/src/main/java/org/pf4j/DefaultPluginStatusProvider.java View File

@@ -66,22 +66,22 @@ public class DefaultPluginStatusProvider implements PluginStatusProvider {
}

@Override
public void disablePlugin(String pluginId) throws PluginException {
public void disablePlugin(String pluginId) {
disabledPlugins.add(pluginId);
try {
FileUtils.writeLines(disabledPlugins, pluginsRoot.resolve("disabled.txt").toFile());
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}

@Override
public void enablePlugin(String pluginId) throws PluginException {
public void enablePlugin(String pluginId) {
disabledPlugins.remove(pluginId);
try {
FileUtils.writeLines(disabledPlugins, pluginsRoot.resolve("disabled.txt").toFile());
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}


+ 3
- 3
pf4j/src/main/java/org/pf4j/DependencyResolver.java View File

@@ -272,7 +272,7 @@ public class DependencyResolver {
/**
* It will be thrown if a cyclic dependency is detected.
*/
public static class CyclicDependencyException extends PluginException {
public static class CyclicDependencyException extends PluginRuntimeException {

public CyclicDependencyException() {
super("Cyclic dependencies");
@@ -283,7 +283,7 @@ public class DependencyResolver {
/**
* Indicates that the dependencies required were not found.
*/
public static class DependenciesNotFoundException extends PluginException {
public static class DependenciesNotFoundException extends PluginRuntimeException {

private List<String> dependencies;

@@ -302,7 +302,7 @@ public class DependencyResolver {
/**
* Indicates that some dependencies have wrong version.
*/
public static class DependenciesWrongVersionException extends PluginException {
public static class DependenciesWrongVersionException extends PluginRuntimeException {

private List<WrongDependencyVersion> dependencies;


+ 1
- 1
pf4j/src/main/java/org/pf4j/ExtensionFactory.java View File

@@ -20,6 +20,6 @@ package org.pf4j;
*/
public interface ExtensionFactory {

<T> T create(Class<T> extensionClass) throws PluginException;
<T> T create(Class<T> extensionClass);

}

+ 1
- 1
pf4j/src/main/java/org/pf4j/ExtensionWrapper.java View File

@@ -32,7 +32,7 @@ public class ExtensionWrapper<T> implements Comparable<ExtensionWrapper<T>> {
}

@SuppressWarnings("unchecked")
public T getExtension() throws PluginException {
public T getExtension() {
if (extension == null) {
extension = (T) extensionFactory.create(descriptor.extensionClass);
}

+ 6
- 6
pf4j/src/main/java/org/pf4j/ManifestPluginDescriptorFinder.java View File

@@ -52,13 +52,13 @@ public class ManifestPluginDescriptorFinder implements PluginDescriptorFinder {
}

@Override
public PluginDescriptor find(Path pluginPath) throws PluginException {
public PluginDescriptor find(Path pluginPath) {
Manifest manifest = readManifest(pluginPath);

return createPluginDescriptor(manifest);
}

protected Manifest readManifest(Path pluginPath) throws PluginException {
protected Manifest readManifest(Path pluginPath) {
if (FileUtils.isJarFile(pluginPath)) {
try (JarFile jar = new JarFile(pluginPath.toFile())) {
Manifest manifest = jar.getManifest();
@@ -66,24 +66,24 @@ public class ManifestPluginDescriptorFinder implements PluginDescriptorFinder {
return manifest;
}
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}

Path manifestPath = getManifestPath(pluginPath);
if (manifestPath == null) {
throw new PluginException("Cannot find the manifest path");
throw new PluginRuntimeException("Cannot find the manifest path");
}

log.debug("Lookup plugin descriptor in '{}'", manifestPath);
if (Files.notExists(manifestPath)) {
throw new PluginException("Cannot find '{}' path", manifestPath);
throw new PluginRuntimeException("Cannot find '{}' path", manifestPath);
}

try (InputStream input = Files.newInputStream(manifestPath)) {
return new Manifest(input);
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}


+ 3
- 3
pf4j/src/main/java/org/pf4j/Plugin.java View File

@@ -60,21 +60,21 @@ public class Plugin {
* This method is called by the application when the plugin is started.
* See {@link PluginManager#startPlugin(String)}.
*/
public void start() throws PluginException {
public void start() {
}

/**
* This method is called by the application when the plugin is stopped.
* See {@link PluginManager#stopPlugin(String)}.
*/
public void stop() throws PluginException {
public void stop() {
}

/**
* This method is called by the application when the plugin is deleted.
* See {@link PluginManager#deletePlugin(String)}.
*/
public void delete() throws PluginException {
public void delete() {
}

}

+ 1
- 1
pf4j/src/main/java/org/pf4j/PluginAlreadyLoadedException.java View File

@@ -20,7 +20,7 @@ import java.nio.file.Path;
/**
* @author Decebal Suiu
*/
public class PluginAlreadyLoadedException extends PluginException {
public class PluginAlreadyLoadedException extends PluginRuntimeException {

private final String pluginId;
private final Path pluginPath;

+ 1
- 4
pf4j/src/main/java/org/pf4j/PluginDescriptorFinder.java View File

@@ -29,12 +29,9 @@ public interface PluginDescriptorFinder {

/**
* Returns true if this finder is applicable to the given {@link Path}.
*
* @param pluginPath
* @return
*/
boolean isApplicable(Path pluginPath);

PluginDescriptor find(Path pluginPath) throws PluginException;
PluginDescriptor find(Path pluginPath);

}

+ 17
- 11
pf4j/src/main/java/org/pf4j/PluginManager.java View File

@@ -69,11 +69,10 @@ public interface PluginManager {
* Load a plugin.
*
* @param pluginPath the plugin location
* @return the pluginId of the installed plugin as specified in
* its {@linkplain PluginDescriptor metadata}
* @throws PluginException if load of plugin fails
* @return the pluginId of the installed plugin as specified in its {@linkplain PluginDescriptor metadata}
* @throws PluginRuntimeException if something goes wrong
*/
String loadPlugin(Path pluginPath) throws PluginException;
String loadPlugin(Path pluginPath);

/**
* Start all active plugins.
@@ -84,8 +83,9 @@ public interface PluginManager {
* Start the specified plugin and its dependencies.
*
* @return the plugin state
* @throws PluginRuntimeException if something goes wrong
*/
PluginState startPlugin(String pluginId) throws PluginException;
PluginState startPlugin(String pluginId);

/**
* Stop all active plugins.
@@ -96,40 +96,45 @@ public interface PluginManager {
* Stop the specified plugin and its dependencies.
*
* @return the plugin state
* @throws PluginRuntimeException if something goes wrong
*/
PluginState stopPlugin(String pluginId) throws PluginException;
PluginState stopPlugin(String pluginId);

/**
* Unload a plugin.
*
* @param pluginId the unique plugin identifier, specified in its metadata
* @return true if the plugin was unloaded
* @throws PluginRuntimeException if something goes wrong
*/
boolean unloadPlugin(String pluginId) throws PluginException;
boolean unloadPlugin(String pluginId);

/**
* Disables a plugin from being loaded.
*
* @param pluginId the unique plugin identifier, specified in its metadata
* @return true if plugin is disabled
* @throws PluginRuntimeException if something goes wrong
*/
boolean disablePlugin(String pluginId) throws PluginException;
boolean disablePlugin(String pluginId);

/**
* Enables a plugin that has previously been disabled.
*
* @param pluginId the unique plugin identifier, specified in its metadata
* @return true if plugin is enabled
* @throws PluginRuntimeException if something goes wrong
*/
boolean enablePlugin(String pluginId) throws PluginException;
boolean enablePlugin(String pluginId);

/**
* Deletes a plugin.
*
* @param pluginId the unique plugin identifier, specified in its metadata
* @return true if the plugin was deleted
* @throws PluginRuntimeException if something goes wrong
*/
boolean deletePlugin(String pluginId) throws PluginException;
boolean deletePlugin(String pluginId);

ClassLoader getPluginClassLoader(String pluginId);

@@ -195,7 +200,8 @@ public interface PluginManager {
String getSystemVersion();

/**
* Gets the path of the folder where plugins are installed
* Gets the path of the folder where plugins are installed.
*
* @return Path of plugins root
*/
Path getPluginsRoot();

+ 2
- 1
pf4j/src/main/java/org/pf4j/PluginRepository.java View File

@@ -38,7 +38,8 @@ public interface PluginRepository {
*
* @param pluginPath the plugin path
* @return true if deleted
* @throws PluginRuntimeException if something goes wrong
*/
boolean deletePluginPath(Path pluginPath) throws PluginException;
boolean deletePluginPath(Path pluginPath);

}

pf4j/src/main/java/org/pf4j/PluginException.java → pf4j/src/main/java/org/pf4j/PluginRuntimeException.java View File

@@ -23,29 +23,25 @@ import org.pf4j.util.StringUtils;
*
* @author Decebal Suiu
*/
public class PluginException extends Exception {
public class PluginRuntimeException extends RuntimeException {

public PluginException() {
public PluginRuntimeException() {
super();
}

public PluginException(String message) {
public PluginRuntimeException(String message) {
super(message);
}

public PluginException(Throwable cause) {
public PluginRuntimeException(Throwable cause) {
super(cause);
}

public PluginException(String message, Throwable cause) {
super(message, cause);
}

public PluginException(Throwable cause, String message, Object... args) {
public PluginRuntimeException(Throwable cause, String message, Object... args) {
super(StringUtils.format(message, args), cause);
}

public PluginException(String message, Object... args) {
public PluginRuntimeException(String message, Object... args) {
super(StringUtils.format(message, args));
}


+ 4
- 2
pf4j/src/main/java/org/pf4j/PluginStatusProvider.java View File

@@ -33,14 +33,16 @@ public interface PluginStatusProvider {
* Disables a plugin from being loaded.
*
* @param pluginId the unique plugin identifier, specified in its metadata
* @throws PluginRuntimeException if something goes wrong
*/
void disablePlugin(String pluginId) throws PluginException;
void disablePlugin(String pluginId);

/**
* Enables a plugin that has previously been disabled.
*
* @param pluginId the unique plugin identifier, specified in its metadata
* @throws PluginRuntimeException if something goes wrong
*/
void enablePlugin(String pluginId) throws PluginException;
void enablePlugin(String pluginId);

}

+ 7
- 7
pf4j/src/main/java/org/pf4j/PropertiesPluginDescriptorFinder.java View File

@@ -63,34 +63,34 @@ public class PropertiesPluginDescriptorFinder implements PluginDescriptorFinder
}

@Override
public PluginDescriptor find(Path pluginPath) throws PluginException {
public PluginDescriptor find(Path pluginPath) {
Properties properties = readProperties(pluginPath);

return createPluginDescriptor(properties);
}

protected Properties readProperties(Path pluginPath) throws PluginException {
protected Properties readProperties(Path pluginPath) {
Path propertiesPath = getPropertiesPath(pluginPath, propertiesFileName);
if (propertiesPath == null) {
throw new PluginException("Cannot find the properties path");
throw new PluginRuntimeException("Cannot find the properties path");
}

log.debug("Lookup plugin descriptor in '{}'", propertiesPath);
if (Files.notExists(propertiesPath)) {
throw new PluginException("Cannot find '{}' path", propertiesPath);
throw new PluginRuntimeException("Cannot find '{}' path", propertiesPath);
}

Properties properties = new Properties();
try (InputStream input = Files.newInputStream(propertiesPath)) {
properties.load(input);
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}

return properties;
}

protected Path getPropertiesPath(Path pluginPath, String propertiesFileName) throws PluginException {
protected Path getPropertiesPath(Path pluginPath, String propertiesFileName) {
if (Files.isDirectory(pluginPath)) {
return pluginPath.resolve(Paths.get(propertiesFileName));
} else {
@@ -98,7 +98,7 @@ public class PropertiesPluginDescriptorFinder implements PluginDescriptorFinder
try {
return FileUtils.getPath(pluginPath, propertiesFileName);
} catch (IOException e) {
throw new PluginException(e);
throw new PluginRuntimeException(e);
}
}
}

+ 1
- 1
pf4j/src/main/java/org/pf4j/SingletonExtensionFactory.java View File

@@ -40,7 +40,7 @@ public class SingletonExtensionFactory extends DefaultExtensionFactory {

@Override
@SuppressWarnings("unchecked")
public <T> T create(Class<T> extensionClass) throws PluginException {
public <T> T create(Class<T> extensionClass) {
String extensionClassName = extensionClass.getName();
if (cache.containsKey(extensionClassName)) {
return (T) cache.get(extensionClassName);

+ 1
- 1
pf4j/src/test/java/org/pf4j/CompoundPluginDescriptorFinderTest.java View File

@@ -87,7 +87,7 @@ public class CompoundPluginDescriptorFinderTest {
@Test
public void testNotFound() {
PluginDescriptorFinder descriptorFinder = new CompoundPluginDescriptorFinder();
assertThrows(PluginException.class, () -> descriptorFinder.find(pluginsPath.resolve("test-plugin-3")));
assertThrows(PluginRuntimeException.class, () -> descriptorFinder.find(pluginsPath.resolve("test-plugin-3")));
}

@Test

+ 2
- 2
pf4j/src/test/java/org/pf4j/DefaultExtensionFactoryTest.java View File

@@ -45,7 +45,7 @@ public class DefaultExtensionFactoryTest {
* Test of create method, of class DefaultExtensionFactory.
*/
@Test
public void testCreate() throws PluginException {
public void testCreate() {
assertNotNull(extensionFactory.create(TestExtension.class));
}

@@ -54,7 +54,7 @@ public class DefaultExtensionFactoryTest {
*/
@Test
public void testCreateFailConstructor() {
assertThrows(PluginException.class, () -> extensionFactory.create(FailTestExtension.class));
assertThrows(PluginRuntimeException.class, () -> extensionFactory.create(FailTestExtension.class));
}

}

+ 4
- 4
pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java View File

@@ -65,24 +65,24 @@ public class DefaultPluginManagerTest {
}

@Test
public void validateOK() throws PluginException {
public void validateOK() {
pluginManager.validatePluginDescriptor(pluginDescriptor);
}

@Test
public void validateFailsOnId() {
pluginDescriptor.setPluginId("");
assertThrows(PluginException.class, () -> pluginManager.validatePluginDescriptor(pluginDescriptor));
assertThrows(PluginRuntimeException.class, () -> pluginManager.validatePluginDescriptor(pluginDescriptor));
}

@Test
public void validateFailsOnVersion() {
pluginDescriptor.setPluginVersion(null);
assertThrows(PluginException.class, () -> pluginManager.validatePluginDescriptor(pluginDescriptor));
assertThrows(PluginRuntimeException.class, () -> pluginManager.validatePluginDescriptor(pluginDescriptor));
}

@Test
public void validateNoPluginClass() throws PluginException {
public void validateNoPluginClass() {
pluginManager.validatePluginDescriptor(pluginDescriptor);
assertEquals(Plugin.class.getName(), pluginDescriptor.getPluginClass());
}

+ 1
- 1
pf4j/src/test/java/org/pf4j/DefaultPluginRepositoryTest.java View File

@@ -67,7 +67,7 @@ public class DefaultPluginRepositoryTest {
* Test of {@link DefaultPluginRepository#deletePluginPath(Path)} method.
*/
@Test
public void testDeletePluginPath() throws PluginException {
public void testDeletePluginPath() {
PluginRepository repository = new DefaultPluginRepository(pluginsPath);

assertTrue(Files.exists(pluginsPath.resolve("plugin-1.zip")));

+ 2
- 2
pf4j/src/test/java/org/pf4j/LoadPluginsTest.java View File

@@ -102,7 +102,7 @@ public class LoadPluginsTest {
// Verify the second plugin is not loaded as it has the same metadata
pluginManager.loadPluginFromPath(plugin2.path());
fail("Expected loadPluginFromPath to fail");
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
// Check the path of the loaded plugin remains the same
PluginWrapper loadedPlugin = pluginManager.getPlugin(pluginId);
assertThat(loadedPlugin.getPluginPath(), equalTo(loadedPlugin1Path));
@@ -141,7 +141,7 @@ public class LoadPluginsTest {
// Verify the second plugin is not loaded as it has the same pluginId
pluginManager.loadPluginFromPath(plugin2.path());
fail("Expected loadPluginFromPath to fail");
} catch (PluginException e) {
} catch (PluginRuntimeException e) {
// Check the path and version of the loaded plugin remain the same
PluginWrapper loadedPlugin = pluginManager.getPlugin(pluginId);
assertThat(loadedPlugin.getPluginPath(), equalTo(loadedPlugin1Path));

+ 1
- 1
pf4j/src/test/java/org/pf4j/ManifestPluginDescriptorFinderTest.java View File

@@ -107,7 +107,7 @@ public class ManifestPluginDescriptorFinderTest {
@Test
public void testFindNotFound() {
PluginDescriptorFinder descriptorFinder = new ManifestPluginDescriptorFinder();
assertThrows(PluginException.class, () -> descriptorFinder.find(pluginsPath.resolve("test-plugin-3")));
assertThrows(PluginRuntimeException.class, () -> descriptorFinder.find(pluginsPath.resolve("test-plugin-3")));
}

private Manifest getPlugin1Manifest() {

+ 1
- 1
pf4j/src/test/java/org/pf4j/PropertiesPluginDescriptorFinderTest.java View File

@@ -104,7 +104,7 @@ public class PropertiesPluginDescriptorFinderTest {
@Test
public void testNotFound() {
PluginDescriptorFinder descriptorFinder = new PropertiesPluginDescriptorFinder();
assertThrows(PluginException.class, () -> descriptorFinder.find(pluginsPath.resolve("test-plugin-3")));
assertThrows(PluginRuntimeException.class, () -> descriptorFinder.find(pluginsPath.resolve("test-plugin-3")));
}

private Properties getPlugin1Properties() {

+ 2
- 2
pf4j/src/test/java/org/pf4j/SingletonExtensionFactoryTest.java View File

@@ -28,7 +28,7 @@ import static org.junit.jupiter.api.Assertions.assertSame;
public class SingletonExtensionFactoryTest {

@Test
public void create() throws PluginException {
public void create() {
ExtensionFactory extensionFactory = new SingletonExtensionFactory();
Object extensionOne = extensionFactory.create(TestExtension.class);
Object extensionTwo = extensionFactory.create(TestExtension.class);
@@ -36,7 +36,7 @@ public class SingletonExtensionFactoryTest {
}

@Test
public void createNewEachTime() throws PluginException {
public void createNewEachTime() {
ExtensionFactory extensionFactory = new SingletonExtensionFactory(FailTestExtension.class.getName());
Object extensionOne = extensionFactory.create(TestExtension.class);
Object extensionTwo = extensionFactory.create(TestExtension.class);

Loading…
Cancel
Save