diff options
Diffstat (limited to 'utils/src/main/java/org/onap')
6 files changed, 25 insertions, 138 deletions
diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/CoderException.java b/utils/src/main/java/org/onap/policy/common/utils/coder/CoderException.java index 60e85733..8390d175 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/CoderException.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/CoderException.java @@ -1,8 +1,7 @@ /* * ============LICENSE_START======================================================= - * ONAP PAP - * ================================================================================ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,10 +19,14 @@ package org.onap.policy.common.utils.coder; +import java.io.Serial; + /** * Exceptions generated by coders. */ public class CoderException extends Exception { + + @Serial private static final long serialVersionUID = 1L; public CoderException() { diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java index d6135afd..834a8504 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -179,7 +180,6 @@ public class StandardCoder implements Coder { public <T> T decode(String json, Class<T> clazz) throws CoderException { try { return fromJson(json, clazz); - } catch (RuntimeException e) { throw new CoderException(e); } @@ -378,7 +378,7 @@ public class StandardCoder implements Coder { /** * Used to read/write a JsonElement. */ - private static TypeAdapter<JsonElement> elementAdapter = new Gson().getAdapter(JsonElement.class); + private static final TypeAdapter<JsonElement> elementAdapter = new Gson().getAdapter(JsonElement.class); @Override public void write(JsonWriter out, StandardCoderObject value) throws IOException { diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java index 55f7f9d7..5402f37b 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +22,7 @@ package org.onap.policy.common.utils.coder; import com.google.gson.JsonElement; +import java.io.Serial; import java.io.Serializable; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -33,6 +35,8 @@ import lombok.Getter; */ @AllArgsConstructor(access = AccessLevel.PROTECTED) public class StandardCoderObject implements Serializable { + + @Serial private static final long serialVersionUID = 1L; /** @@ -56,9 +60,8 @@ public class StandardCoderObject implements Serializable { * Gets a field's value from this object, traversing the object hierarchy. * * @param fields field hierarchy. These may be strings, identifying fields within the - * object, or Integers, identifying an index within an array - * @return the field value or {@code null} if the field does not exist or is not a - * primitive + * object, or Integers, identifying an index within an array + * @return the field value or {@code null} if the field does not exist or is not a primitive */ public String getString(Object... fields) { @@ -87,9 +90,8 @@ public class StandardCoderObject implements Serializable { * Gets an item from an object. * * @param element object from which to extract the item - * @param field name of the field from which to extract the item - * @return the item, or {@code null} if the element is not an object or if the field - * does not exist + * @param field name of the field from which to extract the item + * @return the item, or {@code null} if the element is not an object or if the field does not exist */ protected JsonElement getFieldFromObject(JsonElement element, String field) { if (!element.isJsonObject()) { @@ -103,9 +105,8 @@ public class StandardCoderObject implements Serializable { * Gets an item from an array. * * @param element array from which to extract the item - * @param index index of the item to extract - * @return the item, or {@code null} if the element is not an array or if the index is - * out of bounds + * @param index index of the item to extract + * @return the item, or {@code null} if the element is not an array or if the index is out of bounds */ protected JsonElement getItemFromArray(JsonElement element, int index) { if (index < 0) { diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java deleted file mode 100644 index 4deeba14..00000000 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java +++ /dev/null @@ -1,119 +0,0 @@ -/*-- - * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 AT&T Intellectual Property. 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.common.utils.coder; - -import com.worldturner.medeia.api.JsonSchemaVersion; -import com.worldturner.medeia.api.SchemaSource; -import com.worldturner.medeia.api.StringSchemaSource; -import com.worldturner.medeia.api.ValidationFailedException; -import com.worldturner.medeia.api.gson.MedeiaGsonApi; -import com.worldturner.medeia.schema.validation.SchemaValidator; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; -import java.io.Writer; -import lombok.NonNull; -import lombok.ToString; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Extension to the StandardCoder to support streaming validation against a Draft-07 Json schema specification. - */ - -@ToString -public class StandardValCoder extends StandardCoder { - - // The medeia-validator library integrates better than - // other libraries considered with GSON, and therefore - // the StandardCoder. - - private static final Logger logger = LoggerFactory.getLogger(StandardValCoder.class); - - private final MedeiaGsonApi validatorApi = new MedeiaGsonApi(); - private final SchemaValidator validator; - - /** - * StandardCoder with validation. - */ - public StandardValCoder(@NonNull String jsonSchema, @NonNull String name) { - SchemaSource schemaSource = new StringSchemaSource(jsonSchema, JsonSchemaVersion.DRAFT07, null, name); - this.validator = validatorApi.loadSchema(schemaSource); - } - - @Override - protected String toPrettyJson(Object object) { - /* - * The validator strips off the "pretty" stuff (i.e., spaces), thus we have to validate and generate the pretty - * JSON in separate steps. - */ - gson.toJson(object, object.getClass(), validatorApi.createJsonWriter(validator, new StringWriter())); - - return super.toPrettyJson(object); - } - - @Override - protected String toJson(@NonNull Object object) { - var output = new StringWriter(); - toJson(output, object); - return output.toString(); - } - - @Override - protected void toJson(@NonNull Writer target, @NonNull Object object) { - gson.toJson(object, object.getClass(), validatorApi.createJsonWriter(validator, target)); - } - - @Override - protected <T> T fromJson(@NonNull Reader source, @NonNull Class<T> clazz) { - return convertFromDouble(clazz, gson.fromJson(validatorApi.createJsonReader(validator, source), clazz)); - } - - @Override - protected <T> T fromJson(String json, Class<T> clazz) { - var reader = new StringReader(json); - return convertFromDouble(clazz, gson.fromJson(validatorApi.createJsonReader(validator, reader), clazz)); - } - - /** - * Is the json conformant?. - */ - public boolean isConformant(@NonNull String json) { - try { - conformance(json); - } catch (CoderException e) { - logger.info("JSON is not conformant to schema", e); - return false; - } - return true; - } - - /** - * Check a json string for conformance against its schema definition. - */ - public void conformance(@NonNull String json) throws CoderException { - try { - validatorApi.parseAll(validatorApi.createJsonReader(validator, new StringReader(json))); - } catch (ValidationFailedException e) { - throw new CoderException(e); - } - } -} diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java index d94ddca4..8ee2e81d 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,8 +25,8 @@ import java.io.Reader; import java.io.Writer; /** - * YAML encoder and decoder using the "standard" mechanism, which is currently gson. All - * of the methods perform conversion to/from YAML (instead of JSON). + * YAML encoder and decoder using the "standard" mechanism, which is currently gson. + * All the methods perform conversion to/from YAML (instead of JSON). */ public class StandardYamlCoder extends StandardCoder { private final YamlJsonTranslator translator; diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/YamlJsonTranslator.java b/utils/src/main/java/org/onap/policy/common/utils/coder/YamlJsonTranslator.java index 077246bf..ffd9d052 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/YamlJsonTranslator.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/YamlJsonTranslator.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2024 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -257,11 +258,11 @@ public class YamlJsonTranslator { * @return a gson element corresponding to the node */ protected JsonElement makeJson(Node node) { - if (node instanceof MappingNode) { - return makeJsonObject((MappingNode) node); + if (node instanceof MappingNode mappingNode) { + return makeJsonObject(mappingNode); - } else if (node instanceof SequenceNode) { - return makeJsonArray((SequenceNode) node); + } else if (node instanceof SequenceNode sequenceNode) { + return makeJsonArray(sequenceNode); } else { return makeJsonPrim((ScalarNode) node); |