/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.opensearch.eo; import java.util.List; import org.geoserver.catalog.Keyword; import org.geoserver.catalog.KeywordInfo; import org.geoserver.config.GeoServer; import org.geoserver.config.util.XStreamPersister; import org.geoserver.config.util.XStreamServiceLoader; import org.geoserver.platform.GeoServerResourceLoader; import org.geotools.metadata.iso.identification.KeywordsImpl; import com.thoughtworks.xstream.XStream; /** * Loads the OpenSearch EO configuration from XML * * @author Andrea Aime - GeoSolutions */ public class OSEOXStreamLoader extends XStreamServiceLoader<OSEOInfo> { public OSEOXStreamLoader(GeoServerResourceLoader resourceLoader) { super(resourceLoader, "oseo"); } public Class<OSEOInfo> getServiceClass() { return OSEOInfo.class; } protected OSEOInfo createServiceFromScratch(GeoServer gs) { OSEOInfo oseo = new OSEOInfoImpl(); oseo.setName("OSEO"); oseo.setAbstract("Provides interoperable access, following ISO/OGC interface guidelines, to Earth Observation metadata."); oseo.setTitle("OpenSearch for Earth Observation"); oseo.setMaximumRecordsPerPage(OSEOInfo.DEFAULT_MAXIMUM_RECORDS); oseo.setRecordsPerPage(OSEOInfo.DEFAULT_RECORDS_PER_PAGE); final List<KeywordInfo> keywords = oseo.getKeywords(); keywords.add(new Keyword("EarthObservation")); keywords.add(new Keyword("OGC")); return oseo; } @Override protected void initXStreamPersister(XStreamPersister xp, GeoServer gs) { super.initXStreamPersister(xp, gs); initXStreamPersister(xp); } /** * Sets up aliases and allowed types for the xstream persister * * @param xs */ public static void initXStreamPersister(XStreamPersister xp) { XStream xs = xp.getXStream(); xs.alias("oseo", OSEOInfo.class, OSEOInfoImpl.class); } @Override protected OSEOInfo initialize(OSEOInfo service) { super.initialize(service); if (!service.getVersions().contains(OSEOInfo.VERSION_1_0_0)) { service.getVersions().add(OSEOInfo.VERSION_1_0_0); } return service; } }