StyledLayerDescriptor parse10( Object input, ResourceLocator resourceLocator, EntityResolver entityResolver) throws IOException { Reader reader = null; try { // we need to close the reader if we grab one, but if it's a file it has // to stay as such to allow relative resource resolution during the parse if (!(input instanceof File)) { reader = toReader(input); input = reader; } SLDParser p = createSld10Parser(input, resourceLocator, entityResolver); StyledLayerDescriptor sld = p.parseSLD(); if (sld.getStyledLayers().length == 0) { // most likely a style that is not a valid sld, try to actually parse out a // style and then wrap it in an sld Style[] style = p.readDOM(); if (style.length > 0) { NamedLayer l = styleFactory.createNamedLayer(); l.addStyle(style[0]); sld.addStyledLayer(l); } } return sld; } finally { IOUtils.closeQuietly(reader); } }
private Style getStyle(final String styleName) { Style style = STYLES.get(styleName); if (style == null) { StyleFactory styleFactory = CommonFactoryFinder.getStyleFactory(GeoTools.getDefaultHints()); SLDParser parser = new SLDParser(styleFactory); try { parser.setInput(getClass().getResource(styleName)); } catch (IOException e) { throw new RuntimeException(e); } StyledLayerDescriptor sld = parser.parseSLD(); UserLayer layer = (UserLayer) sld.getStyledLayers()[0]; style = layer.getUserStyles()[0]; STYLES.put(styleName, style); } return style; }