summaryrefslogtreecommitdiffstats
path: root/model/utilities/src
diff options
context:
space:
mode:
Diffstat (limited to 'model/utilities/src')
-rw-r--r--model/utilities/src/main/antlr4/org/onap/policy/apex/model/utilities/typeutils/ParametrizedType.g464
-rw-r--r--model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/ClassBuilder.java103
-rw-r--r--model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/TypeBuilder.java115
-rw-r--r--model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/package-info.java26
-rw-r--r--model/utilities/src/test/java/org/onap/policy/apex/model/utilities/KeyComparerTest.java (renamed from model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/KeyComparerTest.java)14
-rw-r--r--model/utilities/src/test/java/org/onap/policy/apex/model/utilities/KeyedMapComparerTest.java (renamed from model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/KeyedMapComparerTest.java)19
-rw-r--r--model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/ParserTest.java101
7 files changed, 18 insertions, 424 deletions
diff --git a/model/utilities/src/main/antlr4/org/onap/policy/apex/model/utilities/typeutils/ParametrizedType.g4 b/model/utilities/src/main/antlr4/org/onap/policy/apex/model/utilities/typeutils/ParametrizedType.g4
deleted file mode 100644
index 384c37b0a..000000000
--- a/model/utilities/src/main/antlr4/org/onap/policy/apex/model/utilities/typeutils/ParametrizedType.g4
+++ /dev/null
@@ -1,64 +0,0 @@
-//-------------------------------------------------------------------------------
-// ============LICENSE_START=======================================================
-// Copyright (C) 2016-2018 Ericsson. All rights reserved.
-// ================================================================================
-// 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.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-// SPDX-License-Identifier: Apache-2.0
-// ============LICENSE_END=========================================================
-//-------------------------------------------------------------------------------
-
-grammar ParametrizedType;
-
-@header {
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-}
-
-type returns[ClassBuilder value]
- : cls=CLASS { $value = ClassBuilder.parse($cls.text); }
- | cls=CLASS { $value = ClassBuilder.parse($cls.text); }
- LT head=type { $value.add($head.value); }
- (COMMA tail=type { $value.add($tail.value); })* GT
- ;
-
-GT : '>'
- ;
-
-LT : '<'
- ;
-
-COMMA
- : ','
- ;
-
-CLASS
- : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|'$'|'.'|'_')*
- ;
diff --git a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/ClassBuilder.java b/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/ClassBuilder.java
deleted file mode 100644
index 8d1ed9497..000000000
--- a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/ClassBuilder.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.apex.model.utilities.typeutils;
-
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
-
-/**
- * This class is a utility class that builds a class with a set of user defined fields. It is used to get the Type of
- * fields in Java schemas<br> For more information see:<br> <a
- * href="http://stackoverflow.com/questions/39401083/class-forname-equivalent-for-creating-parameterizedtypes-from-string">
- * http://stackoverflow.com/questions/39401083/class-forname-equivalent-for-creating-parameterizedtypes-from-string</a><br>
- * <a href="https://github.com/KetothXupack/stackoverflow-answers/tree/master/q39401083">
- * https://github.com/KetothXupack/stackoverflow-answers/tree/master/q39401083</a><br>
- */
-public class ClassBuilder {
- // Logger for this class
- private static final XLogger LOGGER = XLoggerFactory.getXLogger(ClassBuilder.class);
-
- private final Class<?> clazz;
- private final List<ClassBuilder> parameters = new ArrayList<>();
-
- /**
- * Constructor that sets the class for the class builder.
- *
- * @param clazz the class of the class builder
- */
- public ClassBuilder(final Class<?> clazz) {
- this.clazz = clazz;
- }
-
- /**
- * Creates a {@link ClassBuilder} instance for a class with the given class name.
- *
- * @param className the class name of the class builder to create
- * @return the class builder that is created
- */
- public static ClassBuilder parse(final String className) {
- try {
- return new ClassBuilder(Class.forName(className));
- } catch (ClassNotFoundException e) {
- try {
- return new ClassBuilder(Class.forName("java.lang." + className));
- } catch (Exception classFindException) {
- LOGGER.warn("class not found", classFindException);
- throw new IllegalArgumentException("Class '" + className
- + "' not found. Also looked for a class called 'java.lang." + className + "'", e);
- }
- }
- }
-
- /**
- * Adds a field to the class builder. Each field is itself a class builder.
- *
- * @param fieldBuilder the class builder for the field
- */
- public void add(final ClassBuilder fieldBuilder) {
- parameters.add(fieldBuilder);
- }
-
- /**
- * Builds the {@link Type} of the class.
- *
- * @return the {@link Type} of the class
- */
- public Type build() {
- // class is not parameterized
- if (parameters.isEmpty()) {
- return clazz;
- }
- Type[] paramTypes = new Type[parameters.size()];
- int paramTypeIndex = 0;
- for (ClassBuilder classBuilder : parameters) {
- paramTypes[paramTypeIndex++] = classBuilder.build();
- }
- // TODO: Fix this for parameterized types if needed or adapt to work with generic types only
- // return ParameterizedTypeImpl.make(clazz, paramTypes, null);
- return null;
- }
-}
diff --git a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/TypeBuilder.java b/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/TypeBuilder.java
deleted file mode 100644
index 5f75bca1c..000000000
--- a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/TypeBuilder.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 2019 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.apex.model.utilities.typeutils;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-
-import org.antlr.v4.runtime.BailErrorStrategy;
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.TokenStream;
-
-/**
- * This class builds a type from a grammar using ANTLR.
- */
-public final class TypeBuilder {
- /**
- * Private constructor used to prevent sub class instantiation.
- */
- private TypeBuilder() {
- }
-
- /**
- * Builds the Type of the Type string that was input.
- *
- * @param type the java Type as a string
- * @return the Type of the string that was input
- */
- public static Type build(final String type) {
- if (type == null || type.length() == 0) {
- throw new IllegalArgumentException(
- "Blank type string passed to " + TypeBuilder.class.getName() + ".build(String type)");
- }
-
- try {
- final CharStream stream = CharStreams.fromString(type);
- final TokenStream tokenStream = new CommonTokenStream(new ParametrizedTypeLexer(stream));
-
- final ParametrizedTypeParser parser = new ParametrizedTypeParser(tokenStream);
- parser.removeErrorListeners();
- parser.setErrorHandler(new BailErrorStrategy());
- parser.setBuildParseTree(true);
- return parser.type().value.build();
- } catch (final Exception e) {
- throw new IllegalArgumentException("Failed to build type '" + type + "': " + e, e);
- }
- }
-
- /**
- * Gets the class of Java Type.
- *
- * @param type the java Type as a string
- * @return the java Type
- */
- public static Class<?> getJavaTypeClass(final String type) {
- return getJavaTypeClass(build(type));
- }
-
- /**
- * Gets the class of Java Type.
- *
- * @param type the java Type as a Type
- * @return the java Type
- */
- public static Class<?> getJavaTypeClass(final Type type) {
- if (type instanceof Class<?>) {
- return (Class<?>) type;
- } else if (type instanceof ParameterizedType) {
- final Type raw = ((ParameterizedType) type).getRawType();
- if (!(raw instanceof Class<?>)) {
- throw new IllegalArgumentException("The Parameterised javatype " + type + " with base type " + raw
- + " is not a Java 'Class' that can be instantiated");
- }
- return (Class<?>) raw;
- }
- throw new IllegalArgumentException(
- "The Parameterised javatype " + type + " is not a Java 'Type' that has a 'Class'");
- }
-
- /**
- * Gets the parameters of a Java Type.
- *
- * @param type the Java Type
- * @return the parameters of the java Type
- */
- public static Type[] getJavaTypeParameters(final Type type) {
- if (type instanceof Class<?>) {
- return new Type[0];
- } else if (type instanceof ParameterizedType) {
- return ((ParameterizedType) type).getActualTypeArguments();
- }
- throw new IllegalArgumentException(
- "\"The Parameterised javatype \" + type + \" is not a Java 'Type' that has parameter types");
- }
-}
diff --git a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/package-info.java b/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/package-info.java
deleted file mode 100644
index ed4b079bf..000000000
--- a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/typeutils/package-info.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-/**
- * Provides utility classes that operate on and work with Java Types.
- *
- * @author Liam Fallon (liam.fallon@ericsson.com)
- */
-package org.onap.policy.apex.model.utilities.typeutils;
diff --git a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/KeyComparerTest.java b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/KeyComparerTest.java
index 45afc2088..4cf91bd39 100644
--- a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/KeyComparerTest.java
+++ b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/KeyComparerTest.java
@@ -1,24 +1,25 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 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.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
+ *
* SPDX-License-Identifier: Apache-2.0
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.apex.model.utilities.typeutils;
+package org.onap.policy.apex.model.utilities;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -29,6 +30,7 @@ import org.onap.policy.apex.model.utilities.comparison.KeyDifference;
/**
* Test key comparisons.
+ *
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
public class KeyComparerTest {
@@ -36,14 +38,14 @@ public class KeyComparerTest {
@Test
public void test() {
KeyDifference<String> keyDifference = new KeyComparer<String>().compareKeys("Hello", "Goodbye");
-
+
assertFalse(keyDifference.isEqual());
assertTrue("Hello".equals(keyDifference.getLeftKey().toString()));
assertTrue("Goodbye".equals(keyDifference.getRightKey().toString()));
assertTrue("left key Hello and right key Goodbye differ\n".equals(keyDifference.asString(true)));
assertTrue("left key Hello and right key Goodbye differ\n".equals(keyDifference.asString(false)));
-
+
KeyDifference<String> keyDifference2 = new KeyComparer<String>().compareKeys("Here", "Here");
assertTrue("".equals(keyDifference2.asString(true)));
assertTrue("left key Here equals right key Here\n".equals(keyDifference2.asString(false)));
diff --git a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/KeyedMapComparerTest.java b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/KeyedMapComparerTest.java
index 7fb3a5bb7..fb32d9383 100644
--- a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/KeyedMapComparerTest.java
+++ b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/KeyedMapComparerTest.java
@@ -1,24 +1,25 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 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.
* See the License for the specific language governing permissions and
* limitations under the License.
- *
+ *
* SPDX-License-Identifier: Apache-2.0
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.apex.model.utilities.typeutils;
+package org.onap.policy.apex.model.utilities;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -32,7 +33,7 @@ import org.onap.policy.apex.model.utilities.comparison.KeyedMapDifference;
/**
* Test key map comparisons.
- *
+ *
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
public class KeyedMapComparerTest {
@@ -53,10 +54,10 @@ public class KeyedMapComparerTest {
rightMap.put("F", "FFFFF");
rightMap.put("G", "G");
- KeyedMapDifference<String, String> kmComparedSame = new KeyedMapComparer<String, String>().compareMaps(leftMap,
- leftMap);
- KeyedMapDifference<String, String> kmComparedDiff = new KeyedMapComparer<String, String>().compareMaps(leftMap,
- rightMap);
+ KeyedMapDifference<String, String> kmComparedSame =
+ new KeyedMapComparer<String, String>().compareMaps(leftMap, leftMap);
+ KeyedMapDifference<String, String> kmComparedDiff =
+ new KeyedMapComparer<String, String>().compareMaps(leftMap, rightMap);
assertTrue(kmComparedSame.getIdenticalValues().equals(leftMap));
assertEquals(1, kmComparedDiff.getLeftOnly().size());
diff --git a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/ParserTest.java b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/ParserTest.java
deleted file mode 100644
index 2faa8753f..000000000
--- a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/typeutils/ParserTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.apex.model.utilities.typeutils;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import java.lang.reflect.Type;
-
-import org.antlr.v4.runtime.BailErrorStrategy;
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.CharStreams;
-import org.antlr.v4.runtime.CommonTokenStream;
-import org.antlr.v4.runtime.TokenStream;
-import org.junit.Ignore;
-import org.junit.Test;
-
-/**
- * Test Java parsing.
- */
-public class ParserTest {
- // TODO: Fix this test based on the decision around prameterized vs generic types
- @Ignore
- @Test
- public void testParser() {
- final CharStream stream = CharStreams
- .fromString("java.util.Map<java.util.List<java.lang.Integer>,java.util.Set<java.lang.String>>");
- final TokenStream tokenStream = new CommonTokenStream(new ParametrizedTypeLexer(stream));
-
- final ParametrizedTypeParser parser = new ParametrizedTypeParser(tokenStream);
- parser.removeErrorListeners();
- parser.setErrorHandler(new BailErrorStrategy());
- parser.setBuildParseTree(true);
- assertEquals("java.util.Map<java.util.List<java.lang.Integer>, java.util.Set<java.lang.String>>",
- parser.type().value.build().getTypeName());
-
- }
-
- // TODO: Fix this test based on the decision around prameterized vs generic types
- @Ignore
- @Test
- public void testBuilder() throws IllegalArgumentException {
- String typeString = "java.lang.Integer";
- Type ret = TypeBuilder.build(typeString);
- assertEquals(java.lang.Integer.class, TypeBuilder.getJavaTypeClass(ret));
-
- typeString = "java.util.Map<java.util.List<java.lang.Integer>,java.util.Set<java.lang.String>>";
- ret = TypeBuilder.build(typeString);
- assertEquals("java.util.Map<java.util.List<java.lang.Integer>, java.util.Set<java.lang.String>>",
- ret.getTypeName());
- assertEquals(java.util.Map.class, TypeBuilder.getJavaTypeClass(ret));
-
- final Type[] args = TypeBuilder.getJavaTypeParameters(ret);
- assertEquals("java.util.List<java.lang.Integer>", args[0].getTypeName());
- assertEquals("java.util.Set<java.lang.String>", args[1].getTypeName());
- }
-
- @Test
- public void testBoundaryConditions() {
- try {
- TypeBuilder.build(null);
- fail("Test should throw exception");
- } catch (final IllegalArgumentException e) {
- assertEquals(
- "Blank type string passed to "
- + "org.onap.policy.apex.model.utilities.typeutils.TypeBuilder.build(String type)",
- e.getMessage());
- }
-
- try {
- TypeBuilder.build("org.zooby.Wooby");
- fail("Test should throw exception");
- } catch (final IllegalArgumentException e) {
- assertEquals(e.getMessage(),
- "Failed to build type 'org.zooby.Wooby': java.lang.IllegalArgumentException: "
- + "Class 'org.zooby.Wooby' not found. "
- + "Also looked for a class called 'java.lang.org.zooby.Wooby'");
- }
-
- assertEquals(TypeBuilder.getJavaTypeClass("java.lang.String"), String.class);
- }
-}