/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.geoserver.test.ows; import org.geoserver.ows.KvpParser; import org.geoserver.ows.KvpRequestReader; import org.geoserver.ows.util.CaseInsensitiveMap; import org.geoserver.platform.GeoServerExtensions; import org.geoserver.test.GeoServerTestSupport; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /** * Test class for testing instances of {@link KvpRequestReader}. * <p> * The {@link #parseKvp(Map)} method of this class sets up a kvp map and parses it * by processing instances of {@link KvpParser} in the application context. * </p> * * @author Justin Deoliveira, The Open Planning Project, jdeolive@openplans.org * */ public abstract class KvpRequestReaderTestSupport extends GeoServerTestSupport { /** * Parses a raw set of kvp's into a parsed set of kvps. * * @param kvp Map of String,String. */ protected Map parseKvp(Map /*<String,String>*/ raw) throws Exception { //parse the raw values List parsers = GeoServerExtensions.extensions(KvpParser.class, applicationContext); Map kvp = new CaseInsensitiveMap(new HashMap()); for (Iterator e = raw.entrySet().iterator(); e.hasNext();) { Map.Entry entry = (Map.Entry) e.next(); String key = (String) entry.getKey(); String val = (String) entry.getValue(); Object parsed = null; for (Iterator p = parsers.iterator(); p.hasNext();) { KvpParser parser = (KvpParser) p.next(); if (key.equalsIgnoreCase(parser.getKey())) { parsed = parser.parse(val); if (parsed != null) { break; } } } if (parsed == null) { parsed = val; } kvp.put(key, parsed); } return kvp; } }