use of io.gravitee.plugin.resource.ResourcePlugin in project gravitee-management-rest-api by gravitee-io.
the class ResourceServiceImpl method convert.
private ResourceEntity convert(ResourcePlugin resourcePlugin, boolean withPlugin) {
ResourceEntity entity = new ResourceEntity();
entity.setId(resourcePlugin.id());
entity.setDescription(resourcePlugin.manifest().description());
entity.setName(resourcePlugin.manifest().name());
entity.setVersion(resourcePlugin.manifest().version());
if (withPlugin) {
// Plugin information
Plugin plugin = resourcePlugin;
PluginEntity pluginEntity = new PluginEntity();
pluginEntity.setPlugin(plugin.clazz());
pluginEntity.setPath(plugin.path().toString());
pluginEntity.setType(plugin.type().toString().toLowerCase());
pluginEntity.setDependencies(plugin.dependencies());
entity.setPlugin(pluginEntity);
}
return entity;
}
use of io.gravitee.plugin.resource.ResourcePlugin in project gravitee-gateway by gravitee-io.
the class ResourceManagerImpl method initialize.
private void initialize() {
ResourcePluginManager rpm = applicationContext.getBean(ResourcePluginManager.class);
ResourceClassLoaderFactory rclf = applicationContext.getBean(ResourceClassLoaderFactory.class);
ResourceConfigurationFactory rcf = applicationContext.getBean(ResourceConfigurationFactory.class);
ReactorHandler rh = applicationContext.getBean(ReactorHandler.class);
Reactable reactable = rh.reactable();
Set<Resource> resourceDeps = reactable.dependencies(Resource.class);
resourceDeps.forEach(resource -> {
final ResourcePlugin resourcePlugin = rpm.get(resource.getType());
if (resourcePlugin == null) {
logger.error("Resource [{}] can not be found in plugin registry", resource.getType());
throw new IllegalStateException("Resource [" + resource.getType() + "] can not be found in plugin registry");
}
PluginClassLoader resourceClassLoader = rclf.getOrCreateClassLoader(resourcePlugin, rh.classloader());
logger.debug("Loading resource {} for {}", resource.getName(), rh);
try {
Class<? extends io.gravitee.resource.api.Resource> resourceClass = (Class<? extends io.gravitee.resource.api.Resource>) ClassUtils.forName(resourcePlugin.resource().getName(), resourceClassLoader);
Map<Class<?>, Object> injectables = new HashMap<>();
if (resourcePlugin.configuration() != null) {
Class<? extends ResourceConfiguration> resourceConfigurationClass = (Class<? extends ResourceConfiguration>) ClassUtils.forName(resourcePlugin.configuration().getName(), resourceClassLoader);
injectables.put(resourceConfigurationClass, rcf.create(resourceConfigurationClass, resource.getConfiguration()));
}
io.gravitee.resource.api.Resource resourceInstance = new ResourceFactory().create(resourceClass, injectables);
if (resourceInstance instanceof ApplicationContextAware) {
((ApplicationContextAware) resourceInstance).setApplicationContext(applicationContext);
}
resources.put(resource.getName(), resourceInstance);
} catch (Exception ex) {
logger.error("Unable to create resource", ex);
if (resourceClassLoader != null) {
try {
resourceClassLoader.close();
} catch (IOException ioe) {
logger.error("Unable to close classloader for resource", ioe);
}
}
}
});
}
use of io.gravitee.plugin.resource.ResourcePlugin in project gravitee-management-rest-api by gravitee-io.
the class ResourceServiceImpl method findById.
@Override
public ResourceEntity findById(String resource) {
LOGGER.debug("Find resource by ID: {}", resource);
ResourcePlugin resourceDefinition = resourcePluginManager.get(resource);
if (resourceDefinition == null) {
throw new ResourceNotFoundException(resource);
}
return convert(resourceDefinition, true);
}
use of io.gravitee.plugin.resource.ResourcePlugin in project gravitee-management-rest-api by gravitee-io.
the class ResourceServiceImpl method findAll.
@Override
public Set<ResourceEntity> findAll() {
try {
LOGGER.debug("List all resources");
final Collection<ResourcePlugin> resourceDefinitions = resourcePluginManager.findAll();
return resourceDefinitions.stream().map(resourceDefinition -> convert(resourceDefinition, false)).collect(Collectors.toSet());
} catch (Exception ex) {
LOGGER.error("An error occurs while trying to list all resources", ex);
throw new TechnicalManagementException("An error occurs while trying to list all resources", ex);
}
}
Aggregations