You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2010/02/22 18:59:21 UTC

svn commit: r914994 - /jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java

Author: angela
Date: Mon Feb 22 17:59:20 2010
New Revision: 914994

URL: http://svn.apache.org/viewvc?rev=914994&view=rev
Log:
JCR-2508: JsonWriter: missing handling of new JCR 2.0 property types

Modified:
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java?rev=914994&r1=914993&r2=914994&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/remoting/davex/JsonWriter.java Mon Feb 22 17:59:20 2010
@@ -170,9 +170,7 @@
             }
         } else {
             boolean isMultiple = p.isMultiple();
-            if (type == PropertyType.NAME || type == PropertyType.PATH ||
-                    type == PropertyType.REFERENCE || type == PropertyType.DATE ||
-                    (isMultiple && p.getValues().length == 0)) {
+            if (requiresTypeInfo(type) || (isMultiple && p.getValues().length == 0)) {
                 /* special property types that have no correspondence in JSON
                    are transported as String. the type is transported with an
                    extra key-value pair, the key having a leading ':' the value
@@ -182,7 +180,7 @@
                  */
                 writeKeyValue(w, ":" +  p.getName(), PropertyType.nameFromValue(type), true);
             }
-            /* append key-value pair containg the jcr value(s).
+            /* append key-value pair containing the jcr value(s).
                for String, Boolean, Double, Long -> types in json available */
             if (isMultiple) {
                 writeKeyArray(w, p.getName(), p.getValues());
@@ -192,6 +190,22 @@
         }
     }
 
+    private static boolean requiresTypeInfo(int type) {
+        switch (type) {
+            case PropertyType.NAME:
+            case PropertyType.PATH:
+            case PropertyType.REFERENCE:
+            case PropertyType.DATE:
+            case PropertyType.WEAKREFERENCE:
+            case PropertyType.URI:
+            case PropertyType.DECIMAL:
+                return true;
+            default:
+                // any other property type
+                return false;
+        }
+    }
+
     private static void writeKeyValue(Writer w, String key, String value, boolean hasNext) throws IOException {
         writeKey(w, key);
         w.write(JsonUtil.getJsonString(value));