From 1501effd300d63b1d8595702ab6e9fecd7ede39e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 31 Oct 2014 14:38:37 +0000
Subject: [PATCH] LDAPUrl.java: Code cleanup Extracted methods parseScope() and parseAttributes().
---
opendj-core/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java | 104 +++++++++++++++++++++++++--------------------------
1 files changed, 51 insertions(+), 53 deletions(-)
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java
index 9ec662d..f37d05f 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/LDAPUrl.java
@@ -24,11 +24,8 @@
* Copyright 2010 Sun Microsystems, Inc.
* Portions copyright 2012-2014 ForgeRock AS.
*/
-
package org.forgerock.opendj.ldap;
-import static com.forgerock.opendj.ldap.CoreMessages.*;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -46,6 +43,9 @@
import com.forgerock.opendj.util.StaticUtils;
+import static com.forgerock.opendj.ldap.CoreMessages.*;
+import static com.forgerock.opendj.util.StaticUtils.*;
+
/**
* An LDAP URL as defined in RFC 4516. In addition, the secure ldap (ldaps://)
* is also supported. LDAP URLs have the following format:
@@ -300,9 +300,9 @@
dstPos++;
continue;
}
- decoded.setCharAt(dstPos, (char) ((decodeHex(urlString, index + srcPos + 1, decoded
- .charAt(srcPos + 1)) << 4) | (decodeHex(urlString, index + srcPos + 2, decoded
- .charAt(srcPos + 2)))));
+ int i = decodeHex(urlString, index + srcPos + 1, decoded.charAt(srcPos + 1)) << 4;
+ int j = decodeHex(urlString, index + srcPos + 2, decoded.charAt(srcPos + 2));
+ decoded.setCharAt(dstPos, (char) (i | j));
dstPos++;
srcPos += 3;
}
@@ -477,19 +477,17 @@
// Parse the url and build the LDAP URL.
final int schemeIdx = urlString.indexOf("://");
if (schemeIdx < 0) {
- final LocalizableMessage msg = ERR_LDAPURL_NO_SCHEME.get(urlString);
- throw new LocalizedIllegalArgumentException(msg);
+ throw new LocalizedIllegalArgumentException(ERR_LDAPURL_NO_SCHEME.get(urlString));
}
- final String scheme = StaticUtils.toLowerCase(urlString.substring(0, schemeIdx));
- if (scheme.equalsIgnoreCase(DEFAULT_URL_SCHEME)) {
+ final String scheme = StaticUtils.toLowerCase(urlString.substring(0, schemeIdx));
+ if (DEFAULT_URL_SCHEME.equalsIgnoreCase(scheme)) {
// Default ldap scheme.
isSecured = false;
- } else if (scheme.equalsIgnoreCase(SSL_URL_SCHEME)) {
+ } else if (SSL_URL_SCHEME.equalsIgnoreCase(scheme)) {
isSecured = true;
} else {
- final LocalizableMessage msg = ERR_LDAPURL_BAD_SCHEME.get(urlString, scheme);
- throw new LocalizedIllegalArgumentException(msg);
+ throw new LocalizedIllegalArgumentException(ERR_LDAPURL_BAD_SCHEME.get(urlString, scheme));
}
final int urlLength = urlString.length();
@@ -567,34 +565,17 @@
scope = DEFAULT_SCOPE;
filter = DEFAULT_FILTER;
return;
- } else {
- final String attrDesc = urlString.substring(dnIdx + 1, attrIdx);
- final StringTokenizer token = new StringTokenizer(attrDesc, String.valueOf(COMMA_CHAR));
- final List<String> parsedAttrs = new ArrayList<String>(token.countTokens());
- while (token.hasMoreElements()) {
- parsedAttrs.add(token.nextToken());
- }
- attributes = Collections.unmodifiableList(parsedAttrs);
}
+ attributes = parseAttributes(urlString.substring(dnIdx + 1, attrIdx));
// Find the scope.
final int scopeIdx = urlString.indexOf(QUESTION_CHAR, attrIdx + 1);
- SearchScope parsedScope = SearchScope.BASE_OBJECT;
if (scopeIdx < 0) {
scope = DEFAULT_SCOPE;
filter = DEFAULT_FILTER;
return;
- } else {
- String scopeDef = urlString.substring(attrIdx + 1, scopeIdx);
- scopeDef = StaticUtils.toLowerCase(scopeDef);
- for (final SearchScope sscope : SearchScope.values()) {
- if (sscope.toString().equals(scopeDef)) {
- parsedScope = sscope;
- break;
- }
- }
}
- scope = parsedScope;
+ scope = parseScope(urlString.substring(attrIdx + 1, scopeIdx));
// Last one is filter.
final String parsedFilter = urlString.substring(scopeIdx + 1, urlLength);
@@ -614,6 +595,25 @@
}
}
+ private List<String> parseAttributes(final String attrDesc) {
+ final StringTokenizer token = new StringTokenizer(attrDesc, String.valueOf(COMMA_CHAR));
+ final List<String> parsedAttrs = new ArrayList<String>(token.countTokens());
+ while (token.hasMoreElements()) {
+ parsedAttrs.add(token.nextToken());
+ }
+ return Collections.unmodifiableList(parsedAttrs);
+ }
+
+ private SearchScope parseScope(String scopeDef) {
+ final String scope = toLowerCase(scopeDef);
+ for (final SearchScope sscope : SearchScope.values()) {
+ if (sscope.toString().equals(scope)) {
+ return sscope;
+ }
+ }
+ return SearchScope.BASE_OBJECT;
+ }
+
/**
* Creates a new search request containing the parameters of this LDAP URL.
*
@@ -743,28 +743,26 @@
// port is not specified.
host.append(hostAndPort);
return urlPort;
- } else {
- String s = hostAndPort.substring(0, colonIdx);
- if (s.length() == 0) {
- // Use the default host as we allow only the port to be
- // specified.
- host.append(DEFAULT_HOST);
- } else {
- host.append(s);
- }
- s = hostAndPort.substring(colonIdx + 1, hostAndPort.length());
- try {
- urlPort = Integer.parseInt(s);
- } catch (final NumberFormatException e) {
- final LocalizableMessage msg = ERR_LDAPURL_CANNOT_DECODE_PORT.get(urlString, s);
- throw new LocalizedIllegalArgumentException(msg);
- }
+ }
- // Check the validity of the port.
- if (urlPort < 1 || urlPort > 65535) {
- final LocalizableMessage msg = ERR_LDAPURL_INVALID_PORT.get(urlString, urlPort);
- throw new LocalizedIllegalArgumentException(msg);
- }
+ String s = hostAndPort.substring(0, colonIdx);
+ if (s.length() == 0) {
+ // Use the default host as we allow only the port to be
+ // specified.
+ host.append(DEFAULT_HOST);
+ } else {
+ host.append(s);
+ }
+ s = hostAndPort.substring(colonIdx + 1, hostAndPort.length());
+ try {
+ urlPort = Integer.parseInt(s);
+ } catch (final NumberFormatException e) {
+ throw new LocalizedIllegalArgumentException(ERR_LDAPURL_CANNOT_DECODE_PORT.get(urlString, s));
+ }
+
+ // Check the validity of the port.
+ if (urlPort < 1 || urlPort > 65535) {
+ throw new LocalizedIllegalArgumentException(ERR_LDAPURL_INVALID_PORT.get(urlString, urlPort));
}
return urlPort;
}
--
Gitblit v1.10.0