Author: rombert
Date: Fri Sep 13 15:28:37 2013
New Revision: 1522978
URL: http://svn.apache.org/r1522978
Log:
SLING-2989 - [Tooling] integrate with vlt once available
Support Name, Path, Reference and WeakReference property types. Still
not done: force creating of WeakReference properties when requested.
Modified:
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
Modified:
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
URL:
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java?rev=1522978&r1=1522977&r2=1522978&view=diff
==============================================================================
---
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
(original)
+++
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
Fri Sep 13 15:28:37 2013
@@ -46,7 +46,7 @@ public class ContentXmlHandlerTest {
Map<String, Object> properties =
parseContentXmlFile("simple-content.xml");
- assertThat("properties.size", properties.size(), is(7));
+ assertThat("properties.size", properties.size(), is(11));
assertThat("properties[jcr:primaryType]", properties,
hasEntry("jcr:primaryType", (Object) "sling:Folder"));
assertThat("properties[jcr:title]", properties, hasEntry("jcr:title",
(Object) "Application folder"));
@@ -57,6 +57,8 @@ public class ContentXmlHandlerTest {
is(millis(1378292400000l)));
assertThat("properties[lastIndexId]", properties,
hasEntry("lastIndexId", (Object)
Long.valueOf(7293120000000l)));
+ assertThat("properties[lastIndexId]", properties,
+ hasEntry("lastIndexId", (Object)
Long.valueOf(7293120000000l)));
}
Modified:
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
URL:
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml?rev=1522978&r1=1522977&r2=1522978&view=diff
==============================================================================
---
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
(original)
+++
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt-test/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
Fri Sep 13 15:28:37 2013
@@ -6,4 +6,8 @@
indexed="{Boolean}true"
indexRatio="{Double}2.54"
lastIndexId="{Long}7293120000000"
+ someName="{Name}some-name"
+ somePath="{Path}/libs/sling"
+ someReference="{Reference}485aa3ec-06a6-420c-8b48-3e59333272ee"
+ someWeakReference="{WeakReference}22ac25bd-982a-4d53-89e7-da015637d5b5"
lastIndexTime="{Date}2013-09-04T14:00:00.000+03:00"/>
\ No newline at end of file
Modified:
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
URL:
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java?rev=1522978&r1=1522977&r2=1522978&view=diff
==============================================================================
---
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
(original)
+++
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/UpdateNodePropertiesCommand.java
Fri Sep 13 15:28:37 2013
@@ -22,6 +22,7 @@ import java.util.Calendar;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
import javax.jcr.Credentials;
import javax.jcr.Node;
@@ -98,6 +99,12 @@ public class UpdateNodePropertiesCommand
node.setProperty(entry.getKey(), (Long) entry.getValue());
} else if (entry.getValue() instanceof Long[]) {
node.setProperty(entry.getKey(), toValueArray((Long[])
entry.getValue(), session));
+ // TODO - properly support weak vs strong references
+ } else if (entry.getValue() instanceof UUID) {
+ Node reference = session.getNodeByIdentifier(((UUID)
entry.getValue()).toString());
+ node.setProperty(entry.getKey(), reference);
+ } else if (entry.getValue() instanceof UUID[]) {
+ node.setProperty(entry.getKey(), toValueArray((UUID[])
entry.getValue(), session));
} else {
throw new IllegalArgumentException("Unable to handle value of
type '"
+ entry.getValue().getClass().getName() + "' for
property '" + entry.getKey() + "'");
@@ -171,4 +178,18 @@ public class UpdateNodePropertiesCommand
return values;
}
+ private Value[] toValueArray(UUID[] uuids, Session session) throws
RepositoryException {
+
+ Value[] values = new Value[uuids.length];
+
+ for (int i = 0; i < uuids.length; i++) {
+
+ Node reference = session.getNodeByIdentifier(uuids[i].toString());
+
+ values[i] = session.getValueFactory().createValue(reference);
+ }
+
+ return values;
+ }
+
}
Modified:
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
URL:
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java?rev=1522978&r1=1522977&r2=1522978&view=diff
==============================================================================
---
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
(original)
+++
sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
Fri Sep 13 15:28:37 2013
@@ -21,6 +21,7 @@ import java.util.Calendar;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
+import java.util.UUID;
import org.apache.jackrabbit.util.ISO8601;
import org.xml.sax.Attributes;
@@ -126,6 +127,51 @@ public class ContentXmlHandler extends D
}
return ret;
}
+ },
+ NAME("Name") {
+
+ @Override
+ Object parseValues(String[] values) {
+ if (values.length == 1) {
+ return values[0];
+ }
+
+ return values;
+ }
+ },
+ PATH("Path") {
+
+ @Override
+ Object parseValues(String[] values) {
+ return NAME.parseValues(values);
+ }
+
+ },
+ REFERENCE("Reference") {
+
+ @Override
+ Object parseValues(String[] values) {
+ if (values.length == 1) {
+ return UUID.fromString(values[0]);
+ }
+
+ UUID[] refs = new UUID[values.length];
+ for (int i = 0; i < values.length; i++) {
+ String value = values[i];
+ refs[i] = UUID.fromString(value);
+ }
+
+ return refs;
+ }
+
+ },
+ WEAKREFERENCE("WeakReference") {
+
+ @Override
+ Object parseValues(String[] values) {
+ return REFERENCE.parseValues(values);
+ }
+
};
static Object parsePossiblyTypedValue(String value) {