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 2014/01/08 13:13:33 UTC
svn commit: r1556512 -
/sling/trunk/contrib/extensions/replication/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentCreateServlet.java
Author: bdelacretaz
Date: Wed Jan 8 12:13:33 2014
New Revision: 1556512
URL: http://svn.apache.org/r1556512
Log:
SLING-3300 - API to create replication agent (configuration) - adding missing servlet, contributed by Tommaso Teofili, thanks!
Added:
sling/trunk/contrib/extensions/replication/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentCreateServlet.java
Added: sling/trunk/contrib/extensions/replication/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentCreateServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentCreateServlet.java?rev=1556512&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentCreateServlet.java (added)
+++ sling/trunk/contrib/extensions/replication/src/main/java/org/apache/sling/replication/servlet/ReplicationAgentCreateServlet.java Wed Jan 8 12:13:33 2014
@@ -0,0 +1,66 @@
+package org.apache.sling.replication.servlet;
+
+import java.io.IOException;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.servlets.SlingAllMethodsServlet;
+import org.apache.sling.replication.agent.AgentConfigurationException;
+import org.apache.sling.replication.agent.ReplicationAgentConfiguration;
+import org.apache.sling.replication.agent.ReplicationAgentConfigurationManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Servlet to create {@link org.apache.sling.replication.agent.ReplicationAgent}s (via HTTP PUT).
+ */
+@SuppressWarnings("serial")
+@Component(metatype = false)
+@Service(value = Servlet.class)
+@Properties({
+ @Property(name = "sling.servlet.paths", value = "/system/replication/agent"),
+ @Property(name = "sling.servlet.methods", value = "POST")})
+public class ReplicationAgentCreateServlet extends SlingAllMethodsServlet {
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Reference
+ private ReplicationAgentConfigurationManager agentConfigurationManager;
+
+ @Override
+ protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("application/json");
+
+ String name = request.getParameter("name");
+
+ try {
+ agentConfigurationManager.createAgentConfiguration(request.getParameterMap());
+ if (log.isInfoEnabled()) {
+ log.info("agent configuration for {} created", name);
+ }
+
+ } catch (AgentConfigurationException e) {
+ if (log.isErrorEnabled()) {
+ log.error("cannot create agent {}", name, e);
+ }
+ }
+ Resource agentResource = request.getResource().getChild(name);
+ if (agentResource != null) {
+ Resource resource = agentResource.getChild("configuration");
+ ReplicationAgentConfiguration configuration = resource
+ .adaptTo(ReplicationAgentConfiguration.class);
+ response.getWriter().write(configuration.toString());
+ } else {
+ response.setStatus(404);
+ response.getWriter().write("the configuration was correctly created but the related agent cannot be found");
+ }
+ }
+}