/* (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.rest.catalog;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Collections;
import java.util.Map;
import org.geoserver.rest.converters.BaseMessageConverter;
import org.geoserver.rest.util.MediaTypeExtensions;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.stereotype.Component;
import net.sf.json.JSONObject;
/**
* Convert a named {@link StringsList} to JSON.
*/
@Component
public class StringsListJSONConverter extends BaseMessageConverter<StringsList> {
public StringsListJSONConverter() {
super(MediaType.APPLICATION_JSON, MediaTypeExtensions.TEXT_JSON);
}
@Override
protected boolean supports(Class<?> clazz) {
return StringsList.class.isAssignableFrom(clazz);
}
//
// Reading
//
@Override
protected boolean canRead(MediaType mediaType) {
return false;
}
//
// writing
//
@Override
public void writeInternal(StringsList stringsList, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
Map<String, Object> values = Collections.singletonMap("list",
Collections.singletonMap("string", stringsList.getValues()));
Writer outWriter = new BufferedWriter(new OutputStreamWriter(outputMessage.getBody()));
JSONObject.fromObject(values).write(outWriter);
outWriter.flush();
outWriter.close();
}
}