/**
* Copyright (C) 2012-2017 52°North Initiative for Geospatial Open Source
* Software GmbH
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*
* If the program is linked with libraries which are licensed under one of
* the following licenses, the combination of the program with the linked
* library is not considered a "derivative work" of the program:
*
* - Apache License, version 2.0
* - Apache Software License, version 1.0
* - GNU Lesser General Public License, version 3
* - Mozilla Public License, versions 1.0, 1.1 and 2.0
* - Common Development and Distribution License (CDDL), version 1.0
*
* Therefore the distribution of the program linked with libraries licensed
* under the aforementioned licenses, is permitted by the copyright holders
* if the distribution is compliant with both the GNU General Public
* License version 2 and the aforementioned licenses.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*/
package org.n52.sos.decode;
import static java.lang.Boolean.TRUE;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.assertThat;
import net.opengis.sos.x20.GetObservationDocument;
import org.apache.xmlbeans.XmlException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.n52.sos.ogc.ows.OwsExceptionReport;
import org.n52.sos.request.GetObservationRequest;
import org.n52.sos.service.AbstractServiceCommunicationObject;
/**
* @author <a href="mailto:e.h.juerrens@52north.org">Eike Hinderk
* Jürrens</a>
*
* @since 4.0.0
*/
public class SosDecoderv20Test {
private SosDecoderv20 decoder;
@Before
public void initDecoder() {
decoder = new SosDecoderv20();
}
@After
public void nullDecoder() {
decoder = null;
}
@Test
public void should_decode_boolean_swesExtensions() throws XmlException, OwsExceptionReport {
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:Boolean definition=\"MergeObservationsIntoDataArray\">\n"
+ " <swe:value>true</swe:value>\n" + " </swe:Boolean>\n"
+ " </swes:extension>\n" + "</sos:GetObservation>");
final AbstractServiceCommunicationObject decodedObject = decoder.decode(doc);
assertThat(decodedObject, instanceOf(GetObservationRequest.class));
final GetObservationRequest request = (GetObservationRequest) decodedObject;
assertThat(request.isSetExtensions(), is(TRUE));
assertThat(request.getExtensions().isBooleanExtensionSet("MergeObservationsIntoDataArray"), is(TRUE));
}
@Test
public void should_decode_text_swesExtensions() throws XmlException, OwsExceptionReport {
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 AbstractServiceCommunicationObject decodedObject = decoder.decode(doc);
assertThat(decodedObject, instanceOf(GetObservationRequest.class));
final GetObservationRequest request = (GetObservationRequest) decodedObject;
assertThat(request.isSetExtensions(), is(TRUE));
}
}