* 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 com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
+
import java.math.BigDecimal;
+import java.time.Instant;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
+
import org.onap.policy.apex.context.ContextRuntimeException;
import org.onap.policy.apex.context.SchemaHelper;
+import org.onap.policy.apex.context.parameters.ContextParameterConstants;
+import org.onap.policy.apex.context.parameters.SchemaParameters;
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;
+import org.onap.policy.common.parameters.ParameterService;
public class JavaSchemaHelperTest {
+ /**
+ * Initialize JSON adapters.
+ */
+ @BeforeClass
+ public static void registerParameters() {
+ JavaSchemaHelperParameters javaSchemaHelperPars = new JavaSchemaHelperParameters();
+
+ JavaSchemaHelperJsonAdapterParameters stringAdapterPars = new JavaSchemaHelperJsonAdapterParameters();
+ stringAdapterPars.setAdaptedClass("java.lang.String");
+ stringAdapterPars.setAdaptorClass("org.onap.policy.apex.context.impl.schema.java.SupportJsonAdapter");
+
+ javaSchemaHelperPars.getJsonAdapters().put("String", stringAdapterPars);
+
+ SchemaParameters schemaPars = new SchemaParameters();
+ schemaPars.getSchemaHelperParameterMap().put("Java", javaSchemaHelperPars);
+
+ ParameterService.register(schemaPars);
+ }
+
+ @AfterClass
+ public static void deregisterParameters() {
+ ParameterService.clear();
+ }
@Test
public void testJavaSchemaHelperInit() {
@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());
e.getMessage());
}
+ 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");
+
intSchemaHelper.init(userKey, intSchema);
assertEquals(userKey, intSchemaHelper.getUserKey());
assertEquals(intSchema, intSchemaHelper.getSchema());
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);
+
+ SchemaHelper longSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper floatSchemaHelper = new JavaSchemaHelper();
+
+ AxContextSchema longSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Long");
+ AxContextSchema floatSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Float");
longSchemaHelper.init(userKey, longSchema);
floatSchemaHelper.init(userKey, floatSchema);
+
+ SchemaHelper doubleSchemaHelper = new JavaSchemaHelper();
+ SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+ AxContextSchema doubleSchema = new AxContextSchema(schemaKey, "Java", "java.lang.Double");
+ AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
doubleSchemaHelper.init(userKey, doubleSchema);
stringSchemaHelper.init(userKey, stringSchema);
+
+ AxContextSchema myBaseClassSchema = new AxContextSchema(schemaKey, "Java",
+ "org.onap.policy.apex.context.impl.schema.java.SupportBaseClass");
+ SchemaHelper myBaseClassSchemaHelper = new JavaSchemaHelper();
myBaseClassSchemaHelper.init(userKey, myBaseClassSchema);
assertEquals(null, byteSchemaHelper.unmarshal(null));
assertEquals("123", stringSchemaHelper.unmarshal(123));
- MySubClass subClassInstance = new MySubClass("123");
+ SupportSubClass subClassInstance = new SupportSubClass("123");
assertEquals(subClassInstance, myBaseClassSchemaHelper.unmarshal(subClassInstance));
}
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());
}
+
+ @Test
+ public void testJavaSchemaHelperAdapters() {
+ AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+ AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+ AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
+ SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+ stringSchemaHelper.init(userKey, stringSchema);
+
+ assertEquals("null", stringSchemaHelper.marshal2String(null));
+ assertEquals("\"Hello\"", stringSchemaHelper.marshal2String("Hello"));
+ try {
+ stringSchemaHelper.marshal2String(Instant.ofEpochMilli(1000));
+ fail("test should throw an exception here");
+ } catch (ContextRuntimeException e) {
+ assertEquals("UserKey:0.0.1: object \"1970-01-01T00:00:01Z\" of class \"java.time.Instant\" "
+ + "not compatible with class \"java.lang.String\"", e.getMessage());
+ }
+
+ JsonPrimitive stringJsonPrimitive = (JsonPrimitive) stringSchemaHelper.marshal2Object("Another String");
+ assertEquals("Another String", stringJsonPrimitive.getAsString());
+ }
+
+ @Test
+ public void testJavaSchemaHelperBadAdapter() {
+ AxArtifactKey schemaKey = new AxArtifactKey("SchemaKey", "0.0.1");
+ AxArtifactKey userKey = new AxArtifactKey("UserKey", "0.0.1");
+
+ SchemaParameters pars = ParameterService.get(ContextParameterConstants.SCHEMA_GROUP_NAME);
+
+ JavaSchemaHelperParameters javaShPars = (JavaSchemaHelperParameters) pars.getSchemaHelperParameterMap()
+ .get("Java");
+ javaShPars.getJsonAdapters().get("String")
+ .setAdaptorClass("org.onap.policy.apex.context.impl.schema.java.SupportBadJsonAdapter");
+
+ AxContextSchema stringSchema = new AxContextSchema(schemaKey, "Java", "java.lang.String");
+ SchemaHelper stringSchemaHelper = new JavaSchemaHelper();
+ stringSchemaHelper.init(userKey, stringSchema);
+
+ try {
+ stringSchemaHelper.marshal2String("Hello");
+ fail("test should throw an exception");
+ } catch (ContextRuntimeException pre) {
+ assertEquals("UserKey:0.0.1: instantiation of adapter class "
+ + "\"org.onap.policy.apex.context.impl.schema.java.SupportBadJsonAdapter\" "
+ + "to decode and encode class \"java.lang.String\" failed: Test for Bad Adapter",
+ pre.getMessage());
+ }
+ }
+
+ @Test
+ public void testJavaSchemaHelperDefaultAdapter() {
+ SchemaParameters pars = ParameterService.get(ContextParameterConstants.SCHEMA_GROUP_NAME);
+
+ JavaSchemaHelperParameters javaShPars = (JavaSchemaHelperParameters) pars.getSchemaHelperParameterMap()
+ .get("Java");
+
+ pars.getSchemaHelperParameterMap().clear();
+
+ testJavaSchemaHelperAdapters();
+
+ pars.getSchemaHelperParameterMap().put("Java", javaShPars);
+ }
}