1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.neo4j.server.modules;
21
22 import org.apache.commons.configuration.Configuration;
23 import org.neo4j.helpers.Service;
24 import org.neo4j.kernel.AbstractGraphDatabase;
25 import org.neo4j.server.NeoServer;
26 import org.neo4j.server.plugins.PluginLifecycle;
27 import org.neo4j.server.plugins.Injectable;
28
29 import java.util.Collection;
30 import java.util.HashSet;
31
32
33
34
35 public class PluginInitializer
36 {
37 private final Iterable<PluginLifecycle> pluginLifecycles;
38 private final NeoServer neoServer;
39
40 public PluginInitializer(NeoServer neoServer)
41 {
42 this.neoServer = neoServer;
43 pluginLifecycles = Service.load( PluginLifecycle.class );
44 }
45
46 public Collection<Injectable<?>> intitializePackages( Iterable<String> packageNames )
47 {
48 AbstractGraphDatabase graphDatabaseService = neoServer.getDatabase().graph;
49 Configuration configuration = neoServer.getConfiguration();
50
51 Collection<Injectable<?>> injectables = new HashSet<Injectable<?>>();
52 for ( PluginLifecycle pluginLifecycle : pluginLifecycles)
53 {
54 if ( hasPackage(pluginLifecycle, packageNames ) )
55 {
56 Collection<Injectable<?>> start = pluginLifecycle.start( graphDatabaseService, configuration );
57 injectables.addAll( start );
58 }
59 }
60 return injectables;
61 }
62
63 private boolean hasPackage( PluginLifecycle pluginLifecycle, Iterable<String> packageNames )
64 {
65 String lifecyclePackageName = pluginLifecycle.getClass().getPackage().getName();
66 for ( String packageName : packageNames )
67 {
68 if ( lifecyclePackageName.startsWith( packageName ) )
69 {
70 return true;
71 }
72 }
73 return false;
74 }
75
76 public void stop()
77 {
78 for ( PluginLifecycle pluginLifecycle : pluginLifecycles)
79 {
80 pluginLifecycle.stop();
81 }
82 }
83 }