SLING-7656 unit test improvements and ISO8601 support

added additional JSON responses to validate JSON is responding with
correct values. Added ISO8601 date formatting and added test cases for
both.
diff --git a/pom.xml b/pom.xml
index b49ff5b..3a84a32 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <extensions>true</extensions>
+                <extensions>true</extensions> 
                 <configuration>
                     <instructions>
                         <Import-Package>
@@ -156,7 +156,7 @@
                 	<artifactId>
                 		org.apache.sling.servlet-helpers
                 	</artifactId>
-                	<version>1.1.5-SNAPSHOT</version>
+                	<version>1.1.6</version>
                 	<type>bundle</type>
                 	<scope>test</scope>
                 </dependency>
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
index 50df111..778f763 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/DefaultGetServlet.java
@@ -129,7 +129,7 @@
                   "200.")
         int json_maximumresults() default 200;
         
-        @AttributeDefinition(name = "ECMA date Support", description="Enable deprecated ECMA formatting for JSON response")
+        @AttributeDefinition(name = "ECMA date support", description="Enable deprecated ECMA formatting for JSON response")
         boolean ecmaSuport() default false;
     }
 
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java b/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java
index 35b9fae..cdcfd67 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/VersionInfoServlet.java
@@ -81,7 +81,7 @@
         @AttributeDefinition(name = "Selector", description="List of selectors this servlet handles to display the versions")
         String[] sling_servlet_selectors() default "V";
         
-        @AttributeDefinition(name = "ECMA date Support", description="Enable deprecated ECMA formatting for JSON response")
+        @AttributeDefinition(name = "ECMA date support", description="Enable deprecated ECMA formatting for JSON response")
         boolean ecmaSuport() default false;
     }
     
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/helpers/XMLRenderer.java b/src/main/java/org/apache/sling/servlets/get/impl/helpers/XMLRenderer.java
index cda2b78..4c94161 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/helpers/XMLRenderer.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/helpers/XMLRenderer.java
@@ -83,9 +83,7 @@
                     } else {
                         resp.sendError(HttpServletResponse.SC_NO_CONTENT); // NO Content
                     }
