You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by st...@apache.org on 2004/04/13 16:20:36 UTC
cvs commit: cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl WebDAVSource.java
stephan 2004/04/13 07:20:35
Modified: src/blocks/webdav/java/org/apache/cocoon/components/source/impl
WebDAVSource.java
Log:
Make getParent available for directories.
tab2spaces
Revision Changes Path
1.27 +38 -57 cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl/WebDAVSource.java
Index: WebDAVSource.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl/WebDAVSource.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- WebDAVSource.java 29 Mar 2004 10:52:46 -0000 1.26
+++ WebDAVSource.java 13 Apr 2004 14:20:35 -0000 1.27
@@ -189,30 +189,27 @@
* @throws SourceNotFoundException
*/
private void initResource(int action, int depth) throws SourceException, SourceNotFoundException {
- try {
+ try {
boolean update = false;
if (action != WebdavResource.NOACTION) {
if (action > this.action) {
this.action = action;
update = true;
- }
- else {
+ } else {
action = this.action;
}
}
if (depth > this.depth) {
this.depth = depth;
update = true;
- }
- else {
+ } else {
depth = this.depth;
}
- if (this.resource == null) {
- this.resource = new WebdavResource(this.url, action, depth);
- }
- else if (update) {
- this.resource.setProperties(action, depth);
- }
+ if (this.resource == null) {
+ this.resource = new WebdavResource(this.url, action, depth);
+ } else if (update) {
+ this.resource.setProperties(action, depth);
+ }
if (this.action > WebdavResource.NOACTION) {
if (this.resource.isCollection()) {
String path = this.url.getPath();
@@ -221,18 +218,16 @@
}
}
}
- }
- catch (HttpException e) {
+ } catch (HttpException e) {
if (e.getReasonCode() == HttpStatus.SC_NOT_FOUND) {
throw new SourceNotFoundException("Not found: " + getSecureURI(), e);
}
final String msg = "Could not initialize webdav resource. Server responded "
+ e.getReasonCode() + " (" + e.getReason() + ") - " + e.getMessage();
throw new SourceException(msg, e);
- }
- catch (IOException e) {
+ } catch (IOException e) {
throw new SourceException("Could not initialize webdav resource", e);
- }
+ }
}
/**
@@ -282,8 +277,7 @@
final String userinfo = this.url.getEscapedUserinfo();
if (userinfo != null) {
uri = this.protocol + "://" + userinfo + "@" + uri;
- }
- else {
+ } else {
uri = this.protocol + "://" + uri;
}
this.uri = uri;
@@ -366,8 +360,7 @@
public String getMimeType() {
try {
initResource(WebdavResource.BASIC, DepthSupport.DEPTH_0);
- }
- catch (IOException e) {
+ } catch (IOException e) {
return null;
}
return this.resource.getGetContentType();
@@ -398,8 +391,7 @@
public long getLastModified() {
try {
initResource(WebdavResource.BASIC, DepthSupport.DEPTH_0);
- }
- catch(IOException e) {
+ } catch(IOException e) {
return 0;
}
return this.resource.getGetLastModified();
@@ -413,11 +405,9 @@
public boolean exists() {
try {
initResource(WebdavResource.BASIC, DepthSupport.DEPTH_0);
- }
- catch (SourceNotFoundException e) {
+ } catch (SourceNotFoundException e) {
return false;
- }
- catch(IOException e) {
+ } catch(IOException e) {
return true;
}
return this.resource.getExistence();
@@ -540,13 +530,11 @@
HttpURL childURL;
if (this.url instanceof HttpsURL) {
childURL = new HttpsURL((HttpsURL) this.url, childName);
- }
- else {
+ } else {
childURL = new HttpURL(this.url, childName);
}
return WebDAVSource.newWebDAVSource(childURL, this.protocol, getLogger());
- }
- catch (URIException e) {
+ } catch (URIException e) {
throw new SourceException("Failed to create child", e);
}
}
@@ -565,8 +553,7 @@
HttpURL childURL;
if (this.url instanceof HttpsURL) {
childURL = new HttpsURL((HttpsURL) this.url,resources[i].getName());
- }
- else {
+ } else {
childURL = new HttpURL(this.url,resources[i].getName());
}
WebDAVSource src = WebDAVSource.newWebDAVSource(resources[i],
@@ -576,8 +563,7 @@
src.enableLogging(getLogger());
children.add(src);
}
- }
- catch (HttpException e) {
+ } catch (HttpException e) {
if (getLogger().isDebugEnabled()) {
final String message =
"Unable to get WebDAV children. Server responded " +
@@ -586,11 +572,9 @@
getLogger().debug(message);
}
throw new SourceException("Failed to get WebDAV collection children.", e);
- }
- catch (SourceException e) {
+ } catch (SourceException e) {
throw e;
- }
- catch (IOException e) {
+ } catch (IOException e) {
throw new SourceException("Failed to get WebDAV collection children.", e);
}
return children;
@@ -616,17 +600,17 @@
* @see org.apache.excalibur.source.TraversableSource#getParent()
*/
public Source getParent() throws SourceException {
+ String path = isCollection()?"..":".";
+
try {
HttpURL parentURL;
if (url instanceof HttpsURL) {
- parentURL = new HttpsURL((HttpsURL) this.url, ".");
- }
- else {
- parentURL = new HttpURL(this.url, ".");
+ parentURL = new HttpsURL((HttpsURL) this.url, path);
+ } else {
+ parentURL = new HttpURL(this.url, path);
}
return WebDAVSource.newWebDAVSource(parentURL, this.protocol, getLogger());
- }
- catch (URIException e) {
+ } catch (URIException e) {
throw new SourceException("Failed to create parent", e);
}
}
@@ -700,13 +684,13 @@
* @see org.apache.excalibur.source.ModifiableSource#delete()
*/
public void delete() throws SourceException {
- initResource(WebdavResource.NOACTION, DepthSupport.DEPTH_0);
+ initResource(WebdavResource.NOACTION, DepthSupport.DEPTH_0);
try {
this.resource.deleteMethod();
} catch (HttpException e) {
- throw new SourceException("Unable to delete source: " + getSecureURI(), e);
+ throw new SourceException("Unable to delete source: " + getSecureURI(), e);
} catch (IOException e) {
- throw new SourceException("Unable to delete source: " + getSecureURI(), e);
+ throw new SourceException("Unable to delete source: " + getSecureURI(), e);
}
}
@@ -760,7 +744,7 @@
public void makeCollection() throws SourceException {
initResource(WebdavResource.NOACTION, DepthSupport.DEPTH_0);
if (this.resource.exists()) return;
- try {
+ try {
if (!this.resource.mkcolMethod()) {
int status = this.resource.getStatusCode();
// Ignore status 405 - Not allowed: collection already exists
@@ -772,15 +756,12 @@
throw new SourceException(msg);
}
}
- }
- catch (HttpException e) {
+ } catch (HttpException e) {
throw new SourceException("Unable to create collection(s) " + getSecureURI(), e);
- }
- catch (SourceException e) {
+ } catch (SourceException e) {
throw e;
- }
- catch (IOException e) {
- throw new SourceException("Unable to create collection(s)" + getSecureURI(), e);
+ } catch (IOException e) {
+ throw new SourceException("Unable to create collection(s)" + getSecureURI(), e);
}
}
@@ -890,7 +871,7 @@
initResource(WebdavResource.NOACTION, DepthSupport.DEPTH_0);
try {
- Node node = null;
+ Node node = null;
NodeList list = sourceproperty.getValue().getChildNodes();
for (int i=0; i<list.getLength(); i++) {
if ((list.item(i) instanceof Text && !"".equals(list.item(i).getNodeValue()))