/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.config.util; import java.util.List; import java.util.Map; import org.geoserver.catalog.MetadataLinkInfo; import org.geoserver.config.GeoServer; import org.geoserver.config.ServiceInfo; /** * Extension point for loading services from the services.xml file. * <p> * Instances of this class are registered in a spring context: * <pre> * <bean id="org.geoserver.wfs.WFSLoader"/> * </pre> * </p> * * @author Justin Deoliveira, The Open Planning Project * */ public abstract class ServiceLoader { /** * Creates the service configuration object. * * @param reader The services.xml reader. * */ abstract public ServiceInfo load( LegacyServicesReader reader, GeoServer geoServer ) throws Exception; /** * Reads all the common attributes from the service info class. * <p> * This method is intended to be called by subclasses after creating an * instance of ServiceInfo. Example: * <pre> * // read properties * Map<String,Object> props = reader.wfs(); * * // create config object * WFSInfo wfs = new WFSInfoImpl(); * * //load common properties * load( wfs, reader ); * * //load wfs specific properties * wfs.setServiceLevel( map.get( "serviceLevel") ); * ... * </pre> * </p> */ protected void load( ServiceInfo service, Map<String,Object> properties, GeoServer gs) throws Exception { service.setEnabled( (Boolean) properties.get( "enabled") ); service.setName( (String) properties.get( "name") ); service.setTitle( (String) properties.get( "title") ); service.setAbstract( (String) properties.get( "abstract") ); Map metadataLink = (Map) properties.get("metadataLink"); if ( metadataLink != null ) { MetadataLinkInfo ml = gs.getCatalog().getFactory().createMetadataLink(); ml.setAbout( (String) metadataLink.get( "about" ) ); ml.setMetadataType( (String) metadataLink.get( "metadataType" ) ); ml.setType( (String) metadataLink.get( "type" ) ); service.setMetadataLink( ml ); } List keywords = (List) properties.get( "keywords" ); if ( keywords != null ) { service.getKeywords().addAll( keywords ); } service.setOnlineResource( (String) properties.get( "onlineResource" ) ); service.setFees( (String) properties.get( "fees" ) ); service.setAccessConstraints( (String) properties.get( "accessConstraints" ) ); service.setCiteCompliant((Boolean)properties.get( "citeConformanceHacks")); service.setMaintainer((String)properties.get( "maintainer" ) ); service.setSchemaBaseURL((String)properties.get("SchemaBaseUrl")); } }