From d6363de141b6d3a811241967f235331d16fa4c88 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Tue, 14 Oct 2014 14:26:18 +0000
Subject: [PATCH] OPENDJ-1550: Replace SDK Function with Function from forgerock-util * org.opends.server.typesAttributeParser ** Impacted code uses now org.forgerock.util.promise.Function
---
opendj3-server-dev/src/server/org/opends/server/types/AttributeParser.java | 78 +++++++--------------------------------
1 files changed, 14 insertions(+), 64 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/types/AttributeParser.java b/opendj3-server-dev/src/server/org/opends/server/types/AttributeParser.java
index a105427..4d68fc7 100644
--- a/opendj3-server-dev/src/server/org/opends/server/types/AttributeParser.java
+++ b/opendj3-server-dev/src/server/org/opends/server/types/AttributeParser.java
@@ -25,15 +25,19 @@
*/
package org.opends.server.types;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.NoSuchElementException;
+import java.util.Set;
import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.Function;
import org.forgerock.opendj.ldap.Functions;
import org.forgerock.opendj.ldap.GeneralizedTime;
import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.util.promise.Function;
+import org.forgerock.util.promise.NeverThrowsException;
+
/**
* A fluent API for parsing attributes as different types of object. An
@@ -103,7 +107,7 @@
* The function which should be used to decode the value.
* @return The first value decoded as a {@code T}.
*/
- public <T> T as(final Function<ByteString, ? extends T, Void> f) {
+ public <T> T as(final Function<ByteString, ? extends T, NeverThrowsException> f) {
return as(f, null);
}
@@ -120,68 +124,14 @@
* The default value to return if the attribute is empty.
* @return The first value decoded as a {@code T}.
*/
- @SuppressWarnings("unchecked")
- public <T> T as(final Function<ByteString, ? extends T, Void> f, final T defaultValue) {
+ public <T> T as(final Function<ByteString, ? extends T, NeverThrowsException> f, final T defaultValue) {
if (!isEmpty(attribute)) {
- ByteString value = attribute.iterator().next();
- try
- {
- // use existing already committed code
- return f.apply(value, null);
- }
- catch (NoSuchMethodError e1)
- {
- try
- {
- // use the new code that is not yet committed and compiled (with Void parameter)
- final Method method = f.getClass().getMethod("apply", Object.class, Void.class);
- method.setAccessible(true);
- return (T) method.invoke(f, value, null);
- }
- catch (NoSuchMethodException e2)
- {
- return invokeForgerockUtilFunctionApply(f, value);
- }
- catch (SecurityException e2)
- {
- return invokeForgerockUtilFunctionApply(f, value);
- }
- catch (IllegalAccessException e)
- {
- return invokeForgerockUtilFunctionApply(f, value);
- }
- catch (InvocationTargetException e)
- {
- return invokeForgerockUtilFunctionApply(f, value);
- }
- catch (RuntimeException e2)
- {
- throw e2;
- }
- }
+ return f.apply(attribute.iterator().next());
} else {
return defaultValue;
}
}
- private <T> T invokeForgerockUtilFunctionApply(final Function<ByteString, ? extends T, Void> f, ByteString value)
- {
- try
- {
- // use forgerock util Function
- final Method method = f.getClass().getMethod("apply", Object.class);
- return (T) method.invoke(f, value);
- }
- catch (RuntimeException e3)
- {
- throw e3;
- }
- catch (Exception e3)
- {
- throw new RuntimeException(e3);
- }
- }
-
/**
* Returns the first value decoded as a boolean, or {@code null} if the
* attribute does not contain any values.
@@ -307,12 +257,12 @@
* The default values to return if the attribute is empty.
* @return The values decoded as a set of {@code T}s.
*/
- public <T> Set<T> asSetOf(final Function<ByteString, ? extends T, Void> f,
+ public <T> Set<T> asSetOf(final Function<ByteString, ? extends T, NeverThrowsException> f,
final Collection<? extends T> defaultValues) {
if (!isEmpty(attribute)) {
final LinkedHashSet<T> result = new LinkedHashSet<T>(attribute.size());
for (final ByteString v : attribute) {
- result.add(f.apply(v, null));
+ result.add(f.apply(v));
}
return result;
} else if (defaultValues != null) {
@@ -335,7 +285,7 @@
* The default values to return if the attribute is empty.
* @return The values decoded as a set of {@code T}s.
*/
- public <T> Set<T> asSetOf(final Function<ByteString, ? extends T, Void> f,
+ public <T> Set<T> asSetOf(final Function<ByteString, ? extends T, NeverThrowsException> f,
final T... defaultValues) {
return asSetOf(f, Arrays.asList(defaultValues));
}
--
Gitblit v1.10.0