org.eclipse.webdav.client.RemoteDAVClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.guvnor.eclipse.webdav
Show all versions of org.guvnor.eclipse.webdav
We build this plugin because eclipse no longer distributes it and Guvnor tools needs it.
package org.eclipse.webdav.client;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.eclipse.webdav.*;
import org.eclipse.webdav.http.client.HttpClient;
import org.eclipse.webdav.http.client.Request;
import org.eclipse.webdav.internal.kernel.utils.Assert;
import org.eclipse.webdav.internal.utils.URLEncoder;
import org.w3c.dom.Document;
/**
* The ServerProxy
class implements the IServer
* interface and represents a client's local proxy to a remote server.
* This object is used to talk with the server.
*
* Note: This class/interface is part of an interim API that is still under
* development and expected to change significantly before reaching stability.
* It is being made available at this early stage to solicit feedback from pioneering
* adopters on the understanding that any code that uses this API will almost
* certainly be broken (repeatedly) as the API evolves.
*
*/
public class RemoteDAVClient extends DAVClient {
protected HttpClient httpClient = null;
/**
* Creates a new remote DAV client from a clone of the given remote
* DAV client.
*
* @param davClient the DAV client to clone
*/
public RemoteDAVClient(RemoteDAVClient davClient) {
super(davClient);
}
/**
* Creates a new remote DAV client.
*
* @param webDAVFactory
*/
public RemoteDAVClient(WebDAVFactory webDAVFactory, HttpClient httpClient) {
super(webDAVFactory);
this.httpClient = httpClient;
}
/**
* @see IServer#baselineControl(ILocator, IContext, Document)
*/
public IResponse baselineControl(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "BASELINE-CONTROL"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#bind(ILocator, ILocator, IContext)
*/
public IResponse bind(ILocator source, ILocator destination, IContext userContext) throws IOException {
Assert.isNotNull(source);
Assert.isNotNull(destination);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, source);
context.setDestination(URLEncoder.encode(destination.getResourceURL()));
Request request = newRequest(source, context, "BIND"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#checkin(ILocator, IContext, Document)
*/
public IResponse checkin(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "CHECKIN"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#checkout(ILocator, IContext, Document)
*/
public IResponse checkout(ILocator locator, IContext userContext, Document body) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, body, "CHECKOUT"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see Object#clone()
*/
protected Object clone() {
return new RemoteDAVClient(this);
}
/**
* Close down the client for futire API calls. Once a client has been clsed then callers
* should not expect further API cals to be sucessful.
*/
public void close() {
httpClient.close();
super.close();
}
/**
* @see IServer#copy(ILocator, ILocator, IContext, Document)
*/
public IResponse copy(ILocator source, ILocator destination, IContext userContext, Document document) throws IOException {
Assert.isNotNull(source);
Assert.isNotNull(destination);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, source);
context.setDestination(URLEncoder.encode(destination.getResourceURL()));
Request request = newRequest(source, context, document, "COPY"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#delete(ILocator, IContext)
*/
public IResponse delete(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "DELETE"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#get(ILocator, IContext)
*/
public IResponse get(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "GET"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* Returns this DAV clients HTTP client.
*/
public HttpClient getHttpClient() {
return httpClient;
}
/**
* @see IServer#head(ILocator, IContext)
*/
public IResponse head(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "HEAD"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#label(ILocator, IContext, Document)
*/
public IResponse label(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
Assert.isNotNull(document);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "LABEL"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#lock(ILocator, IContext, Document)
*/
public IResponse lock(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "LOCK"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#merge(ILocator, IContext, Document)
*/
public IResponse merge(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
Assert.isNotNull(document);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "MERGE"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#mkactivity(ILocator, IContext, Document)
*/
public IResponse mkactivity(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "MKACTIVITY"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#mkcol(ILocator, IContext, Document)
*/
public IResponse mkcol(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "MKCOL"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#mkworkspace(ILocator, IContext, Document)
*/
public IResponse mkworkspace(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "MKWORKSPACE"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#move(ILocator, ILocator, IContext, Document)
*/
public IResponse move(ILocator source, ILocator destination, IContext userContext, Document document) throws IOException {
Assert.isNotNull(source);
Assert.isNotNull(destination);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, source);
context.setDestination(URLEncoder.encode(destination.getResourceURL()));
Request request = newRequest(source, context, document, "MOVE"); //$NON-NLS-1$
return httpClient.invoke(request);
}
private Request newRequest(ILocator locator, IContext context, InputStream is, String methodName) throws IOException {
return new Request(methodName, URLEncoder.encode(new URL(locator.getResourceURL())), context, is);
}
private Request newRequest(ILocator locator, IContext context, String methodName) throws IOException {
return new Request(methodName, URLEncoder.encode(new URL(locator.getResourceURL())), context);
}
private Request newRequest(ILocator locator, IContext context, Document document, String methodName) throws IOException {
context.setContentType("text/xml; charset=\"UTF8\""); //$NON-NLS-1$
if (document == null)
return new Request(methodName, URLEncoder.encode(new URL(locator.getResourceURL())), context);
RequestBodyWriter writer = new RequestBodyWriter(document, "UTF8"); //$NON-NLS-1$
return new Request(methodName, URLEncoder.encode(new URL(locator.getResourceURL())), context, writer);
}
/**
* @see IServer#options(ILocator, IContext)
*/
public IResponse options(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "OPTIONS"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#post(ILocator, IContext, InputStream)
*/
public IResponse post(ILocator locator, IContext userContext, InputStream is) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
Assert.isNotNull(is);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, is, "POST"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#propfind(ILocator, IContext, Document)
*/
public IResponse propfind(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "PROPFIND"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#proppatch(ILocator, IContext, Document)
*/
public IResponse proppatch(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
Assert.isNotNull(document);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "PROPPATCH"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#put(ILocator, IContext, InputStream)
*/
public IResponse put(ILocator locator, IContext userContext, InputStream is) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
Assert.isNotNull(is);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, is, "PUT"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#report(ILocator, IContext, Document)
*/
public IResponse report(ILocator locator, IContext userContext, Document document) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
Assert.isNotNull(document);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, document, "REPORT"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#trace(ILocator, IContext)
*/
public IResponse trace(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "TRACE"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#uncheckout(ILocator, IContext)
*/
public IResponse uncheckout(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "UNCHECKOUT"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#unlock(ILocator, IContext)
*/
public IResponse unlock(ILocator locator, IContext userContext) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, "UNLOCK"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#update(ILocator, IContext, Document)
*/
public IResponse update(ILocator locator, IContext userContext, Document body) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, body, "UPDATE"); //$NON-NLS-1$
return httpClient.invoke(request);
}
/**
* @see IServer#versionControl(ILocator, IContext, Document)
*/
public IResponse versionControl(ILocator locator, IContext userContext, Document body) throws IOException {
Assert.isNotNull(locator);
Assert.isNotNull(userContext);
IContext context = newContext(userContext, locator);
Request request = newRequest(locator, context, body, "VERSION-CONTROL"); //$NON-NLS-1$
return httpClient.invoke(request);
}
}