chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gabri...@apache.org
Subject svn commit: r929115 [1/2] - in /incubator/chemistry/trunk/chemistry: chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/ chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/ chemistry-abdera/src/test/java/org/ chemistry-abd...
Date Tue, 30 Mar 2010 12:47:14 GMT
Author: gabriele
Date: Tue Mar 30 12:47:13 2010
New Revision: 929115

URL: http://svn.apache.org/viewvc?rev=929115&view=rev
Log:
fixed https://issues.apache.org/jira/browse/CMIS-146 and https://issues.apache.org/jira/browse/CMIS-174, completed property and type definitions constants, getters and setters, added choices support classes, moved CmisAppModel to chemistry-abdera and created test suite for testing adbera extension on it own, added tests for type definition, property definition and nested choices

Added:
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISChoice.java
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/CMISAppModel.java   (contents, props changed)
      - copied, changed from r928804, incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISAppModel.java
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/test/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/test/TestAppModel.java
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-entry.xml
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-nested-choices-entry.xml
Removed:
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/abdera/ext/
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISAppModel.java
Modified:
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISExtensionFactory.java
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISPropertyDefinition.java
    incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISTypeDefinition.java
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/TCKTest.java
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISClient.java
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/AssertChangeTypeInChangeLogVisitor.java
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/fixture/ManageAccessControlListVisitor.java
    incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/test/java/org/apache/chemistry/abdera/ext/test/CMISContentTest.java

Added: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISChoice.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISChoice.java?rev=929115&view=auto
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISChoice.java (added)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISChoice.java Tue Mar 30 12:47:13 2010
@@ -0,0 +1,230 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Authors:
+ *     Gabriele Columbro, Alfresco
+ */
+package org.apache.chemistry.abdera.ext;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.abdera.factory.Factory;
+import org.apache.abdera.model.Element;
+import org.apache.abdera.model.ExtensibleElementWrapper;
+
+/**
+ * A CMIS Property Choice abstract wrapper. 
+ * @see concrete datatype specific implementations 
+ * @author gabriele
+ * 
+ */
+public abstract class CMISChoice extends ExtensibleElementWrapper {
+
+    /**
+     * @param internal
+     */
+    public CMISChoice(Element internal) {
+        super(internal);
+    }
+
+    /**
+     * @param factory
+     * @param qname
+     */
+    public CMISChoice(Factory factory, QName qname) {
+        super(factory, qname);
+    }
+
+    /**
+     * Gets the property value
+     * 
+     * @return value
+     */
+    public String getValue() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_CHOICE_VALUE);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the displayName
+     * 
+     * @return displayName
+     */
+    public String getDisplayName() {
+        return getAttributeValue(CMISConstants.PROPDEF_CHOICE_DISPLAY_NAME);
+    }
+
+    /**
+     * Get child choices at first level of depth
+     * 
+     * @return topLevel choices
+     */
+    public List<CMISChoice> getChoices() {
+        return getChoices(false);
+    }
+
+    /**
+     * Get choices for this property definition, including nested choices at any level of depth
+     * 
+     * @return a flattened list of all top level and nested choices
+     */
+    public List<CMISChoice> getChoices(boolean includeNestedChoices) {
+        List<Element> children = getElements();
+        List<CMISChoice> entries = new ArrayList<CMISChoice>(children.size());
+        for (Element child : children) {
+            if (child instanceof CMISChoice) {
+                CMISChoice childChoice = (CMISChoice) child;
+                entries.add(childChoice);
+                if (includeNestedChoices)
+                    entries.addAll(childChoice.getChoices(true));
+            }
+        }
+        return entries;
+    }
+    
+    /**
+     * Concrete String Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceString extends CMISChoice {
+
+        public CMISChoiceString(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceString(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    /**
+     * Concrete Boolean Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceBoolean extends CMISChoice {
+
+        public CMISChoiceBoolean(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceBoolean(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    /**
+     * Concrete Integer Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceInteger extends CMISChoice {
+
+        public CMISChoiceInteger(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceInteger(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    /**
+     * Concrete Decimal Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceDecimal extends CMISChoice {
+
+        public CMISChoiceDecimal(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceDecimal(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    /**
+     * Concrete DateTime Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceDateTime extends CMISChoice {
+
+        public CMISChoiceDateTime(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceDateTime(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    
+    /**
+     * Concrete Uri Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceUri extends CMISChoice {
+
+        public CMISChoiceUri(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceUri(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    /**
+     * Concrete Id Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceId extends CMISChoice {
+
+        public CMISChoiceId(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceId(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+    /**
+     * Concrete Html Choice Implementation 
+     * @author gabriele
+     * 
+     */
+    public static class CMISChoiceHtml extends CMISChoice {
+
+        public CMISChoiceHtml(Element internal) {
+            super(internal);
+        }
+
+        public CMISChoiceHtml(Factory factory, QName qname) {
+            super(factory, qname);
+        }
+    }
+
+}

