CSS Translator is unable to extract scale range if rule has more than two OR’d filter.
/*
* @title Restricted area
* @abstract Restricted area layer
*/
restricted [cat='2'],[cat='3'],[cat='4'] [@scale <= 200000] [@scale > 100000] {
fill: #EE0000;
}
Reproduce with style above on the default “sf:restricted” dataset and submit/validate or upload via REST. Exception:
java.lang.IllegalArgumentException: Failed to extract scale range from: Or [children=[And [children=[TypeName [name=restricted], OGCFilter [filter=cat = '3']]], And [children=[TypeName [name=restricted], ScaleRange [100000.0, 200000.0), OGCFilter [filter=cat = '4']]]]]
at org.geotools.styling.css.util.ScaleRangeExtractor.getScaleRange(ScaleRangeExtractor.java:56)
at org.geotools.styling.css.CssTranslator.flattenScaleRanges(CssTranslator.java:424)
at org.geotools.styling.css.CssTranslator.translate(CssTranslator.java:290)
at org.geoserver.community.css.web.CssHandler.convertToSLD(CssHandler.java:101)
at org.geoserver.community.css.web.CssHandler.parse(CssHandler.java:75)
at org.geoserver.config.GeoServerDataDirectory.parsedStyle(GeoServerDataDirectory.java:1248)
at org.geoserver.catalog.ResourcePool.getStyle(ResourcePool.java:1722)
at org.geoserver.catalog.impl.StyleInfoImpl.getStyle(StyleInfoImpl.java:102)
at sun.reflect.GeneratedMethodAccessor225.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:146)
at com.sun.proxy.$Proxy12.getStyle(Unknown Source)
at org.geoserver.wms.map.GetMapKvpRequestReader.getDefaultStyle(GetMapKvpRequestReader.java:499)
at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:361)
at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:83)
at org.geoserver.ows.Dispatcher.parseRequestKVP(Dispatcher.java:1487)
at org.geoserver.ows.Dispatcher.dispatch(Dispatcher.java:675)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:270)
... 89 more
|