/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2011, 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.geoserver.wcs2_0.kvp; import java.util.HashMap; import java.util.Map; import net.opengis.wcs20.ExtensionItemType; import net.opengis.wcs20.GetCoverageType; import org.apache.commons.collections.map.CaseInsensitiveMap; import org.geoserver.config.GeoServer; import org.geoserver.ows.util.KvpUtils; import org.geoserver.wcs.WCSInfo; import org.geoserver.wcs.kvp.GetCoverageRequestReader; import org.geoserver.wcs2_0.WCSTestSupport; import org.geoserver.wcs2_0.WebCoverageService20; import org.geotools.wcs.v1_1.WCSConfiguration; import org.junit.Before; import org.opengis.coverage.grid.GridCoverage; /** * @author Simone Giannecchini, GeoSolutions SAS * */ public abstract class WCSKVPTestSupport extends WCSTestSupport { static final double EPS = 10 - 6; WCSConfiguration configuration; GetCoverageRequestReader kvpreader; WebCoverageService20 service; public WCSKVPTestSupport() { super(); } @SuppressWarnings("unchecked") protected GetCoverageType parse(String url) throws Exception { Map<String, Object> rawKvp = new CaseInsensitiveMap(KvpUtils.parseQueryString(url)); Map<String, Object> kvp = new CaseInsensitiveMap(parseKvp(rawKvp)); WCS20GetCoverageRequestReader reader = new WCS20GetCoverageRequestReader(); GetCoverageType gc = (GetCoverageType) reader.createRequest(); return (GetCoverageType) reader.read(gc, kvp, rawKvp); } protected Map<String, Object> getExtensionsMap(GetCoverageType gc) { // collect extensions Map<String, Object> extensions = new HashMap<String, Object>(); for (ExtensionItemType item : gc.getExtension().getContents()) { Object value = item.getSimpleContent() != null ? item.getSimpleContent() : item.getObjectContent(); extensions.put(item.getNamespace() + ":" + item.getName(), value); } return extensions; } /** * Runs GetCoverage on the specified parameters and returns an array of coverages */ protected GridCoverage executeGetCoverage(String url) throws Exception { GridCoverage coverage = service.getCoverage(parse(url)); super.scheduleForCleaning(coverage); return coverage; } protected void setInputLimit(int kbytes) { GeoServer gs = getGeoServer(); WCSInfo info = gs.getService(WCSInfo.class); info.setMaxInputMemory(kbytes); gs.save(info); } protected void setOutputLimit(int kbytes) { GeoServer gs = getGeoServer(); WCSInfo info = gs.getService(WCSInfo.class); info.setMaxOutputMemory(kbytes); gs.save(info); } @Before public void setup() { kvpreader = (GetCoverageRequestReader) applicationContext.getBean("wcs111GetCoverageRequestReader"); service = (WebCoverageService20) applicationContext.getBean("wcs20ServiceTarget"); configuration = new WCSConfiguration(); } }