Modified: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java?rev=929115&r1=929114&r2=929115&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISConstants.java Tue Mar 30 12:47:13 2010
@@ -92,7 +92,7 @@ public interface CMISConstants {
 
     // ACL Capabilities
     public static final QName ACL_CAPABILITY = new QName(CMIS_NS, "aclCapability");
-    public static final QName ACL_SUPPORTED_PERMISSIONS  = new QName(CMIS_NS, "supportedPermissions");
+    public static final QName ACL_SUPPORTED_PERMISSIONS = new QName(CMIS_NS, "supportedPermissions");
     public static final QName ACL_PROPAGATION = new QName(CMIS_NS, "propagation");
     public static final QName ACL_PERMISSIONS = new QName(CMIS_NS, "permissions");
     public static final QName ACL_PERMISSION = new QName(CMIS_NS, "permission");
@@ -136,6 +136,8 @@ public interface CMISConstants {
     public static final QName TYPE_CREATABLE = new QName(CMIS_NS, "creatable");
     public static final QName TYPE_FILEABLE = new QName(CMIS_NS, "fileable");
     public static final QName TYPE_QUERYABLE = new QName(CMIS_NS, "queryable");
+    public static final QName TYPE_VERSIONABLE = new QName(CMIS_NS, "versionable");
+    public static final QName TYPE_CONTENT_STREAM_ALLOWED = new QName(CMIS_NS, "contentStreamAllowed");
     public static final QName TYPE_CONTROLLABLE_POLICY = new QName(CMIS_NS, "controllablePolicy");
     public static final QName TYPE_CONTROLLABLE_ACL = new QName(CMIS_NS, "controllableACL");
     public static final QName TYPE_FULL_TEXT_INDEXED = new QName(CMIS_NS, "fulltextIndexed");
@@ -164,8 +166,19 @@ public interface CMISConstants {
     public static final QName PROPDEF_REQUIRED = new QName(CMIS_NS, "required");
     public static final QName PROPDEF_QUERYABLE = new QName(CMIS_NS, "queryable");
     public static final QName PROPDEF_ORDERABLE = new QName(CMIS_NS, "orderable");
-    public static final QName PROPDEF_CHOICES = new QName(CMIS_NS, "choices");
-    public static final QName PROPDEF_CHOICES_DISPLAY_NAME = new QName(CMIS_NS, "displayName");
+
+    // Property definition choices constants
+    public static final QName PROPDEF_CHOICE_DISPLAY_NAME = new QName(CMIS_NS, "displayName");
+    public static final QName PROPDEF_CHOICE_VALUE = new QName(CMIS_NS, "value");
+    public static final QName PROPDEF_STRING_CHOICE = new QName(CMIS_NS, "choiceString");
+    public static final QName PROPDEF_INTEGER_CHOICE = new QName(CMIS_NS, "choiceInteger");
+    public static final QName PROPDEF_DECIMAL_CHOICE = new QName(CMIS_NS, "choiceDecimal");
+    public static final QName PROPDEF_DATETIME_CHOICE = new QName(CMIS_NS, "choiceDateTime");
+    public static final QName PROPDEF_BOOLEAN_CHOICE = new QName(CMIS_NS, "choiceBoolean");
+    public static final QName PROPDEF_URI_CHOICE = new QName(CMIS_NS, "choiceUri");
+    public static final QName PROPDEF_HTML_CHOICE = new QName(CMIS_NS, "choiceHtml");
+    public static final QName PROPDEF_ID_CHOICE = new QName(CMIS_NS, "choiceId");
+
     public static final QName PROPDEF_OPEN_CHOICE = new QName(CMIS_NS, "openChoice");
     public static final QName PROPDEF_DEFAULT_VALUE = new QName(CMIS_NS, "defaultValue");
     
@@ -272,7 +285,7 @@ public interface CMISConstants {
     public static final String CHANGE_TYPE_UPDATED = "updated";
     public static final String CHANGE_TYPE_DELETED = "deleted";
     public static final String CHANGE_TYPE_SECURITY = "security";
-    
+
     // CMIS Type Names
     public static final String TYPE_DOCUMENT = "cmis:document";
     public static final String TYPE_FOLDER = "cmis:folder";

Modified: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISExtensionFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISExtensionFactory.java?rev=929115&r1=929114&r2=929115&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISExtensionFactory.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISExtensionFactory.java Tue Mar 30 12:47:13 2010
@@ -17,6 +17,15 @@
 package org.apache.chemistry.abdera.ext;
 
 import org.apache.abdera.util.AbstractExtensionFactory;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceBoolean;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceString;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceInteger;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceDecimal;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceUri;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceHtml;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceId;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceDateTime;
+
 import org.apache.chemistry.abdera.ext.CMISProperty.CMISPropertyBoolean;
 import org.apache.chemistry.abdera.ext.CMISProperty.CMISPropertyDateTime;
 import org.apache.chemistry.abdera.ext.CMISProperty.CMISPropertyDecimal;
@@ -102,6 +111,14 @@ public class CMISExtensionFactory extend
         addImpl(CAN_GET_ACL, CMISAllowableAction.class);
         addImpl(CAN_APPLY_ACL, CMISAllowableAction.class);
         addImpl(CHILDREN, CMISChildren.class);
+        addImpl(PROPDEF_STRING_CHOICE, CMISChoiceString.class);
+        addImpl(PROPDEF_BOOLEAN_CHOICE, CMISChoiceBoolean.class);
+        addImpl(PROPDEF_INTEGER_CHOICE, CMISChoiceInteger.class);
+        addImpl(PROPDEF_DECIMAL_CHOICE, CMISChoiceDecimal.class);
+        addImpl(PROPDEF_DATETIME_CHOICE, CMISChoiceDateTime.class);
+        addImpl(PROPDEF_ID_CHOICE, CMISChoiceId.class);
+        addImpl(PROPDEF_URI_CHOICE, CMISChoiceUri.class);
+        addImpl(PROPDEF_HTML_CHOICE, CMISChoiceHtml.class);
     }
 
 }

Modified: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISPropertyDefinition.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISPropertyDefinition.java?rev=929115&r1=929114&r2=929115&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISPropertyDefinition.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISPropertyDefinition.java Tue Mar 30 12:47:13 2010
@@ -16,18 +16,20 @@
  */
 package org.apache.chemistry.abdera.ext;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.xml.namespace.QName;
 
 import org.apache.abdera.factory.Factory;
 import org.apache.abdera.model.Element;
 import org.apache.abdera.model.ExtensibleElementWrapper;
 
-
 /**
  * CMIS Property Definition for the Abdera ATOM library.
  */
 public abstract class CMISPropertyDefinition extends ExtensibleElementWrapper {
-    
+
     /**
      * @param internal
      */
@@ -57,7 +59,33 @@ public abstract class CMISPropertyDefini
     }
 
     /**
-     * Gets the property query name
+     * Gets the property local name
+     * 
+     * @return local name
+     */
+    public String getLocalName() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_LOCAL_NAME);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property local namespace
+     * 
+     * @return local namespace
+     */
+    public String getLocalNamespace() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_LOCAL_NAMESPACE);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property display name
      * 
      * @return query name
      */
