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;
     
     public Method(String methodWebdavNode resource) {
         this. = resource.getRoot();
         this. = new BasicHttpEntityEnclosingRequest(methodresource.getAbsPath());
     }
 
     //--
     
     public void setRequestHeader(String nameString value) {
     	.addHeader(namevalue);
     }
     
     public void setRequestEntity(Document bodythrows IOException {
         ByteArrayOutputStream serialized;
         
         serialized = new ByteArrayOutputStream();
        	getXml()..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;
         
         conn = .allocate();
     	setRequestHeader("Expires""0");
         setRequestHeader("Pragma""no-cache");
         setRequestHeader("Cache-control""no-cache");
         setRequestHeader("Cache-store""no-store");
         setRequestHeader(."Sushi Webdav");
         setContentHeader();
         .send(conn);
         return conn;
     }
 
     public T response(WebdavConnection connectionthrows IOException {
         HttpResponse response;
        response = null;
        try {
            response = .receive(connection);
            return processResponse(connectionresponse);
        } finally {
        	done(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;
    protected void done(HttpResponse responseWebdavConnection connthrows IOException {
    	.free(responseconn);
    }
New to GrepCode? Check out our FAQ X