You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/10/23 16:01:08 UTC

svn commit: r1535033 - in /sling/trunk/launchpad: integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/ test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/

Author: bdelacretaz
Date: Wed Oct 23 14:01:07 2013
New Revision: 1535033

URL: http://svn.apache.org/r1535033
Log:
SLING-3155 - more precise repository name check

Modified:
    sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/RepositoryNameTest.java
    sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/RepositoryDescriptorsServlet.java

Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/RepositoryNameTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/RepositoryNameTest.java?rev=1535033&r1=1535032&r2=1535033&view=diff
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/RepositoryNameTest.java (original)
+++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/RepositoryNameTest.java Wed Oct 23 14:01:07 2013
@@ -16,27 +16,34 @@
  */
 package org.apache.sling.launchpad.webapp.integrationtest;
 
-import java.io.IOException;
-import java.util.regex.Pattern;
+import java.util.HashMap;
+import java.util.Map;
 
+import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.commons.testing.integration.HttpTestBase;
 
 /** Verify the repository name, to make sure we're testing the right one */
 public class RepositoryNameTest extends HttpTestBase {
     
-    /** Use the same property that Sling uses to switch between repositories.
-     *  Current run modes are "jackrabbit" and "oak".
-     */
+    /** We use the same property that Sling uses to switch between repositories */
     public static final String RUN_MODE_PROP = "sling.run.modes";
     public static final String DEFAULT_RUN_MODE = "jackrabbit";
     
-    public void testName() throws IOException {
-        final String path = "/testing/RepositoryDescriptors.txt";
+    public static final Map<String, String> RUNMODE_TO_NAME = new HashMap<String, String>();
+    
+    static {
+        RUNMODE_TO_NAME.put("jackrabbit", "Jackrabbit");
+        RUNMODE_TO_NAME.put("oak", "Apache Jackrabbit Oak");
+    }
+    
+    public void testName() throws Exception {
         final String runMode = System.getProperty(RUN_MODE_PROP, DEFAULT_RUN_MODE);
-        final String content = getContent(HTTP_BASE_URL + path, CONTENT_TYPE_PLAIN).toLowerCase();
-        final Pattern expectedPattern = Pattern.compile("(?s).*jcr.repository.name=[^$]*" + runMode + ".*");
-        assertTrue(
-                "Expecting lowercased content at " + path + " to match " + expectedPattern + ", content=" + content, 
-                expectedPattern.matcher(content).matches());
+        final String name = RUNMODE_TO_NAME.get(runMode);
+        assertNotNull("Expecting to have a repository name for run mode " + runMode, name);
+        
+        final String path = "/testing/RepositoryDescriptors.json";
+        final JSONObject json = new JSONObject(getContent(HTTP_BASE_URL + path, CONTENT_TYPE_JSON));
+        final String key = "jcr.repository.name";
+        assertEquals("Expecting " + key + "=" + name, name, json.getJSONObject("descriptors").getString(key));
     }
 }

Modified: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/RepositoryDescriptorsServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/RepositoryDescriptorsServlet.java?rev=1535033&r1=1535032&r2=1535033&view=diff
==============================================================================
--- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/RepositoryDescriptorsServlet.java (original)
+++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/RepositoryDescriptorsServlet.java Wed Oct 23 14:01:07 2013
@@ -17,7 +17,7 @@
 package org.apache.sling.launchpad.testservices.servlets;
 
 import java.io.IOException;
-import java.io.PrintWriter;
+import java.util.Arrays;
 
 import javax.jcr.Repository;
 import javax.servlet.ServletException;
@@ -30,6 +30,8 @@ import org.apache.felix.scr.annotations.
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.SlingHttpServletResponse;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.apache.sling.commons.json.JSONException;
+import org.apache.sling.commons.json.io.JSONWriter;
 
 /** Test servlet that dumps our repository descriptors */ 
 @SuppressWarnings("serial")
@@ -38,7 +40,7 @@ import org.apache.sling.api.servlets.Sli
 @Properties({ @Property(name = "service.description", value = "Repository Descriptors Servlet"),
         @Property(name = "service.vendor", value = "The Apache Software Foundation"),
         @Property(name = "sling.servlet.paths", value = "/testing/RepositoryDescriptors"),
-        @Property(name = "sling.servlet.extensions", value = "txt")})
+        @Property(name = "sling.servlet.extensions", value = "json")})
 public class RepositoryDescriptorsServlet extends SlingSafeMethodsServlet {
 
     @Reference
@@ -47,17 +49,22 @@ public class RepositoryDescriptorsServle
     @Override
     protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) 
     throws ServletException,IOException {
-        final PrintWriter pw = response.getWriter();
-        response.setContentType("text/plain");
+        response.setContentType("application/json");
         response.setCharacterEncoding("UTF-8");
-        
-        for(String key : repository.getDescriptorKeys()) {
-            final String v = repository.getDescriptor(key);
-            pw.print(key);
-            pw.print("=");
-            pw.println(v);
+        try {
+            final JSONWriter w = new JSONWriter(response.getWriter());
+            w.setTidy(Arrays.asList(request.getRequestPathInfo().getSelectors()).contains("tidy"));
+            w.object();
+            w.key("descriptors");
+            w.object();
+            for(String key : repository.getDescriptorKeys()) {
+                w.key(key).value(repository.getDescriptor(key));
+            }
+            w.endObject();
+            w.endObject();
+        } catch(JSONException je) {
+            throw (IOException)new IOException("JSONException in doGet").initCause(je);
         }
-        pw.flush();
+        response.getWriter().flush();
     }
-    
 }
\ No newline at end of file