From 403b6a83e7d68de2b5159c3421b8d91d704566bb Mon Sep 17 00:00:00 2001
From: jdemendi <jdemendi@localhost>
Date: Tue, 30 Oct 2007 13:09:42 +0000
Subject: [PATCH] s set of files provides the workflow configuration manual mode.
---
opends/src/server/org/opends/server/core/NetworkGroup.java | 115 ++++++++++++++++++++++++++++++++-------------------------
1 files changed, 64 insertions(+), 51 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/NetworkGroup.java b/opends/src/server/org/opends/server/core/NetworkGroup.java
index aef2519..64eb290 100644
--- a/opends/src/server/org/opends/server/core/NetworkGroup.java
+++ b/opends/src/server/org/opends/server/core/NetworkGroup.java
@@ -56,7 +56,7 @@
// A lock to protect concurrent access to the registered Workflow nodes.
- private static Object registeredWorkflowNodesLock = new Object();
+ private Object registeredWorkflowNodesLock = new Object();
// The workflow node for the rootDSE entry. The RootDSE workflow node
@@ -107,6 +107,17 @@
/**
+ * Performs any finalization that might be required when this
+ * network group is unloaded. No action is taken in the
+ * default implementation.
+ */
+ public void finalizeNetworkGroup()
+ {
+ // No action is required by default.
+ }
+
+
+ /**
* Registers the current network group (this) with the server.
*
* @throws DirectoryException If the network group ID for the provided
@@ -188,9 +199,6 @@
WorkflowElement[] postWorkflowElements
) throws DirectoryException
{
- // true as soon as the workflow has been registered
- boolean registered = false;
-
// Is it the rootDSE workflow?
DN baseDN = workflow.getBaseDN();
if (baseDN.isNullDN())
@@ -198,7 +206,6 @@
// NOTE - The rootDSE workflow is stored with the registeredWorkflows.
rootDSEWorkflowNode =
new RootDseWorkflowTopology(workflow, namingContexts);
- registered = true;
}
else
{
@@ -210,7 +217,6 @@
// Register the workflow node with the network group. If the workflow
// ID is already existing then an exception is raised.
registerWorkflowNode(workflowNode);
- registered = true;
// Now add the workflow in the workflow topology...
for (WorkflowTopologyNode curNode: registeredWorkflowNodes.values())
@@ -234,17 +240,6 @@
// Rebuild the list of naming context handled by the network group
rebuildNamingContextList();
}
-
- // If the workflow has been registered successfully then register it
- // with the default network group
- if (registered)
- {
- if (this != defaultNetworkGroup)
- {
- defaultNetworkGroup.registerWorkflow(
- workflow, preWorkflowElements, postWorkflowElements);
- }
- }
}
@@ -253,20 +248,25 @@
* deregister is identified by its baseDN.
*
* @param baseDN the baseDN of the workflow to deregister, may be null
+ *
+ * @return the deregistered workflow
*/
- public void deregisterWorkflow(
+ public Workflow deregisterWorkflow(
DN baseDN
)
{
+ Workflow workflow = null;
+
if (baseDN == null)
{
- return;
+ return workflow;
}
if (baseDN.isNullDN())
{
// deregister the rootDSE
deregisterWorkflow(rootDSEWorkflowNode);
+ workflow = rootDSEWorkflowNode.getWorkflowImpl();
}
else
{
@@ -281,6 +281,7 @@
// Call deregisterWorkflow() instead of deregisterWorkflowNode()
// because we want the naming context list to be updated as well.
deregisterWorkflow(node);
+ workflow = node.getWorkflowImpl();
// Only one workflow can match the baseDN, so we can break
// the loop here.
@@ -289,6 +290,8 @@
}
}
}
+
+ return workflow;
}
@@ -505,38 +508,6 @@
/**
- * Checks whether a base DN has been already registered with
- * the network group.
- *
- * @param baseDN the base DN to check
- * @return <code>false</code> if the base DN is registered with the
- * network group, <code>false</code> otherwise
- */
- private boolean baseDNAlreadyRegistered(
- DN baseDN
- )
- {
- // returned result
- boolean alreadyRegistered = false;
-
- // go through the list of registered workflow and check whether a base DN
- // has already been used in a registered workflow
- for (WorkflowTopologyNode workflowNode: registeredWorkflowNodes.values())
- {
- DN curDN = workflowNode.getBaseDN();
- if (baseDN.equals (curDN))
- {
- alreadyRegistered = true;
- break;
- }
- }
-
- // check done
- return alreadyRegistered;
- }
-
-
- /**
* Returns the list of naming contexts handled by the network group.
*
* @return the list of naming contexts
@@ -614,5 +585,47 @@
namingContexts = null;
networkGroupID = null;
rootDSEWorkflowNode = null;
+ registeredWorkflowNodes = null;
+ }
+
+
+ /**
+ * Provides the list of network group registered with the server.
+ *
+ * @return the list of registered network groups
+ */
+ public static Collection<NetworkGroup> getRegisteredNetworkGroups()
+ {
+ return registeredNetworkGroups.values();
+ }
+
+
+ /**
+ * Resets the configuration of all the registered network groups.
+ */
+ public static void resetConfig()
+ {
+ // Reset the default network group
+ defaultNetworkGroup.reset();
+
+ // Reset all the registered network group
+ synchronized (registeredNetworkGroupsLock)
+ {
+ registeredNetworkGroups = new TreeMap<String, NetworkGroup>();
+ }
+ }
+
+
+ /**
+ * Resets the configuration of the current network group.
+ */
+ public void reset()
+ {
+ synchronized (registeredWorkflowNodesLock)
+ {
+ registeredWorkflowNodes = new TreeMap<String, WorkflowTopologyNode>();
+ rootDSEWorkflowNode = null;
+ namingContexts = new NetworkGroupNamingContexts();
+ }
}
}
--
Gitblit v1.10.0