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 2018/06/20 10:58:55 UTC
[sling-whiteboard] branch master updated: Refactor to be easier to
test
This is an automated email from the ASF dual-hosted git repository.
bdelacretaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
The following commit(s) were added to refs/heads/master by this push:
new d09b9ca Refactor to be easier to test
d09b9ca is described below
commit d09b9ca0cc473641cfb0a06e7761977a572baacf
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Wed Jun 20 12:58:41 2018 +0200
Refactor to be easier to test
---
capabilities/pom.xml | 2 --
.../capabilities/internal/CapabilitiesServlet.java | 31 +---------------
...iesServlet.java => JSONCapabilitiesWriter.java} | 42 +++++-----------------
3 files changed, 9 insertions(+), 66 deletions(-)
diff --git a/capabilities/pom.xml b/capabilities/pom.xml
index 3a91662..a165edb 100644
--- a/capabilities/pom.xml
+++ b/capabilities/pom.xml
@@ -58,7 +58,6 @@
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
- <version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
@@ -74,7 +73,6 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
- <version>1.12.0</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java b/capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
index 84fa79b..53e6e36 100644
--- a/capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
+++ b/capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
@@ -19,12 +19,9 @@
package org.apache.sling.capabilities.internal;
import java.io.IOException;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
-import org.apache.felix.utils.json.JSONWriter;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
@@ -51,37 +48,11 @@ public class CapabilitiesServlet extends SlingSafeMethodsServlet {
policyOption=ReferencePolicyOption.GREEDY)
volatile List<CapabilitiesSource> sources;
- public final static String CAPS_KEY = "org.apache.sling.capabilities";
-
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
-
- final JSONWriter jw = new JSONWriter(response.getWriter());
- jw.object();
- jw.key(CAPS_KEY);
- jw.object();
-
- Map<String, String> values = null;
- for(CapabilitiesSource s : sources) {
- try {
- values = s.getCapabilities();
- } catch(Exception e) {
- values = new HashMap<>();
- values.put("_EXCEPTION_", e.getClass().getName() + ":" + e.getMessage());
- }
- jw.key(s.getNamespace());
- jw.object();
- for(Map.Entry<String, String> e : values.entrySet()) {
- jw.key(e.getKey());
- jw.value(e.getValue());
- }
- jw.endObject();
- }
-
- jw.endObject();
- jw.endObject();
+ new JSONCapabilitiesWriter().writeJson(response.getWriter(), sources);
response.getWriter().flush();
}
}
\ No newline at end of file
diff --git a/capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java b/capabilities/src/main/java/org/apache/sling/capabilities/internal/JSONCapabilitiesWriter.java
similarity index 56%
copy from capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
copy to capabilities/src/main/java/org/apache/sling/capabilities/internal/JSONCapabilitiesWriter.java
index 84fa79b..25f193b 100644
--- a/capabilities/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
+++ b/capabilities/src/main/java/org/apache/sling/capabilities/internal/JSONCapabilitiesWriter.java
@@ -19,46 +19,21 @@
package org.apache.sling.capabilities.internal;
import java.io.IOException;
+import java.io.Writer;
+import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
import org.apache.felix.utils.json.JSONWriter;
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.apache.sling.capabilities.CapabilitiesSource;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.osgi.service.component.annotations.ReferencePolicy;
-import org.osgi.service.component.annotations.ReferencePolicyOption;
-@Component(service = Servlet.class,
-property = {
- "sling.servlet.resourceTypes=sling/capabilities",
- "sling.servlet.methods=GET",
- "sling.servlet.selectors=capabilities",
- "sling.servlet.extensions=json"
-})
+/** Create the JSON output of our servlet */
+class JSONCapabilitiesWriter {
-public class CapabilitiesServlet extends SlingSafeMethodsServlet {
+ static final String CAPS_KEY = "org.apache.sling.capabilities";
- @Reference(
- policy=ReferencePolicy.DYNAMIC,
- cardinality=ReferenceCardinality.AT_LEAST_ONE,
- policyOption=ReferencePolicyOption.GREEDY)
- volatile List<CapabilitiesSource> sources;
-
- public final static String CAPS_KEY = "org.apache.sling.capabilities";
-
- @Override
- protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
- response.setContentType("application/json");
- response.setCharacterEncoding("UTF-8");
-
- final JSONWriter jw = new JSONWriter(response.getWriter());
+ /** Write JSON to the supplied Writer, using the supplied sources */
+ void writeJson(Writer w, Collection<CapabilitiesSource> sources) throws IOException {
+ final JSONWriter jw = new JSONWriter(w);
jw.object();
jw.key(CAPS_KEY);
jw.object();
@@ -82,6 +57,5 @@ public class CapabilitiesServlet extends SlingSafeMethodsServlet {
jw.endObject();
jw.endObject();
- response.getWriter().flush();
}
}
\ No newline at end of file