Package org.tamacat.httpd.webdav

Source Code of org.tamacat.httpd.webdav.WebDavHttpResponse

/*
* Copyright (c) 2010, TamaCat.org
* All rights reserved.
*/
package org.tamacat.httpd.webdav;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.entity.ContentProducer;
import org.apache.http.entity.EntityTemplate;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.protocol.HttpContext;
import org.tamacat.httpd.util.HeaderUtils;

import com.bradmcevoy.http.AbstractResponse;
import com.bradmcevoy.http.Cookie;
import com.bradmcevoy.http.Response;

public class WebDavHttpResponse extends AbstractResponse {

  private HttpResponse response;
  @SuppressWarnings("unused")
  private HttpContext context;
  private OutputStream out;
 
  public WebDavHttpResponse(HttpResponse response, HttpContext context) {
    this.response = response;
    this.context = context;
  }
 
  @Override
  public Map<String, String> getHeaders() {
    org.apache.http.Header[] headers = response.getAllHeaders();
    Map<String,String> map = new LinkedHashMap<String, String>();
    for (org.apache.http.Header h : headers) {
      map.put(h.getName(), h.getValue());
    }
    return map;
  }

  @Override
  public String getNonStandardHeader(String name) {
    return HeaderUtils.getHeader(response, name);
  }

  @Override
  public OutputStream getOutputStream() {
    if (out == null) {
      final ByteArrayOutputStream o = new ByteArrayOutputStream();
      ContentProducer producer = new ContentProducer() {
        public void writeTo(OutputStream out) throws IOException {
          out.write(o.toByteArray());
        }
      };
      HttpEntity entity = new EntityTemplate(producer);
      response.setEntity(entity);
      this.out = new ServletOutputStream() {
        @Override
        public void write(int b) throws IOException {
          o.write((int)b);
        }
      };
    }
    return out;
  }

  @Override
  public Status getStatus() {
    return Status.valueOf(
      String.valueOf(response.getStatusLine().getStatusCode()));
  }

  @Override
  public void setAuthenticateHeader(List<String> challenges) {
    for (String ch : challenges) {
      response.addHeader(Response.Header.WWW_AUTHENTICATE.code, ch);
    }
  }

  @Override
  public Cookie setCookie(Cookie cookie) {
    response.addHeader("Set-Cookie", cookie.toString()); //TODO
    return cookie;
  }

  @Override
  public Cookie setCookie(String key, String value) {
    WebDavCookie cookie = new WebDavCookie(new BasicClientCookie(key, value));
    response.addHeader("Set-Cookie", cookie.toString()); //TODO
    return cookie;
  }

  @Override
  public void setNonStandardHeader(String name, String value) {
    response.setHeader(name, value);
  }

  @Override
  public void setStatus(Status status) {
    response.setStatusCode(status.code);
    response.setReasonPhrase(status.name());
  }
}
TOP

Related Classes of org.tamacat.httpd.webdav.WebDavHttpResponse

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.