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