Bugfix for query deserialization of unspecified boundaries
diff --git a/CHANGES b/CHANGES
index a515a65..b013ba1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+0.43 2014-09-25
+        - [feature] Match collector using database for distributed search (diewald)
+	- [bugfix] Unified boundary handling and prevent nullpointer
+	  exceptions on parsing (diewald)
+
 0.43 2014-09-23
         - [cleanup] Made a lot of stuff rely on KorapResponse (diewald)
 	- [bugfix] Small but ancient collection bug fixed (diewald)
diff --git a/pom.xml b/pom.xml
index 9bee877..879d385 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
 
   <groupId>KorAP-modules</groupId>
   <artifactId>KorAP-lucene-index</artifactId>
-  <version>0.43</version>
+  <version>0.44</version>
   <packaging>jar</packaging>
 
   <name>KorAP-lucene-index</name>
diff --git a/src/main/java/de/ids_mannheim/korap/KorapQuery.java b/src/main/java/de/ids_mannheim/korap/KorapQuery.java
index 11616ea..e693b48 100644
--- a/src/main/java/de/ids_mannheim/korap/KorapQuery.java
+++ b/src/main/java/de/ids_mannheim/korap/KorapQuery.java
@@ -85,8 +85,17 @@
 		throw new QueryException("Boundary definition is not valid");
 	    };
 
-	    min = json.get("min").asInt(defaultMin);
-	    max = json.get("max").asInt(defaultMax);
+	    // Set min boundary
+	    if (json.has("min"))
+		this.min = json.get("min").asInt(defaultMin);
+	    else
+		this.min = defaultMin;
+
+	    // Set max boundary
+	    if (json.has("max"))
+		this.max = json.get("max").asInt(defaultMax);
+	    else
+		this.max = defaultMax;
 
 	    if (DEBUG)
 		log.trace("Found korap:boundary with {}:{}");
@@ -136,15 +145,18 @@
 	    if (DEBUG)
 		log.trace("Found {} group", operation);
 
+	    if (!json.has("operands"))
+		throw new QueryException("Operation needs operand list");
+
 	    // Get all operands
 	    JsonNode operands = json.get("operands");
 
+	    if (!operands.isArray())
+		throw new QueryException("Operation needs operand list");
+
 	    if (DEBUG)
 		log.trace("Operands are {}", operands);
 
-	    if (!json.has("operands") || !operands.isArray())
-		throw new QueryException("Operation needs operand list");
-
 	    switch (operation) {
 
 	    case "operation:or":
@@ -278,15 +290,17 @@
 			        "Text based distances are not supported yet"
                             );
 
-			int min, max;
+			int min = 0, max = 100;
 			if (constraint.has("boundary")) {
-			    Boundary b = new Boundary(constraint.get("boundary"), 1,1);
+			    Boundary b = new Boundary(constraint.get("boundary"), 0,100);
 			    min = b.min;
 			    max = b.max;
 			}
 			else {
-			    min = constraint.get("min").asInt(1);
-			    max = constraint.get("max").asInt(1);
+			    if (constraint.has("min"))
+				min = constraint.get("min").asInt(0);
+			    if (constraint.has("max"))
+				max = constraint.get("max").asInt(100);
 			};
 
 			sseqqw.withConstraint(min, max, unit);
diff --git a/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java b/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
index 0d99899..842cead 100644
--- a/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
+++ b/src/test/java/de/ids_mannheim/korap/query/TestKorapQueryJSON.java
@@ -274,6 +274,18 @@
 	assertEquals(sqwi.toQuery().toString(), "spanNext(spanOr([tokens:s:der, spanNext(tokens:s:der, spanRepetition(tokens:cnx/p:A{1,2}))]), tokens:tt/p:NN)");
     };
 
+
+    @Test
+    public void queryJSONboundaryBug () {
+	SpanQueryWrapperInterface sqwi = jsonQuery(getClass().getResource("/queries/bsp-boundary.jsonld").getFile());
+
+	// Tal []{1,} Wald
+	assertEquals(sqwi.toQuery().toString(), "spanDistance(tokens:s:Tal, tokens:s:Wald, [(w[2:100], ordered, notExcluded)])");
+    };
+
+
+
+
     public static String getString (String path) {
 	StringBuilder contentBuilder = new StringBuilder();
 	try {
diff --git a/src/test/resources/queries/bsp-boundary.jsonld b/src/test/resources/queries/bsp-boundary.jsonld
new file mode 100644
index 0000000..f93fa14
--- /dev/null
+++ b/src/test/resources/queries/bsp-boundary.jsonld
@@ -0,0 +1 @@
+{"@context":"http://ids-mannheim.de/ns/KorAP/json-ld/v0.1/context.jsonld","errors":[],"warnings":[],"announcements":["Deprecated 2014-07-24: 'min' and 'max' to be supported until 3 months from deprecation date."],"query":{"@type":"korap:group","operation":"operation:sequence","operands":[{"@type":"korap:token","wrap":{"@type":"korap:term","layer":"orth","key":"Tal","match":"match:eq"}},{"@type":"korap:token","wrap":{"@type":"korap:term","layer":"orth","key":"Wald","match":"match:eq"}}],"inOrder":true,"distances":[{"@type":"korap:distance","key":"w","boundary":{"@type":"korap:boundary","min":2},"min":2}]},"collections":[{"@type":"korap:meta-filter","@value":{"@type":"korap:term","@field":"korap:field#corpusID","@value":"WPD"}}],"meta":{"startPage":1,"itemsPerResource":1,"context":"paragraph"}}