diff options
author | Liam Fallon <liam.fallon@est.tech> | 2019-02-27 21:47:37 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-02-27 21:47:37 +0000 |
commit | df8ba3401bb8ca7056a4cf4fcb2a202ae454b7e0 (patch) | |
tree | 8021bac62ba9d42d40262c433ff8a4e783589b88 /utils/src/main | |
parent | 098c32f1d0ef3922ae19a08dbe2c8f0c12eebfdb (diff) | |
parent | b8432fe028654dbf538cd0cc79cebe5e6093acb6 (diff) |
Merge "Add common coder classes"
Diffstat (limited to 'utils/src/main')
3 files changed, 174 insertions, 0 deletions
diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/Coder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/Coder.java new file mode 100644 index 00000000..41db218b --- /dev/null +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/Coder.java @@ -0,0 +1,46 @@ +/* + * ============LICENSE_START======================================================= + * ONAP PAP + * ================================================================================ + * Copyright (C) 2019 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.utils.coder; + +/** + * JSON encoder and decoder. + */ +public interface Coder { + + /** + * Encodes an object into json. + * + * @param object object to be encoded + * @return a json string representing the object + * @throws CoderException if an error occurs + */ + String encode(Object object) throws CoderException; + + /** + * Decodes a json string into an object. + * + * @param json json string to be decoded + * @param clazz class of object to be decoded + * @return the object represented by the given json string + * @throws CoderException if an error occurs + */ + <T> T decode(String json, Class<T> clazz) throws CoderException; +} 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 new file mode 100644 index 00000000..60e85733 --- /dev/null +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/CoderException.java @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * ONAP PAP + * ================================================================================ + * Copyright (C) 2019 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.utils.coder; + +/** + * Exceptions generated by coders. + */ +public class CoderException extends Exception { + private static final long serialVersionUID = 1L; + + public CoderException() { + super(); + } + + public CoderException(String message) { + super(message); + } + + public CoderException(Throwable cause) { + super(cause); + } + + public CoderException(String message, Throwable cause) { + super(message, cause); + } +} 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 new file mode 100644 index 00000000..4c7a55c2 --- /dev/null +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java @@ -0,0 +1,84 @@ +/* + * ============LICENSE_START======================================================= + * ONAP PAP + * ================================================================================ + * Copyright (C) 2019 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.utils.coder; + +import com.google.gson.Gson; + +/** + * JSON encoder and decoder using the "standard" mechanism, which is currently gson. + */ +public class StandardCoder implements Coder { + + /** + * Gson object used to encode and decode messages. + */ + private static final Gson GSON = new Gson(); + + /** + * Constructs the object. + */ + public StandardCoder() { + super(); + } + + @Override + public String encode(Object object) throws CoderException { + try { + return toJson(object); + + } catch (RuntimeException e) { + throw new CoderException(e); + } + } + + @Override + public <T> T decode(String json, Class<T> clazz) throws CoderException { + try { + return fromJson(json, clazz); + + } catch (RuntimeException e) { + throw new CoderException(e); + } + } + + // the remaining methods are wrappers that can be overridden by junit tests + + /** + * Encodes an object into json, without catching exceptions. + * + * @param object object to be encoded + * @return a json string representing the object + */ + protected String toJson(Object object) { + return GSON.toJson(object); + } + + /** + * Decodes a json string into an object, without catching exceptions. + * + * @param json json string to be decoded + * @param clazz class of object to be decoded + * @return the object represented by the given json string + */ + protected <T> T fromJson(String json, Class<T> clazz) { + return GSON.fromJson(json, clazz); + } +} |