@@ -70,6 +98,171 @@ public abstract class CMISPropertyDefini
     }
 
     /**
+     * Gets the property display name
+     * 
+     * @return local name
+     */
+    public String getDisplayName() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_DISPLAY_NAME);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property description
+     * 
+     * @return description
+     */
+    public String getDescription() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_DESCRIPTION);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property type
+     * 
+     * @return property type
+     */
+    public String getPropertyType() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_PROPERTY_TYPE);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property cardinality
+     * 
+     * @return cardinality
+     */
+    public String getCardinality() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_CARDINALITY);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property updatability
+     * 
+     * @return updatability
+     */
+    public String getUpdatability() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_UPDATABILITY);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Return true if the property is inherited
+     * 
+     * @return if the property is inherited
+     */
+    public Boolean getInherited() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_INHERITED);
+        if (child != null) {
+            return Boolean.parseBoolean(child.getText());
+        }
+        return null;
+    }
+
+    /**
+     * Return true if the property is required
+     * 
+     * @return if the property is required
+     */
+    public Boolean getRequired() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_REQUIRED);
+        if (child != null) {
+            return Boolean.parseBoolean(child.getText());
+        }
+        return null;
+    }
+
+    /**
+     * Return true if the property is queryable
+     * 
+     * @return if the property is queryable
+     */
+    public Boolean getQueryable() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_QUERYABLE);
+        if (child != null) {
+            return Boolean.parseBoolean(child.getText());
+        }
+        return null;
+    }
+
+    /**
+     * Return true if the property is orderable
+     * 
+     * @return if the property is orderable
+     */
+    public Boolean getOrderable() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_ORDERABLE);
+        if (child != null) {
+            return Boolean.parseBoolean(child.getText());
+        }
+        return null;
+    }
+
+    /**
+     * Return true if the property is open choice
+     * 
+     * @return if the property is open choice
+     */
+    public Boolean getOpenChoice() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_OPEN_CHOICE);
+        if (child != null) {
+            return Boolean.parseBoolean(child.getText());
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property default value
+     * 
+     * @return default value
+     */
+    public String getDefaultValue() {
+        Element child = getFirstChild(CMISConstants.PROPDEF_DEFAULT_VALUE);
+        if (child != null) {
+            return child.getText();
+        }
+        return null;
+    }
+
+    /**
+     * Gets the property (top level) choices, nested choices should be navigated
+     * through manually.
+     * 
+     * TODO: This method is very similar to getChoices in CMISChoice class. Better recursion could be introduced here.
+     *  
+     * @return choices
+     */
+    public List<CMISChoice> getChoices(boolean includeNestedChoices) {
+        List<Element> children = getElements();
+        List<CMISChoice> entries = new ArrayList<CMISChoice>(children.size());
+        for (Element child : children) {
+            if (child instanceof CMISChoice) {
+                CMISChoice childChoice = (CMISChoice) child;
+                entries.add(childChoice);
+                if (includeNestedChoices)
+                    entries.addAll(childChoice.getChoices(true));
+            }
+        }
+        return entries;
+    }
+
+    /**
      * String Property
      */
     public static class CMISPropertyStringDefinition extends CMISPropertyDefinition {
@@ -80,6 +273,20 @@ public abstract class CMISPropertyDefini
         public CMISPropertyStringDefinition(Factory factory, QName qname) {
             super(factory, qname);
         }
+
+        /**
+         * Gets the property max length
+         * 
+         * @return resolution AKA max length
+         */
+        public Integer getResolution() {
+            Element child = getFirstChild(CMISConstants.PROPDEF_STRING_RESOLUTION);
+            if (child != null) {
+                return Integer.parseInt(child.getText());
+            }
+            return null;
+        }
+
     }
 
     /**
@@ -93,6 +300,33 @@ public abstract class CMISPropertyDefini
         public CMISPropertyDecimalDefinition(Factory factory, QName qname) {
             super(factory, qname);
         }
+
+        /**
+         * Gets the property min value
+         * 
+         * @return min value
+         */
+        public Integer getMinValue() {
+            Element child = getFirstChild(CMISConstants.PROPDEF_INT_MIN_VALUE);
+            if (child != null) {
+                return Integer.parseInt(child.getText());
+            }
+            return null;
+        }
+
+        /**
+         * Gets the property max value
+         * 
+         * @return max value
+         */
+        public Integer getMaxValue() {
+            Element child = getFirstChild(CMISConstants.PROPDEF_INT_MAX_VALUE);
+            if (child != null) {
+                return Integer.parseInt(child.getText());
+            }
+            return null;
+        }
+
     }
 
     /**
@@ -132,6 +366,19 @@ public abstract class CMISPropertyDefini
         public CMISPropertyDateTimeDefinition(Factory factory, QName qname) {
             super(factory, qname);
         }
+
+        /**
+         * Gets the property resolution
+         * 
+         * @return resolution
+         */
+        public String getResolution() {
+            Element child = getFirstChild(CMISConstants.PROPDEF_DATE_RESOLUTION);
+            if (child != null) {
+                return child.getText();
+            }
+            return null;
+        }
     }
 
     /**

Modified: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISTypeDefinition.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISTypeDefinition.java?rev=929115&r1=929114&r2=929115&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISTypeDefinition.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/CMISTypeDefinition.java Tue Mar 30 12:47:13 2010
@@ -13,6 +13,7 @@
  *
  * Authors:
  *     David Caruana, Alfresco
+ *     Gabriele Columbro, Alfresco
  */
 package org.apache.chemistry.abdera.ext;
 
