Package org.netmelody.cieye.server.response.resource

Source Code of org.netmelody.cieye.server.response.resource.CiEyeResource

package org.netmelody.cieye.server.response.resource;

import java.io.IOException;
import java.util.Map.Entry;

import org.apache.commons.io.IOUtils;
import org.netmelody.cieye.core.logging.LogKeeper;
import org.netmelody.cieye.core.logging.Logbook;
import org.netmelody.cieye.server.response.CiEyeResponder;
import org.netmelody.cieye.server.response.CiEyeResponse;
import org.simpleframework.http.Request;
import org.simpleframework.http.Response;
import org.simpleframework.http.Status;
import org.simpleframework.http.resource.Resource;

public final class CiEyeResource implements Resource {

    private static final Logbook LOG = LogKeeper.logbookFor(CiEyeResource.class);
   
    private final CiEyeResponder responder;

    public CiEyeResource(CiEyeResponder responder) {
        this.responder = responder;
    }
   
    @Override
    public void handle(Request request, Response response) {
        try {
            final CiEyeResponse result = responder.respond(request);
            response.set("Content-Type", result.contentType);
            response.set("Server", "CiEye/1.0 (Simple 4.0)");
            response.setDate("Date", result.date);
            response.setDate("Last-Modified", result.lastModified);
            response.setDate("Expires", result.expires);
            response.setContentLength(result.contentLength());
            response.setCode(result.status.getCode());
            response.setText(result.status.getDescription());
            for (Entry<String, String> header : result.additionalStringHeaders.entrySet()) {
                response.set(header.getKey(), header.getValue());
            }
            IOUtils.copy(result.inputStream(), response.getOutputStream());
        }
        catch (Exception e) {
            LOG.error("Failed to respond to request for resource " + request.getPath().getPath(), e);
            response.setCode(Status.NOT_FOUND.getCode());
            response.setText(Status.NOT_FOUND.getDescription());
        }
        finally {
            try {
                response.close();
            } catch (IOException e) {
                LOG.error("Failed to close response for resource " + request.getPath().getPath(), e);
            }
        }
    }
}
TOP

Related Classes of org.netmelody.cieye.server.response.resource.CiEyeResource

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.