You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2005/12/08 16:45:17 UTC

svn commit: r355130 - in /incubator/jackrabbit/trunk/contrib/jcr-server: server/src/java/org/apache/jackrabbit/webdav/jcr/ server/src/java/org/apache/jackrabbit/webdav/simple/ webapp/src/webapp/WEB-INF/ webdav/src/java/org/apache/jackrabbit/webdav/

Author: angela
Date: Thu Dec  8 07:44:57 2005
New Revision: 355130

URL: http://svn.apache.org/viewcvs?rev=355130&view=rev
Log:
1) JCR-185 - filter jcr properties in jcr-server
2) move helper-methods from ResourceFactoryImpl to DavMethod
3) do no rely on HttpServletRequest.getContentLength() for reading the request body (rev. 354815)
4) no hardcoded check for root-path in ResourceConfig (rev. 354818)	 
5) mark private methods in DavResourceImpl 'private' (rev. 354820)

Added:
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java   (with props)
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java   (with props)
Removed:
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultResourceFilter.java
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceFilter.java
Modified:
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java
    incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceFactoryImpl.java
    incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/webapp/WEB-INF/config.xml
    incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/DavMethods.java
    incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/jcr/DavResourceFactoryImpl.java Thu Dec  8 07:44:57 2005
