package org.geoserver.gss.xml;
import static org.easymock.EasyMock.*;
import static org.easymock.classextension.EasyMock.*;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.custommonkey.xmlunit.SimpleNamespaceContext;
import org.custommonkey.xmlunit.XMLUnit;
import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.ResourcePool;
import org.geoserver.config.GeoServer;
import org.geoserver.wfs.WFSInfo;
import org.geoserver.wfs.WFSInfoImpl;
import org.geoserver.wfs.xml.FeatureTypeSchemaBuilder;
import org.geoserver.wfs.xml.v1_1_0.WFS;
import org.geoserver.wfs.xml.v1_1_0.WFSConfiguration;
import org.geotools.xml.Configuration;
import org.geotools.xml.test.XMLTestSupport;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
public abstract class GSSXMLTestSupport extends XMLTestSupport {
protected static final String SF_NAMESPACE = "http://www.openplans.org/spearfish";
@Override
protected void setUp() throws Exception {
super.setUp();
registerNamespaceMapping("sf", SF_NAMESPACE);
Map<String, String> namespaces = new HashMap<String, String>();
namespaces.put("sf", SF_NAMESPACE);
namespaces.put("gss", GSS.NAMESPACE);
namespaces.put("wfs", WFS.NAMESPACE);
XMLUnit.setXpathNamespaceContext(new SimpleNamespaceContext(namespaces));
}
@Override
protected Configuration createConfiguration() {
// enough mocking to make tests work, we don't even attempt to create a real mock catalog
ResourcePool resourcePool = createNiceMock(ResourcePool.class);
Catalog catalog = createNiceMock(Catalog.class);
expect(catalog.getResourceLoader()).andReturn(null).anyTimes();
expect(catalog.getResourcePool()).andReturn(resourcePool).anyTimes();
expect(catalog.getFeatureTypes()).andReturn(Collections.EMPTY_LIST).anyTimes();
replay(catalog);
GeoServer gs = createNiceMock(GeoServer.class);
expect(gs.getService(WFSInfo.class)).andReturn(new WFSInfoImpl()).anyTimes();
expect(gs.getCatalog()).andReturn(catalog).anyTimes();
replay(gs);
FeatureTypeSchemaBuilder.GML3 schemaBuilder = new FeatureTypeSchemaBuilder.GML3(gs);
WFS wfs = new WFS(schemaBuilder);
return new GSSConfiguration(new WFSConfiguration(catalog, schemaBuilder, wfs), new GSS(wfs), catalog);
}
Document dom(String resourceName) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(this.getClass().getResourceAsStream(resourceName));
}
}