You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fg...@apache.org on 2009/08/06 21:18:02 UTC

svn commit: r801782 - in /incubator/chemistry/trunk/chemistry: chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/ chemistry-atompub/src/main/java/org/apache/chemistry/atompub/abdera/

Author: fguillaume
Date: Thu Aug  6 19:18:02 2009
New Revision: 801782

URL: http://svn.apache.org/viewvc?rev=801782&view=rev
Log:
clean up url parsing for types

Modified:
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/abdera/PropertiesElement.java

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java?rev=801782&r1=801781&r2=801782&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java Thu Aug  6 19:18:02 2009
@@ -366,8 +366,6 @@
         SPI spi = repository.getSPI(); // TODO XXX connection leak
         if ("path".equals(getType())) {
             String path = "/" + resourceName;
-            // TODO decode properly
-            path = path.replace("%20", " ");
             return spi.getObjectByPath(path, null, false, false);
         } else { // object
             String id = resourceName;
@@ -383,7 +381,12 @@
         } else {
             name = "objectid";
         }
-        return request.getTarget().getParameter(name);
+        String resourceName = request.getTarget().getParameter(name);
+        // TODO decode properly
+        resourceName = resourceName.replace("%3a", ":");
+        resourceName = resourceName.replace("%3A", ":");
+        resourceName = resourceName.replace("%20", " ");
+        return resourceName;
     }
 
     @Override

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java?rev=801782&r1=801781&r2=801782&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java Thu Aug  6 19:18:02 2009
@@ -69,7 +69,7 @@
                 "objectid");
         targetResolver.setPattern("/allowableactions/([^/?]+)",
                 TargetType.TYPE_ENTRY, "objectid"); // XXX entry?
-        targetResolver.setPattern("/type/([^/?]+)", TargetType.TYPE_ENTRY,
+        targetResolver.setPattern("/type/([^/?]+)(\\?.*)?", TargetType.TYPE_ENTRY,
                 "typeid");
         targetResolver.setPattern("/path/([^?]*)", TargetType.TYPE_ENTRY,
                 "path");

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java?rev=801782&r1=801781&r2=801782&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java Thu Aug  6 19:18:02 2009
@@ -40,6 +40,7 @@
 import org.apache.chemistry.PropertyType;
 import org.apache.chemistry.Repository;
 import org.apache.chemistry.Type;
+import org.apache.chemistry.atompub.AtomPub;
 import org.apache.chemistry.atompub.AtomPubCMIS;
 import org.apache.chemistry.atompub.abdera.PropertiesElement;
 
@@ -104,10 +105,10 @@
         }
 
         String link = getLink(type, feedIri, request);
-        entry.addLink(link, "self");
-        entry.addLink(link, "edit");
+        entry.addLink(link, AtomPub.LINK_SELF);
+        entry.addLink(link, AtomPub.LINK_EDIT);
         // alternate is mandated by Atom when there is no atom:content
-        entry.addLink(link, "alternate");
+        entry.addLink(link, AtomPub.LINK_ALTERNATE);
         // CMIS links
 
         // CMIS-specific
@@ -342,7 +343,12 @@
 
     @Override
     public String getResourceName(RequestContext request) {
-        return request.getTarget().getParameter("typeid");
+        String resourceName = request.getTarget().getParameter("typeid");
+        // TODO decode properly
+        resourceName = resourceName.replace("%3a", ":");
+        resourceName = resourceName.replace("%3A", ":");
+        resourceName = resourceName.replace("%20", " ");
+        return resourceName;
     }
 
     @Override

Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/abdera/PropertiesElement.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/abdera/PropertiesElement.java?rev=801782&r1=801781&r2=801782&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/abdera/PropertiesElement.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/abdera/PropertiesElement.java Thu Aug  6 19:18:02 2009
@@ -17,7 +17,6 @@
 package org.apache.chemistry.atompub.abdera;
 
 import java.io.Serializable;
-import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -176,14 +175,18 @@
      * @return the list of serialized strings
      */
     // TODO move this to a helper somewhere else
-    @SuppressWarnings("null")
+    @SuppressWarnings( { "null", "unchecked" })
     public static List<String> getStringsForValue(Serializable value,
             PropertyDefinition propertyDefinition) {
         boolean multi = propertyDefinition.isMultiValued();
         List<String> values = null;
         if (multi) {
             if (value.getClass().isArray()) {
-                values = new ArrayList<String>(Array.getLength(value));
+                // turn it into a list to work with it easily
+                value = (Serializable) Arrays.asList((Serializable[]) value);
+            }
+            if (value instanceof List<?>) {
+                values = new ArrayList<String>(((List<?>) value).size());
             } else {
                 // TODO: complex property don't know how to handle skip it
                 return null;
@@ -194,14 +197,14 @@
         case PropertyType.STRING_ORD:
         case PropertyType.ID_ORD:
             if (multi) {
-                values.addAll(Arrays.asList((String[]) value));
+                values.addAll((List<? extends String>) value);
             } else {
                 values = Collections.singletonList((String) value);
             }
             break;
         case PropertyType.DECIMAL_ORD:
             if (multi) {
-                for (BigDecimal v : (BigDecimal[]) value) {
+                for (BigDecimal v : (List<? extends BigDecimal>) value) {
                     values.add(v.toString());
                 }
             } else {
@@ -210,7 +213,7 @@
             break;
         case PropertyType.INTEGER_ORD:
             if (multi) {
-                for (Number v : (Number[]) value) {
+                for (Number v : (List<? extends Number>) value) {
                     values.add(v.toString());
                 }
             } else {
@@ -219,7 +222,7 @@
             break;
         case PropertyType.BOOLEAN_ORD:
             if (multi) {
-                for (Boolean v : (Boolean[]) value) {
+                for (Boolean v : (List<? extends Boolean>) value) {
                     values.add(v.toString());
                 }
             } else {
@@ -228,7 +231,7 @@
             break;
         case PropertyType.DATETIME_ORD:
             if (multi) {
-                for (Calendar v : (Calendar[]) value) {
+                for (Calendar v : (List<? extends Calendar>) value) {
                     values.add(calendarString(v));
                 }
             } else {