/* (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.kvp; import java.util.Map; import org.geoserver.opensearch.eo.MetadataRequest; import org.geoserver.platform.OWS20Exception; /** * Reads a "metadata" request * * @author Andrea Aime - GeoSolutions */ public class MetadataRequestKvpReader extends AbstractProductRequestKvpReader { public MetadataRequestKvpReader() { super(MetadataRequest.class, false); } @Override public Object read(Object request, Map kvp, Map rawKvp) throws Exception { MetadataRequest mr = (MetadataRequest) super.read(request, kvp, rawKvp); // check httpAccept if (mr.getParentId() == null) { assertHttpAccept(mr, MetadataRequest.ISO_METADATA); } else { assertHttpAccept(mr, MetadataRequest.OM_METADATA); } return mr; } private void assertHttpAccept(MetadataRequest request, String expectedMime) { // be nice and default the value if (request.getHttpAccept() == null) { request.setHttpAccept(expectedMime); } else if (!expectedMime.equals(request.getHttpAccept())) { throw new OWS20Exception( "Unexpected value for httpAccept '" + request.getHttpAccept() + "', in this context it must be " + expectedMime, OWS20Exception.OWSExceptionCode.InvalidParameterValue, "httpAccept"); } } }