summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/AbstractSchemaHelper.java3
-rw-r--r--context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactory.java9
-rw-r--r--context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelper.java15
-rw-r--r--context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactoryTest.java96
-rw-r--r--context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperInstanceCreationTest.java (renamed from context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/TestInstanceCreation.java)2
-rw-r--r--context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperTest.java310
-rw-r--r--context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MyBaseClass.java32
-rw-r--r--context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MySubClass.java26
8 files changed, 482 insertions, 11 deletions
diff --git a/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/AbstractSchemaHelper.java b/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/AbstractSchemaHelper.java
index 83d1b6ba5..8acc03501 100644
--- a/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/AbstractSchemaHelper.java
+++ b/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/AbstractSchemaHelper.java
@@ -24,6 +24,7 @@ import java.lang.reflect.Constructor;
import org.onap.policy.apex.context.ContextRuntimeException;
import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
import org.onap.policy.apex.model.utilities.Assertions;
@@ -41,7 +42,7 @@ public abstract class AbstractSchemaHelper implements SchemaHelper {
private static final XLogger LOGGER = XLoggerFactory.getXLogger(AbstractSchemaHelper.class);
// The key of the user of this schema helper
- private AxKey userKey = null;
+ private AxKey userKey = AxArtifactKey.getNullKey();
// The schema of this schema helper
private AxContextSchema schema = null;
diff --git a/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactory.java b/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactory.java
index 7252d3772..54689e3fb 100644
--- a/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactory.java
+++ b/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactory.java
@@ -51,8 +51,7 @@ public class SchemaHelperFactory {
* @return a lock schema that can handle translation of objects in a particular schema format
* @throws ContextRuntimeException the context runtime exception
*/
- public SchemaHelper createSchemaHelper(final AxKey owningEntityKey, final AxArtifactKey schemaKey)
- throws ContextRuntimeException {
+ public SchemaHelper createSchemaHelper(final AxKey owningEntityKey, final AxArtifactKey schemaKey) {
LOGGER.entry("schema helper factory, owningEntityKey=" + owningEntityKey);
Assertions.argumentNotNull(owningEntityKey, ContextRuntimeException.class,
"Parameter \"owningEntityKey\" may not be null");
@@ -69,12 +68,6 @@ public class SchemaHelperFactory {
// Get the schema class using the parameter service
final SchemaParameters schemaParameters = ParameterService.getParameters(SchemaParameters.class);
- if (schemaParameters == null) {
- final String resultString = "context schema parameters \"" + SchemaParameters.class.getCanonicalName()
- + "\" not found in parameter service";
- LOGGER.warn(resultString);
- throw new ContextRuntimeException(resultString);
- }
// Get the class for the schema helper from the schema parameters
final SchemaHelperParameters schemaHelperParameters =
diff --git a/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelper.java b/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelper.java
index e5d92395a..a4bfe6978 100644
--- a/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelper.java
+++ b/context/context-management/src/main/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelper.java
@@ -98,7 +98,18 @@ public class JavaSchemaHelper extends AbstractSchemaHelper {
*/
@Override
public Object createNewInstance(final Object incomingObject) {
- if (incomingObject instanceof JsonElement) {
+ if (incomingObject == null) {
+ return null;
+ }
+
+ if (getSchemaClass() == null) {
+ final String returnString =
+ getUserKey().getID() + ": could not create an instance, schema class for the schema is null";
+ LOGGER.warn(returnString);
+ throw new ContextRuntimeException(returnString);
+ }
+
+ if (incomingObject instanceof JsonElement) {
final String elementJsonString = new Gson().toJson((JsonElement) incomingObject);
return new Gson().fromJson(elementJsonString, this.getSchemaClass());
}
@@ -190,6 +201,8 @@ public class JavaSchemaHelper extends AbstractSchemaHelper {
if (object instanceof Number) {
if (getSchemaClass().isAssignableFrom(Byte.class)) {
return ((Number) object).byteValue();
+ } else if (getSchemaClass().isAssignableFrom(Short.class)) {
+ return ((Number) object).shortValue();
} else if (getSchemaClass().isAssignableFrom(Integer.class)) {
return ((Number) object).intValue();
} else if (getSchemaClass().isAssignableFrom(Long.class)) {
diff --git a/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactoryTest.java b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactoryTest.java
new file mode 100644
index 000000000..21096e753
--- /dev/null
+++ b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/SchemaHelperFactoryTest.java
@@ -0,0 +1,96 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 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=========================================================
+ */
+
+package org.onap.policy.apex.context.impl.schema;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.apex.context.ContextRuntimeException;
+import org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.basicmodel.service.ModelService;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
+
+public class SchemaHelperFactoryTest {
+ private static AxContextSchema intSchema;
+ private static AxContextSchemas schemas;
+ private static AxContextSchema badSchema;
+
+ @BeforeClass
+ public static void setupSchema() {
+ schemas = new AxContextSchemas(new AxArtifactKey("AvroSchemas", "0.0.1"));
+ ModelService.registerModel(AxContextSchemas.class, schemas);
+
+ intSchema = new AxContextSchema(new AxArtifactKey("IntSchema", "0.0.1"), "JAVA", "java.lang.Integer");
+ badSchema = new AxContextSchema(new AxArtifactKey("IntSchema", "0.0.1"), "JAVA", "java.lang.Bad");
+ }
+
+ @Test
+ public void testSchemaHelperFactory() {
+ try {
+ new SchemaHelperFactory().createSchemaHelper(null, null);
+ fail("this test should throw an exception");
+ } catch (IllegalArgumentException e) {
+ assertEquals("Parameter \"owningEntityKey\" may not be null", e.getMessage());
+ }
+
+ AxArtifactKey ownerKey = new AxArtifactKey("Owner", "0.0.1");
+ try {
+ new SchemaHelperFactory().createSchemaHelper(ownerKey, null);
+ fail("this test should throw an exception");
+ } catch (IllegalArgumentException e) {
+ assertEquals("Parameter \"schemaKey\" may not be null", e.getMessage());
+ }
+
+ try {
+ new SchemaHelperFactory().createSchemaHelper(ownerKey, intSchema.getKey());
+ fail("this test should throw an exception");
+ } catch (ContextRuntimeException e) {
+ assertEquals("schema \"IntSchema:0.0.1\" for entity Owner:0.0.1 does not exist", e.getMessage());
+ }
+
+ schemas.getSchemasMap().put(intSchema.getKey(), intSchema);
+ new SchemaParameters();
+ try {
+ new SchemaHelperFactory().createSchemaHelper(ownerKey, intSchema.getKey());
+ fail("this test should throw an exception");
+ } catch (ContextRuntimeException e) {
+ assertEquals("context schema helper parameters not found for context schema \"JAVA\"", e.getMessage());
+ }
+
+ new SchemaParameters().getSchemaHelperParameterMap().put("JAVA", new JavaSchemaHelperParameters());
+ assertNotNull(new SchemaHelperFactory().createSchemaHelper(ownerKey, intSchema.getKey()));
+
+ schemas.getSchemasMap().put(intSchema.getKey(), badSchema);
+ try {
+ new SchemaHelperFactory().createSchemaHelper(ownerKey, badSchema.getKey());
+ fail("this test should throw an exception");
+ } catch (ContextRuntimeException e) {
+ assertEquals("Owner:0.0.1: class/type java.lang.Bad for context schema \"IntSchema:0.0.1\" "
+ + "not found. Check the class path of the JVM", e.getMessage());
+ }
+ }
+}
diff --git a/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/TestInstanceCreation.java b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperInstanceCreationTest.java
index 9c2c685c3..17e5deecf 100644
--- a/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/TestInstanceCreation.java
+++ b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperInstanceCreationTest.java
@@ -38,7 +38,7 @@ import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
* @author Liam Fallon (liam.fallon@ericsson.com)
* @version
*/
-public class TestInstanceCreation {
+public class JavaSchemaHelperInstanceCreationTest {
private final AxKey testKey = new AxArtifactKey("AvroTest", "0.0.1");
private AxContextSchemas schemas;
diff --git a/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperTest.java b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperTest.java
new file mode 100644
index 000000000..a7446303e
--- /dev/null
+++ b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/JavaSchemaHelperTest.java
@@ -0,0 +1,310 @@
+/*-
+ * ============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=========================================================
+ */
+package org.onap.policy.apex.context.impl.schema.java;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import java.math.BigDecimal;
+
+import org.junit.Test;
+import org.onap.policy.apex.context.ContextRuntimeException;
+import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
+import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
+
+public class JavaSchemaHelperTest {
+
+ @Test
+ public void testJavaSchemaHelperInit() {
+ AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+ AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+ AxContextSchema badJavaTypeSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Rubbish");
+
+ try {
+ new JavaSchemaHelper().init(userKey, badJavaTypeSchema);
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: class/type java.lang.Rubbish for context schema"
+ + " \"SchemaKey:0.0.1\" not found. Check the class path of the JVM", e.getMessage());
+ }
+
+ AxContextSchema builtInJavaTypeSchema = new AxContextSchema(schemaKey, "Java", "short");
+
+ try {
+ new JavaSchemaHelper().init(userKey, builtInJavaTypeSchema);
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: class/type short for context schema "
+ + "\"SchemaKey:0.0.1\" not found. Primitive types are not supported."
+ + " Use the appropriate Java boxing type instead.", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testJavaSchemaHelperMethods() {
+ AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+ AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+ AxContextSchema intSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Integer");
+
+ SchemaHelper intSchemaHelper = new JavaSchemaHelper();
+
+ assertEquals(AxArtifactKey.getNullKey(), intSchemaHelper.getUserKey());
+ assertEquals(null, intSchemaHelper.getSchema());
+ assertEquals(null, intSchemaHelper.getSchemaClass());
+ assertEquals(null, intSchemaHelper.getSchemaObject());
+
+ try {
+ intSchemaHelper.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("NULL:0.0.0: could not create an instance, schema class for the schema is null",
+ e.getMessage());
+ }
+
+ try {
+ intSchemaHelper.createNewInstance(Float.parseFloat("1.23"));
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("NULL:0.0.0: could not create an instance, schema class for the schema is null",
+ e.getMessage());
+ }
+
+ try {
+ intSchemaHelper.createNewInstance("hello");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("NULL:0.0.0: could not create an instance, schema class for the schema is null",
+ e.getMessage());
+ }
+
+ intSchemaHelper.init(userKey, intSchema);
+ assertEquals(userKey, intSchemaHelper.getUserKey());
+ assertEquals(intSchema, intSchemaHelper.getSchema());
+ assertEquals(Integer.class, intSchemaHelper.getSchemaClass());
+ assertEquals(null, intSchemaHelper.getSchemaObject());
+
+ try {
+ intSchemaHelper.createNewInstance();
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: could not create an instance of class "
+ + "\"java.lang.Integer\" using the default constructor \"Integer()\"", e.getMessage());
+ }
+
+ try {
+ intSchemaHelper.createNewInstance(Float.parseFloat("1.23"));
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: the object \"1.23\" of type "
+ + "\"java.lang.Float\" is not an instance of JsonObject and is not "
+ + "assignable to \"java.lang.Integer\"", e.getMessage());
+ }
+
+ try {
+ intSchemaHelper.createNewInstance("hello");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: could not create an instance of class \"java.lang.Integer\" "
+ + "using the string constructor \"Integer(String)\"", e.getMessage());
+ }
+
+ JsonElement jsonIntElement = null;
+ assertEquals(null, intSchemaHelper.createNewInstance(jsonIntElement));
+
+ jsonIntElement = new JsonParser().parse("123");
+
+ assertEquals(123, intSchemaHelper.createNewInstance(jsonIntElement));
+ assertEquals(123, intSchemaHelper.createNewInstance(Integer.parseInt("123")));
+
+ assertEquals(null, intSchemaHelper.unmarshal(null));
+ assertEquals(123, intSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Double.parseDouble("123")));
+ }
+
+ @Test
+ public void testJavaSchemaHelperUnmarshal() {
+ AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+ AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+ AxContextSchema byteSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Byte");
+ AxContextSchema shortSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Short");
+ AxContextSchema intSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Integer");
+ AxContextSchema longSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Long");
+ AxContextSchema floatSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Float");
+ AxContextSchema doubleSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Double");
+ AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
+ AxContextSchema myBaseClassSchema = new AxContextSchema(schemaKey, "Java",
+ "org.onap.policy.apex.context.impl.schema.java.MyBaseClass");
+
+ SchemaHelper byteSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper shortSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper intSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper longSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper floatSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper doubleSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper myBaseClassSchemaHelper = new JavaSchemaHelper();
+
+ byteSchemaHelper.init(userKey, byteSchema);
+ shortSchemaHelper.init(userKey, shortSchema);
+ intSchemaHelper.init(userKey, intSchema);
+ longSchemaHelper.init(userKey, longSchema);
+ floatSchemaHelper.init(userKey, floatSchema);
+ doubleSchemaHelper.init(userKey, doubleSchema);
+ stringSchemaHelper.init(userKey, stringSchema);
+ myBaseClassSchemaHelper.init(userKey, myBaseClassSchema);
+
+ assertEquals(null, byteSchemaHelper.unmarshal(null));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal("123"));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(new Byte("123"), byteSchemaHelper.unmarshal(Double.parseDouble("123")));
+ try {
+ byteSchemaHelper.unmarshal("one two three");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"one two three\" of class \"java.lang.String\" not "
+ + "compatible with class \"java.lang.Byte\"", e.getMessage());
+ }
+
+ assertEquals(null, shortSchemaHelper.unmarshal(null));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal("123"));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(new Short("123"), shortSchemaHelper.unmarshal(Double.parseDouble("123")));
+ try {
+ shortSchemaHelper.unmarshal("one two three");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"one two three\" of class \"java.lang.String\" not "
+ + "compatible with class \"java.lang.Short\"", e.getMessage());
+ }
+
+ assertEquals(null, intSchemaHelper.unmarshal(null));
+ assertEquals(123, intSchemaHelper.unmarshal("123"));
+ assertEquals(123, intSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(123, intSchemaHelper.unmarshal(Double.parseDouble("123")));
+ try {
+ intSchemaHelper.unmarshal("one two three");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"one two three\" of class \"java.lang.String\" not "
+ + "compatible with class \"java.lang.Integer\"", e.getMessage());
+ }
+
+ assertEquals(null, longSchemaHelper.unmarshal(null));
+ assertEquals(123L, longSchemaHelper.unmarshal("123"));
+ assertEquals(123L, longSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(123L, longSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(123L, longSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(123L, longSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(123L, longSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(123L, longSchemaHelper.unmarshal(Double.parseDouble("123")));
+ try {
+ longSchemaHelper.unmarshal("one two three");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"one two three\" of class \"java.lang.String\" not "
+ + "compatible with class \"java.lang.Long\"", e.getMessage());
+ }
+
+ assertEquals(null, floatSchemaHelper.unmarshal(null));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal("123"));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(new Float("123"), floatSchemaHelper.unmarshal(Double.parseDouble("123")));
+ try {
+ floatSchemaHelper.unmarshal("one two three");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"one two three\" of class \"java.lang.String\" not "
+ + "compatible with class \"java.lang.Float\"", e.getMessage());
+ }
+
+ assertEquals(null, doubleSchemaHelper.unmarshal(null));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal("123"));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(Integer.parseInt("123")));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(Byte.parseByte("123")));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(Short.parseShort("123")));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(Long.parseLong("123")));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(Float.parseFloat("123")));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(Double.parseDouble("123")));
+ assertEquals(new Double("123"), doubleSchemaHelper.unmarshal(BigDecimal.valueOf(123)));
+ try {
+ doubleSchemaHelper.unmarshal("one two three");
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"one two three\" of class \"java.lang.String\" not "
+ + "compatible with class \"java.lang.Double\"", e.getMessage());
+ }
+
+ assertEquals("123", stringSchemaHelper.unmarshal(123));
+
+ MySubClass subClassInstance = new MySubClass("123");
+ assertEquals(subClassInstance, myBaseClassSchemaHelper.unmarshal(subClassInstance));
+ }
+
+ @Test
+ public void testJavaSchemaHelperMarshal() {
+ AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+ AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+ AxContextSchema intSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Integer");
+ SchemaHelper intSchemaHelper = new JavaSchemaHelper();
+ intSchemaHelper.init(userKey, intSchema);
+
+ assertEquals("null", intSchemaHelper.marshal2String(null));
+ assertEquals("123", intSchemaHelper.marshal2String(123));
+ try {
+ intSchemaHelper.marshal2String(123.45);
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"123.45\" of class \"java.lang.Double\" not "
+ + "compatible with class \"java.lang.Integer\"", e.getMessage());
+ }
+
+ JsonPrimitive intJsonPrimitive = (JsonPrimitive) intSchemaHelper.marshal2Object(123);
+ assertEquals(123, intJsonPrimitive.getAsInt());
+ }
+}
diff --git a/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MyBaseClass.java b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MyBaseClass.java
new file mode 100644
index 000000000..a27c64fff
--- /dev/null
+++ b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MyBaseClass.java
@@ -0,0 +1,32 @@
+/*-
+ * ============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=========================================================
+ */
+package org.onap.policy.apex.context.impl.schema.java;
+
+public class MyBaseClass {
+ final String stringField;
+
+ public MyBaseClass(final String stringField) {
+ this.stringField = stringField;
+ }
+
+ public String getStringField() {
+ return stringField;
+ }
+}
diff --git a/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MySubClass.java b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MySubClass.java
new file mode 100644
index 000000000..2f837a379
--- /dev/null
+++ b/context/context-management/src/test/java/org/onap/policy/apex/context/impl/schema/java/MySubClass.java
@@ -0,0 +1,26 @@
+/*-
+ * ============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=========================================================
+ */
+package org.onap.policy.apex.context.impl.schema.java;
+
+public class MySubClass extends MyBaseClass {
+ public MySubClass(String stringField) {
+ super(stringField);
+ }
+}