-                } catch (RepositoryException e) {
-                    throw new ServletException("Unable to export resource as xml: " + r, e);
-                } catch (SAXException e) {
+                } catch (RepositoryException|SAXException e) {
                     throw new ServletException("Unable to export resource as xml: " + r, e);
                 }
             } else {
diff --git a/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java b/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java
index 6f587cd..5cf4d0a 100644
--- a/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java
+++ b/src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java
@@ -39,6 +39,12 @@
 
 public class JsonObjectCreator {
 	
+    /** Used to format date values */
+    private static final String ECMA_DATE_FORMAT = "EEE MMM dd yyyy HH:mm:ss 'GMT'Z";
+
+    /** The Locale used to format date values */
+    static final Locale DATE_FORMAT_LOCALE = Locale.US;
+	
 	private Resource resource;
 	
 	private ValueMap valueMap;
@@ -50,53 +56,39 @@
 		this.valueMap = resource.getValueMap();
 		this.ecmaSupport = ecmaSupport;
 	}
+	
+	public JsonObjectBuilder create() {
+		final JsonObjectBuilder obj = Json.createObjectBuilder();
+		
+		ValueMap valueMap = resource.getValueMap();
+		if (valueMap.isEmpty()) {
+			final String value = resource.adaptTo(String.class);
+			if (value != null) {
+				obj.add(resource.getName(), value.toString());
+			}  else {
+				final String[] values = resource.adaptTo(String[].class);
+				if (values != null) {
+					JsonArrayBuilder builder = Json.createArrayBuilder();
+					for (String v : values) {
+						builder.add(v);
+					}
+					obj.add(resource.getName(), builder);
+				}
+			}
+			return obj;
+		} 
 
-    public JsonObjectBuilder create() {
+		final Iterator<Map.Entry<String, Object>> props = valueMap.entrySet().iterator();
 
-        final JsonObjectBuilder obj = Json.createObjectBuilder();
+		while (props.hasNext()) {
+			final Map.Entry<String, Object> prop = props.next();
+			if (prop.getValue() != null) {
+				createProperty(obj, prop.getKey(), prop.getValue());
+			}
+		}
 
-        if (valueMap.isEmpty()) {
-
-            // no map available, try string
-            final String value = resource.adaptTo(String.class);
-            if (value != null) {
-                obj.add(resource.getName(), value.toString());
-            } else {
-                // Try multi-value "property"
-                final String[] values = resource.adaptTo(String[].class);
-                if (values != null) {
-                    JsonArrayBuilder builder = Json.createArrayBuilder();
-                    for (String v : values)
-                    {
-                        builder.add(v);
-                    }
-                    obj.add(resource.getName(), builder);
-                }
-
-            }
-
-        } else {
-
-            final Iterator<Map.Entry<String,Object>> props = valueMap.entrySet().iterator();
-
-            // the node's actual properties
-            while (props.hasNext()) {
-                final Map.Entry<String,Object> prop = props.next();
-                if ( prop.getValue() != null ) {
-                    createProperty(obj, prop.getKey(), prop.getValue());
-                }
-            }
-        }
-
-        return obj;
-    }
-
-    /** Used to format date values */
-    private static final String ECMA_DATE_FORMAT = "EEE MMM dd yyyy HH:mm:ss 'GMT'Z";
-
-    /** The Locale used to format date values */
-    static final Locale DATE_FORMAT_LOCALE = Locale.US;
-
+		return obj;
+	}
     
     public static String formatEcma(final Calendar date) {
         DateFormat formatter = new SimpleDateFormat(ECMA_DATE_FORMAT, DATE_FORMAT_LOCALE);
@@ -121,8 +113,6 @@
             builder.add("entry", (Boolean) value);
         } else if ( value instanceof Long ) {
             builder.add("entry", (Long) value);
-        } else if ( value instanceof Integer ) {
-            builder.add("entry", (Integer) value);
         } else if ( value instanceof Double ) {
             builder.add("entry", (Double) value);
         } else if ( value != null ) {
@@ -161,7 +151,7 @@
             // (colon is not allowed as a JCR property name)
             // in the name, and the value should be the size of the binary data
             if (values == null) {
-                obj.add(":" + key, getLength(-1, key, (InputStream)value));
+                obj.add(":" + key, getLength(0, key, (InputStream)value));
             } else {
                 final JsonArrayBuilder result = Json.createArrayBuilder();
                 for (int i = 0; i < values.length; i++) {
@@ -191,14 +181,10 @@
         } catch (IOException ignore) {}
         long length = -1;
         if ( valueMap != null ) {
-            if ( index == -1 ) {
-                length = valueMap.get(key, length);
-            } else {
-                Long[] lengths = valueMap.get(key, Long[].class);
-                if ( lengths != null && lengths.length > index ) {
-                    length = lengths[index];
-                }
-            }
+        	 Long[] lengths = valueMap.get(key, Long[].class);
+             if ( lengths != null && lengths.length > index ) {
+                 length = lengths[index];
+             }
         }
         return length;
     }
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java b/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java
index a86cee0..99b7fa5 100644
--- a/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java
+++ b/src/test/java/org/apache/sling/servlets/get/impl/JsonRendererServletTest.java
@@ -18,17 +18,14 @@
  */
 package org.apache.sling.servlets.get.impl;
 
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
+import static org.junit.Assert.assertEquals;
+
 import org.apache.sling.commons.testing.sling.MockResource;
 import org.apache.sling.commons.testing.sling.MockResourceResolver;
 import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 import org.apache.sling.commons.testing.sling.MockSlingHttpServletResponse;
 import org.apache.sling.servlets.get.impl.helpers.JsonRenderer;
 
-import static org.junit.Assert.assertEquals;
-import junitx.util.PrivateAccessor;
-
 public class JsonRendererServletTest {
 
 	private static MockResourceResolver resolver;
@@ -79,10 +76,8 @@
 		request.setResource(resolver.getResource(path));
 
 		MockSlingHttpServletResponse response = new MockSlingHttpServletResponse();
-		JsonRenderer servlet = new JsonRenderer(1000,true);
-		PrivateAccessor.invoke(servlet, "render",
-				new Class[]{SlingHttpServletRequest.class, SlingHttpServletResponse.class},
-				new Object[]{request, response});
+		JsonRenderer renderer = new JsonRenderer(1000,true);
+		renderer.render(request, response);
 		return response.getOutput().toString();
 	}
 }
diff --git a/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java b/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java
index e6d971d..b28db92 100644
--- a/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java
+++ b/src/test/java/org/apache/sling/servlets/get/impl/helpers/JsonRendererTest.java
@@ -28,7 +28,6 @@
 
 import javax.json.Json;
 import javax.json.JsonObject;
-import javax.json.JsonReader;
 
 import org.apache.jackrabbit.util.ISO8601;
 import org.apache.sling.testing.mock.sling.junit.SlingContext;
@@ -110,27 +109,44 @@
     @Test
     public void testISO8601() throws IOException {
     	context.requestPathInfo().setSelectorString("1");
-        jrs.render(request, response);
-        StringReader reader = new StringReader(response.getOutputAsString());
-        JsonObject job = Json.createReader(reader).readObject();
-        String created = job.getString("created");
+        String created = responseToJSON().getString("created");
         Calendar cal = ISO8601.parse(created);
         // at the time of the test the offset it not preserved
-        // if we did direct string comparison the time would be different based on the testers
-        // time zone
-        assertTrue(ISO8601.getYear(cal) == 2016);
+        // if we did direct string comparison the time would be different
+        // based on the testing environments time zone
+        assertTrue(cal != null && ISO8601.getYear(cal) == 2016);
     }
     
     @Test
     public void testECMA() throws IOException {
     	context.requestPathInfo().setSelectorString("1");
-    	jrs = new JsonRenderer(42,true);
-        jrs.render(request, response);
-        String out = response.getOutputAsString();
+    	JsonRenderer ecmajrs = new JsonRenderer(42,true);
+    	ecmajrs.render(request, response);
+    	String out = response.getOutputAsString();
         JsonObject job = Json.createReader(new StringReader(out)).readObject();
         String created = job.getString("created");
         assertTrue(created.startsWith("Mon Jan"));
     }
     
+    @Test
+    public void testBoolean() throws IOException {
+    	context.requestPathInfo().setSelectorString("1");
+        assertTrue(responseToJSON().getBoolean("active"));
+    }
+    
+    @Test
+     // JSON impl only support Integers, JCR only supports Long values.  
+    public void testNumber() throws IOException {
+    	context.requestPathInfo().setSelectorString("1");
+        assertTrue(responseToJSON().getInt("number") == 2);
+    }
+    
+    private JsonObject responseToJSON() throws IOException {
+        jrs.render(request, response);
+        String out = response.getOutputAsString();
+        JsonObject job = Json.createReader(new StringReader(out)).readObject();
+        return job;
+    }
+    
     
 }
\ No newline at end of file
diff --git a/src/test/resources/data.json b/src/test/resources/data.json
index 7619a4f..8f2baea 100644
--- a/src/test/resources/data.json
+++ b/src/test/resources/data.json
@@ -1,6 +1,8 @@
 {

   "resourceType":"page",

   "created" : "Mon Jan 18 2016 16:30:00 GMT+0200",

+  "active" : true,

+  "number" : 2,

   "one":

   {

     "resourceType":"one"