package org.geoserver.rest.upload;
import net.sf.json.JSON;
import net.sf.json.JSONNull;
import net.sf.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
/**
* The JSONFilter class implements an upload filter which refuses files that are not valid JSON.
* The mimetype is matched against a regular expression, modifiable via the setMimePattern() method.
*
* @author David Winslow <dwinslow@opengeo.org>
*/
public class JSONFilter implements UploadFilter {
public boolean filter(String contentType, File file) throws IOException {
JSONObject json = parseStream(new FileInputStream(file));
return json != null && !json.isNullObject() && !json.isEmpty();
}
private JSONObject parseStream(InputStream stream) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
return JSONObject.fromObject(builder.toString());
} catch (Exception e) {
// todo: logging here
e.printStackTrace();
}
return null;
}
}