/* (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.monitor.rest;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import org.geoserver.monitor.Monitor;
import org.geoserver.monitor.Query;
import org.geoserver.monitor.RequestData;
import org.geoserver.monitor.RequestDataVisitor;
import org.geoserver.platform.ExtensionPriority;
import org.geoserver.rest.converters.BaseMessageConverter;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
/**
* Base class for monitor requests converters, handles visiting results.
*/
public abstract class BaseMonitorConverter extends BaseMessageConverter<MonitorQueryResults> {
protected BaseMonitorConverter(MediaType... mediaType) {
super(mediaType);
}
@Override
protected boolean supports(Class<?> clazz) {
return MonitorQueryResults.class.isAssignableFrom(clazz);
}
@Override
protected boolean canRead(MediaType mediaType) {
return false;
}
@SuppressWarnings("unchecked")
static void handleRequests(Object object, RequestDataVisitor visitor, Monitor monitor) {
if (object instanceof Query) {
monitor.query((Query) object, visitor);
} else {
List<RequestData> requests;
if (object instanceof List) {
requests = (List<RequestData>) object;
} else {
requests = Collections.singletonList((RequestData) object);
}
for (RequestData data : requests) {
visitor.visit(data, (Object[]) null);
}
}
}
}