/* (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.AbstractProductRequest; import org.geoserver.ows.KvpRequestReader; import org.geoserver.platform.OWS20Exception; /** * Reads a generic product request * * @author Andrea Aime - GeoSolutions */ public abstract class AbstractProductRequestKvpReader extends KvpRequestReader { private boolean parentIdRequired; public AbstractProductRequestKvpReader(Class requestBean, boolean parentIdRequired) { super(requestBean); this.parentIdRequired = parentIdRequired; } @Override public Object read(Object request, Map kvp, Map rawKvp) throws Exception { AbstractProductRequest apr = (AbstractProductRequest) super.read(request, kvp, rawKvp); // map uid String uid = (String) rawKvp.get("uid"); if (uid == null) { throw new OWS20Exception("Missing mandatory uid parameter", OWS20Exception.OWSExceptionCode.MissingParameterValue, "uid"); } apr.setId(uid); // check parentId if required if (parentIdRequired && apr.getParentId() == null) { throw new OWS20Exception("Missing mandatory parentId parameter", OWS20Exception.OWSExceptionCode.MissingParameterValue, "parentId"); } return apr; } }