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) {


Reply via email to