@@ -51,36 +52,6 @@ public class CMISTypeDefinition extends 
     }
     
     /**
-     * Determines whether objects of this type are controllable by ACLs.
-     * 
-     * @return <code>true</code> if objects of this type are controllable by
-     *         ACLs
-     */
-    public boolean getControllableACL() {
-        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_CONTROLLABLE_ACL).getText());
-    }
-
-    /**
-     * Determines whether objects of this type are creatable.
-     * 
-     * @return <code>true</code> if objects of this type are creatable
-     */
-    public boolean getCreatable() {
-        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_CREATABLE).getText());
-    }
-    
-    /**
-     * Gets a value that indicates whether the base type for this Object-Type is
-     * the Document, Folder, Relationship, or Policy base type.
-     * 
-     * @return "cmis:document", "cmis:folder", "cmis:relationship" or
-     *         "cmis:policy"
-     */
-    public String getBaseId() {
-        return getFirstChild(CMISConstants.TYPE_BASE_ID).getText();
-    }
-
-    /**
      * Gets all Property Definitions for this CMIS Type
      * 
      * @return property definitions
@@ -115,4 +86,161 @@ public class CMISTypeDefinition extends 
         return null;
     }
     
+    /**
+     * Gets the type local name 
+     * @return local name
+     */
+    public String getLocalName() {
+      return getFirstChild(CMISConstants.TYPE_LOCAL_NAME).getText();
+    }
+    
+    
+    /**
+     * Gets the type local namespace 
+     * @return local name
+     */
+    
+    public String getLocalNamespace() {
+      return getFirstChild(CMISConstants.TYPE_LOCAL_NAMESPACE).getText();
+    }
+    
+    /**
+     * Gets the type CMIS SQL query name (virtual table type is mapped into)
+     * @return local name
+     */
+    
+    public String getQueryName() {
+      return getFirstChild(CMISConstants.TYPE_QUERY_NAME).getText();
+    }
+    
+    /**
+     * Gets the type display name 
+     * @return local name
+     */
+    
+    public String getDisplayName() {
+      return getFirstChild(CMISConstants.TYPE_DISPLAY_NAME).getText();
+    }
+    
+    /**
+     * Gets a value that indicates whether the base type for this Object-Type is
+     * the Document, Folder, Relationship, or Policy base type.
+     * 
+     * @return "cmis:document", "cmis:folder", "cmis:relationship" or
+     *         "cmis:policy"
+     */
+    public String getBaseId() {
+        return getFirstChild(CMISConstants.TYPE_BASE_ID).getText();
+    }
+    
+    
+    /**
+     * Gets the ID of the Object-TypeÕs immediate parent type.   
+     * It MUST be Ònot setÓ for a base type.
+     *  
+     * @return the parent Id
+     */
+    public String getParentId() {
+        return getFirstChild(CMISConstants.TYPE_BASE_ID).getText();
+    }
+    
+    /**
+     * Gets Description of this object-type, such as the nature of content, or its intended use. 
+     * Used for presentation by application362 
+     * 
+     * @return the type description
+     */
+    public String getDescription() {
+        return getFirstChild(CMISConstants.TYPE_DESCRIPTION).getText();
+    }
+    
+    /**
+     * Determines whether objects of this type are creatable.
+     * TODO: Shouldn't this be a predicate? (e.g. isCreatable? )
+     * 
+     * @return <code>true</code> if objects of this type are creatable
+     */
+    public boolean getCreatable() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_CREATABLE).getText());
+    }
+    
+    /**
+     * Determines whether objects of this type are fileable.
+     * TODO: Shouldn't this be a predicate? (e.g. isFileable? ) 
+     * 
+     * @return <code>true</code> if objects of this type are fileable
+     */
+    public boolean getFileable() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_FILEABLE).getText());
+    }
+    
+    /**
+     * Determines whether objects of this type are versionable
+     * TODO: Shouldn't this be a predicate? (e.g. isVersionable? ) 
+     * 
+     * @return <code>true</code> if objects of this type are queryable
+     */
+    public boolean getVersionable() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_VERSIONABLE).getText());
+    }
+    
+    /**
+     * Determines whether objects of this type are queryable.
+     * TODO: Shouldn't this be a predicate? (e.g. isQueryable? ) 
+     * 
+     * @return <code>true</code> if objects of this type are queryable
+     */
+    public boolean getQueryable() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_QUERYABLE).getText());
+    }
+    
+    /**
+     * Determines whether objects of this type allow a content stream
+     * TODO: Shouldn't this be a predicate? (e.g. isContentStreamAllowed? ) 
+     * 
+     * @return <code>true</code> if objects of this type are queryable
+     */
+    public String getContentStreamAllowed() {
+        return getFirstChild(CMISConstants.TYPE_CONTENT_STREAM_ALLOWED).getText();
+    }
+    
+    /**
+     * Determines whether objects of this type are controllable via policies
+     * 
+     * @return <code>true</code> if objects of this type are controllable via policies
+     */
+    public boolean getControllablePolicy() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_CONTROLLABLE_POLICY).getText());
+    }
+    
+    /**
+     * Determines whether objects of this type are controllable by ACLs
+     * 
+     * @return <code>true</code> if objects of this type are controllable by ACLs
+     */
+    public boolean getControllableACL() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_CONTROLLABLE_ACL).getText());
+    }
+    
+    
+    /**
+     * Determines whether objects of this type are indexed for full-text search for querying via the  CONTAINS() query predicate. 
+     *
+     * @return <code>true</code> if objects of this type are full text indexed 
+     *         
+     */
+    public boolean getFullTextIndexed() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_FULL_TEXT_INDEXED).getText());
+    }
+    
+    /**
+     * Determines whether objects of this type should be included in supertype query
+     * @return <code>true</code> if objects of this type have to be included in supertype query
+     *         
+     */
+    public boolean getIncludeInSupertypeQuery() {
+        return Boolean.parseBoolean(getFirstChild(CMISConstants.TYPE_INCLUDED_IN_SUPERTYPE_QUERY).getText());
+    }
+    
+    
 }

