From: Fiete Ostkamp Date: Sat, 5 Oct 2024 19:17:10 +0000 (+0200) Subject: Make Introspector serializable via Jackson X-Git-Tag: 1.15.0~2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F23%2F139123%2F2;p=aai%2Faai-common.git Make Introspector serializable via Jackson - annotate Introspector, such that ObjectMapper can serialize it Issue-ID: AAI-4010 Signed-off-by: Fiete Ostkamp Change-Id: I4896f811fa9db0637c941a11b01f26b734b15a21 --- diff --git a/aai-core/src/main/java/org/onap/aai/introspection/Introspector.java b/aai-core/src/main/java/org/onap/aai/introspection/Introspector.java index 87983d8d..cde99db4 100644 --- a/aai-core/src/main/java/org/onap/aai/introspection/Introspector.java +++ b/aai-core/src/main/java/org/onap/aai/introspection/Introspector.java @@ -20,6 +20,8 @@ package org.onap.aai.introspection; +import com.fasterxml.jackson.annotation.JsonRawValue; +import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.base.CaseFormat; import java.io.UnsupportedEncodingException; @@ -620,6 +622,12 @@ public abstract class Introspector implements Cloneable { return marshal(properties); } + @JsonValue + @JsonRawValue + public String toString() { + return marshal(false); + } + public String makeSingular(String word) { String result = word; diff --git a/aai-core/src/test/java/org/onap/aai/introspection/IntrospectorSerializationTest.java b/aai-core/src/test/java/org/onap/aai/introspection/IntrospectorSerializationTest.java new file mode 100644 index 00000000..51eb0cea --- /dev/null +++ b/aai-core/src/test/java/org/onap/aai/introspection/IntrospectorSerializationTest.java @@ -0,0 +1,58 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2024 Deutsche Telekom. 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.aai.introspection; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.Before; +import org.junit.Test; +import org.onap.aai.AAISetup; +import org.onap.aai.exceptions.AAIException; +import org.onap.aai.introspection.Introspector; +import org.onap.aai.introspection.Loader; +import org.onap.aai.introspection.exceptions.AAIUnmarshallingException; +import org.onap.aai.setup.SchemaVersion; +import org.skyscreamer.jsonassert.JSONAssert; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class IntrospectorSerializationTest extends AAISetup { + + ObjectMapper mapper; + Loader loader; + + @Before + public void setup() { + loader = loaderFactory.getMoxyLoaderInstance().get(new SchemaVersion("v14")); + } + + @Test + public void serializePlain() throws IOException, AAIUnmarshallingException { + mapper = new ObjectMapper(); + + String pserver = new String(Files.readAllBytes(Path.of("src/test/resources/payloads/templates/pserver.json"))); + Introspector introspector = loader.unmarshal("pserver", pserver); + String result = mapper.writeValueAsString(introspector); + JSONAssert.assertEquals(pserver, result, false); + } +}