summaryrefslogtreecommitdiffstats
path: root/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java
diff options
context:
space:
mode:
Diffstat (limited to 'feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java')
-rw-r--r--feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java55
1 files changed, 28 insertions, 27 deletions
diff --git a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java
index 91fbad18..bd75995f 100644
--- a/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java
+++ b/feature-pooling-dmaap/src/main/java/org/onap/policy/drools/pooling/extractor/ClassExtractors.java
@@ -3,13 +3,14 @@
* ONAP
* ================================================================================
* Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -26,7 +27,7 @@ import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.StringUtils;
-import org.onap.policy.drools.utils.Pair;
+import org.apache.commons.lang3.tuple.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,11 +35,11 @@ import org.slf4j.LoggerFactory;
* Extractors for each object class. Properties define how the data is to be
* extracted for a given class, where the properties are similar to the
* following:
- *
+ *
* <pre>
* <code>&lt;a.prefix>.&lt;class.name> = ${event.reqid}</code>
* </pre>
- *
+ *
* <p>For any given field name (e.g., "reqid"), it first looks for a public "getXxx()"
* method to extract the specified field. If that fails, then it looks for a public field
* by the given name. If that also fails, and the object is a <i>Map</i> subclass, then it
@@ -71,7 +72,7 @@ public class ClassExtractors {
/**
* Constructor.
- *
+ *
* @param props properties that specify how the data is to be extracted from
* a given class
* @param prefix property name prefix, prepended before the class name
@@ -85,7 +86,7 @@ public class ClassExtractors {
/**
* Gets the number of extractors in the map.
- *
+ *
* @return gets the number of extractors in the map
*/
protected int size() {
@@ -94,7 +95,7 @@ public class ClassExtractors {
/**
* Extracts the desired data item from an object.
- *
+ *
* @param object object from which to extract the data item
* @return the extracted item, or {@code null} if it could not be extracted
*/
@@ -111,7 +112,7 @@ public class ClassExtractors {
/**
* Gets the extractor for the given type of object, creating one if it
* doesn't exist yet.
- *
+ *
* @param object object whose extracted is desired
* @return an extractor for the object
*/
@@ -129,9 +130,9 @@ public class ClassExtractors {
/**
* Builds an extractor for the class.
- *
+ *
* @param clazz class for which the extractor should be built
- *
+ *
* @return a new extractor
*/
private Extractor buildExtractor(Class<?> clazz) {
@@ -162,7 +163,7 @@ public class ClassExtractors {
/**
* Builds an extractor for the class, based on the config value extracted
* from the corresponding property.
- *
+ *
* @param clazz class for which the extractor should be built
* @param value config value (e.g., "${event.request.id}"
* @return a new extractor
@@ -209,7 +210,7 @@ public class ClassExtractors {
/**
* Gets the extractor for a class, examining all super classes and
* interfaces.
- *
+ *
* @param clazz class whose extractor is desired
* @param addOk {@code true} if the extractor may be added, provided the
* property is defined, {@code false} otherwise
@@ -268,7 +269,7 @@ public class ClassExtractors {
* hierarchically, where each name identifies a particular component within
* the hierarchy. Supports retrieval from {@link Map} objects, as well as
* via getXxx() methods, or by direct field retrieval.
- *
+ *
* <p>Note: this will <i>not</i> work if POJOs are contained within a Map.
*/
private class ComponetizedExtractor implements Extractor {
@@ -280,7 +281,7 @@ public class ClassExtractors {
/**
* Constructor.
- *
+ *
* @param clazz the class associated with the object at the root of the
* hierarchy
* @param names name associated with each component
@@ -296,14 +297,14 @@ public class ClassExtractors {
Pair<Extractor, Class<?>> pair = buildExtractor(clz, comp);
- extractors[x] = pair.first();
- clz = pair.second();
+ extractors[x] = pair.getLeft();
+ clz = pair.getRight();
}
}
/**
* Builds an extractor for the given component of an object.
- *
+ *
* @param clazz type of object from which the component will be
* extracted
* @param comp name of the component to extract
@@ -312,9 +313,9 @@ public class ClassExtractors {
* @throws ExtractorException extrator exception
*/
private Pair<Extractor, Class<?>> buildExtractor(Class<?> clazz, String comp) throws ExtractorException {
-
+
Pair<Extractor, Class<?>> pair = getMethodExtractor(clazz, comp);
-
+
if (pair == null) {
pair = getFieldExtractor(clazz, comp);
}
@@ -350,7 +351,7 @@ public class ClassExtractors {
/**
* Gets an extractor that invokes a getXxx() method to retrieve the
* object.
- *
+ *
* @param clazz container's class
* @param name name of the property to be retrieved
* @return a new extractor, or {@code null} if the class does not
@@ -371,7 +372,7 @@ public class ClassExtractors {
return null;
}
- return new Pair<>(new MethodExtractor(meth), retType);
+ return Pair.of(new MethodExtractor(meth), retType);
} catch (NoSuchMethodException expected) {
// no getXxx() method, maybe there's a field by this name
@@ -385,7 +386,7 @@ public class ClassExtractors {
/**
* Gets an extractor for a field within the object.
- *
+ *
* @param clazz container's class
* @param name name of the field whose value is to be extracted
* @return a new extractor, or {@code null} if the class does not
@@ -399,12 +400,12 @@ public class ClassExtractors {
return null;
}
- return new Pair<>(new FieldExtractor(field), field.getType());
+ return Pair.of(new FieldExtractor(field), field.getType());
}
/**
* Gets an extractor for an item within a Map object.
- *
+ *
* @param clazz container's class
* @param key item key within the map
* @return a new extractor, or {@code null} if the class is not a Map
@@ -423,13 +424,13 @@ public class ClassExtractors {
* If the object turns out not to be a map, then the MapExtractor
* for the next component will just return null.
*/
- return new Pair<>(new MapExtractor(key), Map.class);
+ return Pair.of(new MapExtractor(key), Map.class);
}
/**
* Gets field within a class, examining all super classes and
* interfaces.
- *
+ *
* @param clazz class whose field is desired
* @param name name of the desired field
* @return the field within the class, or {@code null} if the field does