You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2017/06/01 09:15:27 UTC
svn commit: r1797168 - in /sling/whiteboard/cziegeler/feature/src:
main/java/org/apache/sling/feature/json/FeatureJSONWriter.java
test/java/org/apache/sling/feature/json/FeatureJSONReaderTest.java
Author: cziegeler
Date: Thu Jun 1 09:15:27 2017
New Revision: 1797168
URL: http://svn.apache.org/viewvc?rev=1797168&view=rev
Log:
Add more type conversion
Modified:
sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java
sling/whiteboard/cziegeler/feature/src/test/java/org/apache/sling/feature/json/FeatureJSONReaderTest.java
Modified: sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java?rev=1797168&r1=1797167&r2=1797168&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java (original)
+++ sling/whiteboard/cziegeler/feature/src/main/java/org/apache/sling/feature/json/FeatureJSONWriter.java Thu Jun 1 09:15:27 2017
@@ -258,21 +258,62 @@ public class FeatureJSONWriter {
}
final Object val = cfg.getProperties().get(name);
- if ( val instanceof String ) {
- w.write(name, (String)val);
- } else if ( val instanceof Boolean ) {
- w.write(name, (Boolean)val);
- } else if ( val.getClass().isArray() ) {
+
+ String typePostFix = null;
+ final Object typeCheck;
+ if ( val.getClass().isArray() ) {
+ if ( Array.getLength(val) > 0 ) {
+ typeCheck = Array.get(val, 0);
+ } else {
+ typeCheck = null;
+ }
+ } else {
+ typeCheck = val;
+ }
+
+ if ( typeCheck instanceof Integer ) {
+ typePostFix = ":Integer";
+ } else if ( typeCheck instanceof Byte ) {
+ typePostFix = ":Byte";
+ } else if ( typeCheck instanceof Character ) {
+ typePostFix = ":Character";
+ } else if ( typeCheck instanceof Float ) {
+ typePostFix = ":Float";
+ }
+
+ if ( val.getClass().isArray() ) {
w.writeStartArray(name);
for(int i=0; i<Array.getLength(val);i++ ) {
final Object obj = Array.get(val, i);
- // TODO - full type conversion, we have to reverse all types supported by the configurator
- w.write(obj.toString());
+ if ( typePostFix == null ) {
+ if ( obj instanceof String ) {
+ w.write((String)obj);
+ } else if ( obj instanceof Boolean ) {
+ w.write((Boolean)obj);
+ } else if ( obj instanceof Long ) {
+ w.write((Long)obj);
+ } else if ( obj instanceof Double ) {
+ w.write((Double)obj);
+ }
+ } else {
+ w.write(obj.toString());
+ }
}
w.writeEnd();
} else {
- // TODO - full type conversion, we have to reverse all types supported by the configurator
- w.write(name, val.toString());
+ if ( typePostFix == null ) {
+ if ( val instanceof String ) {
+ w.write(name, (String)val);
+ } else if ( val instanceof Boolean ) {
+ w.write(name, (Boolean)val);
+ } else if ( val instanceof Long ) {
+ w.write(name, (Long)val);
+ } else if ( val instanceof Double ) {
+ w.write(name, (Double)val);
+ }
+ } else {
+ w.write(name + typePostFix, val.toString());
+ }
}
}
Modified: sling/whiteboard/cziegeler/feature/src/test/java/org/apache/sling/feature/json/FeatureJSONReaderTest.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature/src/test/java/org/apache/sling/feature/json/FeatureJSONReaderTest.java?rev=1797168&r1=1797167&r2=1797168&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature/src/test/java/org/apache/sling/feature/json/FeatureJSONReaderTest.java (original)
+++ sling/whiteboard/cziegeler/feature/src/test/java/org/apache/sling/feature/json/FeatureJSONReaderTest.java Thu Jun 1 09:15:27 2017
@@ -19,7 +19,11 @@ package org.apache.sling.feature.json;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+import java.util.List;
+
+import org.apache.sling.feature.Configuration;
import org.apache.sling.feature.Feature;
import org.junit.Test;
@@ -34,6 +38,31 @@ public class FeatureJSONReaderTest {
assertEquals("1.1", feature.getId().getVersion());
assertEquals("jar", feature.getId().getType());
assertNull(feature.getId().getClassifier());
+
+ assertEquals(2, feature.getConfigurations().size());
+ final Configuration cfg1 = findConfiguration(feature.getConfigurations(), "my.pid");
+ assertEquals(7, cfg1.getProperties().get("number"));
+ final Configuration cfg2 = findFactoryConfiguration(feature.getConfigurations(), "my.factory.pid", "name");
+ assertEquals("yeah", cfg2.getProperties().get("a.value"));
}
+ private Configuration findConfiguration(final List<Configuration> cfgs, final String pid) {
+ for(final Configuration c : cfgs) {
+ if ( !c.isFactoryConfiguration() && pid.equals(c.getPid()) ) {
+ return c;
+ }
+ }
+ fail("Configuration not found " + pid);
+ return null;
+ }
+
+ private Configuration findFactoryConfiguration(final List<Configuration> cfgs, final String factoryid, final String name) {
+ for(final Configuration c : cfgs) {
+ if ( c.isFactoryConfiguration() && factoryid.equals(c.getFactoryPid()) && name.equals(c.getName())) {
+ return c;
+ }
+ }
+ fail("Factory Configuration not found " + factoryid + "~" + name);
+ return null;
+ }
}