You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2014/06/02 14:49:29 UTC

svn commit: r1599196 - in /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui: nav/model/JcrNode.java views/JcrEditingSupport.java views/PropertyTypeSupport.java

Author: stefanegli
Date: Mon Jun  2 12:49:29 2014
New Revision: 1599196

URL: http://svn.apache.org/r1599196
Log:
SLING-3606 : supporting all property types in the JCR Properties view

Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1599196&r1=1599195&r2=1599196&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Mon Jun  2 12:49:29 2014
@@ -19,11 +19,9 @@ package org.apache.sling.ide.eclipse.ui.
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.GregorianCalendar;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -31,7 +29,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.jcr.PropertyType;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.xml.parsers.ParserConfigurationException;
@@ -45,6 +42,7 @@ import org.apache.sling.ide.eclipse.core
 import org.apache.sling.ide.eclipse.core.debug.PluginLogger;
 import org.apache.sling.ide.eclipse.core.internal.Activator;
 import org.apache.sling.ide.eclipse.ui.WhitelabelSupport;
+import org.apache.sling.ide.eclipse.ui.views.PropertyTypeSupport;
 import org.apache.sling.ide.filter.Filter;
 import org.apache.sling.ide.filter.FilterResult;
 import org.apache.sling.ide.serialization.SerializationKind;
@@ -1146,32 +1144,8 @@ public class JcrNode implements IAdaptab
             
             // resourceProxy could be containing a full tree
             // dive into the right position
-            Object propertyValue = doGetProperty(resourceProxy, propertyName);
-            if (propertyValue!=null) {
-                if (propertyValue instanceof String) {
-                    String rawValue = properties.getValue(propertyName);
-                    if (rawValue.startsWith("{Name}")) {
-                        return PropertyType.NAME;
-                    } else if (rawValue.startsWith("{Path}")) {
-                        return PropertyType.PATH;
-                    }
-                    return PropertyType.STRING;
-                } else if (propertyValue instanceof Long) {
-                    return PropertyType.LONG;
-                } else if (propertyValue instanceof BigDecimal) {
-                    return PropertyType.DECIMAL;
-                } else if (propertyValue instanceof Double) {
-                    return PropertyType.DOUBLE;
-                } else if (propertyValue instanceof Boolean) {
-                    return PropertyType.BOOLEAN;
-                } else if (propertyValue instanceof GregorianCalendar) {
-                    return PropertyType.DATE;
-                } else {
-                    //TODO
-                    Activator.getDefault().getPluginLogger().warn("Unsupported property type: "+propertyValue.getClass());
-                    return PropertyType.STRING;
-                }
-            }
+            String rawValue = properties.getValue(propertyName);
+            return PropertyTypeSupport.propertyTypeOfString(rawValue);
         } catch(Exception e) {
             Activator.getDefault().getPluginLogger().warn("Exception occurred during analyzing propertyType ("+propertyName+") for "+this, e);
         }

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java?rev=1599196&r1=1599195&r2=1599196&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java Mon Jun  2 12:49:29 2014
@@ -229,7 +229,7 @@ public class JcrEditingSupport extends E
         case TYPE: {
             // using a dropdown editor
             final ComboBoxCellEditor editor = new ComboBoxCellEditor(tableViewer.getTable(), 
-                    PropertyTypeSupport.SUPPORTED_PROPERTY_TYPES, SWT.READ_ONLY);
+                    PropertyTypeSupport.PROPERTY_TYPES, SWT.READ_ONLY);
             return editor;
         }
         case VALUE: {

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java?rev=1599196&r1=1599195&r2=1599196&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/PropertyTypeSupport.java Mon Jun  2 12:49:29 2014
@@ -16,69 +16,66 @@
  */
 package org.apache.sling.ide.eclipse.ui.views;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.jcr.PropertyType;
 
+import org.apache.sling.ide.eclipse.ui.internal.Activator;
+
 public class PropertyTypeSupport {
 
-    static final String[] SUPPORTED_PROPERTY_TYPES = new String[] 
-            {"Boolean", "Date", "Decimal", "Double", "Long", "Name", "Path", "String"};
+    static final String[] PROPERTY_TYPES = new String[] {
+        "Binary",
+        "Boolean", 
+        "Date", 
+        "Decimal", 
+        "Double", 
+        "Long", 
+        "Name", 
+        "Path", 
+        "Reference", 
+        "String", 
+        "URI", 
+        "WeakReference"};
     
-    static int indexOfPropertyType(int propertyType) {
-        switch(propertyType) {
-        case PropertyType.BOOLEAN: {
-            return 0;
-        }
-        case PropertyType.DATE: {
-            return 1;
-        }
-        case PropertyType.DECIMAL: {
-            return 2;
-        }
-        case PropertyType.DOUBLE: {
-            return 3;
-        }
-        case PropertyType.LONG: {
-            return 4;
-        }
-        case PropertyType.NAME: {
-            return 5;
-        }
-        case PropertyType.PATH: {
-            return 6;
-        }
-        case PropertyType.STRING: {
-            return 7;
-        }
-        default: {
-            //TODO: hardcode to STRING then
-            return 7;
-        }
+    static Map<String,Integer> propertyTypeIndices;
+    
+    static{
+        propertyTypeIndices = new HashMap<String,Integer>();
+        for (int i = 0; i < PROPERTY_TYPES.length; i++) {
+            String aPropertyType = PROPERTY_TYPES[i];
+            propertyTypeIndices.put(aPropertyType, i);
         }
     }
+    
+    static int indexOfPropertyType(int propertyType) {
+        String name = PropertyType.nameFromValue(propertyType);
+        return propertyTypeIndices.get(name);
+    }
 
-    public static int propertyTypeOfIndex(int index) {
-        switch(index) {
-        case 0:
-            return PropertyType.BOOLEAN;
-        case 1:
-            return PropertyType.DATE;
-        case 2:
-            return PropertyType.DECIMAL;
-        case 3:
-            return PropertyType.DOUBLE;
-        case 4:
-            return PropertyType.LONG;
-        case 5:
-            return PropertyType.NAME;
-        case 6:
-            return PropertyType.PATH;
-        case 7:
-            return PropertyType.STRING;
-        default: {
-            //TODO: hardcode to STRING then
+    static int propertyTypeOfIndex(int index) {
+        try{
+            String name = PROPERTY_TYPES[index];
+            int value = PropertyType.valueFromName(name);
+            return value;
+        } catch(Exception e) {
             return PropertyType.STRING;
         }
+    }
+
+    public static int propertyTypeOfString(String rawValue) {
+        if (!rawValue.startsWith("{")) {
+            return PropertyType.STRING;
         }
+        for(int i=0; i<PROPERTY_TYPES.length; i++) {
+            if (rawValue.startsWith("{"+PROPERTY_TYPES[i]+"}")) {
+                return propertyTypeOfIndex(i);
+            }
+        }
+        //TODO: hardcoded type here
+        Activator.getDefault().getPluginLogger().warn("Unsupported property type: "+rawValue);
+        return PropertyType.STRING;
     }
     
 }