Copied: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/CMISAppModel.java (from r928804, incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISAppModel.java)
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/CMISAppModel.java?p2=incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/CMISAppModel.java&p1=incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISAppModel.java&r1=928804&r2=929115&rev=929115&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/src/main/java/org/apache/chemistry/tck/atompub/client/CMISAppModel.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/CMISAppModel.java Tue Mar 30 12:47:13 2010
@@ -14,14 +14,12 @@
  * Authors:
  *     David Caruana, Alfresco
  */
-package org.apache.chemistry.tck.atompub.client;
+package org.apache.chemistry.abdera.ext.utils;
 
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
 
-import javax.servlet.http.HttpServletResponse;
-
 import org.apache.abdera.Abdera;
 import org.apache.abdera.factory.Factory;
 import org.apache.abdera.model.Document;
@@ -83,7 +81,7 @@ public class CMISAppModel {
     public Service parseService(Reader doc, String base) {
         Element root = parse(doc, base);
         if (!Service.class.isAssignableFrom(root.getClass())) {
-            throw new RuntimeException(HttpServletResponse.SC_BAD_REQUEST + "Expected APP Service, but recieved " + root.getClass());
+            throw new RuntimeException("Bad Input. Expected APP Service, but recieved " + root.getClass());
         }
 
         return (Service) root;
@@ -97,7 +95,7 @@ public class CMISAppModel {
     public Entry parseEntry(Reader doc, String base) {
         Element root = parse(doc, base);
         if (!Entry.class.isAssignableFrom(root.getClass())) {
-            throw new RuntimeException(HttpServletResponse.SC_BAD_REQUEST + "Expected Atom Entry, but recieved " + root.getClass());
+            throw new RuntimeException("Bad Input. Expected Atom Entry, but recieved " + root.getClass());
         }
 
         return (Entry) root;
@@ -111,7 +109,7 @@ public class CMISAppModel {
     public Feed parseFeed(Reader doc, String base) {
         Element root = parse(doc, base);
         if (!Feed.class.isAssignableFrom(root.getClass())) {
-            throw new RuntimeException(HttpServletResponse.SC_BAD_REQUEST + "Expected Atom Feed, but recieved " + root.getClass());
+            throw new RuntimeException("Bad Input. Expected Atom Feed, but recieved " + root.getClass());
         }
 
         return (Feed) root;

Propchange: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/main/java/org/apache/chemistry/abdera/ext/utils/CMISAppModel.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/test/TestAppModel.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/test/TestAppModel.java?rev=929115&view=auto
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/test/TestAppModel.java (added)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/java/org/apache/chemistry/abdera/ext/test/TestAppModel.java Tue Mar 30 12:47:13 2010
@@ -0,0 +1,243 @@
+/*
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Authors:
+ *     Gabriele Columbro, Alfresco
+ */
+package org.apache.chemistry.abdera.ext.test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.abdera.model.Entry;
+import org.apache.chemistry.abdera.ext.CMISChoice;
+import org.apache.chemistry.abdera.ext.CMISConstants;
+import org.apache.chemistry.abdera.ext.CMISPropertyDefinition;
+import org.apache.chemistry.abdera.ext.CMISTypeDefinition;
+import org.apache.chemistry.abdera.ext.CMISChoice.CMISChoiceString;
+import org.apache.chemistry.abdera.ext.CMISPropertyDefinition.CMISPropertyStringDefinition;
+import org.apache.chemistry.abdera.ext.utils.CMISAppModel;
+
+/**
+ * 
+ */
+
+/**
+ * Test for Abdera Extension functionalities. Takes a local CMIS compliant
+ * atompub entries and validates the parsing of those via the CmisAppModel and
+ * Abdera extensions
+ * 
+ * @author gabriele
+ * 
+ */
+public class TestAppModel extends TestCase {
+
+    CMISAppModel model = null;
+
+    @Override
+    protected void setUp() throws Exception {
+        model = new CMISAppModel();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    /**
+     * Tests constants for the type definition entry parsing
+     */
+    public void testTypeDefinitionConstants() {
+        CMISTypeDefinition type = loadCustomTypeDefinition();
+        assertNotNull(type);
+        assertTrue(type.getCreatable());
+        assertTrue(type.getFileable());
+        assertTrue(type.getQueryable());
+        assertTrue(type.getVersionable());
+        assertTrue(type.getFullTextIndexed());
+        assertTrue(type.getIncludeInSupertypeQuery());
+        assertFalse(type.getControllablePolicy());
+        assertTrue(type.getControllableACL());
+        assertEquals("", type.getDescription());
+        assertEquals("My doc", type.getDisplayName());
+        assertEquals("mycm:doc", type.getQueryName());
+        assertEquals("http://www.alfresco.org/model/mycontent/1.0", type.getLocalNamespace());
+        assertEquals("doc", type.getLocalName());
+        assertEquals("cmis:document", type.getBaseId());
+        assertEquals("cmis:document", type.getParentId());
+        assertEquals("D:mycm:doc", type.getId());
+        assertEquals("allowed", type.getContentStreamAllowed());
+    }
+
+    /**
+     * Tests constants for the property definition entry parsing
+     */
+    public void testPropertyDefinitionConstants() {
+        CMISTypeDefinition type = loadCustomTypeDefinition();
+        assertNotNull(type);
+        CMISPropertyDefinition property = type.getPropertyDefinition("mycm:privacy");
+        assertNotNull(property);
+        assertTrue(property instanceof CMISPropertyStringDefinition);
+        assertTrue(property.getQueryable());
+        assertFalse(property.getOpenChoice());
+        assertFalse(property.getInherited());
+        assertFalse(property.getRequired());
+        assertFalse(property.getOrderable());
+        // Description is an optional attribute
+        assertNull(property.getDescription());
+        assertEquals("Privacy", property.getDisplayName());
+        assertEquals("mycm:privacy", property.getQueryName());
+        assertEquals("mycm:privacy", property.getId());
+        assertEquals("http://www.alfresco.org/model/mycontent/1.0", property.getLocalNamespace());
+        assertEquals("privacy", property.getLocalName());
+        assertEquals("single", property.getCardinality());
+        assertEquals("readwrite", property.getUpdatability());
+        assertEquals(CMISConstants.PROP_TYPE_STRING, property.getPropertyType());
+    }
+
+    /**
+     * Tests property definition choices parsing with no nested choices
+     */
+    public void testGetChoices() {
+        CMISTypeDefinition typeDefinition = loadCustomTypeDefinition();
+        assertNotNull(typeDefinition);
+        CMISPropertyDefinition propertyDefinition = typeDefinition.getPropertyDefinition("mycm:privacy");
+        assertNotNull(propertyDefinition);
+        // Gets top level choices
+        List<CMISChoice> choices = propertyDefinition.getChoices(false);
+        assertNotNull(choices);
+        assertEquals(choices.size(), 3);
+        assertEquals("Company private", choices.get(0).getValue());
+        assertEquals("Company private", choices.get(0).getDisplayName());
+        assertEquals("Public", choices.get(1).getValue());
+        assertEquals("Public", choices.get(1).getDisplayName());
+        // Tries to get nested choices...
+        List<CMISChoice> allChoices = propertyDefinition.getChoices(true);
+        // ...but there are no nested choices in this entry
+        assertEquals(choices.size(), allChoices.size());
+    }
+
+    /**
+     * Tests property definition choices parsing with with nested choices
+     */
+    public void testGetNestedChoices() {
+        CMISTypeDefinition typeDefinition = loadTypeDefinitionWithNestedChoices();
+        assertNotNull(typeDefinition);
+        CMISPropertyDefinition propertyDefinition = typeDefinition.getPropertyDefinition("mycm:privacy");
+        assertNotNull(propertyDefinition);
+        // Only gets top level choices
+        List<CMISChoice> choices = propertyDefinition.getChoices(false);
+        assertNotNull(choices);
+        // Top level choices are only 3
+        assertEquals(choices.size(), 3);
+        CMISChoice europe = choices.get(0);
+        assertNotNull(europe);
+        assertTrue(europe instanceof CMISChoiceString);
+        assertEquals("EU", europe.getValue());
+        assertEquals("Europe", europe.getDisplayName());
+        CMISChoice australia = choices.get(1);
+        assertNotNull(australia);
+        assertTrue(australia instanceof CMISChoiceString);
+        assertEquals("AU", australia.getValue());
+        assertEquals("Australia", australia.getDisplayName());
+        CMISChoice america = choices.get(2);
+        assertNotNull(america);
+        assertTrue(america instanceof CMISChoiceString);
+        assertEquals("AM", america.getValue());
+        assertEquals("America", america.getDisplayName());
+        // Verifies nested choices behavior
+        assertNotNull(europe.getChoices());
+        assertEquals(3, europe.getChoices().size());
+        assertNotNull(america.getChoices());
+        assertEquals(2, america.getChoices().size());
+        CMISChoice northAmerica = america.getChoices().get(0);
+        assertNotNull(northAmerica);
+        assertEquals("NA", northAmerica.getValue());
+        assertEquals("North America", northAmerica.getDisplayName());
+        assertEquals(3, northAmerica.getChoices().size());
+        CMISChoice southAmerica = america.getChoices().get(1);
+        assertNotNull(southAmerica);
+        assertEquals("SA", southAmerica.getValue());
+        assertEquals("South America", southAmerica.getDisplayName());
+        assertEquals(2, southAmerica.getChoices().size());
+        // Gets all choices flattened directly from property definition
+        choices = propertyDefinition.getChoices(true);
+        assertNotNull(choices);
+        // All choices node are 13 at any level of depth
+        assertEquals(choices.size(), 13);
+    }
+
+    private CMISTypeDefinition loadCustomTypeDefinition() {
+        String typeDefinitionEntry = null;
+        try {
+            typeDefinitionEntry = load("/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-entry.xml");
+        } catch (IOException e) {
+            fail("Test atom entry not found");
+        }
+        Entry entry = model.parseEntry(new StringReader(typeDefinitionEntry), null);
+        CMISTypeDefinition type = entry.getExtension(CMISConstants.TYPE_DEFINITION);
+        return type;
+    }
+
+    private CMISTypeDefinition loadTypeDefinitionWithNestedChoices() {
+        String typeDefinitionEntry = null;
+        try {
+            typeDefinitionEntry = load("/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-nested-choices-entry.xml");
+        } catch (IOException e) {
+            fail("Test atom entry not found");
+        }
+        Entry entry = model.parseEntry(new StringReader(typeDefinitionEntry), null);
+        CMISTypeDefinition type = entry.getExtension(CMISConstants.TYPE_DEFINITION);
+        return type;
+    }
+
+    /**
+     * Load text from file specified by class path
+     * 
+     * @param classPath
+     *            XML file
+     * @return XML
+     * @throws IOException
+     */
+    private String load(String path) throws IOException {
+        InputStream input = getClass().getResourceAsStream(path);
+        if (input == null) {
+            throw new IOException(path + " not found.");
+        }
+
+        InputStreamReader reader = new InputStreamReader(input, "UTF-8");
+        StringWriter writer = new StringWriter();
+
+        try {
+            char[] buffer = new char[4096];
+            int bytesRead = -1;
+            while ((bytesRead = reader.read(buffer)) != -1) {
+                writer.write(buffer, 0, bytesRead);
+            }
+            writer.flush();
+        } finally {
+            reader.close();
+            writer.close();
+        }
+
+        return writer.toString();
+    }
+
+}

Added: incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-entry.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-entry.xml?rev=929115&view=auto
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-entry.xml (added)
+++ incubator/chemistry/trunk/chemistry/chemistry-abdera/src/test/resources/org/apache/chemistry/abdera/ext/test/D_mycm_doc-type-definition-entry.xml Tue Mar 30 12:47:13 2010
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:alf="http://www.alfresco.org">
+	<author><name>admin</name></author>
+	<content>D:mycm:doc</content>
+	<id>urn:uuid:type-D:mycm:doc</id>
+	<link rel="self" href="http://cmis.alfresco.com:80/service/cmis/type/D:mycm:doc"/>
+	<link rel="describedby" href="http://cmis.alfresco.com:80/service/cmis/type/cmis:document"/>
+	<link rel="up" href="http://cmis.alfresco.com:80/service/cmis/type/cmis:document" type="application/atom+xml;type=entry"/>
+	<link rel="down" href="http://cmis.alfresco.com:80/service/cmis/type/D:mycm:doc/children" type="application/atom+xml;type=feed"/>
+	<link rel="down" href="http://cmis.alfresco.com:80/service/cmis/type/D:mycm:doc/descendants" type="application/cmistree+xml"/>
+	<link rel="service" href="http://cmis.alfresco.com:80/service/cmis"/>
+	<summary>My doc</summary>
+	<title>My doc</title>
+	<updated>2010-03-30T10:12:39.247+01:00</updated>
+	<cmisra:type cmisra:id="D:mycm:doc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeDocumentDefinitionType">
+		<cmis:id>D:mycm:doc</cmis:id>
+		<cmis:localName>doc</cmis:localName>
+		<cmis:localNamespace>http://www.alfresco.org/model/mycontent/1.0</cmis:localNamespace>
+		<cmis:displayName>My doc</cmis:displayName>
+		<cmis:queryName>mycm:doc</cmis:queryName>
+		<cmis:description></cmis:description>
+		<cmis:baseId>cmis:document</cmis:baseId>
+		<cmis:parentId>cmis:document</cmis:parentId>
+		<cmis:creatable>true</cmis:creatable>
+		<cmis:fileable>true</cmis:fileable>
+		<cmis:queryable>true</cmis:queryable>
+		<cmis:fulltextIndexed>true</cmis:fulltextIndexed>
+		<cmis:includedInSupertypeQuery>true</cmis:includedInSupertypeQuery>
+		<cmis:controllablePolicy>false</cmis:controllablePolicy>
+		<cmis:controllableACL>true</cmis:controllableACL>
+		<cmis:propertyBooleanDefinition>
+			<cmis:id>cmis:isLatestMajorVersion</cmis:id>
+			<cmis:localName>isLatestMajorVersion</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Is Latest Major Version</cmis:displayName>
+			<cmis:queryName>cmis:isLatestMajorVersion</cmis:queryName>
+			<cmis:description>Is this the latest major version of the document?</cmis:description>
+			<cmis:propertyType>boolean</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyBooleanDefinition>
+		<cmis:propertyIntegerDefinition>
+			<cmis:id>cmis:contentStreamLength</cmis:id>
+			<cmis:localName>contentStreamLength</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Content Stream Length</cmis:displayName>
+			<cmis:queryName>cmis:contentStreamLength</cmis:queryName>
+			<cmis:description>The length of the content stream</cmis:description>
+			<cmis:propertyType>integer</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIntegerDefinition>
+		<cmis:propertyIdDefinition>
+			<cmis:id>cmis:contentStreamId</cmis:id>
+			<cmis:localName>contentStreamId</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Content Stream Id</cmis:displayName>
+			<cmis:queryName>cmis:contentStreamId</cmis:queryName>
+			<cmis:description>Id of the stream</cmis:description>
+			<cmis:propertyType>id</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIdDefinition>
+		<cmis:propertyIdDefinition>
+			<cmis:id>cmis:objectTypeId</cmis:id>
+			<cmis:localName>objectTypeId</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Object Type Id</cmis:displayName>
+			<cmis:queryName>cmis:objectTypeId</cmis:queryName>
+			<cmis:description>Id of the object’s type</cmis:description>
+			<cmis:propertyType>id</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIdDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:versionSeriesCheckedOutBy</cmis:id>
+			<cmis:localName>versionSeriesCheckedOutBy</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Version Series Checked Out By</cmis:displayName>
+			<cmis:queryName>cmis:versionSeriesCheckedOutBy</cmis:queryName>
+			<cmis:description>The authority who checked out this document version series</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyIdDefinition>
+			<cmis:id>cmis:versionSeriesCheckedOutId</cmis:id>
+			<cmis:localName>versionSeriesCheckedOutId</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Version Series Checked Out Id</cmis:displayName>
+			<cmis:queryName>cmis:versionSeriesCheckedOutId</cmis:queryName>
+			<cmis:description>The checked out version series id</cmis:description>
+			<cmis:propertyType>id</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIdDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:name</cmis:id>
+			<cmis:localName>name</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Name</cmis:displayName>
+			<cmis:queryName>cmis:name</cmis:queryName>
+			<cmis:description>Name</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readwrite</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:contentStreamMimeType</cmis:id>
+			<cmis:localName>contentStreamMimeType</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Content Stream MIME Type</cmis:displayName>
+			<cmis:queryName>cmis:contentStreamMimeType</cmis:queryName>
+			<cmis:description>The content stream MIME type</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyIdDefinition>
+			<cmis:id>cmis:versionSeriesId</cmis:id>
+			<cmis:localName>versionSeriesId</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Version series id</cmis:displayName>
+			<cmis:queryName>cmis:versionSeriesId</cmis:queryName>
+			<cmis:description>The version series id</cmis:description>
+			<cmis:propertyType>id</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIdDefinition>
+		<cmis:propertyDateTimeDefinition>
+			<cmis:id>cmis:creationDate</cmis:id>
+			<cmis:localName>creationDate</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Creation Date</cmis:displayName>
+			<cmis:queryName>cmis:creationDate</cmis:queryName>
+			<cmis:description>The object creation date</cmis:description>
+			<cmis:propertyType>datetime</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyDateTimeDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:changeToken</cmis:id>
+			<cmis:localName>changeToken</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Change token</cmis:displayName>
+			<cmis:queryName>cmis:changeToken</cmis:queryName>
+			<cmis:description>Change Token</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:versionLabel</cmis:id>
+			<cmis:localName>versionLabel</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Version Label</cmis:displayName>
+			<cmis:queryName>cmis:versionLabel</cmis:queryName>
+			<cmis:description>The version label</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyBooleanDefinition>
+			<cmis:id>cmis:isLatestVersion</cmis:id>
+			<cmis:localName>isLatestVersion</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Is Latest Version</cmis:displayName>
+			<cmis:queryName>cmis:isLatestVersion</cmis:queryName>
+			<cmis:description>Is this the latest version of the document?</cmis:description>
+			<cmis:propertyType>boolean</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyBooleanDefinition>
+		<cmis:propertyBooleanDefinition>
+			<cmis:id>cmis:isVersionSeriesCheckedOut</cmis:id>
+			<cmis:localName>isVersionSeriesCheckedOut</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Is Version Series Checked Out</cmis:displayName>
+			<cmis:queryName>cmis:isVersionSeriesCheckedOut</cmis:queryName>
+			<cmis:description>Is the version series checked out?</cmis:description>
+			<cmis:propertyType>boolean</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyBooleanDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:lastModifiedBy</cmis:id>
+			<cmis:localName>lastModifiedBy</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Last Modified By</cmis:displayName>
+			<cmis:queryName>cmis:lastModifiedBy</cmis:queryName>
+			<cmis:description>The authority who last modified this object</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:createdBy</cmis:id>
+			<cmis:localName>createdBy</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Created by</cmis:displayName>
+			<cmis:queryName>cmis:createdBy</cmis:queryName>
+			<cmis:description>The authority who created this object</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:checkinComment</cmis:id>
+			<cmis:localName>checkinComment</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Checkin Comment</cmis:displayName>
+			<cmis:queryName>cmis:checkinComment</cmis:queryName>
+			<cmis:description>The checkin comment</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyIdDefinition>
+			<cmis:id>cmis:objectId</cmis:id>
+			<cmis:localName>objectId</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Object Id</cmis:displayName>
+			<cmis:queryName>cmis:objectId</cmis:queryName>
+			<cmis:description>The unique object id (a node ref)</cmis:description>
+			<cmis:propertyType>id</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIdDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>mycm:privacy</cmis:id>
+			<cmis:localName>privacy</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/mycontent/1.0</cmis:localNamespace>
+			<cmis:displayName>Privacy</cmis:displayName>
+			<cmis:queryName>mycm:privacy</cmis:queryName>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readwrite</cmis:updatability>
+			<cmis:inherited>false</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+			<cmis:choiceString cmis:displayName="Company private">
+				<cmis:value>Company private</cmis:value>
+
+			</cmis:choiceString>
+			<cmis:choiceString cmis:displayName="Public">
+				<cmis:value>Public</cmis:value>
+			</cmis:choiceString>
+			<cmis:choiceString cmis:displayName="Confidential">
+				<cmis:value>Confidential</cmis:value>
+			</cmis:choiceString>
+		</cmis:propertyStringDefinition>
+		<cmis:propertyBooleanDefinition>
+			<cmis:id>cmis:isMajorVersion</cmis:id>
+			<cmis:localName>isMajorVersion</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Is Major Version</cmis:displayName>
+			<cmis:queryName>cmis:isMajorVersion</cmis:queryName>
+			<cmis:description>Is this a major version of the document?</cmis:description>
+			<cmis:propertyType>boolean</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyBooleanDefinition>
+		<cmis:propertyBooleanDefinition>
+			<cmis:id>cmis:isImmutable</cmis:id>
+			<cmis:localName>isImmutable</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Is Immutable</cmis:displayName>
+			<cmis:queryName>cmis:isImmutable</cmis:queryName>
+			<cmis:description>Is the document immutable?</cmis:description>
+			<cmis:propertyType>boolean</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyBooleanDefinition>
+		<cmis:propertyIdDefinition>
+			<cmis:id>cmis:baseTypeId</cmis:id>
+			<cmis:localName>baseTypeId</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Base Type Id</cmis:displayName>
+			<cmis:queryName>cmis:baseTypeId</cmis:queryName>
+			<cmis:description>Id of the base object type for the object</cmis:description>
+			<cmis:propertyType>id</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>false</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyIdDefinition>
+		<cmis:propertyDateTimeDefinition>
+			<cmis:id>cmis:lastModificationDate</cmis:id>
+			<cmis:localName>lastModificationDate</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Last Modified Date</cmis:displayName>
+			<cmis:queryName>cmis:lastModificationDate</cmis:queryName>
+			<cmis:description>The date this object was last modified</cmis:description>
+			<cmis:propertyType>datetime</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readonly</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>true</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>true</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyDateTimeDefinition>
+		<cmis:propertyStringDefinition>
+			<cmis:id>cmis:contentStreamFileName</cmis:id>
+			<cmis:localName>contentStreamFileName</cmis:localName>
+			<cmis:localNamespace>http://www.alfresco.org/model/cmis/1.0/cd07</cmis:localNamespace>
+			<cmis:displayName>Content Stream Filename</cmis:displayName>
+			<cmis:queryName>cmis:contentStreamFileName</cmis:queryName>
+			<cmis:description>The content stream filename</cmis:description>
+			<cmis:propertyType>string</cmis:propertyType>
+			<cmis:cardinality>single</cmis:cardinality>
+			<cmis:updatability>readwrite</cmis:updatability>
+			<cmis:inherited>true</cmis:inherited>
+			<cmis:required>false</cmis:required>
+			<cmis:queryable>true</cmis:queryable>
+			<cmis:orderable>false</cmis:orderable>
+			<cmis:openChoice>false</cmis:openChoice>
+		</cmis:propertyStringDefinition>
+		<cmis:versionable>true</cmis:versionable>
+		<cmis:contentStreamAllowed>allowed</cmis:contentStreamAllowed>
+	</cmisra:type>
+</entry>
\ No newline at end of file



Mime
View raw message