/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.sld;
import org.picocontainer.MutablePicoContainer;
import org.geotools.filter.v1_0.OGCConfiguration;
import org.geotools.sld.bindings.SLD;
import org.geotools.sld.bindings.SLDAnchorPointBinding;
import org.geotools.sld.bindings.SLDChannelSelectionBinding;
import org.geotools.sld.bindings.SLDColorMapBinding;
import org.geotools.sld.bindings.SLDColorMapEntryBinding;
import org.geotools.sld.bindings.SLDContrastEnhancementBinding;
import org.geotools.sld.bindings.SLDCssParameterBinding;
import org.geotools.sld.bindings.SLDDisplacementBinding;
import org.geotools.sld.bindings.SLDExtentBinding;
import org.geotools.sld.bindings.SLDExternalGraphicBinding;
import org.geotools.sld.bindings.SLDFeatureTypeConstraintBinding;
import org.geotools.sld.bindings.SLDFeatureTypeStyleBinding;
import org.geotools.sld.bindings.SLDFillBinding;
import org.geotools.sld.bindings.SLDFontBinding;
import org.geotools.sld.bindings.SLDGeometryBinding;
import org.geotools.sld.bindings.SLDGraphicBinding;
import org.geotools.sld.bindings.SLDGraphicFillBinding;
import org.geotools.sld.bindings.SLDGraphicStrokeBinding;
import org.geotools.sld.bindings.SLDHaloBinding;
import org.geotools.sld.bindings.SLDImageOutlineBinding;
import org.geotools.sld.bindings.SLDLabelPlacementBinding;
import org.geotools.sld.bindings.SLDLayerFeatureConstraintsBinding;
import org.geotools.sld.bindings.SLDLegendGraphicBinding;
import org.geotools.sld.bindings.SLDLinePlacementBinding;
import org.geotools.sld.bindings.SLDLineSymbolizerBinding;
import org.geotools.sld.bindings.SLDMarkBinding;
import org.geotools.sld.bindings.SLDNamedLayerBinding;
import org.geotools.sld.bindings.SLDNamedStyleBinding;
import org.geotools.sld.bindings.SLDOnlineResourceBinding;
import org.geotools.sld.bindings.SLDOverlapBehaviorBinding;
import org.geotools.sld.bindings.SLDParameterValueTypeBinding;
import org.geotools.sld.bindings.SLDPerpendicularOffsetBinding;
import org.geotools.sld.bindings.SLDPointPlacementBinding;
import org.geotools.sld.bindings.SLDPointSymbolizerBinding;
import org.geotools.sld.bindings.SLDPolygonSymbolizerBinding;
import org.geotools.sld.bindings.SLDRasterSymbolizerBinding;
import org.geotools.sld.bindings.SLDRemoteOWSBinding;
import org.geotools.sld.bindings.SLDRuleBinding;
import org.geotools.sld.bindings.SLDSelectedChannelTypeBinding;
import org.geotools.sld.bindings.SLDShadedReliefBinding;
import org.geotools.sld.bindings.SLDStrokeBinding;
import org.geotools.sld.bindings.SLDStyledLayerDescriptorBinding;
import org.geotools.sld.bindings.SLDSymbolizerBinding;
import org.geotools.sld.bindings.SLDSymbolizerTypeBinding;
import org.geotools.sld.bindings.SLDTextSymbolizerBinding;
import org.geotools.sld.bindings.SLDUserLayerBinding;
import org.geotools.sld.bindings.SLDUserStyleBinding;
import org.geotools.sld.bindings.SLDVendorOptionBinding;
import org.geotools.styling.StyleFactory;
import org.geotools.styling.StyleFactoryImpl;
import org.geotools.xml.Configuration;
import org.geotools.xml.Parser;
/**
* Parser configuration for the Styled Layer Descriptor schema.
*
* @author Justin Deoliveira, The Open Planning Project
*
*
*
* @source $URL$
*/
public class SLDConfiguration extends Configuration {
/**
* Adds a dependency on {@link OGCConfiguration}
*/
public SLDConfiguration() {
super(SLD.getInstance());
addDependency(new OGCConfiguration());
}
protected void registerBindings(MutablePicoContainer container) {
//Types
container.registerComponentImplementation(SLD.PARAMETERVALUETYPE,
SLDParameterValueTypeBinding.class);
container.registerComponentImplementation(SLD.SELECTEDCHANNELTYPE,
SLDSelectedChannelTypeBinding.class);
container.registerComponentImplementation(SLD.SYMBOLIZERTYPE, SLDSymbolizerTypeBinding.class);
//Elements
container.registerComponentImplementation(SLD.ANCHORPOINT, SLDAnchorPointBinding.class);
container.registerComponentImplementation(SLD.CHANNELSELECTION,
SLDChannelSelectionBinding.class);
container.registerComponentImplementation(SLD.COLORMAP, SLDColorMapBinding.class);
container.registerComponentImplementation(SLD.COLORMAPENTRY, SLDColorMapEntryBinding.class);
container.registerComponentImplementation(SLD.CONTRASTENHANCEMENT,
SLDContrastEnhancementBinding.class);
container.registerComponentImplementation(SLD.CSSPARAMETER, SLDCssParameterBinding.class);
container.registerComponentImplementation(SLD.DISPLACEMENT, SLDDisplacementBinding.class);
container.registerComponentImplementation(SLD.EXTENT, SLDExtentBinding.class);
container.registerComponentImplementation(SLD.EXTERNALGRAPHIC,
SLDExternalGraphicBinding.class);
container.registerComponentImplementation(SLD.FEATURETYPECONSTRAINT,
SLDFeatureTypeConstraintBinding.class);
container.registerComponentImplementation(SLD.FEATURETYPESTYLE,
SLDFeatureTypeStyleBinding.class);
container.registerComponentImplementation(SLD.FILL, SLDFillBinding.class);
container.registerComponentImplementation(SLD.FONT, SLDFontBinding.class);
container.registerComponentImplementation(SLD.GEOMETRY, SLDGeometryBinding.class);
container.registerComponentImplementation(SLD.GRAPHIC, SLDGraphicBinding.class);
container.registerComponentImplementation(SLD.GRAPHICFILL, SLDGraphicFillBinding.class);
container.registerComponentImplementation(SLD.GRAPHICSTROKE, SLDGraphicStrokeBinding.class);
container.registerComponentImplementation(SLD.HALO, SLDHaloBinding.class);
container.registerComponentImplementation(SLD.IMAGEOUTLINE, SLDImageOutlineBinding.class);
container.registerComponentImplementation(SLD.LABELPLACEMENT, SLDLabelPlacementBinding.class);
container.registerComponentImplementation(SLD.LAYERFEATURECONSTRAINTS,
SLDLayerFeatureConstraintsBinding.class);
container.registerComponentImplementation(SLD.LEGENDGRAPHIC, SLDLegendGraphicBinding.class);
container.registerComponentImplementation(SLD.LINEPLACEMENT, SLDLinePlacementBinding.class);
container.registerComponentImplementation(SLD.LINESYMBOLIZER, SLDLineSymbolizerBinding.class);
container.registerComponentImplementation(SLD.MARK, SLDMarkBinding.class);
container.registerComponentImplementation(SLD.NAMEDLAYER, SLDNamedLayerBinding.class);
container.registerComponentImplementation(SLD.NAMEDSTYLE, SLDNamedStyleBinding.class);
container.registerComponentImplementation(SLD.ONLINERESOURCE, SLDOnlineResourceBinding.class);
container.registerComponentImplementation(SLD.OVERLAPBEHAVIOR,
SLDOverlapBehaviorBinding.class);
container.registerComponentImplementation(SLD.PERPENDICULAROFFSET,
SLDPerpendicularOffsetBinding.class);
container.registerComponentImplementation(SLD.POINTPLACEMENT, SLDPointPlacementBinding.class);
container.registerComponentImplementation(SLD.POINTSYMBOLIZER,
SLDPointSymbolizerBinding.class);
container.registerComponentImplementation(SLD.POLYGONSYMBOLIZER,
SLDPolygonSymbolizerBinding.class);
container.registerComponentImplementation(SLD.RASTERSYMBOLIZER,
SLDRasterSymbolizerBinding.class);
container.registerComponentImplementation(SLD.REMOTEOWS, SLDRemoteOWSBinding.class);
container.registerComponentImplementation(SLD.RULE, SLDRuleBinding.class);
container.registerComponentImplementation(SLD.SHADEDRELIEF, SLDShadedReliefBinding.class);
container.registerComponentImplementation(SLD.STROKE, SLDStrokeBinding.class);
container.registerComponentImplementation(SLD.STYLEDLAYERDESCRIPTOR,
SLDStyledLayerDescriptorBinding.class);
container.registerComponentImplementation(SLD.SYMBOLIZER, SLDSymbolizerBinding.class);
container.registerComponentImplementation(SLD.TEXTSYMBOLIZER, SLDTextSymbolizerBinding.class);
container.registerComponentImplementation(SLD.USERLAYER, SLDUserLayerBinding.class);
container.registerComponentImplementation(SLD.USERSTYLE, SLDUserStyleBinding.class);
container.registerComponentImplementation(SLD.VENDOROPTION, SLDVendorOptionBinding.class);
}
/**
* Configures the sld context.
* <p>
* The following factories are registered:
* <ul>
* <li>{@link StyleFactoryImpl.class} under {@link StyleFactory.class}
* </ul>
* </p>
*/
protected void configureContext(MutablePicoContainer container) {
super.configureContext(container);
container.registerComponentImplementation(StyleFactory.class, StyleFactoryImpl.class);
}
@Override
protected void configureParser(Parser parser) {
parser.setHandleMixedContent(true);
}
}