stephan 2004/04/13 10:13:29
Modified: src/blocks/webdav/java/org/apache/cocoon/components/source/impl WebDAVSource.java WebDAVSourceFactory.java Log: Add methods to move and copy WebDAV sources. Revision Changes Path 1.28 +50 -2 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.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- WebDAVSource.java 13 Apr 2004 14:20:35 -0000 1.27 +++ WebDAVSource.java 13 Apr 2004 17:13:29 -0000 1.28 @@ -45,10 +45,12 @@ import org.apache.commons.httpclient.URIException; import org.apache.excalibur.source.ModifiableSource; import org.apache.excalibur.source.ModifiableTraversableSource; +import org.apache.excalibur.source.MoveableSource; import org.apache.excalibur.source.Source; import org.apache.excalibur.source.SourceException; import org.apache.excalibur.source.SourceNotFoundException; import org.apache.excalibur.source.SourceParameters; +import org.apache.excalibur.source.SourceUtil; import org.apache.excalibur.source.SourceValidity; import org.apache.excalibur.source.TraversableSource; import org.apache.excalibur.source.impl.validity.TimeStampValidity; @@ -86,7 +88,7 @@ * @version $Id$ */ public class WebDAVSource extends AbstractLogEnabled -implements Source, TraversableSource, ModifiableSource, ModifiableTraversableSource, InspectableSource { +implements Source, TraversableSource, ModifiableSource, ModifiableTraversableSource, InspectableSource, MoveableSource { private static final String NAMESPACE = "http://apache.org/cocoon/webdav/1.0"; @@ -924,4 +926,50 @@ // refresh(); // } // } + + // ---------------------------------------------------- MoveableSource + + /** + * Move the current source to a specified destination. + * + * @param source + * + * @throws SourceException If an exception occurs during the move. + */ + public void moveTo(Source source) throws SourceException { + if (source instanceof WebDAVSource) { + WebDAVSource destination = (WebDAVSource)source; + try { + this.resource.moveMethod(destination.resource.getHttpURL().getPath()); + } catch (HttpException e) { + throw new SourceException("Cannot move source '"+getSecureURI()+"'", e); + } catch (IOException e) { + throw new SourceException("Cannot move source '"+getSecureURI()+"'", e); + } + } else { + SourceUtil.move(this,source); + } + } + + /** + * Copy the current source to a specified destination. + * + * @param source + * + * @throws SourceException If an exception occurs during the copy. + */ + public void copyTo(Source source) throws SourceException { + if (source instanceof WebDAVSource) { + WebDAVSource destination = (WebDAVSource)source; + try { + this.resource.copyMethod(destination.resource.getHttpURL().getPath()); + } catch (HttpException e) { + throw new SourceException("Cannot copy source '"+getSecureURI()+"'", e); + } catch (IOException e) { + throw new SourceException("Cannot copy source '"+getSecureURI()+"'", e); + } + } else { + SourceUtil.copy(this,source); + } + } } 1.10 +7 -10 cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl/WebDAVSourceFactory.java Index: WebDAVSourceFactory.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl/WebDAVSourceFactory.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- WebDAVSourceFactory.java 27 Mar 2004 15:51:21 -0000 1.9 +++ WebDAVSourceFactory.java 13 Apr 2004 17:13:29 -0000 1.10 @@ -69,13 +69,12 @@ location = location.substring(index+3); } - HttpURL url; - if (this.secure) { - url = new HttpsURL("https://" + location); - } - else { - url = new HttpURL("http://" + location); - } + HttpURL url; + if (this.secure) { + url = new HttpsURL("https://" + location); + } else { + url = new HttpURL("http://" + location); + } return WebDAVSource.newWebDAVSource(url, this.protocol, getLogger()); } @@ -83,6 +82,4 @@ public void release(Source source) { // do nothing } - - }