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;
+ }
}