You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2016/07/05 15:34:33 UTC

svn commit: r1751503 - in /felix/trunk/converter: ./ src/main/java/org/apache/felix/converter/impl/json/ src/main/java/org/apache/felix/converter/impl/yaml/

Author: davidb
Date: Tue Jul  5 15:34:33 2016
New Revision: 1751503

URL: http://svn.apache.org/viewvc?rev=1751503&view=rev
Log:
Felix Converter Service - additional methods implemented for codecs.

Modified:
    felix/trunk/converter/pom.xml
    felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonDecodingImpl.java
    felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonEncodingImpl.java
    felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlDecodingImpl.java
    felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java

Modified: felix/trunk/converter/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/converter/pom.xml?rev=1751503&r1=1751502&r2=1751503&view=diff
==============================================================================
--- felix/trunk/converter/pom.xml (original)
+++ felix/trunk/converter/pom.xml Tue Jul  5 15:34:33 2016
@@ -66,7 +66,7 @@
                 <configuration>
                     <instructions>
                         <Bundle-Activator>org.apache.felix.converter.impl.Activator</Bundle-Activator>
-                        <Private-Package>org.apache.felix.converter.*</Private-Package>
+                        <Private-Package>org.apache.felix.converter.*,org.yaml.snakeyaml.*</Private-Package>
                         <Export-Package>org.osgi.service.converter</Export-Package>
                         <Import-Package>*</Import-Package>
                     </instructions>

Modified: felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonDecodingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonDecodingImpl.java?rev=1751503&r1=1751502&r2=1751503&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonDecodingImpl.java (original)
+++ felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonDecodingImpl.java Tue Jul  5 15:34:33 2016
@@ -42,7 +42,7 @@ public class JsonDecodingImpl<T> impleme
     public T from(CharSequence in) {
         JsonParser jp = new JsonParser(in);
         Map<?,?> m = jp.getParsed();
-        if (Map.class.isAssignableFrom(clazz))
+        if (m.getClass().isAssignableFrom(clazz))
             return (T) m;
 
         return converter.convert(m).to(clazz);

Modified: felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonEncodingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonEncodingImpl.java?rev=1751503&r1=1751502&r2=1751503&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonEncodingImpl.java (original)
+++ felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/json/JsonEncodingImpl.java Tue Jul  5 15:34:33 2016
@@ -49,11 +49,10 @@ public class JsonEncodingImpl implements
     public Appendable to(Appendable out) {
         try {
             out.append(encode(object));
+            return out;
         } catch (IOException e) {
             throw new ConversionException("Problem converting to JSON", e);
         }
-
-        return out;
     }
 
     @Override

Modified: felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlDecodingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlDecodingImpl.java?rev=1751503&r1=1751502&r2=1751503&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlDecodingImpl.java (original)
+++ felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlDecodingImpl.java Tue Jul  5 15:34:33 2016
@@ -16,9 +16,14 @@
  */
 package org.apache.felix.converter.impl.yaml;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.Scanner;
 
+import org.apache.felix.converter.impl.Util;
+import org.osgi.service.converter.ConversionException;
 import org.osgi.service.converter.Converter;
 import org.osgi.service.converter.Decoding;
 import org.yaml.snakeyaml.Yaml;
@@ -34,28 +39,37 @@ public class YamlDecodingImpl<T> impleme
 
     @Override
     public T from(InputStream in) {
-
-        // TODO Auto-generated method stub
-        return null;
+        return from(in, StandardCharsets.UTF_8);
     }
 
     @Override
     public T from(InputStream in, Charset charset) {
-        // TODO Auto-generated method stub
-        return null;
+        try {
+            byte[] bytes = Util.readStream(in);
+            String s = new String(bytes, charset);
+            return from(s);
+        } catch (IOException e) {
+            throw new ConversionException("Error reading inputstream", e);
+        }
     }
 
     @Override
     public T from(Readable in) {
-        // TODO Auto-generated method stub
-        return null;
+        try (Scanner s = new Scanner(in)) {
+            s.useDelimiter("\\Z");
+            return from(s.next());
+        }
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public T from(CharSequence in) {
         Yaml yaml = new Yaml();
         Object res = yaml.load(in.toString());
-        return (T) res;
-    }
 
+        if (res.getClass().isAssignableFrom(clazz))
+            return (T) res;
+
+        return converter.convert(res).to(clazz);
+    }
 }

Modified: felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java?rev=1751503&r1=1751502&r2=1751503&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java (original)
+++ felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/yaml/YamlEncodingImpl.java Tue Jul  5 15:34:33 2016
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.lang.reflect.Array;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -27,6 +28,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import org.osgi.service.converter.ConversionException;
 import org.osgi.service.converter.Converter;
 import org.osgi.service.converter.Encoding;
 
@@ -43,38 +45,31 @@ public class YamlEncodingImpl implements
     }
 
     @Override
-    public Encoding pretty() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Encoding ignoreNull() {
-        // TODO Auto-generated method stub
-        return null;
+    public Appendable to(Appendable out) {
+        try {
+            out.append(encode(object));
+            return out;
+        } catch (IOException e) {
+            throw new ConversionException("Problem converting to YAML", e);
+        }
     }
 
-    @Override
-    public void to(OutputStream out) throws IOException {
-        // TODO Auto-generated method stub
 
+   @Override
+    public void to(OutputStream os) throws IOException {
+       to(os, StandardCharsets.UTF_8);
     }
+
     @Override
     public void to(OutputStream os, Charset charset) {
         try {
             os.write(encode(object).getBytes(charset));
         } catch (IOException e) {
-            throw new RuntimeException(e);
+            throw new ConversionException("Problem converting to YAML", e);
         }
     }
 
     @Override
-    public Appendable to(Appendable out) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
     public String toString() {
         return encode(object);
     }
@@ -145,4 +140,16 @@ public class YamlEncodingImpl implements
             sb.append(' ');
         return sb.toString();
     }
+
+    @Override
+    public Encoding pretty() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Encoding ignoreNull() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }