@@ -89,6 +89,9 @@ public class OServer {
8989 new ArrayList <OServerLifecycleListener >();
9090 protected OServerPluginManager pluginManager ;
9191 protected OConfigurableHooksManager hookManager ;
92+ /** Whether a distributed plugin is registered in the configuration */
93+ private volatile boolean distributedPluginEnabled ;
94+
9295 protected ODistributedServerManager distributedManager ;
9396 private final Map <String , Object > variables = new HashMap <String , Object >();
9497 private String serverRootDirectory ;
@@ -431,6 +434,15 @@ public OServer activate()
431434
432435 for (OServerLifecycleListener l : lifecycleListeners ) l .onBeforeActivate ();
433436
437+ // Load server plugin config and determine if participants in activation
438+ // need to be aware if distributed plugin will be part of server
439+ final List <ServerPluginConfig > serverPlugins = loadServerPlugins ();
440+ for (ServerPluginConfig serverPlugin : serverPlugins ) {
441+ if (ODistributedServerManager .class .isAssignableFrom (serverPlugin .clazz )) {
442+ distributedPluginEnabled = true ;
443+ }
444+ }
445+
434446 final OServerConfiguration configuration = serverCfg .getConfiguration ();
435447
436448 tokenHandler =
@@ -484,7 +496,7 @@ public OServer activate()
484496 throw OException .wrapException (new OConfigurationException (message ), e );
485497 }
486498
487- registerPlugins ();
499+ registerPlugins (serverPlugins );
488500
489501 for (OServerLifecycleListener l : lifecycleListeners ) l .onAfterActivate ();
490502
@@ -867,6 +879,10 @@ public ODatabaseDocumentInternal openDatabase(String database) {
867879 return getDatabases ().openNoAuthorization (database );
868880 }
869881
882+ public boolean isDistributedPluginEnabled () {
883+ return distributedPluginEnabled ;
884+ }
885+
870886 public ODistributedServerManager getDistributedManager () {
871887 return distributedManager ;
872888 }
@@ -1082,19 +1098,25 @@ public OServerPluginManager getPluginManager() {
10821098 return pluginManager ;
10831099 }
10841100
1085- protected void registerPlugins ()
1086- throws InstantiationException , IllegalAccessException , ClassNotFoundException {
1087- pluginManager = new OServerPluginManager ();
1088- pluginManager .config (this );
1089- pluginManager .startup ();
1101+ private static class ServerPluginConfig {
1102+ private final Class <?> clazz ;
1103+ private OServerParameterConfiguration [] parameters ;
1104+
1105+ private ServerPluginConfig (Class <?> clazz , OServerParameterConfiguration [] parameters ) {
1106+ this .clazz = clazz ;
1107+ this .parameters = parameters ;
1108+ }
1109+ }
1110+
1111+ private List <ServerPluginConfig > loadServerPlugins () throws ClassNotFoundException {
1112+ // PLUGINS CONFIGURED IN XML and enabled
1113+ List <ServerPluginConfig > plugins = new ArrayList <>();
10901114
10911115 // PLUGINS CONFIGURED IN XML
10921116 final OServerConfiguration configuration = serverCfg .getConfiguration ();
10931117
10941118 if (configuration .handlers != null ) {
10951119 // ACTIVATE PLUGINS
1096- final List <OServerPlugin > plugins = new ArrayList <OServerPlugin >();
1097-
10981120 for (OServerHandlerConfiguration h : configuration .handlers ) {
10991121 if (h .parameters != null ) {
11001122 // CHECK IF IT'S ENABLED
@@ -1120,28 +1142,41 @@ protected void registerPlugins()
11201142 // SKIP IT
11211143 continue ;
11221144 }
1145+ final Class <?> pluginClass = loadClass (h .clazz );
1146+ plugins .add (new ServerPluginConfig (pluginClass , h .parameters ));
1147+ }
1148+ }
1149+ return plugins ;
1150+ }
11231151
1124- final OServerPlugin plugin = (OServerPlugin ) loadClass (h .clazz ).newInstance ();
1152+ private void registerPlugins (List <ServerPluginConfig > serverPlugins )
1153+ throws InstantiationException , IllegalAccessException , ClassNotFoundException {
1154+ pluginManager = new OServerPluginManager ();
1155+ pluginManager .config (this );
1156+ pluginManager .startup ();
11251157
1126- if (plugin instanceof ODistributedServerManager )
1127- distributedManager = (ODistributedServerManager ) plugin ;
1158+ final List <OServerPlugin > plugins = new ArrayList <>();
1159+ for (ServerPluginConfig serverPlugin : serverPlugins ) {
1160+ final OServerPlugin plugin = (OServerPlugin ) serverPlugin .clazz .newInstance ();
11281161
1129- pluginManager . registerPlugin (
1130- new OServerPluginInfo ( plugin . getName (), null , null , null , plugin , null , 0 , null )) ;
1162+ if ( plugin instanceof ODistributedServerManager )
1163+ distributedManager = ( ODistributedServerManager ) plugin ;
11311164
1132- pluginManager .callListenerBeforeConfig (plugin , h .parameters );
1133- plugin .config (this , h .parameters );
1134- pluginManager .callListenerAfterConfig (plugin , h .parameters );
1165+ pluginManager .registerPlugin (
1166+ new OServerPluginInfo (plugin .getName (), null , null , null , plugin , null , 0 , null ));
11351167
1136- plugins .add (plugin );
1137- }
1168+ pluginManager .callListenerBeforeConfig (plugin , serverPlugin .parameters );
1169+ plugin .config (this , serverPlugin .parameters );
1170+ pluginManager .callListenerAfterConfig (plugin , serverPlugin .parameters );
11381171
1139- // START ALL THE CONFIGURED PLUGINS
1140- for (OServerPlugin plugin : plugins ) {
1141- pluginManager .callListenerBeforeStartup (plugin );
1142- plugin .startup ();
1143- pluginManager .callListenerAfterStartup (plugin );
1144- }
1172+ plugins .add (plugin );
1173+ }
1174+
1175+ // START ALL THE CONFIGURED PLUGINS
1176+ for (OServerPlugin plugin : plugins ) {
1177+ pluginManager .callListenerBeforeStartup (plugin );
1178+ plugin .startup ();
1179+ pluginManager .callListenerAfterStartup (plugin );
11451180 }
11461181 }
11471182
0 commit comments