Search in sources :

Example 1 with OwsServiceCommunicationObject

use of org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject in project arctic-sea by 52North.

the class AbstractStringRequestDecoder method decode.

@Override
public OwsServiceCommunicationObject decode(String string) throws DecodingException {
    XmlObject xml = CodingHelper.readXML(string);
    DecoderKey key = CodingHelper.getDecoderKey(xml);
    Decoder<OwsServiceCommunicationObject, XmlObject> decoder = decoderRepository.getDecoder(key);
    if (decoder == null) {
        throw new NoDecoderForKeyException(key);
    }
    return decoder.decode(xml);
}
Also used : OwsServiceCommunicationObject(org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject) NoDecoderForKeyException(org.n52.svalbard.decode.exception.NoDecoderForKeyException) XmlObject(org.apache.xmlbeans.XmlObject)

Example 2 with OwsServiceCommunicationObject

use of org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject in project arctic-sea by 52North.

the class SosDecoderv20Test method should_decode_boolean_swesExtensions.

@Test
public void should_decode_boolean_swesExtensions() throws XmlException, OwsExceptionReport, DecodingException {
    final GetObservationDocument doc = GetObservationDocument.Factory.parse("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<sos:GetObservation service=\"SOS\" version=\"2.0.0\"\n" + "    xmlns:sos=\"http://www.opengis.net/sos/2.0\"\n" + "    xmlns:swe=\"http://www.opengis.net/swe/2.0\"\n" + "    xmlns:swes=\"http://www.opengis.net/swes/2.0\">\n" + "    <swes:extension>\n" + "        <swe:Boolean definition=\"MergeObservationsIntoDataArray\">\n" + "            <swe:value>true</swe:value>\n" + "        </swe:Boolean>\n" + "    </swes:extension>\n" + "</sos:GetObservation>");
    final OwsServiceCommunicationObject decodedObject = decoder.decode(doc);
    assertThat(decodedObject, instanceOf(GetObservationRequest.class));
    final GetObservationRequest request = (GetObservationRequest) decodedObject;
    assertThat(request.getBooleanExtension("MergeObservationsIntoDataArray"), is(TRUE));
}
Also used : OwsServiceCommunicationObject(org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject) GetObservationRequest(org.n52.shetland.ogc.sos.request.GetObservationRequest) GetObservationDocument(net.opengis.sos.x20.GetObservationDocument) Test(org.junit.Test)

Example 3 with OwsServiceCommunicationObject

use of org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject in project arctic-sea by 52North.

the class SosDecoderv100 method parseDescribeSensor.

/**
 * parses the XmlBean representing the describeSensor request and creates a
 * DescribeSensor request
 *
 * @param descSensorDoc
 *            XmlBean created from the incoming request stream
 * @return Returns SosDescribeSensorRequest representing the request
 */
private OwsServiceCommunicationObject parseDescribeSensor(DescribeSensorDocument descSensorDoc) {
    DescribeSensorRequest request = new DescribeSensorRequest();
    DescribeSensor descSensor = descSensorDoc.getDescribeSensor();
    request.setService(descSensor.getService());
    request.setVersion(descSensor.getVersion());
    // parse outputFormat through MediaType to ensure it's a mime type and
    // eliminate whitespace variations
    request.setProcedureDescriptionFormat(MediaType.normalizeString(descSensor.getOutputFormat()));
    request.setProcedure(descSensor.getProcedure());
    return request;
}
Also used : DescribeSensor(net.opengis.sos.x10.DescribeSensorDocument.DescribeSensor) DescribeSensorRequest(org.n52.shetland.ogc.sos.request.DescribeSensorRequest)

Example 4 with OwsServiceCommunicationObject

use of org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject in project arctic-sea by 52North.

the class SosDecoderv100 method decode.

@Override
public OwsServiceCommunicationObject decode(XmlObject xmlObject) throws DecodingException {
    OwsServiceCommunicationObject request = null;
    LOGGER.debug("REQUESTTYPE:" + xmlObject.getClass());
    /*
         * Add O&M 1.0.0 namespace to GetObservation document. XmlBeans removes
         * the namespace from the document because there are no om:... elements
         * in the document. But the validation fails if the <resultModel>
         * element is set with e.g. om:Measurement.
         */
    if (xmlObject instanceof GetObservationDocument) {
        XmlCursor cursor = xmlObject.newCursor();
        cursor.toFirstChild();
        cursor.insertNamespace(OmConstants.NS_OM_PREFIX, OmConstants.NS_OM);
        cursor.dispose();
    }
    // validate document
    XmlHelper.validateDocument(xmlObject);
    if (xmlObject instanceof GetCapabilitiesDocument) {
        // getCapabilities request
        GetCapabilitiesDocument getCapsDoc = (GetCapabilitiesDocument) xmlObject;
        request = parseGetCapabilities(getCapsDoc);
    } else if (xmlObject instanceof DescribeSensorDocument) {
        // DescribeSensor request (still SOS 1.0 NS_URI
        DescribeSensorDocument descSensorDoc = (DescribeSensorDocument) xmlObject;
        request = parseDescribeSensor(descSensorDoc);
    } else if (xmlObject instanceof GetObservationDocument) {
        // getObservation request
        GetObservationDocument getObsDoc = (GetObservationDocument) xmlObject;
        request = parseGetObservation(getObsDoc);
    } else if (xmlObject instanceof GetFeatureOfInterestDocument) {
        // getFeatureOfInterest request
        GetFeatureOfInterestDocument getFoiDoc = (GetFeatureOfInterestDocument) xmlObject;
        request = parseGetFeatureOfInterest(getFoiDoc);
    } else if (xmlObject instanceof GetObservationByIdDocument) {
        // getObservationById request
        GetObservationByIdDocument getObsByIdDoc = (GetObservationByIdDocument) xmlObject;
        request = parseGetObservationById(getObsByIdDoc);
    } else {
        throw new UnsupportedDecoderXmlInputException(this, xmlObject);
    }
    return request;
}
Also used : OwsServiceCommunicationObject(org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject) GetObservationDocument(net.opengis.sos.x10.GetObservationDocument) DescribeSensorDocument(net.opengis.sos.x10.DescribeSensorDocument) GetFeatureOfInterestDocument(net.opengis.sos.x10.GetFeatureOfInterestDocument) GetObservationByIdDocument(net.opengis.sos.x10.GetObservationByIdDocument) UnsupportedDecoderXmlInputException(org.n52.svalbard.decode.exception.UnsupportedDecoderXmlInputException) GetCapabilitiesDocument(net.opengis.sos.x10.GetCapabilitiesDocument) XmlCursor(org.apache.xmlbeans.XmlCursor)

