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;
}
}