You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2015/02/16 15:48:29 UTC
svn commit: r1660129 - in /sling/trunk/contrib/extensions/distribution/core:
./ src/main/java/org/apache/sling/distribution/agent/impl/
src/main/java/org/apache/sling/distribution/servlet/
Author: mpetria
Date: Mon Feb 16 14:48:29 2015
New Revision: 1660129
URL: http://svn.apache.org/r1660129
Log:
SLING-4422: using commons.json to build distribution servlet responses
Added:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java
Removed:
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentRootServlet.java
Modified:
sling/trunk/contrib/extensions/distribution/core/pom.xml
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java
sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageImporterServlet.java
Modified: sling/trunk/contrib/extensions/distribution/core/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/pom.xml?rev=1660129&r1=1660128&r2=1660129&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/pom.xml (original)
+++ sling/trunk/contrib/extensions/distribution/core/pom.xml Mon Feb 16 14:48:29 2015
@@ -148,6 +148,12 @@
<version>1.3.0</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.json</artifactId>
+ <version>2.0.8</version>
+ <scope>provided</scope>
+ </dependency>
<!-- LOGGING -->
<dependency>
<groupId>org.slf4j</groupId>
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java?rev=1660129&r1=1660128&r2=1660129&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java Mon Feb 16 14:48:29 2015
@@ -98,7 +98,7 @@ public class ForwardDistributionAgentFac
public static final String LOG_LEVEL = AbstractDistributionAgentFactory.LOG_LEVEL;
- @Property(label = "Allowed roots", description = "If set the agent will allow only distribution requests under the specified roots.")
+ @Property(cardinality = 100, label = "Allowed roots", description = "If set the agent will allow only distribution requests under the specified roots.")
private static final String ALLOWED_ROOTS = "allowed.roots";
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java?rev=1660129&r1=1660128&r2=1660129&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/QueueDistributionAgentFactory.java Mon Feb 16 14:48:29 2015
@@ -93,7 +93,7 @@ public class QueueDistributionAgentFacto
- @Property(label = "Allowed roots", description = "If set the agent will allow only distribution requests under the specified roots.")
+ @Property(cardinality = 100, label = "Allowed roots", description = "If set the agent will allow only distribution requests under the specified roots.")
private static final String ALLOWED_ROOTS = "allowed.roots";
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java?rev=1660129&r1=1660128&r2=1660129&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionAgentServlet.java Mon Feb 16 14:48:29 2015
@@ -27,7 +27,6 @@ import org.apache.sling.api.SlingHttpSer
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.distribution.agent.DistributionAgent;
-import org.apache.sling.distribution.agent.DistributionAgentException;
import org.apache.sling.distribution.DistributionRequest;
import org.apache.sling.distribution.DistributionResponse;
import org.apache.sling.distribution.resources.DistributionResourceTypes;
@@ -60,27 +59,17 @@ public class DistributionAgentServlet ex
if (agent != null) {
try {
DistributionResponse distributionResponse = agent.execute(resourceResolver, distributionRequest);
- switch (distributionResponse.getState()) {
- case DISTRIBUTED:
- response.setStatus(200);
- break;
- case DROPPED:
- response.setStatus(400);
- break;
- case ACCEPTED:
- response.setStatus(202);
- break;
- }
- response.getWriter().append(distributionResponse.toString());
+
+ ServletJsonUtils.writeJson(response, distributionResponse);
log.debug("distribution response : {}", distributionResponse);
} catch (Throwable e) {
- response.setStatus(503);
- response.getWriter().append("an error has occured");
+ log.error("an unexpected error has occurred", e);
+ ServletJsonUtils.writeJson(response, 503, "an unexpected error has occurred");
}
} else {
- response.setStatus(404);
- response.getWriter().append("agent not found");
+ ServletJsonUtils.writeJson(response, 404, "agent not found");
}
}
+
}
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageImporterServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageImporterServlet.java?rev=1660129&r1=1660128&r2=1660129&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageImporterServlet.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/DistributionPackageImporterServlet.java Mon Feb 16 14:48:29 2015
@@ -50,8 +50,8 @@ public class DistributionPackageImporter
.adaptTo(DistributionPackageImporter.class);
final long start = System.currentTimeMillis();
- response.setContentType("text/plain");
- response.setCharacterEncoding("utf-8");
+ response.setContentType("application/json");
+
InputStream stream = request.getInputStream();
ResourceResolver resourceResolver = request.getResourceResolver();
@@ -60,14 +60,13 @@ public class DistributionPackageImporter
if (distributionPackage != null) {
log.info("Package {} imported successfully", distributionPackage);
distributionPackage.delete();
+ ServletJsonUtils.writeJson(response, 200, "package imported successfully");
} else {
log.warn("Cannot import distribution package from request {}", request);
- response.setStatus(400);
- response.getWriter().print("error: could not import a package from the request stream");
+ ServletJsonUtils.writeJson(response, 400, "could not import a package from the request stream");
}
} catch (final Throwable e) {
- response.setStatus(400);
- response.getWriter().print("error: " + e.toString());
+ ServletJsonUtils.writeJson(response, 400, "an unexpected error has occurred during distribution import");
log.error("Error during distribution import", e);
} finally {
long end = System.currentTimeMillis();
Added: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java?rev=1660129&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java (added)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/servlet/ServletJsonUtils.java Mon Feb 16 14:48:29 2015
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sling.distribution.servlet;
+
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.commons.json.JSONException;
+import org.apache.sling.commons.json.JSONObject;
+import org.apache.sling.distribution.DistributionResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+/**
+ * Utility class for writing json data to http responses.
+ */
+public class ServletJsonUtils {
+
+ private final static Logger log = LoggerFactory.getLogger(ServletJsonUtils.class);
+
+ public static void writeJson(SlingHttpServletResponse response, DistributionResponse distributionResponse) throws IOException {
+ JSONObject json = new JSONObject();
+ try {
+ json.put("success", distributionResponse.isSuccessful());
+ json.put("state", distributionResponse.getState().name());
+ json.put("message", distributionResponse.getMessage());
+
+ } catch (JSONException e) {
+ log.error("Cannot write json", e);
+ }
+
+ switch (distributionResponse.getState()) {
+ case DISTRIBUTED:
+ response.setStatus(200);
+ break;
+ case DROPPED:
+ response.setStatus(400);
+ break;
+ case ACCEPTED:
+ response.setStatus(202);
+ break;
+ }
+ response.getWriter().append(json.toString());
+ }
+
+ public static void writeJson(SlingHttpServletResponse response, int status, String message) throws IOException {
+ JSONObject json = new JSONObject();
+ try {
+ json.put("message", message);
+ } catch (JSONException e) {
+ log.error("Cannot write json", e);
+ }
+ response.setStatus(status);
+
+ response.getWriter().append(json.toString());
+ }
+}