use of io.apiman.manager.api.rest.exceptions.PluginResourceNotFoundException in project apiman by apiman.
the class PluginResourceImpl method getPolicyForm.
/**
* @see IPluginResource#getPolicyForm(java.lang.Long, java.lang.String)
*/
@Override
public String getPolicyForm(Long pluginId, String policyDefId) throws PluginNotFoundException, PluginResourceNotFoundException, PolicyDefinitionNotFoundException {
// No permission check is needed
PluginBean pbean;
PolicyDefinitionBean pdBean;
try {
pbean = storage.getPlugin(pluginId);
if (pbean == null) {
throw ExceptionFactory.pluginNotFoundException(pluginId);
}
pdBean = storage.getPolicyDefinition(policyDefId);
} catch (AbstractRestException e) {
throw e;
} catch (Exception e) {
throw new SystemErrorException(e);
}
PluginCoordinates coordinates = new PluginCoordinates(pbean.getGroupId(), pbean.getArtifactId(), pbean.getVersion(), pbean.getClassifier(), pbean.getType());
try {
if (pdBean == null) {
throw ExceptionFactory.policyDefNotFoundException(policyDefId);
}
if (pdBean.getPluginId() == null || !pdBean.getPluginId().equals(pbean.getId())) {
throw ExceptionFactory.pluginNotFoundException(pluginId);
}
if (pdBean.getFormType() == PolicyFormType.JsonSchema && pdBean.getForm() != null) {
String formPath = pdBean.getForm();
if (!formPath.startsWith("/")) {
// $NON-NLS-1$
// $NON-NLS-1$
formPath = "META-INF/apiman/policyDefs/" + formPath;
} else {
formPath = formPath.substring(1);
}
Plugin plugin = pluginRegistry.loadPlugin(coordinates);
PluginClassLoader loader = plugin.getLoader();
InputStream resource = null;
try {
resource = loader.getResourceAsStream(formPath);
if (resource == null) {
throw ExceptionFactory.pluginResourceNotFoundException(formPath, coordinates);
}
StringWriter writer = new StringWriter();
IOUtils.copy(resource, writer);
return writer.toString();
} finally {
IOUtils.closeQuietly(resource);
}
} else {
throw ExceptionFactory.pluginResourceNotFoundException(null, coordinates);
}
} catch (AbstractRestException e) {
throw e;
} catch (Throwable t) {
throw new SystemErrorException(t);
}
}
Aggregations