OPENDJ-1666 Code cleanup
* org.forgerock.opendj.rest2ldap.BasicRequestsTest
** Make the code more readable
* org/forgerock/opendj/rest2ldap/Utils.java
** Remove unused parameter
* org/opends/server/protocols/http/CollectClientConnectionsFilter.java
** Rename userPassword local variables which contains both username and password to userCredentials
to make the code more consistent.
| | |
| | | filter = toFilter(v1.startsWith(v2)); |
| | | break; |
| | | default: |
| | | filter = compare(c, type, v1, v2); |
| | | filter = compare(type, v1, v2); |
| | | break; |
| | | } |
| | | } else if (value.isNumber() && valueAssertion instanceof Number) { |
| | | final Double v1 = value.asDouble(); |
| | | final Double v2 = ((Number) valueAssertion).doubleValue(); |
| | | filter = compare(c, type, v1, v2); |
| | | filter = compare(type, v1, v2); |
| | | } else if (value.isBoolean() && valueAssertion instanceof Boolean) { |
| | | final Boolean v1 = value.asBoolean(); |
| | | final Boolean v2 = (Boolean) valueAssertion; |
| | | filter = compare(c, type, v1, v2); |
| | | filter = compare(type, v1, v2); |
| | | } else { |
| | | // This attribute mapper is a candidate but it does not match. |
| | | filter = alwaysFalse(); |
| | |
| | | } |
| | | } |
| | | |
| | | private <T extends Comparable<T>> Filter compare(final Context c, final FilterType type, |
| | | final T v1, final T v2) { |
| | | final Filter filter; |
| | | private <T extends Comparable<T>> Filter compare(final FilterType type, final T v1, final T v2) { |
| | | switch (type) { |
| | | case EQUAL_TO: |
| | | filter = toFilter(v1.equals(v2)); |
| | | break; |
| | | return toFilter(v1.equals(v2)); |
| | | case GREATER_THAN: |
| | | filter = toFilter(v1.compareTo(v2) > 0); |
| | | break; |
| | | return toFilter(v1.compareTo(v2) > 0); |
| | | case GREATER_THAN_OR_EQUAL_TO: |
| | | filter = toFilter(v1.compareTo(v2) >= 0); |
| | | break; |
| | | return toFilter(v1.compareTo(v2) >= 0); |
| | | case LESS_THAN: |
| | | filter = toFilter(v1.compareTo(v2) < 0); |
| | | break; |
| | | return toFilter(v1.compareTo(v2) < 0); |
| | | case LESS_THAN_OR_EQUAL_TO: |
| | | filter = toFilter(v1.compareTo(v2) <= 0); |
| | | break; |
| | | return toFilter(v1.compareTo(v2) <= 0); |
| | | default: |
| | | filter = alwaysFalse(); // Not supported. |
| | | break; |
| | | return alwaysFalse(); // Not supported. |
| | | } |
| | | return filter; |
| | | } |
| | | |
| | | } |
| | |
| | | try { |
| | | final ByteString va = |
| | | valueAssertion != null ? encoder().apply(valueAssertion) : null; |
| | | h.handleResult(toFilter(c, type, ldapAttributeName.toString(), va)); |
| | | h.handleResult(toFilter(type, ldapAttributeName.toString(), va)); |
| | | } catch (final Exception e) { |
| | | // Invalid assertion value - bad request. |
| | | h.handleError(new BadRequestException(i18n( |
| | |
| | | return value ? Filter.alwaysTrue() : Filter.alwaysFalse(); |
| | | } |
| | | |
| | | static Filter toFilter(final Context c, final FilterType type, final String ldapAttribute, |
| | | final ByteString valueAssertion) { |
| | | final Filter filter; |
| | | static Filter toFilter(final FilterType type, final String ldapAttribute, final ByteString valueAssertion) { |
| | | switch (type) { |
| | | case CONTAINS: |
| | | filter = |
| | | Filter.substrings(ldapAttribute, null, Collections.singleton(valueAssertion), |
| | | null); |
| | | break; |
| | | return Filter.substrings(ldapAttribute, null, Collections.singleton(valueAssertion), null); |
| | | case STARTS_WITH: |
| | | filter = Filter.substrings(ldapAttribute, valueAssertion, null, null); |
| | | break; |
| | | return Filter.substrings(ldapAttribute, valueAssertion, null, null); |
| | | case EQUAL_TO: |
| | | filter = Filter.equality(ldapAttribute, valueAssertion); |
| | | break; |
| | | return Filter.equality(ldapAttribute, valueAssertion); |
| | | case GREATER_THAN: |
| | | filter = Filter.greaterThan(ldapAttribute, valueAssertion); |
| | | break; |
| | | return Filter.greaterThan(ldapAttribute, valueAssertion); |
| | | case GREATER_THAN_OR_EQUAL_TO: |
| | | filter = Filter.greaterOrEqual(ldapAttribute, valueAssertion); |
| | | break; |
| | | return Filter.greaterOrEqual(ldapAttribute, valueAssertion); |
| | | case LESS_THAN: |
| | | filter = Filter.lessThan(ldapAttribute, valueAssertion); |
| | | break; |
| | | return Filter.lessThan(ldapAttribute, valueAssertion); |
| | | case LESS_THAN_OR_EQUAL_TO: |
| | | filter = Filter.lessOrEqual(ldapAttribute, valueAssertion); |
| | | break; |
| | | return Filter.lessOrEqual(ldapAttribute, valueAssertion); |
| | | case PRESENT: |
| | | filter = Filter.present(ldapAttribute); |
| | | break; |
| | | return Filter.present(ldapAttribute); |
| | | case EXTENDED: |
| | | default: |
| | | filter = alwaysFalse(); // Not supported. |
| | | break; |
| | | return alwaysFalse(); // Not supported. |
| | | } |
| | | return filter; |
| | | } |
| | | |
| | | static String toLowerCase(final String s) { |
| | |
| | | } |
| | | |
| | | private Builder builder(final List<Request> requests) throws IOException { |
| | | return Rest2LDAP.builder().ldapConnectionFactory(getConnectionFactory(requests)).baseDN( |
| | | "dc=test").useEtagAttribute().useClientDNNaming("uid").readOnUpdatePolicy( |
| | | ReadOnUpdatePolicy.CONTROLS).authorizationPolicy(AuthorizationPolicy.NONE) |
| | | return Rest2LDAP.builder() |
| | | .ldapConnectionFactory(getConnectionFactory(requests)) |
| | | .baseDN("dc=test") |
| | | .useEtagAttribute() |
| | | .useClientDNNaming("uid") |
| | | .readOnUpdatePolicy(ReadOnUpdatePolicy.CONTROLS) |
| | | .authorizationPolicy(AuthorizationPolicy.NONE) |
| | | .additionalLDAPAttribute("objectClass", "top", "person") |
| | | .mapper(object() |
| | | .attribute("schemas", constant(asList("urn:scim:schemas:core:1.0"))) |
| | | .attribute( |
| | | "_id", |
| | | simple("uid").isSingleValued().isRequired().writability( |
| | | WritabilityPolicy.CREATE_ONLY)).attribute( |
| | | "name", |
| | | object().attribute("displayName", |
| | | simple("cn").isSingleValued().isRequired()).attribute( |
| | | "surname", simple("sn").isSingleValued().isRequired())) |
| | | .attribute( |
| | | "_rev", |
| | | simple("etag").isSingleValued().isRequired().writability( |
| | | WritabilityPolicy.READ_ONLY)).attribute("description", |
| | | simple("description")).attribute( |
| | | "singleNumber", |
| | | simple("singleNumber").decoder(byteStringToInteger()) |
| | | .isSingleValued()).attribute("multiNumber", |
| | | simple("multiNumber").decoder(byteStringToInteger()))); |
| | | .attribute("_id", simple("uid").isSingleValued() |
| | | .isRequired() |
| | | .writability(WritabilityPolicy.CREATE_ONLY)) |
| | | .attribute("name", object().attribute("displayName", simple("cn").isSingleValued() |
| | | .isRequired()) |
| | | .attribute("surname", simple("sn").isSingleValued().isRequired())) |
| | | .attribute("_rev", simple("etag").isSingleValued() |
| | | .isRequired() |
| | | .writability(WritabilityPolicy.READ_ONLY)) |
| | | .attribute("description", simple("description")) |
| | | .attribute("singleNumber", simple("singleNumber").decoder(byteStringToInteger()) |
| | | .isSingleValued()) |
| | | .attribute("multiNumber", simple("multiNumber").decoder(byteStringToInteger()))); |
| | | } |
| | | |
| | | private void checkResourcesAreEqual(final Resource actual, final JsonValue expected) { |
| | |
| | | |
| | | ctx.connection = new SdkConnectionAdapter(clientConnection); |
| | | |
| | | final String[] userPassword = extractUsernamePassword(request); |
| | | if (userPassword != null && userPassword.length == 2) |
| | | final String[] userCredentials = extractUsernamePassword(request); |
| | | if (userCredentials != null && userCredentials.length == 2) |
| | | { |
| | | ctx.userName = userPassword[0]; |
| | | ctx.password = userPassword[1]; |
| | | ctx.userName = userCredentials[0]; |
| | | ctx.password = userCredentials[1]; |
| | | ctx.asyncContext = getAsyncContext(request); |
| | | |
| | | newRootConnection().searchSingleEntryAsync(buildSearchRequest(ctx.userName)).thenAsync( |
| | |
| | | String httpBasicAuthHeader = request.getHeader(HTTP_BASIC_AUTH_HEADER); |
| | | if (httpBasicAuthHeader != null) |
| | | { |
| | | String[] userPassword = parseUsernamePassword(httpBasicAuthHeader); |
| | | if (userPassword != null) |
| | | String[] userCredentials = parseUsernamePassword(httpBasicAuthHeader); |
| | | if (userCredentials != null) |
| | | { |
| | | return userPassword; |
| | | return userCredentials; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | // Example usage of base64: |
| | | // Base64("Aladdin:open sesame") = "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" |
| | | String userPassword = new String(Base64.decode(base64UserPassword)); |
| | | String[] split = userPassword.split(":"); |
| | | String userCredentials = new String(Base64.decode(base64UserPassword)); |
| | | String[] split = userCredentials.split(":"); |
| | | if (split.length == 2) |
| | | { |
| | | return split; |