/* (c) 2016 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.wms.ncwms;
import java.util.Map;
import org.geoserver.ows.AbstractDispatcherCallback;
import org.geoserver.ows.Request;
import org.geoserver.platform.Service;
import org.geoserver.platform.ServiceException;
/**
* Hook to replace the service when the GetTimeSeries operation is requested
*/
public class NcWmsServiceCallback extends AbstractDispatcherCallback {
private NcWmsService service;
public NcWmsServiceCallback(final NcWmsService service) {
this.service = service;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public Service serviceDispatched(Request request, Service service) throws ServiceException {
Object req = request.getKvp().get("REQUEST");
if ("wms".equals(service.getId().toLowerCase())
&& NcWmsService.GET_TIME_SERIES_REQUEST.equals(req)) {
/*
* HACK: we are using GetFeatureInfoRequest and GetFeatureInfoKvpReader for parsing a GetTimeSeries. As the valid INFO_FORMATs are
* different, we need to fool the GetFeatureInfoKvpReader
*/
Map kvp = request.getKvp();
String requestedFormat = (String) kvp.get("INFO_FORMAT");
kvp.put("INFO_FORMAT", "text/plain");
kvp.put(NcWmsService.TIME_SERIES_INFO_FORMAT_PARAM_NAME, requestedFormat);
return new Service(service.getId(), this.service, service.getVersion(),
service.getOperations());
}
return service;
}
}