GetFeatureType getFeature = factory.createGetFeatureType(); getFeature.setService("WFS"); getFeature.setVersion(getVersion());
/** See https://osgeo-org.atlassian.net/browse/GEOS-1875 */ @SuppressWarnings("unchecked") @Test public void testUserProvidedNamespace() throws Exception { final String localPart = SystemTestData.MLINES.getLocalPart(); final String namespace = SystemTestData.MLINES.getNamespaceURI(); final String alternamePrefix = "ex"; final String alternameTypeName = alternamePrefix + ":" + localPart; Map<String, String> raw = new HashMap<String, String>(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put("typeName", alternameTypeName); raw.put("namespace", "xmlns(" + alternamePrefix + "=" + namespace + ")"); Map<String, Object> parsed = parseKvp(raw); GetFeatureType req = WfsFactory.eINSTANCE.createGetFeatureType(); Object read = reader.read(req, parsed, raw); GetFeatureType parsedReq = (GetFeatureType) read; QueryType query = (QueryType) parsedReq.getQuery().get(0); List<QName> typeNames = query.getTypeName(); assertEquals(1, typeNames.size()); assertEquals(SystemTestData.MLINES, typeNames.get(0)); }
/** See https://osgeo-org.atlassian.net/browse/GEOS-1875 */ @SuppressWarnings("unchecked") @Test public void testUserProvidedDefaultNamespace() throws Exception { final QName qName = SystemTestData.STREAMS; final String typeName = qName.getLocalPart(); final String defaultNamespace = qName.getNamespaceURI(); Map<String, String> raw = new HashMap<String, String>(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put("typeName", typeName); raw.put("namespace", "xmlns(" + defaultNamespace + ")"); Map<String, Object> parsed = parseKvp(raw); GetFeatureType req = WfsFactory.eINSTANCE.createGetFeatureType(); Object read = reader.read(req, parsed, raw); GetFeatureType parsedReq = (GetFeatureType) read; QueryType query = (QueryType) parsedReq.getQuery().get(0); List<QName> typeNames = query.getTypeName(); assertEquals(1, typeNames.size()); assertEquals(qName, typeNames.get(0)); }
@Before public void init() throws Exception { gft = WfsFactory.eINSTANCE.createGetFeatureType(); op = new Operation("GetFeature", getServiceDescriptor10(), null, new Object[] {gft}); }
@Test public void testViewParams() throws Exception { Map<String, String> raw = new HashMap<String, String>(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put("typeName", getLayerId(SystemTestData.STREAMS)); raw.put("viewParams", "where:WHERE PERSONS > 1000000;str:ABCD"); Map<String, Object> parsed = parseKvp(raw); GetFeatureType req = WfsFactory.eINSTANCE.createGetFeatureType(); Object read = reader.read(req, parsed, raw); GetFeatureType parsedReq = (GetFeatureType) read; assertEquals(1, parsedReq.getViewParams().size()); List<Map> viewParams = (EList<Map>) parsedReq.getViewParams(); assertEquals(1, viewParams.size()); Map<String, String> vp1 = viewParams.get(0); assertEquals("WHERE PERSONS > 1000000", vp1.get("where")); assertEquals("ABCD", vp1.get("str")); }
@Test public void testViewParamsFanOut() throws Exception { Map<String, String> raw = new HashMap<String, String>(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put( "typeName", getLayerId(SystemTestData.STREAMS) + "," + getLayerId(SystemTestData.BASIC_POLYGONS)); raw.put("viewParams", "where:WHERE PERSONS > 1000000;str:ABCD"); Map<String, Object> parsed = parseKvp(raw); GetFeatureType req = WfsFactory.eINSTANCE.createGetFeatureType(); Object read = reader.read(req, parsed, raw); GetFeatureType parsedReq = (GetFeatureType) read; List<Map> viewParams = (EList<Map>) parsedReq.getViewParams(); assertEquals(2, viewParams.size()); Map<String, String> vp1 = viewParams.get(0); assertEquals("WHERE PERSONS > 1000000", vp1.get("where")); assertEquals("ABCD", vp1.get("str")); Map<String, String> vp2 = viewParams.get(1); assertEquals("WHERE PERSONS > 1000000", vp2.get("where")); assertEquals("ABCD", vp2.get("str")); } }
/** https://osgeo-org.atlassian.net/browse/GEOS-1875 */ @Test @SuppressWarnings("unchecked") public void testInvalidTypeNameBbox() throws Exception { Map raw = new HashMap(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put("bbox", "-80.4864795578115,25.6176257083275,-80.3401307394915,25.7002737069969"); raw.put("typeName", "cite:InvalidTypeName"); Map parsed = parseKvp(raw); try { // before fix for GEOS-1875 this would bomb out with an NPE instead of the proper // exception reader.read(WfsFactory.eINSTANCE.createGetFeatureType(), parsed, raw); } catch (WFSException e) { assertEquals("InvalidParameterValue", e.getCode()); assertEquals("typeName", e.getLocator()); System.out.println(e.getMessage()); assertTrue(e.getMessage().contains("cite:InvalidTypeName")); } }
@Test public void testViewParamsMulti() throws Exception { Map<String, String> raw = new HashMap<String, String>(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put( "typeName", getLayerId(SystemTestData.STREAMS) + "," + getLayerId(SystemTestData.BASIC_POLYGONS)); raw.put( "viewParams", "where:WHERE PERSONS > 1000000;str:ABCD,where:WHERE PERSONS > 10;str:FOO"); Map<String, Object> parsed = parseKvp(raw); GetFeatureType req = WfsFactory.eINSTANCE.createGetFeatureType(); Object read = reader.read(req, parsed, raw); GetFeatureType parsedReq = (GetFeatureType) read; List<Map> viewParams = (EList<Map>) parsedReq.getViewParams(); assertEquals(2, viewParams.size()); Map<String, String> vp1 = viewParams.get(0); assertEquals("WHERE PERSONS > 1000000", vp1.get("where")); assertEquals("ABCD", vp1.get("str")); Map<String, String> vp2 = viewParams.get(1); assertEquals("WHERE PERSONS > 10", vp2.get("where")); assertEquals("FOO", vp2.get("str")); }
/** Same as GEOS-1875, but let's check without bbox and without name prefix */ @SuppressWarnings("unchecked") @Test public void testInvalidTypeName() throws Exception { Map raw = new HashMap(); raw.put("service", "WFS"); raw.put("version", "1.1.0"); raw.put("request", "GetFeature"); raw.put("typeName", "InvalidTypeName"); try { Map parsed = parseKvp(raw); reader.read(WfsFactory.eINSTANCE.createGetFeatureType(), parsed, raw); } catch (WFSException e) { assertEquals("InvalidParameterValue", e.getCode()); assertEquals("typeName", e.getLocator()); // System.out.println(e.getMessage()); assertTrue(e.getMessage().contains("InvalidTypeName")); } }
/** * Turns a GetLogType objects into an almost equivalent GetFeatureType object s * that the superclass can do its work * @param featureCollection * @param request * @return */ private GetFeatureType toGetFeatureType(FeatureCollectionType featureCollection, GetLogType request) { FeatureCollection features = (FeatureCollection) featureCollection.getFeature().get(0); FeatureType featureType = features.getSchema(); GetFeatureType ftRequest = WfsFactory.eINSTANCE.createGetFeatureType(); QueryType query = WfsFactory.eINSTANCE.createQueryType(); query.setTypeName(Collections.singletonList(featureType.getTypeName())); ftRequest.getQuery().add(query); ftRequest.setBaseUrl(request.getBaseUrl()); ftRequest.setHandle(request.getHandle()); ftRequest.setMaxFeatures(request.getMaxFeatures()); ftRequest.setOutputFormat(request.getOutputFormat()); ftRequest.setResultType(ResultTypeType.RESULTS_LITERAL); return ftRequest; }
@Before public void setupMocks() { deleteElementType1 = WfsFactory.eINSTANCE.createDeleteElementType(); getFeatureType1 = WfsFactory.eINSTANCE.createGetFeatureType(); deleteType2 = Wfs20Factory.eINSTANCE.createDeleteType(); getFeatureType2 = Wfs20Factory.eINSTANCE.createGetFeatureType(); }
/** * Build a GetFeature operation to request the named types. * * @param names type names for which queries are present in the returned request * @return GetFeature operation to request the named types */ Operation request(QName... names) { Service service = getServiceDescriptor10(); GetFeatureType type = WfsFactory.eINSTANCE.createGetFeatureType(); type.setBaseUrl("http://localhost:8080/geoserver"); for (QName name : names) { QueryType queryType = WfsFactory.eINSTANCE.createQueryType(); queryType.setTypeName(Collections.singletonList(name)); type.getQuery().add(queryType); } Operation request = new Operation("wfs", service, null, new Object[] {type}); return request; }
GetFeatureType gfreq = WfsFactory.eINSTANCE.createGetFeatureType(); gfreq.setBaseUrl(fInfoReq.getBaseUrl());
GetFeatureType gfreq = WfsFactory.eINSTANCE.createGetFeatureType(); gfreq.setBaseUrl(fInfoReq.getBaseUrl());
@Test public void testWFSGetFeature() throws Exception { GetFeatureType gf = WfsFactory.eINSTANCE.createGetFeatureType(); org.opengis.filter.Filter f1 = parseFilter("BBOX(the_geom, 40, -90, 45, -60)"); org.opengis.filter.Filter f2 = parseFilter("BBOX(the_geom, 5988504.35,851278.90, 7585113.55,1950872.01)"); QueryType q = WfsFactory.eINSTANCE.createQueryType(); q.setTypeName(Arrays.asList(new QName("http://acme.org", "foo", "acme"))); q.setFilter(f1); gf.getQuery().add(q); q = WfsFactory.eINSTANCE.createQueryType(); q.setTypeName(Arrays.asList(new QName("http://acme.org", "bar", "acme"))); gf.getQuery().add(q);getClass(); q.setFilter(f2); Operation op = op("GetFeature", "WFS", "1.0.0", gf); callback.operationDispatched(new Request(), op); assertEquals("acme:foo", data.getResources().get(0)); assertEquals("acme:bar", data.getResources().get(1)); BoundingBox expected = new ReferencedEnvelope(53.73,40, -60,-95.1193,CRS.decode("EPSG:4326")); // xMin,yMin -95.1193,40 : xMax,yMax -60,53.73 BBoxAsserts.assertEqualsBbox(expected, data.getBbox(), 0.01); }
@Test public void testWFSGetFeature() throws Exception { GetFeatureType gf = WfsFactory.eINSTANCE.createGetFeatureType(); org.opengis.filter.Filter f1 = parseFilter("BBOX(the_geom, 40, -90, 45, -60)"); org.opengis.filter.Filter f2 = parseFilter("BBOX(the_geom, 5988504.35,851278.90, 7585113.55,1950872.01)"); QueryType q = WfsFactory.eINSTANCE.createQueryType(); q.setTypeName(Arrays.asList(new QName("http://acme.org", "foo", "acme"))); q.setFilter(f1); gf.getQuery().add(q); q = WfsFactory.eINSTANCE.createQueryType(); q.setTypeName(Arrays.asList(new QName("http://acme.org", "bar", "acme"))); gf.getQuery().add(q); getClass(); q.setFilter(f2); Operation op = op("GetFeature", "WFS", "1.0.0", gf); callback.operationDispatched(new Request(), op); assertEquals("acme:foo", data.getResources().get(0)); assertEquals("acme:bar", data.getResources().get(1)); BoundingBox expected = new ReferencedEnvelope(53.73, 40, -60, -95.1193, CRS.decode("EPSG:4326")); // xMin,yMin -95.1193,40 : xMax,yMax -60,53.73 BBoxAsserts.assertEqualsBbox(expected, data.getBbox(), 0.01); }
GetFeatureType getFeature = wfsfactory.createGetFeatureType();
@Test public void testOutputZipFileNameSpecifiedInFormatOptions() throws Exception { ShapeZipOutputFormat zip = new ShapeZipOutputFormat(getGeoServer(), getCatalog(), getResourceLoader()); FeatureCollectionResponse mockResult = FeatureCollectionResponse.adapt(WfsFactory.eINSTANCE.createFeatureCollectionType()); mockResult.getFeature().add(getFeatureSource(ALL_DOTS).getFeatures(Filter.INCLUDE)); GetFeatureType mockRequest = WfsFactory.eINSTANCE.createGetFeatureType(); Operation mockOperation = new Operation( "GetFeature", getServiceDescriptor10(), null, new Object[] {mockRequest}); assertEquals("All_Types_Dots.zip", zip.getAttachmentFileName(mockResult, mockOperation)); mockRequest.getFormatOptions().put("FILENAME", "REQUEST_SUPPLIED_FILENAME.zip"); assertEquals( "REQUEST_SUPPLIED_FILENAME.zip", zip.getAttachmentFileName(mockResult, mockOperation)); }
@Override protected void setUp() throws Exception { // the data source we'll use for the tests dataStore = new PropertyDataStore(new File("./src/test/java/org/geoserver/wfs/response")); // the output format (and let's add a few output formats to play with ogr = new Ogr2OgrOutputFormat(new GeoServerImpl()); ogr.addFormat(new OgrFormat("KML", "OGR-KML", ".kml", true, "application/vnd.google-earth.kml")); ogr.addFormat(new OgrFormat("KML", "OGR-KML-ZIP", ".kml", false, "application/vnd.google-earth.kml")); ogr.addFormat(new OgrFormat("CSV", "OGR-CSV", ".csv", true, "text/csv")); ogr.addFormat(new OgrFormat("SHP", "OGR-SHP", ".shp", false, null)); ogr.addFormat(new OgrFormat("MapInfo File", "OGR-MIF", ".mif", false, null, "-dsco", "FORMAT=MIF")); ogr.setOgrExecutable(Ogr2OgrTestUtil.getOgr2Ogr()); ogr.setGdalData(Ogr2OgrTestUtil.getGdalData()); // the EMF objects used to talk with the output format gft = WfsFactory.eINSTANCE.createGetFeatureType(); fct = WfsFactory.eINSTANCE.createFeatureCollectionType(); op = new Operation("GetFeature", new Service("WFS", null, new Version("1.0.0"), Arrays.asList("GetFeature")), null, new Object[] { gft }); }
@Before public void setUp() throws Exception { // check if we can run the tests Assume.assumeTrue(Ogr2OgrTestUtil.isOgrAvailable()); // the data source we'll use for the tests dataStore = new PropertyDataStore(new File("./src/test/java/org/geoserver/wfs/response")); // the output format (and let's add a few output formats to play with ogr = new Ogr2OgrOutputFormat(new GeoServerImpl(), new OGRWrapperFactory()); ogr.addFormat( new OgrFormat("KML", "OGR-KML", ".kml", true, "application/vnd.google-earth.kml")); ogr.addFormat( new OgrFormat( "KML", "OGR-KML-ZIP", ".kml", false, "application/vnd.google-earth.kml")); ogr.addFormat(new OgrFormat("CSV", "OGR-CSV", ".csv", true, "text/csv")); ogr.addFormat(new OgrFormat("SHP", "OGR-SHP", ".shp", false, null)); ogr.addFormat( new OgrFormat( "MapInfo File", "OGR-MIF", ".mif", false, null, "-dsco", "FORMAT=MIF")); ogr.setExecutable(Ogr2OgrTestUtil.getOgr2Ogr()); ogr.setEnvironment(Collections.singletonMap("GDAL_DATA", Ogr2OgrTestUtil.getGdalData())); // the EMF objects used to talk with the output format gft = WfsFactory.eINSTANCE.createGetFeatureType(); fct = WfsFactory.eINSTANCE.createFeatureCollectionType(); op = new Operation( "GetFeature", new Service("WFS", null, new Version("1.0.0"), Arrays.asList("GetFeature")), null, new Object[] {gft}); }