You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2014/10/01 22:38:50 UTC
svn commit: r1628832 - in /sling/trunk/tooling/ide:
impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/
impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/
impl-vlt/src/org/apache/sling/ide/impl/vlt/serial...
Author: rombert
Date: Wed Oct 1 20:38:50 2014
New Revision: 1628832
URL: http://svn.apache.org/r1628832
Log:
SLING-3979 - [tooling] multi valued properties are still not correctly
exported to the server
If a property is marked explicitly as multi-value, preserve that
information even if it only has one value.
Added:
sling/trunk/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml
Modified:
sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
Modified: sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java?rev=1628832&r1=1628831&r2=1628832&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java (original)
+++ sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java Wed Oct 1 20:38:50 2014
@@ -102,6 +102,29 @@ public class ContentXmlHandlerTest {
}
@Test
+ @SuppressWarnings("unchecked")
+ public void parseSingleExplicitMultiValuedProperties() throws ParserConfigurationException, SAXException,
+ IOException {
+
+ Map<String, Object> properties = parseContentXmlFile("single-explicit-multivalued-properties-content.xml", "/")
+ .getProperties();
+
+ assertThat("properties.size", properties.size(), is(7));
+ assertThat("properties[values]", (String[]) properties.get("values"),
+ Matchers.is(new String[] { "first"}));
+ assertThat("properties[decimals]", (BigDecimal[]) properties.get("decimals"),
+ Matchers.is(new BigDecimal[] { new BigDecimal("5.10")}));
+ assertThat("properties[doubles]", (Double[]) properties.get("doubles"),
+ Matchers.is(new Double[] { new Double("5.1") }));
+ assertThat("properties[flags]", (Boolean[]) properties.get("flags"),
+ Matchers.is(new Boolean[] { Boolean.FALSE }));
+ assertThat("properties[longs]", (Long[]) properties.get("longs"),
+ Matchers.is(new Long[] { Long.valueOf(15)}));
+ assertThat("properties[dates]", (Calendar[]) properties.get("dates"),
+ array(millis(1377982800000l)));
+ }
+
+ @Test
public void parseFullCoverageXmlFile() throws ParserConfigurationException, SAXException, IOException {
ResourceProxy root = parseContentXmlFile("full-coverage.xml", "/apps/full-coverage");
Added: sling/trunk/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml?rev=1628832&view=auto
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml (added)
+++ sling/trunk/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml Wed Oct 1 20:38:50 2014
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or
+ more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to you under the
+ Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain
+ a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+ applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions
+ and limitations under the License.
+-->
+<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+ jcr:primaryType="nt:unstructured"
+ dates="{Date}[2013-09-01T00:00:00.000+03:00]"
+ decimals="{Decimal}[5.10]"
+ doubles="{Double}[5.1]"
+ flags="{Boolean}[false]"
+ longs="{Long}[15]"
+ values="[first]"/>
\ No newline at end of file
Modified: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java?rev=1628832&r1=1628831&r2=1628832&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java (original)
+++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java Wed Oct 1 20:38:50 2014
@@ -91,14 +91,14 @@ public class ContentXmlHandler extends D
static enum TypeHint {
BINARY("Binary") {
@Override
- Object parseValues(String[] values) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
return null;
}
},
BOOLEAN("Boolean") {
@Override
- Object parseValues(String[] values) {
- if (values.length == 1) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ if (values.length == 1 && !explicitMultiValue) {
return Boolean.valueOf(values[0]);
}
@@ -112,9 +112,9 @@ public class ContentXmlHandler extends D
},
DATE("Date") {
@Override
- Object parseValues(String[] values) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
- if (values.length == 1) {
+ if (values.length == 1 && !explicitMultiValue) {
return ISO8601.parse(values[0]);
}
@@ -127,8 +127,8 @@ public class ContentXmlHandler extends D
},
DOUBLE("Double") {
@Override
- Object parseValues(String[] values) {
- if (values.length == 1) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ if (values.length == 1 && !explicitMultiValue) {
return Double.parseDouble(values[0]);
}
@@ -141,8 +141,8 @@ public class ContentXmlHandler extends D
},
LONG("Long") {
@Override
- Object parseValues(String[] values) {
- if ( values.length == 1 ) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ if (values.length == 1 && !explicitMultiValue) {
return Long.valueOf(values[0]);
}
@@ -155,8 +155,8 @@ public class ContentXmlHandler extends D
},
DECIMAL("Decimal") {
@Override
- Object parseValues(String[] values) {
- if ( values.length == 1) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ if (values.length == 1 && !explicitMultiValue) {
return new BigDecimal(values[0]);
}
@@ -168,29 +168,23 @@ public class ContentXmlHandler extends D
}
},
NAME("Name") {
-
@Override
- Object parseValues(String[] values) {
- if (values.length == 1) {
- return values[0];
- }
-
+ Object parseValues(String[] values, boolean explicitMultiValue) {
return values;
}
},
PATH("Path") {
@Override
- Object parseValues(String[] values) {
- return NAME.parseValues(values);
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ return NAME.parseValues(values, explicitMultiValue);
}
},
REFERENCE("Reference") {
-
@Override
- Object parseValues(String[] values) {
- if (values.length == 1) {
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ if (values.length == 1 && !explicitMultiValue) {
return UUID.fromString(values[0]);
}
@@ -205,16 +199,16 @@ public class ContentXmlHandler extends D
},
WEAKREFERENCE("WeakReference") {
-
@Override
- Object parseValues(String[] values) {
- return REFERENCE.parseValues(values);
+ Object parseValues(String[] values, boolean explicitMultiValue) {
+ return REFERENCE.parseValues(values, explicitMultiValue);
}
};
static Object parsePossiblyTypedValue(String value) {
+ boolean explicitMultiValue = false;
String rawValue;
int hintEnd = -1;
@@ -240,12 +234,13 @@ public class ContentXmlHandler extends D
String rawValues = rawValue.substring(1, rawValue.length() - 1);
values = rawValues.split(",");
+ explicitMultiValue = true;
} else {
values = new String[] { rawValue };
}
if (hintEnd == -1) {
- if (values.length == 1) {
+ if (values.length == 1 && !explicitMultiValue) {
return values[0];
}
return values;
@@ -255,7 +250,7 @@ public class ContentXmlHandler extends D
for (TypeHint hint : EnumSet.allOf(TypeHint.class)) {
if (hint.rawHint.equals(rawHint)) {
- return hint.parseValues(values);
+ return hint.parseValues(values, explicitMultiValue);
}
}
@@ -269,7 +264,7 @@ public class ContentXmlHandler extends D
this.rawHint = rawHint;
}
- abstract Object parseValues(String[] values);
+ abstract Object parseValues(String[] values, boolean explicitMultiValue);
}
}