Fixes from trial guide testing

* Heritrix.java
    fail-fast with helpful error message if launched with Java < 1.6
* EditRepresentation.java
    "save changes" rather than "update content"
* EngineApplication.java
    customize restlet error to include back-button and full stack (instead of link to HTTP spec!)
This commit is contained in:
gojomo committed 2009-06-10 22:31:44 +00:00
1 parent 27783e87ab
commit ecd93ae458
3 files changed
+49 -1

No files matched your search

@@ -188,6 +188,17 @@ public class Heritrix {
public void instanceMain(String[] args)
throws Exception {
// ensure using java 1.6+ before hitting a later cryptic error
String version = System.getProperty("java.version");
float floatVersion = Float.valueOf(version.substring(0,version.indexOf('.',2)));
if(floatVersion<1.6) {
System.err.println("Heritrix (as of version 3) requires Java 1.6 or higher.");
System.err.println("You attempted to launch with: "+version);
System.err.println("Please try again with a later Java.");
System.exit(1);
}
// Set some system properties early.
// Can't use class names here without loading them.
String ignoredSchemes = "org.archive.net.UURIFactory.ignored-schemes";
@@ -63,7 +63,8 @@ public class EditRepresentation extends CharacterRepresentation {
PrintWriter pw = new PrintWriter(writer);
Flash.renderFlashesHTML(pw, dirResource.getRequest());
pw.println("<form method='POST'>");
pw.println("<input type='submit' value='update contents'/>");
// TODO: enable button on after changes made
pw.println("<input type='submit' value='save changes'/>");
pw.println(fileRepresentation.getFile());
Reference viewRef = dirResource.getRequest().getOriginalRef().clone();
viewRef.setQuery(null);
@@ -20,6 +20,8 @@
package org.archive.crawler.restlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.archive.crawler.framework.Engine;
import org.archive.util.TextUtils;
@@ -31,6 +33,11 @@ import org.restlet.Router;
import org.restlet.data.MediaType;
import org.restlet.data.Reference;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.data.Status;
import org.restlet.resource.Representation;
import org.restlet.resource.StringRepresentation;
import org.restlet.service.StatusService;
import org.restlet.util.Template;
/**
@@ -46,6 +53,7 @@ public class EngineApplication extends Application {
this.engine = engine;
getMetadataService().addExtension("log", MediaType.TEXT_PLAIN );
getMetadataService().addExtension("cxml", MediaType.APPLICATION_XML );
setStatusService(new EngineStatusService());
}
public synchronized Restlet createRoot() {
@@ -95,4 +103,32 @@ public class EngineApplication extends Application {
public Engine getEngine() {
return engine;
}
/**
* Customize Restlet error to include back button and full stack.
*/
protected class EngineStatusService extends StatusService {
@Override
public Representation getRepresentation(Status status, Request request, Response response) {
StringWriter st = new StringWriter();
PrintWriter pw = new PrintWriter(st);
pw.append("<h1>An error occured</h1>\n");
pw.append(
"You may be able to recover and try something " +
"else by going <a href='javascript:history.back();void(0);'>" +
"back</a>.\n");
if(status.getThrowable()!=null) {
pw.append("<h2>Cause: "+
status.getThrowable().toString()+"</h2>\n");
pw.append("<pre>");
status.getThrowable().printStackTrace(pw);
pw.append("</pre>");
}
pw.flush();
return new StringRepresentation(st.toString(),MediaType.TEXT_HTML);
}
}
}