WFS and uDIG IllegalArgumentException

Paul Ramsey pramsey at REFRACTIONS.NET
Tue Aug 8 19:39:47 EDT 2006


We've been doing WFS cleanups for the last while, and have fixed a large 
number of issues, and also found others:

- Our WFS support is much stronger in the ongoing 1.1RC series than in 1.0
- The Mapserver WFS support does some illegal things in versions prior 
to 4.8, which makes support spotty for ealier versions (some feature 
types work, others don't, some things work depending on the kind of 
backend you have, others don't, etc).

The sad truth about WFS so far is that it seems to be quite hard for WFS 
servers to obey the schema/instance contract... they advertise different 
things in the DescribeFeatureType schema than they actually provide in 
the GetFeature instance.  We have been turning these kinds of things up 
in commercial WFS servers too -- a complex specification takes no prisoners.

P.

Ryan Ollerenshaw wrote:
> When trying to add a Web Feature Server to uDIG i am getting a 
> IllegalArgumentException.
> 
> when i post the same URL into the web browser the XML document that is 
> returned looks just fine, no warnings.
> any ideas on what the problem could be, i havent seen anything posted 
> anywhere saying that uDIG has any problems with WFS.  I can dispaly the 
> same features just fine in uDIG using a WMS
> 
> the URL
> http://neuron/cgi-bin/mapserv?map=../html/mapserver/htdocs/wfs_service.map&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=hrsc_nd& 
> 
> 
> The error:
> java.lang.IllegalArgumentException:
>    at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:58)
>    at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:42)
>    at org.eclipse.core.runtime.Status.setMessage(Status.java:174)
>    at org.eclipse.core.runtime.Status.<init>(Status.java:81)
>    at 
> net.refractions.udig.catalog.internal.wfs.WfsPlugin.log(WfsPlugin.java:110)
>    at 
> net.refractions.udig.catalog.internal.wfs.UDIGWFSDataStoreFactory.createNewDataStore(UDIGWFSDataStoreFactory.java:96) 
> 
>    at 
> org.geotools.data.wfs.WFSDataStoreFactory.createDataStore(WFSDataStoreFactory.java:108) 
> 
>    at 
> net.refractions.udig.catalog.internal.wfs.WFSServiceImpl.getDS(WFSServiceImpl.java:143) 
> 
>    at 
> net.refractions.udig.catalog.internal.wfs.WFSServiceImpl.members(WFSServiceImpl.java:95) 
> 
>    at 
> net.refractions.udig.catalog.internal.ui.ConnectionPage$1.run(ConnectionPage.java:133) 
> 
>    at 
> org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:346) 
> 
>    at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:291)
>    at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:830)
>    at 
> net.refractions.udig.catalog.internal.ui.ConnectionPage.getNextPage(ConnectionPage.java:147) 
> 
>    at 
> org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:747)
>    at 
> org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:345)
>    at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:556)
>    at 
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
>    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
>    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
>    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3125)
>    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2758)
>    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
>    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
>    at 
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
>    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
>    at 
> net.refractions.udig.internal.ui.UDIGApplication.run(UDIGApplication.java:28) 
> 
>    at 
> org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226) 
> 
>    at 
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376) 
> 
>    at 
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163) 
> 
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>    at java.lang.reflect.Method.invoke(Unknown Source)
>    at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
>    at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
>    at org.eclipse.core.launcher.Main.run(Main.java:973)
>    at org.eclipse.core.launcher.Main.main(Main.java:948)
> 
> The MapFile:
> MAP
>  IMAGETYPE PNG
>  EXTENT -180 -90 180 90
>  #EXTENT -350878.81 -9890271.86 350878.81 9890271.86
>  SIZE 600 500
>  SHAPEPATH "../my_data/"
> 
>  IMAGECOLOR 255 255 255
> 
>  WEB
>    IMAGEPATH "/tmp/ms_tmp/"
>    IMAGEURL "/ms_tmp/"
>    METADATA
>      wfs_title "WFS test"
>      wfs_name "WFS test"
>      wfs_srs "EPSG:4326"
>      wfs_onlineresourc 
> "http://localhost/cgi-bin/mapserv?map=../html/mapserver/htdocs/wfs_service.map&" 
> 
>    END
>  END
> 
>  PROJECTION
>    "init=epsg:4326"
>  END
> 
> LAYER
>  NAME "hrsc_nd"
>  #STATUS DEFAULT
>  STATUS off
>  TYPE POLYGON
> PROJECTION
>    "init=epsg:4326"
>  END
> DUMP TRUE
>  CONNECTIONTYPE POSTGIS
>  CONNECTION "host=localhost dbname=mars_db user=postgres"
>  DATA "the_geom FROM hrsc0001_footprints_sep05_nd"
>  METADATA
>    wfs_title "hrsc_nd"
>    wfs_srs "EPSG:4326"
>    wfs_onlineresourc 
> "http://localhost/cgi-bin/mapserv?map=../html/mapserver/htdocs/wfs_service.map&" 
> 
>    gml_include_items "all"  ## Optional (serves all attributes for 
> layer)  END
>  CLASS
>    NAME "hrsc_nd"
>    STYLE
>      COLOR 200 255 0
>      OUTLINECOLOR 120 120 120
>    END
>  END
> END  # layer
> 
> 
> 
> 
> 
> END # of map file



More information about the mapserver-users mailing list