aboutsummaryrefslogtreecommitdiff
path: root/src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java')
-rw-r--r--src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java52
1 files changed, 45 insertions, 7 deletions
diff --git a/src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java b/src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java
index c9b70de..8b41fe4 100644
--- a/src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java
+++ b/src/batchtools/headless/src/main/java/com/galois/fiveui/HeadlessRunDescription.java
@@ -24,8 +24,10 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
+import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
+import com.google.gson.JsonSyntaxException;
/**
* @author bjones
@@ -36,6 +38,7 @@ public class HeadlessRunDescription {
private static Logger logger = Logger.getLogger("com.galois.fiveui.HeadlessRunDescription");
private static String _crawlType;
private List<HeadlessAtom> _atoms;
+ private static String _firefoxProfile;
public HeadlessRunDescription (List<HeadlessAtom> atoms) {
_atoms = atoms;
@@ -58,12 +61,28 @@ public class HeadlessRunDescription {
*/
public static HeadlessRunDescription parse(String runDescFileName)
throws FileNotFoundException {
- GsonBuilder gsonBuilder = new GsonBuilder();
- gsonBuilder.registerTypeAdapter(HeadlessRunDescription.class,
- new HeadlessRunDescription.Deserializer(runDescFileName));
- Gson gson = gsonBuilder.create();
- Reader in = new InputStreamReader(new FileInputStream(runDescFileName));
- return gson.fromJson(in, HeadlessRunDescription.class);
+ HeadlessRunDescription runDescr = null;
+ try {
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ gsonBuilder.registerTypeAdapter(HeadlessRunDescription.class,
+ new HeadlessRunDescription.Deserializer(runDescFileName));
+ Gson gson = gsonBuilder.create();
+ Reader in = new InputStreamReader(new FileInputStream(runDescFileName));
+ runDescr = gson.fromJson(in, HeadlessRunDescription.class);
+ } catch (JsonSyntaxException e) {
+ System.err.println("We were unable to parse the run description at: "+runDescFileName);
+ System.err.println(e.getLocalizedMessage());
+
+ e.printStackTrace();
+ throw new IllegalStateException("Could not parse run description");
+ } catch (JsonIOException e) {
+ System.err.println("We were unable to load the run description at: "+runDescFileName);
+ System.err.println(e.getLocalizedMessage());
+
+ e.printStackTrace();
+ throw new IllegalStateException("Could not parse run description");
+ }
+ return runDescr;
}
public static class Deserializer implements JsonDeserializer<HeadlessRunDescription> {
@@ -80,7 +99,7 @@ public class HeadlessRunDescription {
}
public static void reportError(JsonElement json) {
- logger.error("HeadlessRunDescription.parse: ran into unexpected jsonElement type:");
+ logger.error("HeadlessRunDescription.parse: ran into unexpected jsonElement type: \""+json+"\"");
logger.error(" " + json.getAsString());
}
@@ -114,6 +133,13 @@ public class HeadlessRunDescription {
if (null != runDescDir) {
ruleSetDir = runDescDir + File.separator + ruleSetDir;
}
+
+ String ffProfile = objGetString(obj, "firefoxProfile");
+ if (null != ffProfile) {
+ ffProfile = runDescDir + File.separator + ffProfile;
+ }
+ _firefoxProfile = ffProfile;
+
_crawlType = objGetString(obj, "crawlType");
arr = obj.get("runs").getAsJsonArray();
} else if (json.isJsonArray()) {
@@ -127,13 +153,20 @@ public class HeadlessRunDescription {
Builder<HeadlessAtom> atoms = ImmutableList.builder();
for (JsonElement jsonElement : arr) {
+ // we only care about json objects, so if anything else is found,
+ // skip this loop:
+ if (!jsonElement.isJsonObject()) {
+ continue;
+ }
try {
+
JsonObject obj = jsonElement.getAsJsonObject();
atoms.add(HeadlessAtom.fromJsonObject(obj, ruleSetDir));
} catch (IOException e) {
logger.error("HeadlessAtom.parse: error parsing ruleSet file: " + e.getMessage());
System.exit(1);
} catch (IllegalStateException e) {
+ e.printStackTrace();
reportError(jsonElement);
}
}
@@ -151,6 +184,10 @@ public class HeadlessRunDescription {
return gson.toJson(this);
}
+ public String getFirefoxProfile() {
+ return _firefoxProfile;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
@@ -178,4 +215,5 @@ public class HeadlessRunDescription {
return true;
}
+
}