Package org.geoserver.wms.describelayer

Source Code of org.geoserver.wms.describelayer.DescribeLayerResponse

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.describelayer;

import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.io.IOUtils;
import org.geoserver.ows.Response;
import org.geoserver.platform.Operation;
import org.geoserver.platform.ServiceException;
import org.geoserver.wms.DescribeLayer;
import org.geoserver.wms.DescribeLayerRequest;
import org.springframework.util.Assert;

/**
* Executes a <code>DescribeLayer</code> WMS request.
*
* <p>
* Receives a <code>DescribeLayerRequest</code> object holding the references to the requested
* layers and utilizes a transformer based on the org.geotools.xml.transform framework to encode the
* response.
* </p>
*
* @author Gabriel Roldan
* @author Carlo Cancellieri
* @version $Id$
*/
public abstract class DescribeLayerResponse extends Response {

    private final String type;
 
    /**
     * Creates a new GetMapResponse object.
     */
    public DescribeLayerResponse(String format) {
        super(DescribeLayerModel.class,format);
        this.type=format;
    }

    /**
     * Evaluates if this DescribeLayer producer can generate the format specified by
     * <code>format</code>, where <code>format</code> is the MIME type of the requested
     * response.
     *
     * @param format
     *            the MIME type of the required output format, might be {@code null}
     *
     * @return true if class can produce a DescribeLayer in the passed format
     */
    public boolean canProduce(String format) {
        return type.equalsIgnoreCase(format);
    }

    public String getContentType() {
        return type;
    }

    /**
     * @see org.geoserver.ows.Response#getMimeType(java.lang.Object,
     *      org.geoserver.platform.Operation)
     */
    @Override
    public String getMimeType(Object value, Operation operation)
      throws ServiceException {

    Object op = operation.getParameters()[0];
    if (op instanceof DescribeLayerRequest) {
      DescribeLayerRequest dlr = (DescribeLayerRequest) op;
      return dlr.getOutputFormat();
    }
    throw new ServiceException("Unable to parse incoming operation");
  }

   
    /**
     * @param value
     *            {@link DescribeLayerTransformer}
     * @param output
     *            where to write the response
     * @param operation
     *            {@link DescribeLayer} operation that originated the {@code value} response
     * @see org.geoserver.ows.Response#write(java.lang.Object, java.io.OutputStream,
     *      org.geoserver.platform.Operation)
     */
    @Override
    public void write(Object value, OutputStream output, Operation operation) throws IOException,
            ServiceException {

       
        Assert.notNull(operation.getParameters());
        Assert.isTrue(operation.getParameters()[0] instanceof DescribeLayerRequest);
        final DescribeLayerRequest request = (DescribeLayerRequest) operation.getParameters()[0];
       
        Assert.isTrue(value instanceof DescribeLayerModel);
        final DescribeLayerModel results = (DescribeLayerModel) value;
        try {
          write(results, request, output);
        } finally {
        if (output!=null){
          try {
            output.flush();
          } catch (IOException ioe){}
          IOUtils.closeQuietly(output);
        }
        }
       
    }

    public abstract void write(DescribeLayerModel description, DescribeLayerRequest output, OutputStream operation) throws IOException,
    ServiceException ;
   
}
TOP

Related Classes of org.geoserver.wms.describelayer.DescribeLayerResponse

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.