Package org.geoserver.gss.xml

Source Code of org.geoserver.gss.xml.PostDiffTypeBindingTest

package org.geoserver.gss.xml;

import static org.custommonkey.xmlunit.XMLAssert.*;

import java.util.Collections;

import javax.xml.namespace.QName;

import net.opengis.wfs.DeleteElementType;
import net.opengis.wfs.InsertElementType;
import net.opengis.wfs.PropertyType;
import net.opengis.wfs.TransactionType;
import net.opengis.wfs.UpdateElementType;
import net.opengis.wfs.WfsFactory;

import org.geoserver.gss.PostDiffType;
import org.geotools.data.DataUtilities;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.FilterFactory;
import org.w3c.dom.Document;

import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.io.WKTReader;

public class PostDiffTypeBindingTest extends GSSXMLTestSupport {

    public void testEncode() throws Exception {
        // build the transaction
        QName restricted = new QName(SF_NAMESPACE, "restricted");
        WfsFactory wfs = WfsFactory.eINSTANCE;
        FilterFactory ff = CommonFactoryFinder.getFilterFactory(null);
       
        InsertElementType insert = wfs.createInsertElementType();
        SimpleFeatureType ft = DataUtilities.createType("restricted", "cat:java.lang.Long,the_geom:Polygon");
        Geometry polygon = new WKTReader().read("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))");
        SimpleFeature f = SimpleFeatureBuilder.build(ft, new Object[] {123, polygon}, "restricted.105");
        insert.getFeature().add(f);
       
        DeleteElementType delete = wfs.createDeleteElementType();
        delete.setTypeName(restricted);
        delete.setFilter(ff.id(Collections.singleton(ff.featureId("restricted.23"))));
       
        UpdateElementType update = wfs.createUpdateElementType();
        update.setTypeName(restricted);
        update.setFilter(ff.id(Collections.singleton(ff.featureId("restricted.21"))));
        PropertyType property = wfs.createPropertyType();
        property.setName(new QName(SF_NAMESPACE, "cat"));
        property.setValue(-48);
        update.getProperty().add(property);
       
        TransactionType transaction = wfs.createTransactionType();
        transaction.getInsert().add(insert);
        transaction.getUpdate().add(update);
        transaction.getDelete().add(delete);
       
        PostDiffType postDiff = new PostDiffType();
        postDiff.setFromVersion(15);
        postDiff.setToVersion(47);
        postDiff.setTypeName(restricted);
        postDiff.setTransaction(transaction);
       
        Document doc = encode(postDiff, GSS.PostDiff);
        // print(doc);
       
        assertXpathEvaluatesTo("15", "/gss:PostDiff/@fromVersion", doc);
        assertXpathEvaluatesTo("47", "/gss:PostDiff/@toVersion", doc);
        assertXpathEvaluatesTo("sf:restricted", "/gss:PostDiff/@typeName", doc);
        // we trust the encoding to be working, just check the transaction is actually being encoded
        assertXpathExists("/gss:PostDiff/gss:Changes", doc);
        assertXpathExists("/gss:PostDiff/gss:Changes/wfs:Insert", doc);
        assertXpathExists("/gss:PostDiff/gss:Changes/wfs:Update", doc);
        assertXpathExists("/gss:PostDiff/gss:Changes/wfs:Delete", doc);
    }
   
    public void testParse() throws Exception {
        document = dom("PostDiffRequest.xml");
        PostDiffType pd = (PostDiffType) parse(GSS.PostDiffType);
       
        assertEquals(15, pd.getFromVersion());
        assertEquals(47, pd.getToVersion());
        assertEquals(SF_NAMESPACE, pd.getTypeName().getNamespaceURI());
        assertEquals("restricted", pd.getTypeName().getLocalPart());
        assertNotNull(pd.getTransaction());
        assertEquals(1, pd.getTransaction().getDelete().size());
        assertEquals(1, pd.getTransaction().getUpdate().size());
        assertEquals(1, pd.getTransaction().getInsert().size());
       
        // print(encode(pd, GSS.PostDiff));
    }
}
TOP

Related Classes of org.geoserver.gss.xml.PostDiffTypeBindingTest

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.