Bug 5446: toString() throws exception for 'type binary' binding
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / yangtools / binding / data / codec / impl / UnionTypeCodec.java
index cc063580c1f8d5598213b2b656d0da229ecbf1b3..c483fe7f25cfa169b32e768dd718bdca9d6ec7fb 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.binding.data.codec.impl;
 
 import com.google.common.collect.ImmutableSet;
+import com.google.common.io.BaseEncoding;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -66,7 +67,11 @@ final class UnionTypeCodec extends ReflectionBasedCodec {
     @Override
     public Object deserialize(final Object input) {
         try {
-            return charConstructor.newInstance((input.toString().toCharArray()));
+            if (input instanceof byte[]) {
+                return charConstructor.newInstance(BaseEncoding.base64().encode((byte[]) input).toCharArray());
+            } else {
+                return charConstructor.newInstance((input.toString().toCharArray()));
+            }
         } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
             throw new IllegalStateException("Could not construct instance",e);
         }