diff options
Diffstat (limited to 'utils/src/main/java/org/onap/policy/common/utils/coder/Coder.java')
-rw-r--r-- | utils/src/main/java/org/onap/policy/common/utils/coder/Coder.java | 46 |
1 files changed, 44 insertions, 2 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 index bb51f2b9..3049a5c2 100644 --- 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 @@ -1,8 +1,8 @@ /* * ============LICENSE_START======================================================= - * ONAP PAP + * ONAP * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2020 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. @@ -32,6 +32,37 @@ import java.io.Writer; public interface Coder { /** + * Converts an object/POJO to an object of the given type. + * + * @param <T> desired type + * @param source source object + * @param clazz class of the desired object type + * @return the converted object + * @throws CoderException if an error occurs + */ + default <S, T> T convert(S source, Class<T> clazz) throws CoderException { + if (source == null) { + return null; + + } else if (clazz == source.getClass()) { + // same class - just cast it + return clazz.cast(source); + + } else if (clazz == String.class) { + // target is a string - just encode the source + return (clazz.cast(encode(source))); + + } else if (source.getClass() == String.class) { + // source is a string - just decode it + return decode(source.toString(), clazz); + + } else { + // do it the long way: encode to a string and then decode the string + return decode(encode(source), clazz); + } + } + + /** * Encodes an object into json. * * @param object object to be encoded @@ -41,6 +72,17 @@ public interface Coder { String encode(Object object) throws CoderException; /** + * Encodes an object into json, optionally making it "pretty". + * + * @param object object to be encoded + * @param pretty {@code true} if it should be encoded as "pretty" json, {@code false} + * otherwise + * @return a json string representing the object + * @throws CoderException if an error occurs + */ + String encode(Object object, boolean pretty) throws CoderException; + + /** * Encodes an object into json, writing to the given target. * * @param target target to which to write the encoded json |