You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by pn...@apache.org on 2004/09/08 14:27:40 UTC

cvs commit: jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav FolderWebdavAccessor.java ResourceWebdavAccessor.java

pnever      2004/09/08 05:27:40

  Modified:    proposals/wvcm/src/org/apache/wvcm/store/webdav
                        FolderWebdavAccessor.java
                        ResourceWebdavAccessor.java
  Log:
  Use PROPFIND instead of REPORT if no nested properties are involved.
  
  Revision  Changes    Path
  1.16      +18 -10    jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/FolderWebdavAccessor.java
  
  Index: FolderWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/FolderWebdavAccessor.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- FolderWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.15
  +++ FolderWebdavAccessor.java	8 Sep 2004 12:27:40 -0000	1.16
  @@ -62,6 +62,8 @@
    */
   
   package org.apache.wvcm.store.webdav;
  +import org.apache.wvcm.store.webdav.request.*;
  +
   import java.util.Iterator;
   import java.util.List;
   import javax.wvcm.PropertyNameList;
  @@ -69,18 +71,16 @@
   import javax.wvcm.WvcmException;
   import javax.wvcm.WvcmException.ReasonCode;
   import org.apache.commons.httpclient.HttpStatus;
  +import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
   import org.apache.webdav.methods.BindMethod;
  +import org.apache.webdav.methods.PropfindMethod;
   import org.apache.webdav.methods.RebindMethod;
   import org.apache.webdav.methods.ReportMethod;
   import org.apache.webdav.methods.UnbindMethod;
   import org.apache.wvcm.LocationImpl;
   import org.apache.wvcm.store.FolderAccessor;
  -import org.apache.wvcm.store.webdav.request.BindRequest;
  -import org.apache.wvcm.store.webdav.request.RebindRequest;
  -import org.apache.wvcm.store.webdav.request.ReportRequest;
   import org.apache.wvcm.store.webdav.request.ReportRequest.ExpandPropertyReportRequest;
   import org.apache.wvcm.store.webdav.request.ReportRequest.LocateByHistoryReportRequest;
  -import org.apache.wvcm.store.webdav.request.UnbindRequest;
   import org.apache.wvcm.store.webdav.response.ErrorResponse;
   import org.apache.wvcm.store.webdav.response.MultistatusResponse;
   import org.apache.wvcm.store.webdav.response.NoProptatMultistatusResponse;
  @@ -115,8 +115,16 @@
       public Iterator doReadMemberList(PropertyNameList wantedPropertyList, boolean deep) throws WvcmException {
           LocationImpl loc = (LocationImpl)resource().location();
           String resourcepath = loc.path();
  -        ReportMethod method = new ReportMethod(loc.escapedPath());
  -        ReportRequest req = new ExpandPropertyReportRequest( wantedPropertyList );
  +        EntityEnclosingMethod method = null;
  +        AbstractRequest req = null;
  +        if (containsNestedProperties(wantedPropertyList)) {
  +            method = new ReportMethod(loc.escapedPath());
  +            req = new ExpandPropertyReportRequest(wantedPropertyList);
  +        }
  +        else {
  +            method = new PropfindMethod(loc.escapedPath());
  +            req = new PropfindRequest(wantedPropertyList);
  +        }
           method.setRequestBody( req.reqBodyAsString() );
           method.addRequestHeader( "Content-Type", "text/xml; charset=\"utf-8\"" );
           
  
  
  
  1.17      +33 -33    jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ResourceWebdavAccessor.java
  
  Index: ResourceWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ResourceWebdavAccessor.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ResourceWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.16
  +++ ResourceWebdavAccessor.java	8 Sep 2004 12:27:40 -0000	1.17
  @@ -62,6 +62,10 @@
    */
   
   package org.apache.wvcm.store.webdav;
  +import org.apache.webdav.methods.*;
  +import org.apache.wvcm.store.webdav.request.*;
  +import org.apache.wvcm.store.webdav.response.*;
  +
   import java.io.InputStream;
   import java.io.OutputStream;
   import java.util.HashMap;
  @@ -71,6 +75,7 @@
   import javax.wvcm.LockToken;
   import javax.wvcm.PropertyNameList;
   import javax.wvcm.PropertyNameList.AttributeName;
  +import javax.wvcm.PropertyNameList.NestedPropertyName;
   import javax.wvcm.PropertyNameList.PropertyName;
   import javax.wvcm.Resource;
   import javax.wvcm.SearchToken;
  @@ -78,42 +83,16 @@
   import javax.wvcm.WvcmException.ReasonCode;
   import org.apache.commons.httpclient.HttpMethod;
   import org.apache.commons.httpclient.HttpStatus;
  -import org.apache.webdav.methods.AclMethod;
  -import org.apache.webdav.methods.CopyMethod;
  -import org.apache.webdav.methods.DeleteMethod;
  -import org.apache.webdav.methods.GetMethod;
  -import org.apache.webdav.methods.HeadMethod;
  -import org.apache.webdav.methods.LabelMethod;
  -import org.apache.webdav.methods.LockMethod;
  -import org.apache.webdav.methods.MoveMethod;
  -import org.apache.webdav.methods.PropfindMethod;
  -import org.apache.webdav.methods.ProppatchMethod;
  -import org.apache.webdav.methods.PutMethod;
  -import org.apache.webdav.methods.ReportMethod;
  -import org.apache.webdav.methods.SearchMethod;
  -import org.apache.webdav.methods.UnlockMethod;
  +import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
   import org.apache.wvcm.LocationImpl;
   import org.apache.wvcm.LockTokenImpl;
   import org.apache.wvcm.ProviderImpl;
   import org.apache.wvcm.ResourceImpl;
   import org.apache.wvcm.store.ResourceAccessor;
  -import org.apache.wvcm.store.webdav.request.AclRequest;
  -import org.apache.wvcm.store.webdav.request.LabelRequest;
  -import org.apache.wvcm.store.webdav.request.LockRequest;
  -import org.apache.wvcm.store.webdav.request.PropfindRequest;
  -import org.apache.wvcm.store.webdav.request.ProppatchRequest;
   import org.apache.wvcm.store.webdav.request.ProppatchRequest.PropertyUpdate;
  -import org.apache.wvcm.store.webdav.request.ReportRequest;
   import org.apache.wvcm.store.webdav.request.ReportRequest.ExpandPropertyReportRequest;
  -import org.apache.wvcm.store.webdav.request.SearchRequest;
  -import org.apache.wvcm.store.webdav.response.ErrorResponse;
  -import org.apache.wvcm.store.webdav.response.LockResponse;
  -import org.apache.wvcm.store.webdav.response.MultistatusResponse;
  -import org.apache.wvcm.store.webdav.response.NoProptatMultistatusResponse;
   import org.apache.wvcm.store.webdav.response.NoProptatMultistatusResponse.ResourceStatus;
  -import org.apache.wvcm.store.webdav.response.ProppatchMultistatusResponse;
   import org.apache.wvcm.store.webdav.response.ProppatchMultistatusResponse.Propstat;
  -import org.apache.wvcm.store.webdav.response.ResourceProxyFactory;
   import org.apache.wvcm.util.PropertyNameLists;
   
   
  @@ -244,8 +223,16 @@
       public Resource doReadProperties( PropertyNameList wantedPropertyList ) throws WvcmException {
           LocationImpl loc = (LocationImpl)resource.location();
           String resourcepath = loc.path();
  -        ReportMethod method = new ReportMethod(loc.escapedPath());
  -        ReportRequest req = new ExpandPropertyReportRequest( wantedPropertyList );
  +        EntityEnclosingMethod method = null;
  +        AbstractRequest req = null;
  +        if (containsNestedProperties(wantedPropertyList)) {
  +            method = new ReportMethod(loc.escapedPath());
  +            req = new ExpandPropertyReportRequest(wantedPropertyList);
  +        }
  +        else {
  +            method = new PropfindMethod(loc.escapedPath());
  +            req = new PropfindRequest(wantedPropertyList);
  +        }
           method.setRequestBody( req.reqBodyAsString() );
           method.addRequestHeader( "Content-Type", "text/xml; charset=\"utf-8\"" );
           method.addRequestHeader( "Depth", "0" );
  @@ -282,6 +269,19 @@
           finally {
               method.releaseConnection();
           }
  +    }
  +    
  +    protected boolean containsNestedProperties(PropertyNameList pnl) {
  +        if (pnl == null) {
  +            return false;
  +        }
  +        PropertyName[] pna = pnl.getPropertyNames();
  +        for (int i = 0; i < pna.length; i++) {
  +            if (pna[i] instanceof NestedPropertyName) {
  +                return true;
  +            }
  +        }
  +        return false;
       }
       
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org