Example 5 with OwsServiceCommunicationObject

use of org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject in project arctic-sea by 52North.

the class SosDecoderv20Test method should_decode_text_swesExtensions.

@Test
public void should_decode_text_swesExtensions() throws XmlException, OwsExceptionReport, DecodingException {
    final GetObservationDocument doc = GetObservationDocument.Factory.parse("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<sos:GetObservation service=\"SOS\" version=\"2.0.0\"\n" + "    xmlns:sos=\"http://www.opengis.net/sos/2.0\"\n" + "    xmlns:swe=\"http://www.opengis.net/swe/2.0\"\n" + "    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n" + "    xmlns:swes=\"http://www.opengis.net/swes/2.0\"\n" + "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/sos/2.0 http://schemas.opengis.net/sos/2.0/sos.xsd\">\n" + "    <swes:extension>\n" + "        <swe:Text definition=\"my-text-extension\">\n" + "            <swe:value>true</swe:value>\n" + "        </swe:Text>\n" + "    </swes:extension>\n" + "</sos:GetObservation>");
    final OwsServiceCommunicationObject decodedObject = decoder.decode(doc);
    assertThat(decodedObject, instanceOf(GetObservationRequest.class));
    final GetObservationRequest request = (GetObservationRequest) decodedObject;
    assertThat(request.getExtension("my-text-extension").map(e -> e.getValue()).map(v -> (SweText) v).map(v -> v.getValue()).orElse(null), is("true"));
}
Also used : OwsServiceCommunicationObject(org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject) OwsServiceCommunicationObject(org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject) Arrays(java.util.Arrays) DecodingException(org.n52.svalbard.decode.exception.DecodingException) IsInstanceOf.instanceOf(org.hamcrest.core.IsInstanceOf.instanceOf) InsertResultTemplateDocument(net.opengis.sos.x20.InsertResultTemplateDocument) Test(org.junit.Test) InsertResultTemplateRequest(org.n52.shetland.ogc.sos.request.InsertResultTemplateRequest) OwsExceptionReport(org.n52.shetland.ogc.ows.exception.OwsExceptionReport) GetObservationRequest(org.n52.shetland.ogc.sos.request.GetObservationRequest) SweText(org.n52.shetland.ogc.swe.simpleType.SweText) GetObservationDocument(net.opengis.sos.x20.GetObservationDocument) Assert.assertThat(org.junit.Assert.assertThat) XmlException(org.apache.xmlbeans.XmlException) XmlOptions(org.apache.xmlbeans.XmlOptions) After(org.junit.After) Matchers.is(org.hamcrest.Matchers.is) TRUE(java.lang.Boolean.TRUE) Producer(org.n52.janmayen.Producer) Before(org.junit.Before) GetObservationRequest(org.n52.shetland.ogc.sos.request.GetObservationRequest) SweText(org.n52.shetland.ogc.swe.simpleType.SweText) GetObservationDocument(net.opengis.sos.x20.GetObservationDocument) Test(org.junit.Test)

Aggregations

OwsServiceCommunicationObject (org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject)4 GetObservationDocument (net.opengis.sos.x20.GetObservationDocument)2 Test (org.junit.Test)2 GetObservationRequest (org.n52.shetland.ogc.sos.request.GetObservationRequest)2 TRUE (java.lang.Boolean.TRUE)1 Arrays (java.util.Arrays)1 DescribeSensorDocument (net.opengis.sos.x10.DescribeSensorDocument)1 DescribeSensor (net.opengis.sos.x10.DescribeSensorDocument.DescribeSensor)1 GetCapabilitiesDocument (net.opengis.sos.x10.GetCapabilitiesDocument)1 GetFeatureOfInterestDocument (net.opengis.sos.x10.GetFeatureOfInterestDocument)1 GetObservationByIdDocument (net.opengis.sos.x10.GetObservationByIdDocument)1 GetObservationDocument (net.opengis.sos.x10.GetObservationDocument)1 InsertResultTemplateDocument (net.opengis.sos.x20.InsertResultTemplateDocument)1 XmlCursor (org.apache.xmlbeans.XmlCursor)1 XmlException (org.apache.xmlbeans.XmlException)1 XmlObject (org.apache.xmlbeans.XmlObject)1 XmlOptions (org.apache.xmlbeans.XmlOptions)1 Matchers.is (org.hamcrest.Matchers.is)1 IsInstanceOf.instanceOf (org.hamcrest.core.IsInstanceOf.instanceOf)1 After (org.junit.After)1