Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.fs.webdav.methods;
 
 
 
 public abstract class Method<T> {
     public static final Namespace DAV = Namespace.getNamespace("D""DAV:");
     public static final String XML_PROP = "prop";
     public static final String XML_RESPONSE = "response";
 
 
     //--
 
     protected final WebdavRoot root;
 
     private final BasicHttpEntityEnclosingRequest request;
 
     private final boolean head;
 
     public Method(String methodWebdavNode resource) {
         this(methodresourcefalse);
     }
 
     public Method(String methodWebdavNode resourceboolean head) {
         this. = resource.getRoot();
         this. = head;
         this. = new BasicHttpEntityEnclosingRequest(methodresource.getAbsPath());
     }
 
     //--
 
     public void setRequestHeader(String nameString value) {
     	.addHeader(namevalue);
     }
 
     public void setRequestEntity(Document bodythrows IOException {
         Serializer serializer;
         ByteArrayOutputStream serialized;
 
         serialized = new ByteArrayOutputStream();
         serializer = getXml().getSerializer();
         synchronized (serializer) {
             serializer.serialize(new DOMSource(body), new StreamResult(serialized));
         }
     	.setEntity(new ByteArrayEntity(serialized.toByteArray()));
     }
 
     //--
 
     public String getUri() {
     	return .getRequestLine().getUri();
     }
 
     public Xml getXml() {
         return .getFilesystem().getWorld().getXml();
     }
 
     //--
 
     public T invoke() throws IOException {
     	return response(request());
     }
 
     public WebdavConnection request() throws IOException {
         WebdavConnection conn;
 
     	setRequestHeader("Expires""0");
        setRequestHeader("Pragma""no-cache");
        setRequestHeader("Cache-control""no-cache");
        setRequestHeader("Cache-store""no-store");
        setRequestHeader(."Sushi Webdav");
        setContentHeader();
        conn = .allocate();
        .send(conn);
        return conn;
    }
    public T response(WebdavConnection connectionthrows IOException {
        HttpResponse response;
        response = .receive(connection);
        try {
            return processResponse(connectionresponse);
        } finally {
        	processResponseFinally(responseconnection);
        }
    }
    protected void setContentHeader() {
        HttpEntity entity;
        entity = .getEntity();
        if (entity == null) {
            .addHeader(."0");
            return;
        }
        if (entity.isChunked() || entity.getContentLength() < 0) {
        	throw new IllegalStateException();
        }
        .addHeader(., Long.toString(entity.getContentLength()));
        if (entity.getContentType() != null) {
            .addHeader(entity.getContentType());
        }
        if (entity.getContentEncoding() != null) {
            .addHeader(entity.getContentEncoding());
        }
    }
    // TODO: connection argument needed for GetMethod ...
    public abstract T processResponse(WebdavConnection connectionHttpResponse responsethrows IOException;

    
called after processResponse finished normally or with an exception
    protected void processResponseFinally(HttpResponse responseWebdavConnection connthrows IOException {
    	.free(responseconn);
    }
New to GrepCode? Check out our FAQ X