package org.geoserver.python.app;
import java.io.File;
import java.io.IOException;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geoserver.python.Python;
import org.geoserver.rest.RestletException;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.data.Status;
import org.restlet.resource.Resource;
public class PythonAppFinder extends PythonFinder {
public PythonAppFinder(Python jython, GeoServerResourceLoader resourceLoader) {
super(jython, resourceLoader);
}
@Override
public Resource findTarget(Request request, Response response) {
String app = (String) request.getAttributes().get("app") + ".py";
if (app == null) {
return new PythonListResource(jython, request, response);
}
File pyapp;
try {
pyapp = resourceLoader.find(jython.getAppRoot(), app);
} catch (IOException e) {
throw new RestletException("Error loading app " + app,
Status.SERVER_ERROR_INTERNAL, e);
}
if (pyapp == null) {
throw new RestletException("No such app " + app, Status.CLIENT_ERROR_NOT_FOUND);
}
return new PythonAppResource(jython, pyapp, request, response);
}
}