You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2008/10/09 16:44:24 UTC

svn commit: r703175 - in /jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav: jcr/AbstractItemResource.java jcr/AbstractResource.java jcr/DefaultItemCollection.java simple/DavResourceImpl.java simple/DeltaVResourceImpl.java

Author: reschke
Date: Thu Oct  9 07:44:24 2008
New Revision: 703175

URL: http://svn.apache.org/viewvc?rev=703175&view=rev
Log:
JCR-1795: advertise RFC 4918 compliance (compliance class 3), clean up code handling compliance classes, add support in OptionsMethod, add test case

Modified:
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DeltaVResourceImpl.java

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java?rev=703175&r1=703174&r2=703175&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractItemResource.java Thu Oct  9 07:44:24 2008
@@ -87,8 +87,12 @@
      * @see org.apache.jackrabbit.webdav.DavResource#getComplianceClass()
      */
     public String getComplianceClass() {
-        String cc = super.getComplianceClass() + "," + DavCompliance.OBSERVATION;
-        return cc;
+        return DavCompliance.concatComplianceClasses(
+            new String[] {
+                super.getComplianceClass(),
+                DavCompliance.OBSERVATION,
+            }
+        );
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java?rev=703175&r1=703174&r2=703175&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java Thu Oct  9 07:44:24 2008
@@ -93,6 +93,7 @@
         DavCompliance.concatComplianceClasses(new String[] {
         DavCompliance._1_,
         DavCompliance._2_,
+        DavCompliance._3_,
         DavCompliance.VERSION_CONTROL,
         DavCompliance.VERSION_HISTORY,
         DavCompliance.CHECKOUT_IN_PLACE,

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java?rev=703175&r1=703174&r2=703175&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java Thu Oct  9 07:44:24 2008
@@ -16,9 +16,42 @@
  */
 package org.apache.jackrabbit.webdav.jcr;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.ImportUUIDBehavior;
+import javax.jcr.Item;
+import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.lock.Lock;
+import javax.jcr.nodetype.NodeType;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.server.io.IOUtil;
 import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.webdav.DavCompliance;
 import org.apache.jackrabbit.webdav.DavConstants;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
@@ -28,15 +61,14 @@
 import org.apache.jackrabbit.webdav.DavResourceLocator;
 import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.MultiStatusResponse;
-import org.apache.jackrabbit.webdav.xml.DomUtil;
 import org.apache.jackrabbit.webdav.io.InputContext;
 import org.apache.jackrabbit.webdav.io.OutputContext;
 import org.apache.jackrabbit.webdav.jcr.lock.JcrActiveLock;
 import org.apache.jackrabbit.webdav.jcr.lock.SessionScopedLockEntry;
 import org.apache.jackrabbit.webdav.jcr.nodetype.NodeTypeProperty;
+import org.apache.jackrabbit.webdav.jcr.property.ValuesProperty;
 import org.apache.jackrabbit.webdav.jcr.version.report.ExportViewReport;
 import org.apache.jackrabbit.webdav.jcr.version.report.LocateCorrespondingNodeReport;
-import org.apache.jackrabbit.webdav.jcr.property.ValuesProperty;
 import org.apache.jackrabbit.webdav.lock.ActiveLock;
 import org.apache.jackrabbit.webdav.lock.LockInfo;
 import org.apache.jackrabbit.webdav.lock.Scope;
@@ -52,43 +84,12 @@
 import org.apache.jackrabbit.webdav.property.DavPropertySet;
 import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
 import org.apache.jackrabbit.webdav.property.HrefProperty;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
-import javax.jcr.AccessDeniedException;
-import javax.jcr.ImportUUIDBehavior;
-import javax.jcr.Item;
-import javax.jcr.ItemExistsException;
-import javax.jcr.ItemNotFoundException;
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.Property;
-import javax.jcr.PropertyIterator;
-import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.lock.Lock;
-import javax.jcr.nodetype.NodeType;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.File;
-import java.io.FileInputStream;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.List;
-
 /**
  * <code>DefaultItemCollection</code> represents a JCR node item.
  */
@@ -120,9 +121,12 @@
     public String getComplianceClass() {
         String cc = super.getComplianceClass();
         if (isOrderable()) {
-            StringBuffer sb = new StringBuffer(cc);
-            sb.append(", ").append(OrderingResource.COMPLIANCE_CLASS);
-            return sb.toString();
+            return DavCompliance.concatComplianceClasses(
+                new String[] {
+                    cc,
+                    DavCompliance.ORDERED_COLLECTIONS,
+                }
+            );
         } else {
             return cc;
         }

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java?rev=703175&r1=703174&r2=703175&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java Thu Oct  9 07:44:24 2008
@@ -30,6 +30,7 @@
 import org.apache.jackrabbit.server.io.PropertyExportContext;
 import org.apache.jackrabbit.server.io.PropertyImportContext;
 import org.apache.jackrabbit.util.Text;
+import org.apache.jackrabbit.webdav.DavCompliance;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
 import org.apache.jackrabbit.webdav.DavResourceFactory;
@@ -97,8 +98,16 @@
     private static final Logger log = LoggerFactory.getLogger(DavResourceImpl.class);
 
     public static final String METHODS = DavResource.METHODS + ", " + BindConstants.METHODS;
-    public static final String COMPLIANCE_CLASS = DavResource.COMPLIANCE_CLASS + ", " + BindConstants.COMPLIANCE_CLASS;
 
+    public static final String COMPLIANCE_CLASSES = DavCompliance.concatComplianceClasses(
+        new String[] {
+            DavCompliance._1_,
+            DavCompliance._2_,
+            DavCompliance._3_,
+            DavCompliance.BIND
+        }
+    );
+    
     private DavResourceFactory factory;
     private LockManager lockManager;
     private JcrDavSession session;
@@ -109,7 +118,7 @@
     protected boolean propsInitialized = false;
     private boolean isCollection = true;
     private String rfc4122Uri;
-
+    
     private ResourceConfig config;
     private long modificationTime = IOUtil.UNDEFINED_TIME;
 
@@ -221,11 +230,10 @@
     }
 
     /**
-     * @return DavResource#COMPLIANCE_CLASS
      * @see org.apache.jackrabbit.webdav.DavResource#getComplianceClass()
      */
     public String getComplianceClass() {
-        return COMPLIANCE_CLASS;
+        return COMPLIANCE_CLASSES;
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DeltaVResourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DeltaVResourceImpl.java?rev=703175&r1=703174&r2=703175&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DeltaVResourceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DeltaVResourceImpl.java Thu Oct  9 07:44:24 2008
@@ -24,6 +24,7 @@
 import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.webdav.DavCompliance;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavLocatorFactory;
 import org.apache.jackrabbit.webdav.DavResource;
@@ -31,8 +32,6 @@
 import org.apache.jackrabbit.webdav.DavResourceLocator;
 import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.DavSession;
-import org.apache.jackrabbit.webdav.DavCompliance;
-import org.apache.jackrabbit.webdav.bind.BindConstants;
 import org.apache.jackrabbit.webdav.property.DavProperty;
 import org.apache.jackrabbit.webdav.property.DavPropertyName;
 import org.apache.jackrabbit.webdav.property.HrefProperty;
@@ -48,7 +47,7 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * The <code>DeltaVResourceImpl</code> encapsultes the functionality common to all
+ * The <code>DeltaVResourceImpl</code> encapsulates the functionality common to all
  * DeltaV compliant resources.
  */
 public class DeltaVResourceImpl extends DavResourceImpl implements DeltaVResource {
@@ -56,6 +55,12 @@
     protected SupportedReportSetProperty supportedReports = new SupportedReportSetProperty();
     private static final Logger log = LoggerFactory.getLogger(DeltaVResourceImpl.class);
 
+    private static final String DELTAV_COMPLIANCE_CLASSES = DavCompliance.concatComplianceClasses(
+        new String[] {
+            DavResourceImpl.COMPLIANCE_CLASSES,
+            DavCompliance.BIND,
+        }
+    );
 
     public DeltaVResourceImpl(DavResourceLocator locator, DavResourceFactory factory, DavSession session, ResourceConfig config, Item item) throws DavException {
         super(locator, factory, session, config, (Node)item);
@@ -69,18 +74,10 @@
 
     //---------------------------------------------------------< DavResource>---
     /**
-     * @return DavResource#COMPLIANCE_CLASS
      * @see org.apache.jackrabbit.webdav.DavResource#getComplianceClass()
      */
     public String getComplianceClass() {
-        return DavCompliance.concatComplianceClasses(new String[] {
-                DavCompliance._1_,
-                DavCompliance._2_,
-                DavCompliance.VERSION_CONTROL,
-                DavCompliance.VERSION_HISTORY,
-                DavCompliance.LABEL,
-                BindConstants.COMPLIANCE_CLASS,
-        });
+        return DELTAV_COMPLIANCE_CLASSES;
     }
 
     //------------------------------------------------------< DeltaVResource>---