@@ -85,7 +85,7 @@
                 instead.*/
                 if (request instanceof DeltaVServletRequest && isVersionControlled(resource)) {
                     String labelHeader = ((DeltaVServletRequest)request).getLabel();
-                    if (labelHeader != null && DavMethods.isMethodAffectedByLabel(request.getMethod())) {
+                    if (labelHeader != null && DavMethods.isMethodAffectedByLabel(request)) {
                         Item item = getItem(session, locator);
                         Version v = ((Node)item).getVersionHistory().getVersionByLabel(labelHeader);
                         DavResourceLocator vloc = locator.getFactory().createResourceLocator(locator.getPrefix(), locator.getWorkspacePath(), v.getPath(), false);

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java Thu Dec  8 07:44:57 2005
@@ -71,7 +71,7 @@
     private boolean inited = false;
     private boolean isCollection = true;
 
-    private ResourceFilter filter;
+    private ItemFilter filter;
     private IOManager ioManager;
 
     private long modificationTime = IOUtil.UNDEFINED_TIME;
@@ -88,7 +88,7 @@
         this.session = session;
         this.factory = factory;
         this.locator = locator;
-        this.filter = config.getResourceFilter();
+        this.filter = config.getItemFilter();
         this.ioManager = config.getIOManager();
 
         if (locator != null && locator.getResourcePath() != null) {
@@ -274,14 +274,13 @@
 
         // non-protected JCR properties defined on the underlying jcr node
         try {
-            // todo: should filter be respected for properties as well?
             PropertyIterator it = node.getProperties();
             while (it.hasNext()) {
                 Property p = it.nextProperty();
                 String pName = p.getName();
                 PropertyDefinition def = p.getDefinition();
-                if (def.isMultiple()) {
-                    log.debug("Multivalue property '" + pName + "' not added to webdav property set.");
+                if (def.isMultiple() || isFilteredItem(p)) {
+                    log.debug("Property '" + pName + "' not added to webdav property set (either multivalue or filtered).");
                     continue;
                 }
                 DavPropertyName name = getDavName(pName, node.getSession());
@@ -291,7 +290,6 @@
         } catch (RepositoryException e) {
             log.error("Unexpected error while retrieving properties: " + e.getMessage());
         }
-
         inited = true;
     }
 
@@ -456,7 +454,7 @@
                 NodeIterator it = node.getNodes();
                 while (it.hasNext()) {
                     Node n = it.nextNode();
-                    if (!isFilteredNode(n)) {
+                    if (!isFilteredItem(n)) {
                         DavResourceLocator resourceLocator = locator.getFactory().createResourceLocator(locator.getPrefix(), locator.getWorkspacePath(), n.getPath(), false);
                         DavResource childRes = factory.createResource(resourceLocator, session);
                         list.add(childRes);
@@ -776,7 +774,7 @@
      *
      * @return true if this resource is lockable.
      */
-    protected boolean isJsrLockable() {
+    private boolean isJsrLockable() {
         boolean lockable = false;
         if (exists()) {
             try {
@@ -800,7 +798,7 @@
      *
      * @return true if this resource cannot be modified due to a write lock
      */
-    protected boolean isLocked(DavResource res) {
+    private boolean isLocked(DavResource res) {
         ActiveLock lock = res.getLock(Type.WRITE, Scope.EXCLUSIVE);
         if (lock == null) {
             return false;
@@ -826,7 +824,7 @@
      * @param session
      * @return a <code>DavPropertyName</code> for the given jcr name.
      */
-    protected DavPropertyName getDavName(String jcrName, Session session) throws RepositoryException {
+    private DavPropertyName getDavName(String jcrName, Session session) throws RepositoryException {
         // make sure the local name is xml compliant
         String localName = ISO9075.encode(Text.getLocalName(jcrName));
         String prefix = Text.getNamespacePrefix(jcrName);
@@ -850,7 +848,7 @@
      * @return jcr name
      * @throws RepositoryException
      */
-    protected String getJcrName(DavPropertyName propName) throws RepositoryException {
+    private String getJcrName(DavPropertyName propName) throws RepositoryException {
         // remove any encoding necessary for xml compliance
         String pName = ISO9075.decode(propName.getName());
         String uri = propName.getNamespace().getURI();
@@ -882,7 +880,7 @@
      * @param property
      * @throws RepositoryException
      */
-    protected void setJcrProperty(DavProperty property) throws RepositoryException {
+    private void setJcrProperty(DavProperty property) throws RepositoryException {
         // retrieve value
         String value = property.getValue().toString();
         // set value; since multivalued-properties are not listed in the set
@@ -894,7 +892,7 @@
      * @param propertyName
      * @throws RepositoryException
      */
-    protected void removeJcrProperty(DavPropertyName propertyName) throws RepositoryException {
+    private void removeJcrProperty(DavPropertyName propertyName) throws RepositoryException {
         String jcrName = getJcrName(propertyName);
         if (node.hasProperty(jcrName)) {
             node.getProperty(jcrName).remove();
@@ -902,13 +900,13 @@
         // removal of non existing property succeeds
     }
 
-    protected boolean isFilteredResource(DavResource resource) {
+    private boolean isFilteredResource(DavResource resource) {
         // TODO: filtered nodetypes should be checked as well in order to prevent problems.
-        return filter != null && filter.isFilteredResource(resource.getDisplayName(), session.getRepositorySession());
+        return filter != null && filter.isFilteredItem(resource.getDisplayName(), session.getRepositorySession());
     }
 
-    protected boolean isFilteredNode(Node n) {
-        return filter != null && filter.isFilteredItem(n);
+    private boolean isFilteredItem(Item item) {
+        return filter != null && filter.isFilteredItem(item);
     }
 
     //--------------------------------------------------------< inner class >---

Added: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java?rev=355130&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java Thu Dec  8 07:44:57 2005
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+package org.apache.jackrabbit.webdav.simple;
+
+import org.apache.log4j.Logger;
+
+import javax.jcr.Item;
+import javax.jcr.RepositoryException;
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.Session;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <code>DefaultItemFilter</code>...
+ */
+public class DefaultItemFilter implements ItemFilter {
+
+    private static Logger log = Logger.getLogger(DefaultItemFilter.class);
+
+    private List prefixFilter = new ArrayList();
+    private List uriFilter = new ArrayList();
+    private List nodetypeFilter = new ArrayList();
+
+    public DefaultItemFilter() {
+    }
+
+    /**
+     * @see ItemFilter#setFilteredURIs(String[])
+     */
+    public void setFilteredURIs(String[] uris) {
+        if (uris != null) {
+            for (int i = 0; i < uris.length; i++) {
+                uriFilter.add(uris[i]);
+            }
+        }
+    }
+
+    /**
+     * @see ItemFilter#setFilteredPrefixes(String[])
+     */
+    public void setFilteredPrefixes(String[] prefixes) {
+        if (prefixes != null) {
+            for (int i = 0; i < prefixes.length; i++) {
+                prefixFilter.add(prefixes[i]);
+            }
+        }
+    }
+
+    /**
+     * @see ItemFilter#setFilteredNodetypes(String[])
+     */
+    public void setFilteredNodetypes(String[] nodetypeNames) {
+        if (nodetypeNames != null) {
+            for (int i = 0; i < nodetypeNames.length; i++) {
+                nodetypeFilter.add(nodetypeNames[i]);
+            }
+        }
+    }
+
+    /**
+     * Returns true if the given item matches either one of the namespace or
+     * of the the nodetype filters specified.
+     *
+     * @see ItemFilter#isFilteredItem(Item)
+     */
+    public boolean isFilteredItem(Item item) {
+        return isFilteredNamespace(item) || isFilteredNodeType(item);
+    }
+
+    /**
+     * @see ItemFilter#isFilteredItem(String, Session)
+     */
+    public boolean isFilteredItem(String displayName, Session session) {
+        return isFilteredNamespace(displayName, session);
+    }
+
+    /**
+     *
+     * @param name
+     * @param session
+     * @return
+     */
+    private boolean isFilteredNamespace(String name, Session session) {
+        // shortcut
+        if (prefixFilter.isEmpty() && uriFilter.isEmpty()) {
+            return false;
+        }
+        int pos = name.indexOf(":");
+        if (pos < 0) {
+            // no namespace info present
+            return false;
+        }
+        try {
+            String prefix = name.substring(0, pos);
+            String uri = session.getNamespaceURI(prefix);
+            return prefixFilter.contains(prefix) || uriFilter.contains(uri);
+        } catch (RepositoryException e) {
+            log.warn(e.getMessage());
+        }
+        return false;
+    }
+
+    /**
+     *
+     * @param item
+     * @return
+     */
+    private boolean isFilteredNamespace(Item item) {
+        try {
+            return isFilteredNamespace(item.getName(), item.getSession());
+        } catch (RepositoryException e) {
+            log.warn(e.getMessage());
+        }
+        return false;
+    }
+
+    /**
+     *
+     * @param item
+     * @return
+     */
+    private boolean isFilteredNodeType(Item item) {
+        // shortcut
+        if (nodetypeFilter.isEmpty()) {
+            return false;
+        }
+        try {
+            String ntName;
+            if (item.isNode()) {
+                ntName = ((Node) item).getDefinition().getDeclaringNodeType().getName();
+            } else {
+                ntName = ((Property) item).getDefinition().getDeclaringNodeType().getName();
+            }
+            return nodetypeFilter.contains(ntName);
+        } catch (RepositoryException e) {
+            log.warn(e.getMessage());
+        }
+        // nodetype info could not be retrieved
+        return false;
+    }
+}
\ No newline at end of file

Propchange: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/DefaultItemFilter.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Added: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java?rev=355130&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java (added)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java Thu Dec  8 07:44:57 2005
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+package org.apache.jackrabbit.webdav.simple;
+
+import javax.jcr.Item;
+import javax.jcr.Session;
+
+/**
+ * <code>ItemFilter</code>
+ */
+public interface ItemFilter {
+
+    /**
+     * Define the URIs that should be filtered out if present in the prefix
+     * of an items name.
+     *
+     * @param uris
+     */
+    public void setFilteredURIs(String[] uris);
+
+    /**
+     * Define the namespace prefixes that should be filtered if present in
+     * the prefix of an items name.
+     *
+     * @param prefixes
+     */
+    public void setFilteredPrefixes(String[] prefixes);
+
+    /**
+     * Set the nodetype names that should be used if a given item should be
+     * filtered. Note that not the nodetype(s) defined for a given item
+     * is relevant but rather the nodetype that defined the definition of the item.
+     *
+     * @param nodetypeNames
+     */
+    public void setFilteredNodetypes(String[] nodetypeNames);
+
+    /**
+     * Returns true if the given item should be filtered.
+     *
+     * @param item to be tested
+     * @return true if the given item should be filtered.
+     */
+    public boolean isFilteredItem(Item item);
+
+    /**
+     * Returns true if the resouce with the given name should be filtered.
+     *
+     * @param name to be tested for a filtered namespace prefix
+     * @param session used for looking up namespace mappings
+     * @return true if the given resource should be filtered.
+     */
+    public boolean isFilteredItem(String name, Session session);
+}
\ No newline at end of file

Propchange: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ItemFilter.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java Thu Dec  8 07:44:57 2005
@@ -38,7 +38,7 @@
 
     private static Logger log = Logger.getLogger(ResourceConfig.class);
 
-    private ResourceFilter resourceFilter;
+    private ItemFilter itemFilter;
     private IOManager ioManager;
     private String[] nodetypeNames = new String[0];
     private boolean collectionNames = false;
@@ -99,13 +99,13 @@
             Element filter = root.getChild("filter");
             if (filter != null) {
                 Object inst = buildClassFromConfig(filter.getChild("class"));
-                if (inst != null && inst instanceof ResourceFilter) {
-                    resourceFilter = (ResourceFilter)inst;
+                if (inst != null && inst instanceof ItemFilter) {
+                    itemFilter = (ItemFilter)inst;
                 }
-                if (resourceFilter != null) {
+                if (itemFilter != null) {
                     Element nts = filter.getChild("nodetypes");
-                    resourceFilter.setFilteredNodetypes(parseNodeTypesEntry(nts));
-                    parseNamespacesEntry(filter.getChild("namespaces"), resourceFilter);
+                    itemFilter.setFilteredNodetypes(parseNodeTypesEntry(nts));
+                    parseNamespacesEntry(filter.getChild("namespaces"), itemFilter);
                 }
             } else {
                 log.debug("Resource configuration: no 'filter' element specified.");
@@ -136,7 +136,7 @@
         return instance;
     }
 
-    private void parseNamespacesEntry(Element child, ResourceFilter filter) {
+    private void parseNamespacesEntry(Element child, ItemFilter filter) {
         if (child == null) {
             return;
         }
@@ -200,10 +200,6 @@
             boolean isCollection = true;
             Node n = (Node)item;
             try {
-                if (n.getPath().equals("/")) {
-                    // the root node always represents a collection
-                    return true;
-                }
                 for (int i = 0; i < nodetypeNames.length && isCollection; i++) {
                     isCollection = collectionNames ? n.isNodeType(nodetypeNames[i]) : !n.isNodeType(nodetypeNames[i]);
                 }
@@ -217,17 +213,17 @@
     }
 
     /**
-     * Returns the resource filter specified with the configuration or {@link DefaultResourceFilter}
+     * Returns the item filter specified with the configuration or {@link DefaultItemFilter}
      * if the configuration was missing the corresponding entry or the parser failed
-     * to build a <code>ResourceFilter</code> instance from the configuration.
+     * to build a <code>ItemFilter</code> instance from the configuration.
      *
-     * @return resource filter as defined by the config or {@link DefaultResourceFilter}
+     * @return item filter as defined by the config or {@link DefaultItemFilter}
      */
-    public ResourceFilter getResourceFilter() {
-        if (resourceFilter == null) {
-            log.debug("ResourceConfig: missing resource filter > building DefaultResourceFilter ");
-            resourceFilter = new DefaultResourceFilter();
+    public ItemFilter getItemFilter() {
+        if (itemFilter == null) {
+            log.debug("ResourceConfig: missing resource filter > building DefaultItemFilter ");
+            itemFilter = new DefaultItemFilter();
         }
-        return resourceFilter;
+        return itemFilter;
     }
 }

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceFactoryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceFactoryImpl.java?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceFactoryImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/server/src/java/org/apache/jackrabbit/webdav/simple/ResourceFactoryImpl.java Thu Dec  8 07:44:57 2005
@@ -34,8 +34,8 @@
  */
 public class ResourceFactoryImpl implements DavResourceFactory {
 
-    private LockManager lockMgr;
-    private ResourceConfig resourceConfig;
+    private final LockManager lockMgr;
+    private final ResourceConfig resourceConfig;
 
     /**
      * Create a new <code>ResourceFactory</code> that uses the given lock
@@ -75,8 +75,8 @@
     public DavResource createResource(DavResourceLocator locator, DavServletRequest request,
                                       DavServletResponse response) throws DavException {
         DavResourceImpl resource = (DavResourceImpl)createResource(locator, request.getDavSession());
-        if (isCreateRequest(request) && ! resource.exists()) {
-            resource.setIsCollection(isCreateCollectionRequest(request));
+        if (DavMethods.isCreateRequest(request) && ! resource.exists()) {
+            resource.setIsCollection(DavMethods.isCreateCollectionRequest(request));
         }
         return resource;
     }
@@ -99,50 +99,5 @@
         } catch (RepositoryException e) {
             throw new JcrDavException(e);
         }
-    }
- 
-    /**
-     * Returns <code>true</code> if the request is to create a
-     * resource. True for <code>MKCOL</code>, <code>PUT</code> and
-     * <code>POST</code> requests.
-     */
-    protected boolean isCreateRequest(DavServletRequest request) {
-        int methodCode = DavMethods.getMethodCode(request.getMethod());
-        return (methodCode == DavMethods.DAV_MKCOL ||
-                methodCode == DavMethods.DAV_PUT ||
-                methodCode == DavMethods.DAV_POST);
-    }
- 
-    /**
-     * Returns <code>true</code> if the request is to create a
-     * collection resource. True for <code>MKCOL</code> requests.
-     */
-    protected boolean isCreateCollectionRequest(DavServletRequest request) {
-        return (DavMethods.getMethodCode(request.getMethod()) ==
-                DavMethods.DAV_MKCOL);
-    }
- 
-    /**
-     */
-    public LockManager getLockManager() {
-        return lockMgr;
-    }
- 
-    /**
-     */
-    public void setLockManager(LockManager lockMgr) {
-        this.lockMgr = lockMgr;
-    }
- 
-    /**
-     */
-    public ResourceConfig getResourceConfig() {
-        return resourceConfig;
-    }
- 
-    /**
-     */
-    public void setResourceConfig(ResourceConfig resourceConfig) {
-        this.resourceConfig = resourceConfig;
     }
 }

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/webapp/WEB-INF/config.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/webapp/WEB-INF/config.xml?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/webapp/WEB-INF/config.xml (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webapp/src/webapp/WEB-INF/config.xml Thu Dec  8 07:44:57 2005
@@ -63,8 +63,8 @@
      -->
     <filter>
         <!-- class element defines the resource filter to be used. The specified class
-             must implement the ResourceFilter interface -->
-        <class name="org.apache.jackrabbit.webdav.simple.DefaultResourceFilter" />
+             must implement the ItemFilter interface -->
+        <class name="org.apache.jackrabbit.webdav.simple.DefaultItemFilter" />
         <!-- Nodetype names to be used to filter child nodes.
              A child node can be filtered if the declaring nodetype of its definition
              is one of the nodetype names specified in the nodetypes Element.

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/DavMethods.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/DavMethods.java?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/DavMethods.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/DavMethods.java Thu Dec  8 07:44:57 2005
@@ -288,8 +288,34 @@
                                    DAV_LABEL, DAV_COPY };
     }
 
-    public static boolean isMethodAffectedByLabel(String method) {
-        int code = getMethodCode(method);
+   /**
+     * Returns <code>true</code> if the request is to create a
+     * resource. True for <code>MKCOL</code>, <code>PUT</code> and
+     * <code>POST</code> requests.
+     */
+    public static boolean isCreateRequest(DavServletRequest request) {
+        int methodCode = getMethodCode(request.getMethod());
+        return (methodCode == DAV_MKCOL ||
+                methodCode == DAV_PUT ||
+                methodCode == DAV_POST);
+    }
+
+    /**
+     * Returns <code>true</code> if the request is to create a
+     * collection resource. True for <code>MKCOL</code> requests.
+     */
+    public static boolean isCreateCollectionRequest(DavServletRequest request) {
+        return (getMethodCode(request.getMethod()) == DAV_MKCOL);
+    }
+
+    /**
+     * Returns true, if the specified method is affected by a Label header
+     *
+     * @param request
+     * @return
+     */
+    public static boolean isMethodAffectedByLabel(DavServletRequest request) {
+        int code = getMethodCode(request.getMethod());
         for (int i = 0; i < labelMethods.length; i++) {
             if (code == labelMethods[i]) {
                 return true;

Modified: incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java?rev=355130&r1=355129&r2=355130&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java (original)
+++ incubator/jackrabbit/trunk/contrib/jcr-server/webdav/src/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java Thu Dec  8 07:44:57 2005
@@ -260,7 +260,6 @@
      */
     public Document getRequestDocument() {
         Document requestDocument = null;
-        if (httpRequest.getContentLength() > 0) {
             // try to parse the request body
             try {
                 InputStream in = httpRequest.getInputStream();
@@ -275,7 +274,6 @@
             } catch (JDOMException e) {
                 if (log.isDebugEnabled()) {
                     log.debug("Unable to build an XML Document from the request body: " + e.getMessage());
-                }
             }
         }
         return requestDocument;



Re: svn commit: r355130 - in /incubator/jackrabbit/trunk/contrib/jcr-server: server/src/java/org/apache/jackrabbit/webdav/jcr/ server/src/java/org/apache/jackrabbit/webdav/simple/ webapp/src/webapp/WEB-INF/ webdav/src/java/org/apache/jackrabbit/webdav/

Posted by Brian Moseley <bc...@osafoundation.org>.
angela@apache.org wrote:
> Author: angela
> Date: Thu Dec  8 07:44:57 2005
> New Revision: 355130
> 
> URL: http://svn.apache.org/viewcvs?rev=355130&view=rev
> Log:
> 1) JCR-185 - filter jcr properties in jcr-server
> 2) move helper-methods from ResourceFactoryImpl to DavMethod
> 3) do no rely on HttpServletRequest.getContentLength() for reading the request body (rev. 354815)
> 4) no hardcoded check for root-path in ResourceConfig (rev. 354818)	 
> 5) mark private methods in DavResourceImpl 'private' (rev. 354820)

huh. so you asked for discussion on items 2-5 but didn't 
wait for it?