Package org.geoserver.wfs.request

Examples of org.geoserver.wfs.request.DescribeFeatureTypeRequest


        if (caps != null) {
            caps.setNamespace(workspace.getName());
            return;
        }
       
        DescribeFeatureTypeRequest dft = DescribeFeatureTypeRequest.adapt(
                OwsUtils.parameter(operation.getParameters(), EObject.class));
        if (dft != null) {
            qualifyTypeNames(dft.getTypeNames(), workspace, ns);
            return;
        }
       
        GetFeatureRequest gf = GetFeatureRequest.adapt(
            OwsUtils.parameter(operation.getParameters(), EObject.class));
View Full Code Here


            //parse the key value pairs
            KvpMap parsed = new KvpMap(kv);
            KvpUtils.parse(parsed);

            //create/read the request object
            DescribeFeatureTypeRequest request = DescribeFeatureTypeRequest.adapt(
                dftReqReader.read(dftReqReader.createRequest(), parsed, kv));

            //set the base url
            //TODO: should this be run through the url mangler? not sure since the uri should
            // already be "proxified"
            request.setBaseUrl(uri.scheme() + "://" + uri.host() + ":" + uri.port() + uri.path());

            //dispatch the dft operation
            DescribeFeatureType dft =
                new DescribeFeatureType(geoServer.getService(WFSInfo.class), catalog);
            FeatureTypeInfo[] featureTypes = dft.run(request);

            //generate the response
            XmlSchemaEncoder schemaEncoder = null;
            switch(ver) {
            case V_10:
                schemaEncoder = new XmlSchemaEncoder.V10(geoServer);
                break;
            case V_11:
                schemaEncoder = new XmlSchemaEncoder.V11(geoServer);
                break;
            case V_20:
            default:
                schemaEncoder = new XmlSchemaEncoder.V20(geoServer);
            }

            //build a "dummy" operation descriptor and call the encoder
            Operation op = new Operation("DescribeFeatureType", new Service("WFS",null,null,null),
                null, new Object[]{request.getAdaptee()});
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            schemaEncoder.write(featureTypes, bout, op);

            return new ByteArrayInputStream(bout.toByteArray());
        } catch (Exception e) {
View Full Code Here

        //let super do its thing
        request = super.read(request, kvp, rawKvp);

        //do an additional check for outputFormat, because the default
        // in wfs 1.1 is not the default for wfs 1.0
        DescribeFeatureTypeRequest req = DescribeFeatureTypeRequest.adapt(request);
       
        if (!req.isSetOutputFormat()) {
            switch(WFSInfo.Version.negotiate(req.getVersion())) {
                case V_10:
                    req.setOutputFormat("XMLSCHEMA"); break;
                case V_11:
                    req.setOutputFormat("text/xml; subtype=gml/3.1.1"); break;
                case V_20:
                default:
                    req.setOutputFormat("text/xml; subtype=gml/3.2");
            }
        }

        // did the user supply alternate namespace prefixes?
        NamespaceSupport namespaces = null;
        if (kvp.containsKey("NAMESPACE")) {
            if (kvp.get("NAMESPACE") instanceof NamespaceSupport) {
                namespaces = (NamespaceSupport) kvp.get("namespace");
            } else {
                LOGGER.warning("There's a namespace parameter but it seems it wasn't parsed to a "
                        + NamespaceSupport.class.getName() + ": " + kvp.get("namespace"));
            }
        }
        if (namespaces != null) {
            List<QName> typeNames = req.getTypeNames();
            List<QName> newList = new ArrayList<QName>(typeNames.size());
            for(QName name : typeNames){
                String localPart = name.getLocalPart();
                String prefix = name.getPrefix();
                String namespaceURI = name.getNamespaceURI();
                if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix)) {
                    //no prefix specified, did the request specify a default namespace?
                    namespaceURI = namespaces.getURI(XMLConstants.DEFAULT_NS_PREFIX);
                } else if (XMLConstants.NULL_NS_URI.equals(namespaceURI)) {
                    //prefix specified, does a namespace mapping were declared for it?
                    if(namespaces.getURI(prefix) != null){
                        namespaceURI = namespaces.getURI(prefix);
                    }
                }
                if(catalog.getNamespaceByURI(namespaceURI) != null){
                    prefix = catalog.getNamespaceByURI(namespaceURI).getPrefix();
                }
                newList.add(new QName(namespaceURI, localPart, prefix));
            }
            req.setTypeNames(newList);
        }
        return request;
    }
View Full Code Here

    protected void doWrite(FeatureTypeInfo[] featureTypeInfos, OutputStream output,
            Operation describeFeatureType) throws IOException {

        //create the schema
        Object request = describeFeatureType.getParameters()[0];
        DescribeFeatureTypeRequest req = DescribeFeatureTypeRequest.adapt(request);
       
        XSDSchema schema = schemaBuilder.build(featureTypeInfos, req.getBaseURL());

        //serialize
        schema.updateElement();
        final String encoding = gs.getSettings().getCharset();
        XSDResourceImpl.serialize(output, schema.getElement(), encoding);
View Full Code Here

TOP

Related Classes of org.geoserver.wfs.request.DescribeFeatureTypeRequest

Copyright © 2018 www.massapicom. 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.