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 00:04:57 UTC

svn commit: r801436 - in /incubator/chemistry/trunk/chemistry: chemistry-api/src/main/java/org/apache/chemistry/ chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/ chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/

Author: fguillaume
Date: Wed Aug  5 22:04:57 2009
New Revision: 801436

URL: http://svn.apache.org/viewvc?rev=801436&view=rev
Log:
CMIS-44: fixed descendants types nesting

Modified:
    incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/BaseType.java
    incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java
    incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleType.java
    incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleTypeManager.java

Modified: incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/BaseType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/BaseType.java?rev=801436&r1=801435&r2=801436&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/BaseType.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-api/src/main/java/org/apache/chemistry/BaseType.java Wed Aug  5 22:04:57 2009
@@ -16,7 +16,11 @@
  */
 package org.apache.chemistry;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -55,10 +59,19 @@
     }
 
     private static final Map<String, BaseType> all = new HashMap<String, BaseType>();
+
+    public static final List<BaseType> ALL = Collections.unmodifiableList(Arrays.asList(values()));
+
+    public static final List<String> ALL_IDS;
+
     static {
+        List<String> ids = new ArrayList<String>(4);
         for (BaseType o : values()) {
-            all.put(o.value, o);
+            String id = o.getId();
+            all.put(id, o);
+            ids.add(id);
         }
+        ALL_IDS = Collections.unmodifiableList(ids);
     }
 
     public static BaseType get(String value) {

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=801436&r1=801435&r2=801436&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 Wed Aug  5 22:04:57 2009
@@ -18,6 +18,7 @@
 
 import java.io.Serializable;
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
@@ -33,6 +34,7 @@
 import org.apache.abdera.model.Person;
 import org.apache.abdera.protocol.server.RequestContext;
 import org.apache.abdera.protocol.server.context.ResponseContextException;
+import org.apache.chemistry.BaseType;
 import org.apache.chemistry.CMIS;
 import org.apache.chemistry.PropertyDefinition;
 import org.apache.chemistry.PropertyType;
@@ -261,7 +263,7 @@
             }
         }
         // end property definitions
-        if ("typesdescendants".equals(getType())) {
+        if (AtomPubCMIS.COL_TYPES_DESCENDANTS.equals(getType())) {
             Collection<Type> subTypes = repository.getTypes(type.getId(), 1,
                     includePropertyDefinitions);
             if (!subTypes.isEmpty()) {
@@ -294,7 +296,16 @@
     @Override
     public Iterable<Type> getEntries(RequestContext request)
             throws ResponseContextException {
-        return repository.getTypes(id);
+        if (id == null && AtomPubCMIS.COL_TYPES_DESCENDANTS.equals(getType())) {
+            // descendants needs only the first level, it will then recurse
+            List<Type> list = new ArrayList<Type>(4);
+            for (String tid : BaseType.ALL_IDS) {
+                list.add(repository.getType(tid));
+            }
+            return list;
+        } else {
+            return repository.getTypes(id);
+        }
     }
 
     @Override
@@ -333,6 +344,7 @@
     public String getResourceName(RequestContext request) {
         return request.getTarget().getParameter("typeid");
     }
+
     @Override
     protected String getLink(Type type, IRI feedIri, RequestContext request) {
         return getTypeLink(type.getId(), request);

Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleType.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleType.java?rev=801436&r1=801435&r2=801436&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleType.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleType.java Wed Aug  5 22:04:57 2009
@@ -451,4 +451,9 @@
         return propertyDefinitions.get(id);
     }
 
+    @Override
+    public String toString() {
+        return getClass().getSimpleName() + '(' + getId() + ')';
+    }
+
 }

Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleTypeManager.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleTypeManager.java?rev=801436&r1=801435&r2=801436&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleTypeManager.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleTypeManager.java Wed Aug  5 22:04:57 2009
@@ -17,7 +17,6 @@
 package org.apache.chemistry.impl.simple;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -77,21 +76,25 @@
      */
     public Collection<Type> getTypes(String typeId, int depth,
             boolean returnPropertyDefinitions) {
+        List<Type> list = new LinkedList<Type>();
+        Set<String> done = new HashSet<String>();
         if (typeId == null) {
             // ignore depth
-            // TODO returnPropertyDefinitions
-            return Collections.unmodifiableCollection(types.values());
-        }
-        if (!types.containsKey(typeId)) {
-            throw new IllegalArgumentException("No such type: " + typeId);
-        }
-        // TODO spec unclear on depth 0
-        List<Type> list = new LinkedList<Type>();
-        if (depth < 0) {
-            list.add(types.get(typeId));
+            for (String tid : BaseType.ALL_IDS) {
+                list.add(types.get(tid));
+                collectSubTypes(tid, -1, returnPropertyDefinitions, list, done);
+            }
+        } else {
+            if (!types.containsKey(typeId)) {
+                throw new IllegalArgumentException("No such type: " + typeId);
+            }
+            // TODO spec unclear on depth 0
+            if (depth < 0) {
+                list.add(types.get(typeId));
+            }
+            collectSubTypes(typeId, depth, returnPropertyDefinitions, list,
+                    done);
         }
-        collectSubTypes(typeId, depth, returnPropertyDefinitions, list,
-                new HashSet<String>());
         return list;
     }