Beispiel #1
0
 private ExtensionPointRepresentation describe(PluginPoint extension) {
   ExtensionPointRepresentation representation =
       new ExtensionPointRepresentation(
           extension.name(), extension.forType(), extension.getDescription());
   extension.describeParameters(representation);
   return representation;
 }
Beispiel #2
0
 @Override
 public Map<String, List<String>> getExensionsFor(Class<?> type) {
   Map<String, List<String>> result = new HashMap<String, List<String>>();
   for (Map.Entry<String, ServerExtender> extension : extensions.entrySet()) {
     List<String> methods = new ArrayList<String>();
     for (PluginPoint method : extension.getValue().getExtensionsFor(type)) {
       methods.add(method.name());
     }
     if (!methods.isEmpty()) {
       result.put(extension.getKey(), methods);
     }
   }
   return result;
 }
Beispiel #3
0
 @Override
 public <T> Representation invoke(
     GraphDatabaseAPI graphDb,
     String name,
     Class<T> type,
     String method,
     T context,
     ParameterList params)
     throws PluginLookupException, BadInputException, PluginInvocationFailureException,
         BadPluginInvocationException {
   PluginPoint plugin = extension(name, type, method);
   try {
     return plugin.invoke(graphDb, context, params);
   } catch (BadInputException e) {
     throw e;
   } catch (BadPluginInvocationException e) {
     throw e;
   } catch (PluginInvocationFailureException e) {
     throw e;
   } catch (Exception e) {
     throw new PluginInvocationFailureException(e);
   }
 }
Beispiel #4
0
 PluginManager(Config serverConfig, Iterable<ServerPlugin> plugins, LogProvider logProvider) {
   Map<String, Pair<ServerPlugin, ServerExtender>> extensions =
       new HashMap<String, Pair<ServerPlugin, ServerExtender>>();
   Log log = logProvider.getLog(getClass());
   for (ServerPlugin plugin : plugins) {
     PluginPointFactory factory = new PluginPointFactoryImpl();
     final ServerExtender extender = new ServerExtender(factory);
     try {
       plugin.loadServerExtender(extender);
     } catch (Exception ex) {
       log.warn("Failed to load plugin [%s]: %s", plugin.toString(), ex.getMessage());
       continue;
     } catch (LinkageError err) {
       log.warn("Failed to load plugin [%s]: %s", plugin.toString(), err.getMessage());
       continue;
     }
     Pair<ServerPlugin, ServerExtender> old =
         extensions.put(plugin.name, Pair.of(plugin, extender));
     if (old != null) {
       log.warn(
           String.format(
               "Extension naming conflict \"%s\" between \"%s\" and \"%s\"",
               plugin.name, old.first().getClass(), plugin.getClass()));
     }
   }
   for (Pair<ServerPlugin, ServerExtender> extension : extensions.values()) {
     log.info(String.format("Loaded server plugin \"%s\"", extension.first().name));
     for (PluginPoint point : extension.other().all()) {
       log.info(
           String.format(
               "  %s.%s: %s",
               point.forType().getSimpleName(), point.name(), point.getDescription()));
     }
     this.extensions.put(extension.first().name, extension.other());
   }
 }