From 438970658f497b88c88909a91de79c749085ab37 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 22 Oct 2014 10:08:44 +0000
Subject: [PATCH] OPENDJ-1545 Remove Workflow, NetworkGroups and related attempts at building a proxy
---
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java | 79 ---------
/dev/null | 93 -----------
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java | 10
opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteriaTest.java | 17 -
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java | 6
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteria.java | 33 +--
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElement.java | 132 ----------------
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementConfigManager.java | 14 +
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java | 34 ----
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementState.java | 25 ++
10 files changed, 58 insertions(+), 385 deletions(-)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
index 3d6399c..42577cf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -9130,30 +9130,6 @@
}
/**
- * Return the WorkflowElement associated with a name and try to
- * create it if it does not exists yet.
- *
- * @param workflowElementID the name of the requested workflow element
- * @return the associated workflow element
- * @throws ConfigException if the configuration is invalid
- * @throws InitializationException if the initialization failed
- */
- public static WorkflowElement getOrCreateWorkflowElement(
- String workflowElementID)
- throws ConfigException, InitializationException {
-
- WorkflowElement we = directoryServer.workflowElements.get(
- workflowElementID);
-
- if (we == null) {
- we = directoryServer.workflowElementConfigManager.
- loadAndRegisterWorkflowElement(workflowElementID);
- }
-
- return we;
- }
-
- /**
* Registers the provided workflow element from the Directory Server.
*
* @param we The workflow element to register. It must not be
@@ -9199,16 +9175,6 @@
}
/**
- * Verifies if the provided workflow element ID is already registered.
- *
- * @param workflowElementID workflow element identifier
- * @return boolean indicating if workflow element is already registered
- */
- public static boolean isWorkflowElementRegistered(String workflowElementID) {
- return directoryServer.workflowElements.containsKey(workflowElementID);
- }
-
- /**
* Print messages for start-ds "-F" option (full version information).
*/
private static void printFullVersionInformation() {
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteria.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteria.java
index f03c29d..74d51cf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteria.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteria.java
@@ -22,11 +22,10 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
+ * Portions copyright 2014 ForgeRock AS.
*/
package org.opends.server.core.networkgroups;
-
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -37,8 +36,6 @@
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
-
-
/**
* A connection criteria which matches connections authenticated using a
* permitted bind DN.
@@ -48,23 +45,6 @@
/**
* Creates a new bind DN connection criteria using the provided DN
- * patterns.
- *
- * @param patterns
- * The DN patterns.
- * @return The new bind DN connection criteria.
- */
- public static BindDNConnectionCriteria create(
- Collection<PatternDN> patterns)
- {
- return new BindDNConnectionCriteria(new ArrayList<PatternDN>(
- patterns));
- }
-
-
-
- /**
- * Creates a new bind DN connection criteria using the provided DN
* pattern string representations.
*
* @param patternStrings
@@ -94,8 +74,13 @@
- // Private constructor.
- private BindDNConnectionCriteria(List<PatternDN> patterns)
+ /**
+ * Creates a new bind DN connection criteria using the provided DN patterns.
+ *
+ * @param patterns
+ * The DN patterns.
+ */
+ BindDNConnectionCriteria(List<PatternDN> patterns)
{
this.patterns = patterns;
}
@@ -105,6 +90,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public boolean matches(ClientConnection connection)
{
DN dn = connection.getAuthenticationInfo().getAuthenticationDN();
@@ -116,6 +102,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public boolean willMatchAfterBind(ClientConnection connection,
DN bindDN, AuthenticationType authType, boolean isSecure)
{
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
index c573e08..99d0dd5 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroup.java
@@ -26,11 +26,6 @@
*/
package org.opends.server.core.networkgroups;
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.CoreMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-import static org.forgerock.util.Reject.*;
-
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
@@ -45,6 +40,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.ClassPropertyDefinition;
import org.opends.server.admin.server.ConfigurationAddListener;
@@ -56,13 +52,11 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.api.QOSPolicy;
import org.opends.server.api.QOSPolicyFactory;
-import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.RootDseWorkflowTopology;
import org.opends.server.core.Workflow;
import org.opends.server.core.WorkflowImpl;
import org.opends.server.core.WorkflowTopologyNode;
-import org.opends.server.protocols.ldap.LDAPMessage;
import org.opends.server.types.AuthenticationType;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DN;
@@ -71,6 +65,11 @@
import org.opends.server.types.operation.PreParseOperation;
import org.opends.server.workflowelement.WorkflowElement;
+import static org.forgerock.util.Reject.*;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.CoreMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
/**
* This class defines the network group. A network group is used to
* categorize client connections. A network group is defined by a set of
@@ -299,7 +298,7 @@
new TreeMap<String, NetworkGroup>();
// A lock to protect concurrent access to the registeredNetworkGroups.
- private static Object registeredNetworkGroupsLock = new Object();
+ private static final Object registeredNetworkGroupsLock = new Object();
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -799,11 +798,6 @@
// is not stored in the list of registered workflow nodes.
private RootDseWorkflowTopology rootDSEWorkflowNode = null;
- // The network group statistics.
- private final NetworkGroupStatistics statistics;
-
-
-
/**
* Creates a new system network group using the provided ID.
*
@@ -819,7 +813,6 @@
ADMIN_NETWORK_GROUP_NAME.equals(networkGroupID);
this.isDefaultNetworkGroup =
DEFAULT_NETWORK_GROUP_NAME.equals(networkGroupID);
- this.statistics = new NetworkGroupStatistics(this);
this.configuration = null;
this.changeListener = null;
this.policyListener = null;
@@ -836,7 +829,6 @@
this.isInternalNetworkGroup = false;
this.isAdminNetworkGroup = false;
this.isDefaultNetworkGroup = false;
- this.statistics = new NetworkGroupStatistics(this);
this.configuration = configuration;
this.changeListener = new ChangeListener();
this.policyListener = new QOSPolicyListener();
@@ -1073,8 +1065,6 @@
resourceLimitsPolicy = null;
criteria = ConnectionCriteria.TRUE;
policies.clear();
- // Remove the stats
- statistics.finalizeStatistics();
}
@@ -1278,21 +1268,6 @@
}
}
-
-
- /**
- * Updates the operations statistics.
- *
- * @param message
- * The LDAP message being processed
- */
- public void updateMessageRead(LDAPMessage message)
- {
- statistics.updateMessageRead(message);
- }
-
-
-
/**
* Deregisters the current network group (this) with the server. The
* method also decrements the reference counter of the workflows so
@@ -1478,46 +1453,6 @@
}
}
-
-
- /**
- * Dumps info from the current network group for debug purpose.
- * <p>
- * This method is intended for testing only.
- *
- * @param leftMargin
- * white spaces used to indent traces
- * @return a string buffer that contains trace information
- */
- StringBuilder toString(String leftMargin)
- {
- StringBuilder sb = new StringBuilder();
- String newMargin = leftMargin + " ";
-
- sb.append(leftMargin + "Networkgroup (" + networkGroupID + "\n");
- sb.append(leftMargin + "List of registered workflows:\n");
- for (WorkflowTopologyNode node : registeredWorkflowNodes.values())
- {
- sb.append(node.toString(newMargin));
- }
-
- namingContexts.toString(leftMargin);
-
- sb.append(leftMargin + "rootDSEWorkflow:\n");
- if (rootDSEWorkflowNode == null)
- {
- sb.append(newMargin + "null\n");
- }
- else
- {
- sb.append(rootDSEWorkflowNode.toString(newMargin));
- }
-
- return sb;
- }
-
-
-
/**
* Checks whether the base DN of a new workflow to register is present
* in a workflow already registered with the network group.
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java
deleted file mode 100644
index 25b72e0..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/networkgroups/NetworkGroupStatistics.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2009-2010 Sun Microsystems, Inc.
- * Portions Copyright 2013-2014 ForgeRock AS.
- */
-package org.opends.server.core.networkgroups;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicLong;
-import org.opends.server.admin.std.server.MonitorProviderCfg;
-import org.opends.server.api.MonitorProvider;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.protocols.ldap.LDAPMessage;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.Attributes;
-import org.opends.server.types.InitializationException;
-
-import org.forgerock.opendj.ldap.SearchScope;
-import static org.opends.server.protocols.ldap.LDAPConstants.*;
-import static org.opends.messages.ProtocolMessages.*;
-
-/**
- * This class implements the statistics associated to a network group.
- */
-public class NetworkGroupStatistics
- extends MonitorProvider<MonitorProviderCfg> {
-
- // The instance name for this monitor provider instance.
- private final String instanceName;
- private final NetworkGroup networkGroup;
-
- private AtomicLong abandonRequests = new AtomicLong(0);
- private AtomicLong addRequests = new AtomicLong(0);
- private AtomicLong bindRequests = new AtomicLong(0);
- private AtomicLong compareRequests = new AtomicLong(0);
- private AtomicLong deleteRequests = new AtomicLong(0);
- private AtomicLong extendedRequests = new AtomicLong(0);
- private AtomicLong modifyRequests = new AtomicLong(0);
- private AtomicLong modifyDNRequests = new AtomicLong(0);
- private AtomicLong searchOneRequests = new AtomicLong(0);
- private AtomicLong searchSubRequests = new AtomicLong(0);
- private AtomicLong unbindRequests = new AtomicLong(0);
-
- /**
- * Constructor.
- * @param networkGroup The network group owning these stats
- */
- public NetworkGroupStatistics(NetworkGroup networkGroup) {
- this.instanceName = networkGroup.getID();
- this.networkGroup = networkGroup;
- DirectoryServer.registerMonitorProvider(this);
- }
-
-
- /**
- * Finalize the statistics.
- */
- public void finalizeStatistics() {
- DirectoryServer.deregisterMonitorProvider(this);
- }
-
-
- /**
- * Increments the number of operations managed by this network group.
- * @param message The LDAP LocalizableMessage containing the operation to be
- * managed by the network group.
- */
- public void updateMessageRead(LDAPMessage message) {
- switch (message.getProtocolOp().getType())
- {
- case OP_TYPE_ABANDON_REQUEST:
- abandonRequests.getAndIncrement();
- break;
- case OP_TYPE_ADD_REQUEST:
- addRequests.getAndIncrement();
- break;
- case OP_TYPE_BIND_REQUEST:
- bindRequests.getAndIncrement();
- break;
- case OP_TYPE_COMPARE_REQUEST:
- compareRequests.getAndIncrement();
- break;
- case OP_TYPE_DELETE_REQUEST:
- deleteRequests.getAndIncrement();
- break;
- case OP_TYPE_EXTENDED_REQUEST:
- extendedRequests.getAndIncrement();
- break;
- case OP_TYPE_MODIFY_REQUEST:
- modifyRequests.getAndIncrement();
- break;
- case OP_TYPE_MODIFY_DN_REQUEST:
- modifyDNRequests.getAndIncrement();
- break;
- case OP_TYPE_SEARCH_REQUEST:
- SearchScope scope = message.getSearchRequestProtocolOp().getScope();
- if (scope == SearchScope.BASE_OBJECT
- || scope == SearchScope.SINGLE_LEVEL) {
- searchOneRequests.getAndIncrement();
- } else {
- searchSubRequests.getAndIncrement();
- }
- break;
- case OP_TYPE_UNBIND_REQUEST:
- unbindRequests.getAndIncrement();
- break;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void initializeMonitorProvider(MonitorProviderCfg configuration)
- throws ConfigException, InitializationException {
- // Throw an exception, because this monitor is not intended to be
- // dynamically loaded from the configuration. Rather, it should be
- // explicitly created and registered by the LDAP connection handler or an
- // LDAP client connection.
- throw new ConfigException(ERR_LDAP_STATS_INVALID_MONITOR_INITIALIZATION.get(configuration.dn()));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getMonitorInstanceName() {
- return this.instanceName+",cn=Network Groups";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<Attribute> getMonitorData() {
- ArrayList<Attribute> attrs = new ArrayList<Attribute>();
-
- RequestFilteringPolicyStatistics rfpStatistics =
- networkGroup.getRequestFilteringPolicyStatistics();
- if (rfpStatistics != null)
- {
- attrs.add(Attributes.create(
- "ds-mon-rejected-attributes-total-count", String
- .valueOf(rfpStatistics.getRejectedAttributes())));
- attrs.add(Attributes.create(
- "ds-mon-rejected-operations-total-count", String
- .valueOf(rfpStatistics.getRejectedOperations())));
- attrs.add(Attributes.create(
- "ds-mon-rejected-search-scopes-total-count", String
- .valueOf(rfpStatistics.getRejectedScopes())));
- attrs.add(Attributes.create(
- "ds-mon-rejected-subtrees-total-count", String
- .valueOf(rfpStatistics.getRejectedSubtrees())));
- }
-
- ResourceLimitsPolicyStatistics rlpStatistics =
- networkGroup.getResourceLimitsPolicyStatistics();
- if (rlpStatistics != null)
- {
- attrs.add(Attributes.create("ds-mon-client-connection-count",
- String.valueOf(rlpStatistics.getClientConnections())));
- attrs.add(Attributes.create("ds-mon-client-connection-max-count",
- String.valueOf(rlpStatistics.getMaxClientConnections())));
- attrs.add(Attributes.create(
- "ds-mon-client-connection-total-count", String
- .valueOf(rlpStatistics.getTotalClientConnections())));
- }
-
- attrs.add(Attributes.create("ds-mon-abandon-operations-total-count",
- String.valueOf(abandonRequests.get())));
- attrs.add(Attributes.create("ds-mon-add-operations-total-count",
- String.valueOf(addRequests.get())));
- attrs.add(Attributes.create("ds-mon-bind-operations-total-count",
- String.valueOf(bindRequests.get())));
- attrs.add(Attributes.create("ds-mon-compare-operations-total-count",
- String.valueOf(compareRequests.get())));
- attrs.add(Attributes.create("ds-mon-delete-operations-total-count",
- String.valueOf(deleteRequests.get())));
- attrs.add(Attributes.create("ds-mon-extended-operations-total-count",
- String.valueOf(extendedRequests.get())));
- attrs.add(Attributes.create("ds-mon-mod-operations-total-count",
- String.valueOf(modifyRequests.get())));
- attrs.add(Attributes.create("ds-mon-moddn-operations-total-count",
- String.valueOf(modifyDNRequests.get())));
- attrs.add(Attributes.create(
- "ds-mon-searchonelevel-operations-total-count",
- String.valueOf(searchOneRequests.get())));
- attrs.add(Attributes.create("ds-mon-searchsubtree-operations-total-count",
- String.valueOf(searchSubRequests.get())));
- attrs.add(Attributes.create("ds-mon-unbind-operations-total-count",
- String.valueOf(unbindRequests.get())));
-
- attrs.add(Attributes.create("ds-mon-discarded-referrals-total-count",
- "Not implemented"));
- attrs.add(Attributes.create("ds-mon-forwarded-referrals-total-count",
- "Not implemented"));
- attrs.add(Attributes.create("ds-mon-followed-referrals-total-count",
- "Not implemented"));
- attrs.add(Attributes.create("ds-mon-failed-referrals-total-count",
- "Not implemented"));
- attrs.add(Attributes.create("ds-mon-violations-schema-total-count",
- "Not implemented"));
- attrs.add(Attributes.create("ds-mon-persistent-searchs-count",
- "Not implemented"));
-
- return attrs;
- }
-
-}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 0bfca2c..6462af2 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -26,8 +26,6 @@
*/
package org.opends.server.protocols.ldap;
-
-
import java.io.Closeable;
import java.io.IOException;
import java.net.InetAddress;
@@ -52,6 +50,7 @@
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.api.ClientConnection;
import org.opends.server.api.ConnectionHandler;
import org.opends.server.core.*;
@@ -61,7 +60,6 @@
import org.opends.server.extensions.TLSByteChannel;
import org.opends.server.extensions.TLSCapableConnection;
import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.util.StaticUtils;
import org.opends.server.util.TimeThread;
@@ -73,7 +71,6 @@
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
-
/**
* This class defines an LDAP client connection, which is a type of
* client connection that will be accepted by an instance of the LDAP
@@ -1624,7 +1621,6 @@
if (keepStats)
{
statTracker.updateMessageRead(message);
- this.getNetworkGroup().updateMessageRead(message);
}
operationsPerformed.getAndIncrement();
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/LeafWorkflowElement.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/LeafWorkflowElement.java
deleted file mode 100644
index fd6d645..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/LeafWorkflowElement.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2008-2009 Sun Microsystems, Inc.
- */
-package org.opends.server.workflowelement;
-
-import java.util.ArrayList;
-import org.opends.server.admin.std.server.WorkflowElementCfg;
-import java.util.List;
-
-
-/**
- * This class defines the super class for all the workflow elements
- * used to wrap physical repositories. A physical repository contains
- * data (for example, a local backend, a remote LDAP servers or an
- * LDIF flat file). Such workflow element is a leaf in the sense that
- * the workflow element can be used by another workflow element but
- * cannot use an other workflow element.
- *
- * @param <T> The type of configuration handled by this workflow elelemnt.
- */
-public abstract class LeafWorkflowElement <T extends WorkflowElementCfg>
- extends WorkflowElement<WorkflowElementCfg>
-{
- /**
- * {@inheritDoc}
- */
- public List<WorkflowElement<?>> getChildWorkflowElements() {
- // A leaf workflow element has no child
- return new ArrayList<WorkflowElement<?>>();
- }
-
-}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElement.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElement.java
deleted file mode 100644
index 2303451..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElement.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2008 Sun Microsystems, Inc.
- */
-package org.opends.server.workflowelement;
-
-
-import java.util.Observable;
-
-
-/**
- * This class is used to implement a notification system for any
- * information in a workflow element.
- */
-public abstract class ObservableWorkflowElement extends Observable
-{
- // The observed workflow element
- private final WorkflowElement<?> observedWorkflowElement;
-
-
- /**
- * Creates an instance of the observable object for a given workflow
- * element.
- *
- * @param workflowElement
- * The workflow element for which this observable object is created.
- */
- protected ObservableWorkflowElement(
- WorkflowElement<?> workflowElement
- )
- {
- this.observedWorkflowElement = workflowElement;
- }
-
-
- /**
- * Gets the observed workflow element.
- *
- * @return the observed workflow element.
- */
- public WorkflowElement<?> getObservedWorkflowElement()
- {
- return observedWorkflowElement;
- }
-}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementState.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementState.java
index b6bb5a7..1da432c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementState.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementState.java
@@ -22,9 +22,11 @@
*
*
* Copyright 2008 Sun Microsystems, Inc.
+ * Portions copyright 2014 ForgeRock AS.
*/
package org.opends.server.workflowelement;
+import java.util.Observable;
/**
* This class implements an observable workflow element state.
@@ -32,13 +34,13 @@
* state of the workflow element has changed. Typically, observers are
* notified when a workflow element is enabled or disabled.
*/
-public class ObservableWorkflowElementState
- extends ObservableWorkflowElement
+public class ObservableWorkflowElementState extends Observable
{
// The "enabled" state of the observed workflow element.
// By default, a workflow element is enabled (otherwise this
// instance of workflow element state would not exist).
private boolean enabled = true;
+ private final WorkflowElement<?> observedWorkflowElement;
/**
@@ -48,10 +50,9 @@
* @param observedWorkflowElement
* The workflow element to observe.
*/
- public ObservableWorkflowElementState(
- WorkflowElement<?> observedWorkflowElement)
+ ObservableWorkflowElementState(WorkflowElement<?> observedWorkflowElement)
{
- super(observedWorkflowElement);
+ this.observedWorkflowElement = observedWorkflowElement;
}
@@ -61,8 +62,7 @@
*
* @param enabled the new "enabled" state of the observed workflow element
*/
- public void setWorkflowElementEnabled(
- boolean enabled)
+ public void setWorkflowElementEnabled(boolean enabled)
{
if (this.enabled != enabled)
{
@@ -81,4 +81,15 @@
{
return enabled;
}
+
+
+ /**
+ * Gets the observed workflow element.
+ *
+ * @return the observed workflow element.
+ */
+ public WorkflowElement<?> getObservedWorkflowElement()
+ {
+ return observedWorkflowElement;
+ }
}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementStatus.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementStatus.java
deleted file mode 100644
index 328b289..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/ObservableWorkflowElementStatus.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2008-2009 Sun Microsystems, Inc.
- */
-package org.opends.server.workflowelement;
-
-
-/**
- * This class implements an observable workflow element status.
- * The observable workflow element status notifies observers when
- * the status of the workflow element has changed.
- * <p>
- * The status of a workflow reflects the "health" of the workflow element.
- * The measure of the health is defined by an index - the saturation index -
- * whose value may vary within the range [0 - 100].
- * <p>
- * An index value of 0 means that the workflow element fully operational.
- * An index value of 100 means that the workflow element is no more operational.
- * An value in between means that the workflow element is in a degraded mode.
- * The higher the index value, the more degraded the workflow element is.
- */
-public class ObservableWorkflowElementStatus
- extends ObservableWorkflowElement
-{
- /**
- * The health indicator (aka saturation index) of the workflow element.
- */
- private int saturationIndex = 0;
- private Object saturationIndexLock = new Object();
-
-
- /**
- * Creates an instance of an observable status for a given workflow
- * element.
- *
- * @param observedWorkflowElement
- * The workflow element which exposes its status.
- */
- public ObservableWorkflowElementStatus(
- WorkflowElement<?> observedWorkflowElement
- )
- {
- super(observedWorkflowElement);
- }
-
-
- /**
- * Provides the saturation index of the workflow element.
- *
- * @return the saturation index of the workflow element.
- */
- public int getSaturationIndex()
- {
- return saturationIndex;
- }
-
-
- /**
- * Updates the saturation index of the workflow element. Once the
- * index has been updated, all the observers registered with this
- * index are notified.
- *
- * @param newValue
- * The new value of the saturation index.
- */
- public void setSaturationIndex(int newValue)
- {
- synchronized (saturationIndexLock)
- {
- if (newValue != saturationIndex)
- {
- this.saturationIndex = newValue;
- setChanged();
- }
- }
-
- // If the value has been updated then notify all the observers.
- if (hasChanged())
- {
- notifyObservers();
- }
- }
-}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElement.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElement.java
index 522acb7..e0b9a6e 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElement.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElement.java
@@ -22,25 +22,20 @@
*
*
* Copyright 2008-2010 Sun Microsystems, Inc.
- * Portions copyright 2013 ForgeRock AS.
+ * Portions copyright 2013-2014 ForgeRock AS.
*/
package org.opends.server.workflowelement;
-
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.opends.server.admin.std.server.MonitorProviderCfg;
import org.opends.server.admin.std.server.WorkflowElementCfg;
-import org.opends.server.api.MonitorProvider;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.Operation;
import org.opends.server.types.CanceledOperationException;
-
+import org.opends.server.types.Operation;
/**
* This class defines the super class for all the workflow elements. A workflow
@@ -82,16 +77,6 @@
newWorkflowElementNotificationList =
new ConcurrentHashMap<String, List<Observer>>();
-
- // The observable status of the workflow element.
- // The status contains the health indicator (aka saturation index)
- // of the workflow element.
- private ObservableWorkflowElementStatus observableStatus =
- new ObservableWorkflowElementStatus(this);
-
- // The statistics exported by the workflow element
- private MonitorProvider<MonitorProviderCfg> statistics;
-
/**
* Provides the observable state of the workflow element.
* This method is intended to be called by the WorkflowElementConfigManager
@@ -105,18 +90,6 @@
return observableState;
}
-
- /**
- * Provides the observable status of the workflow element.
- *
- * @return the observable status of the workflow element.
- */
- protected ObservableWorkflowElementStatus getObservableStatus()
- {
- return observableStatus;
- }
-
-
/**
* Registers with a specific workflow element to be notified when the
* workflow element state has changed. This notification system is
@@ -280,16 +253,13 @@
{
this.workflowElementID = workflowElementID;
this.workflowElementTypeInfo = workflowElementTypeInfo;
- this.statistics = this.createStatistics();
- if (this.statistics != null) {
- DirectoryServer.registerMonitorProvider(this.statistics);
- }
}
/**
* {@inheritDoc}
*/
+ @Override
public void update(Observable o, Object arg)
{
// By default, do nothing when notification hits the workflow element.
@@ -340,10 +310,6 @@
*/
public void finalizeWorkflowElement()
{
- // Deregister the monitor provider.
- if (statistics != null) {
- DirectoryServer.deregisterMonitorProvider(statistics);
- }
}
/**
@@ -393,96 +359,4 @@
{
return workflowElementID;
}
-
-
- /**
- * Modifies the saturation index of the workflow element.
- *
- * @param newValue
- * The new value of the saturation index of the workflow element.
- */
- public void setSaturationIndex(int newValue)
- {
- observableStatus.setSaturationIndex(newValue);
- }
-
-
- /**
- * Gets the saturation index of the workflow element.
- *
- * @return the value of the saturation index of the workflow element.
- */
- public int getSaturationIndex()
- {
- return observableStatus.getSaturationIndex();
- }
-
-
- /**
- * Registers an observer with the saturation index of the workflow
- * element. The observer will be notified when the saturation index
- * is updated.
- *
- * @param observer
- * The observer to notify when the saturation index is modified.
- */
- public void registerForSaturationIndexUpdate(Observer observer)
- {
- observableStatus.addObserver(observer);
- }
-
-
- /**
- * Deregisters an observer with the saturation index of the workflow
- * element.
- *
- * @param observer
- * The observer to deregister.
- */
- public void deregisterForSaturationIndexUpdate(Observer observer)
- {
- observableStatus.deleteObserver(observer);
- }
-
- /**
- * Retrieves the list of child workflow elements, ie the
- * WorkflowElements below this one in the topology tree.
- *
- * @return child workflow elements
- */
- public abstract List<WorkflowElement<?>> getChildWorkflowElements();
-
- /**
- * Checks whether the tree of workflow elements below this one
- * contains the provided workflow element.
- *
- * @param element The WorkflowElement we are looking for in the topology
- * below this object.
- * @return boolean
- */
- public boolean hasChildWorkflowElement(WorkflowElement<?> element) {
- if (this.getChildWorkflowElements().size() == 0) {
- return (this.equals(element));
- }
-
- for (WorkflowElement<?> subElement : this.getChildWorkflowElements()) {
- if (subElement.equals(element) ||
- subElement.hasChildWorkflowElement(element)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Creates the statistics exposed by the workflow element. By default,
- * workflow elements do not expose anything but specific implementations
- * can override this method and provide their own stats.
- * @return the statistics exposed by the workflow element.
- */
- public MonitorProvider<MonitorProviderCfg> createStatistics() {
- // by default, no stats are created;
- // This method should be overriden if necessary
- return null;
- }
}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementConfigManager.java
index d566a93..915e956 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementConfigManager.java
@@ -32,6 +32,8 @@
import java.util.List;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.util.Utils;
import org.opends.server.admin.ClassPropertyDefinition;
import org.opends.server.admin.server.ConfigurationAddListener;
@@ -41,13 +43,11 @@
import org.opends.server.admin.std.meta.WorkflowElementCfgDefn;
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.admin.std.server.WorkflowElementCfg;
-import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ServerContext;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
import static org.opends.messages.ConfigMessages.*;
@@ -65,8 +65,6 @@
{
- private final ServerContext serverContext;
-
/**
* Creates a new instance of this workflow config manager.
*
@@ -75,7 +73,6 @@
*/
public WorkflowElementConfigManager(ServerContext serverContext)
{
- this.serverContext = serverContext;
}
/**
@@ -144,6 +141,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public boolean isConfigurationAddAcceptable(
WorkflowElementCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -175,6 +173,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public ConfigChangeResult applyConfigurationAdd(
WorkflowElementCfg configuration)
{
@@ -215,6 +214,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public boolean isConfigurationDeleteAcceptable(
WorkflowElementCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -229,6 +229,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public ConfigChangeResult applyConfigurationDelete(
WorkflowElementCfg configuration)
{
@@ -263,6 +264,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public boolean isConfigurationChangeAcceptable(
WorkflowElementCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -294,6 +296,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public ConfigChangeResult applyConfigurationChange(
WorkflowElementCfg configuration)
{
@@ -418,7 +421,6 @@
// I cannot use the parameterized type WorflowElement<?>
// because it would break the line WorkflowElement.class below.
// Use SuppressWarning because we know the cast is safe.
- @SuppressWarnings("unchecked")
Class<? extends WorkflowElement> workflowElementClass;
definition = WorkflowElementCfgDefn.getInstance();
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementStatistics.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementStatistics.java
deleted file mode 100644
index 040c5c2..0000000
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/WorkflowElementStatistics.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2010 Sun Microsystems, Inc.
- * Portions Copyright 2014 ForgeRock AS
- */
-package org.opends.server.workflowelement;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.opends.server.admin.std.server.MonitorProviderCfg;
-import org.opends.server.api.MonitorProvider;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.Attributes;
-import org.opends.server.types.InitializationException;
-
-
-/**
- * This class implements the statistics associated to a workflow element.
- * The workflow element provides a saturation index.
- */
-public class WorkflowElementStatistics
- extends MonitorProvider<MonitorProviderCfg> {
-
- // The instance name for this monitor provider instance.
- private final String instanceName;
- private final WorkflowElement<?> workflowElement;
-
- /**
- * Constructor.
- * @param workflowElement The workflowElement owning these stats
- */
- public WorkflowElementStatistics(WorkflowElement<?> workflowElement)
- {
- this.instanceName = workflowElement.getWorkflowElementID();
- this.workflowElement = workflowElement;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void initializeMonitorProvider(MonitorProviderCfg configuration)
- throws ConfigException, InitializationException
- {
- // No initialization required
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getMonitorInstanceName()
- {
- return this.instanceName + ",cn=Workflow Elements";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List<Attribute> getMonitorData()
- {
- ArrayList<Attribute> attrs = new ArrayList<Attribute>();
-
- attrs.add(Attributes.create(
- "ds-mon-saturation-index",
- String.valueOf(this.workflowElement.getSaturationIndex())));
-
- return attrs;
- }
-}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
index fe44037..c73932c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
@@ -33,22 +33,22 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageDescriptor;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.server.ServerManagementContext;
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.admin.std.server.LocalBackendWorkflowElementCfg;
import org.opends.server.admin.std.server.RootCfg;
import org.opends.server.api.Backend;
-import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.controls.LDAPPostReadRequestControl;
import org.opends.server.controls.LDAPPostReadResponseControl;
import org.opends.server.controls.LDAPPreReadRequestControl;
import org.opends.server.controls.LDAPPreReadResponseControl;
import org.opends.server.core.*;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.workflowelement.LeafWorkflowElement;
+import org.opends.server.workflowelement.WorkflowElement;
import static org.opends.messages.CoreMessages.*;
import static org.opends.server.config.ConfigConstants.*;
@@ -58,7 +58,7 @@
* handle the processing of an operation against a local backend.
*/
public class LocalBackendWorkflowElement extends
- LeafWorkflowElement<LocalBackendWorkflowElementCfg>
+ WorkflowElement<LocalBackendWorkflowElementCfg>
implements ConfigurationChangeListener<LocalBackendWorkflowElementCfg>
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteriaTest.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteriaTest.java
index 43e6ecc..a617560 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteriaTest.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/networkgroups/BindDNConnectionCriteriaTest.java
@@ -26,8 +26,7 @@
*/
package org.opends.server.core.networkgroups;
-
-
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -39,12 +38,11 @@
import org.opends.server.authorization.dseecompat.PatternDN;
import org.opends.server.types.AuthenticationType;
import org.opends.server.types.DN;
-import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-
+import static org.testng.Assert.*;
/**
* Unit tests for BindDNConnectionCriteria.
@@ -118,9 +116,8 @@
new MockClientConnection(12345, false, clientBindDN,
AllowedAuthMethod.SIMPLE);
- BindDNConnectionCriteria criteria =
- BindDNConnectionCriteria.create(allowedDNPatterns);
- Assert.assertEquals(criteria.matches(client), expectedResult);
+ BindDNConnectionCriteria criteria = new BindDNConnectionCriteria(new ArrayList<PatternDN>(allowedDNPatterns));
+ assertEquals(criteria.matches(client), expectedResult);
}
@@ -146,10 +143,8 @@
new MockClientConnection(12345, false, DN.rootDN(),
AllowedAuthMethod.ANONYMOUS);
- BindDNConnectionCriteria criteria =
- BindDNConnectionCriteria.create(allowedDNPatterns);
- Assert
- .assertEquals(criteria.willMatchAfterBind(client, clientBindDN,
+ BindDNConnectionCriteria criteria = new BindDNConnectionCriteria(new ArrayList<PatternDN>(allowedDNPatterns));
+ assertEquals(criteria.willMatchAfterBind(client, clientBindDN,
AuthenticationType.SIMPLE, false), expectedResult);
}
--
Gitblit v1.10.0