From 0dc1115939d4eda4ad6559d64e2628b86ad29119 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 28 Mar 2013 11:50:36 +0000
Subject: [PATCH] Fix OPENDJ-354: Implement a RequestHandler which provides an in-memory backend
---
opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/controls/PreReadRequestControl.java | 55 +++++++++++++++++++++++++++++--------------------------
1 files changed, 29 insertions(+), 26 deletions(-)
diff --git a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/controls/PreReadRequestControl.java b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/controls/PreReadRequestControl.java
index bc00844..c2325e5 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/controls/PreReadRequestControl.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/org/forgerock/opendj/ldap/controls/PreReadRequestControl.java
@@ -22,21 +22,24 @@
*
*
* Copyright 2009 Sun Microsystems, Inc.
- * Portions copyright 2012 ForgeRock AS.
+ * Portions copyright 2012-2013 ForgeRock AS.
*/
package org.forgerock.opendj.ldap.controls;
+import static java.util.Arrays.asList;
+import static java.util.Collections.emptyList;
+import static java.util.Collections.singletonList;
+import static java.util.Collections.unmodifiableList;
import static org.forgerock.opendj.ldap.CoreMessages.ERR_PREREADREQ_CANNOT_DECODE_VALUE;
import static org.forgerock.opendj.ldap.CoreMessages.ERR_PREREADREQ_NO_CONTROL_VALUE;
import static org.forgerock.opendj.ldap.CoreMessages.ERR_PREREAD_CONTROL_BAD_OID;
import java.io.IOException;
-import java.util.Arrays;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Set;
+import java.util.List;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.asn1.ASN1;
@@ -87,16 +90,16 @@
*/
public static final String OID = "1.3.6.1.1.13.1";
- // The set of raw attributes to return in the entry.
- private final Set<String> attributes;
+ // The list of raw attributes to return in the entry.
+ private final List<String> attributes;
private final boolean isCritical;
private static final PreReadRequestControl CRITICAL_EMPTY_INSTANCE = new PreReadRequestControl(
- true, Collections.<String> emptySet());
+ true, Collections.<String> emptyList());
private static final PreReadRequestControl NONCRITICAL_EMPTY_INSTANCE =
- new PreReadRequestControl(false, Collections.<String> emptySet());
+ new PreReadRequestControl(false, Collections.<String> emptyList());
/**
* A decoder which can be used for decoding the pre-read request control.
@@ -125,23 +128,23 @@
}
final ASN1Reader reader = ASN1.getReader(control.getValue());
- Set<String> attributes;
+ List<String> attributes;
try {
reader.readStartSequence();
if (reader.hasNextElement()) {
final String firstAttribute = reader.readOctetStringAsString();
if (reader.hasNextElement()) {
- attributes = new LinkedHashSet<String>();
+ attributes = new ArrayList<String>();
attributes.add(firstAttribute);
do {
attributes.add(reader.readOctetStringAsString());
} while (reader.hasNextElement());
- attributes = Collections.unmodifiableSet(attributes);
+ attributes = unmodifiableList(attributes);
} else {
- attributes = Collections.singleton(firstAttribute);
+ attributes = singletonList(firstAttribute);
}
} else {
- attributes = Collections.emptySet();
+ attributes = emptyList();
}
reader.readEndSequence();
} catch (final Exception ae) {
@@ -189,11 +192,11 @@
if (attributes.isEmpty()) {
return isCritical ? CRITICAL_EMPTY_INSTANCE : NONCRITICAL_EMPTY_INSTANCE;
} else if (attributes.size() == 1) {
- return new PreReadRequestControl(isCritical, Collections.singleton(attributes
- .iterator().next()));
+ return new PreReadRequestControl(isCritical,
+ singletonList(attributes.iterator().next()));
} else {
- final Set<String> attributeSet = new LinkedHashSet<String>(attributes);
- return new PreReadRequestControl(isCritical, Collections.unmodifiableSet(attributeSet));
+ return new PreReadRequestControl(isCritical, unmodifiableList(new ArrayList<String>(
+ attributes)));
}
}
@@ -220,28 +223,28 @@
if (attributes.length == 0) {
return isCritical ? CRITICAL_EMPTY_INSTANCE : NONCRITICAL_EMPTY_INSTANCE;
} else if (attributes.length == 1) {
- return new PreReadRequestControl(isCritical, Collections.singleton(attributes[0]));
+ return new PreReadRequestControl(isCritical, singletonList(attributes[0]));
} else {
- final Set<String> attributeSet = new LinkedHashSet<String>(Arrays.asList(attributes));
- return new PreReadRequestControl(isCritical, Collections.unmodifiableSet(attributeSet));
+ return new PreReadRequestControl(isCritical, unmodifiableList(new ArrayList<String>(
+ asList(attributes))));
}
}
- private PreReadRequestControl(final boolean isCritical, final Set<String> attributes) {
+ private PreReadRequestControl(final boolean isCritical, final List<String> attributes) {
this.isCritical = isCritical;
this.attributes = attributes;
}
/**
- * Returns an unmodifiable set containing the names of attributes to be
+ * Returns an unmodifiable list containing the names of attributes to be
* included with the response control. Attributes that are sub-types of
- * listed attributes are implicitly included. The returned set may be empty,
- * indicating that all user attributes should be returned.
+ * listed attributes are implicitly included. The returned list may be
+ * empty, indicating that all user attributes should be returned.
*
- * @return An unmodifiable set containing the names of attributes to be
+ * @return An unmodifiable list containing the names of attributes to be
* included with the response control.
*/
- public Set<String> getAttributes() {
+ public List<String> getAttributes() {
return attributes;
}
--
Gitblit v1.10.0