⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmscapabilitiesresponse.java

📁 电子地图服务器,搭建自己的地图服务
💻 JAVA
字号:
/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org.  All rights reserved.
 * This code is licensed under the GPL 2.0 license, availible at the root
 * application directory.
 */
package org.vfny.geoserver.wms.responses;

import org.springframework.context.ApplicationContext;
import org.vfny.geoserver.Request;
import org.vfny.geoserver.Response;
import org.vfny.geoserver.ServiceException;
import org.vfny.geoserver.global.GeoServer;
import org.vfny.geoserver.global.Service;
import org.vfny.geoserver.util.requests.CapabilitiesRequest;
import org.vfny.geoserver.wms.WmsException;
import org.vfny.geoserver.wms.responses.helpers.WMSCapsTransformer;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Set;
import java.util.logging.Logger;
import javax.xml.transform.TransformerException;


/**
 * Processes a WMS GetCapabilities request.
 * <p>
 * The response of a GetCapabilities request is general information about the
 * service itself and specific information about the available maps.
 * </p>
 *
 * @author Gabriel Roldan, Axios Engineering
 * @version $Id: WMSCapabilitiesResponse.java 7746 2007-11-13 15:38:35Z aaime $
 */
public class WMSCapabilitiesResponse implements Response {
    /** package's logger */
    private static final Logger LOGGER = org.geotools.util.logging.Logging.getLogger(WMSCapabilitiesResponse.class.getPackage()
                                                                                       .getName());

    /**
     * Byte array holding the raw content of the capabilities document,
     * generated in <code>execute()</code>
     */
    private byte[] rawResponse;

    /**
     * List of formats accessible via a GetMap request.
     */
    private Set formats;
    private ApplicationContext applicationContext;

    public WMSCapabilitiesResponse(Set wmsGetMapFormats, ApplicationContext applicationContext) {
        this.formats = wmsGetMapFormats;
        this.applicationContext = applicationContext;
    }

    /**
    * Returns any extra headers that this service might want to set in the HTTP response object.
    * @see org.vfny.geoserver.Response#getResponseHeaders()
    */
    public HashMap getResponseHeaders() {
        return null;
    }

    /**
     * DOCUMENT ME!
     *
     * @param request DOCUMENT ME!
     *
     * @throws ServiceException DOCUMENT ME!
     * @throws IllegalArgumentException DOCUMENT ME!
     * @throws WmsException DOCUMENT ME!
     */
    public void execute(Request request) throws ServiceException {
        if (!(request instanceof CapabilitiesRequest)) {
            throw new IllegalArgumentException("Not a GetCapabilities Request");
        }

        WMSCapsTransformer transformer = new WMSCapsTransformer(request.getBaseUrl(),
                formats, applicationContext);

        // if (request.getWFS().getGeoServer().isVerbose()) {
        transformer.setIndentation(2);

        // }
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        try {
            transformer.transform(request, out);
        } catch (TransformerException e) {
            throw new WmsException(e);
        }

        this.rawResponse = out.toByteArray();
    }

    /**
     * Returns the fixed capabilities MIME type  (application/vnd.ogc.wms_xml)
     * as specified in whe WMS spec, version 1.1.1, section 6.5.3, table 3.
     *
     * @param gs DOCUMENT ME!
     *
     * @return the capabilities document MIME type.
     *
     * @throws IllegalStateException if the response was not yet produced.
     */
    public String getContentType(GeoServer gs) throws IllegalStateException {
        if (rawResponse == null) {
            throw new IllegalStateException("execute() not called or not succeed.");
        }

        return WMSCapsTransformer.WMS_CAPS_MIME;
    }

    /**
     * Just returns <code>null</code>, since no special encoding is applyed to
     * the output data.
     *
     * @return <code>null</code>
     */
    public String getContentEncoding() {
        return null;
    }

    /**
     * Writes the capabilities document generated in <code>execute()</code> to
     * the given output stream.
     *
     * @param out the capabilities document destination
     *
     * @throws ServiceException never, since the whole content was aquired in
     *         <code>execute()</code>
     * @throws IOException if it is thrown while writing to <code>out</code>
     * @throws IllegalStateException if <code>execute()</code> was not
     *         called/succeed before this method is called.
     */
    public void writeTo(OutputStream out) throws ServiceException, IOException {
        if (rawResponse == null) {
            throw new IllegalStateException("No raw response presents!");
        }

        out.write(rawResponse);
    }

    /**
     * Does nothing, since no processing is done after <code>execute()</code>
     * has returned.
     *
     * @param gs the service instance
     */
    public void abort(Service gs) {
    }

    /*
     * (non-Javadoc)
     *
     * @see org.vfny.geoserver.Response#getContentDisposition()
     */
    public String getContentDisposition() {
        return null;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -