Author: rgodfrey
Date: Mon Apr 23 20:26:57 2012
New Revision: 1329428

URL: http://svn.apache.org/viewvc?rev=1329428&view=rev
Log:
NO-JIRA : [Java Config] implement generic PUT implementation for REST servlets

Modified:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostServlet.java

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java?rev=1329428&r1=1329427&r2=1329428&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
 Mon Apr 23 20:26:57 2012
@@ -167,11 +167,6 @@ public abstract class AbstractServlet ex
         }
     }
 
-    protected void onPut(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException
-    {
-        super.doPut(req, resp);
-    }
-
     @Override
     protected final void doDelete(HttpServletRequest req, HttpServletResponse 
resp)
             throws ServletException, IOException
@@ -395,7 +390,10 @@ public abstract class AbstractServlet ex
         response.setDateHeader ("Expires", 0);
 
         Collection<ConfiguredObject> allObjects = getObjects(request);
+
+        @SuppressWarnings("unchecked")
         Map params = new HashMap(request.getParameterMap());
+
         int depth = 1;
         try
         {
@@ -410,7 +408,7 @@ public abstract class AbstractServlet ex
 
         if(!params.isEmpty())
         {
-            // TODO
+            // TODO - depth and sort special params, everything else should 
act as a filter
         }
 
         for(ConfiguredObject configuredObject : allObjects)
@@ -427,4 +425,100 @@ public abstract class AbstractServlet ex
         response.setStatus(HttpServletResponse.SC_OK);
 
     }
+
+    protected void onPut(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException
+    {
+        response.setContentType("application/json");
+
+        ObjectMapper mapper = new ObjectMapper();
+
+        @SuppressWarnings("unchecked")
+        Map<String,Object> providedObject = 
mapper.readValue(request.getInputStream(), LinkedHashMap.class);
+
+
+        List<String> names = new ArrayList<String>();
+        if(request.getPathInfo() != null && request.getPathInfo().length()>0)
+        {
+            String path = request.getPathInfo().substring(1);
+            names.addAll(Arrays.asList(path.split("/")));
+
+            if(names.size() != _hierarchy.length)
+            {
+                throw new IllegalArgumentException("Path to object to create 
must be fully specified");
+            }
+        }
+
+
+        providedObject.put("name", names.get(names.size()-1));
+
+        @SuppressWarnings("unchecked")
+        Collection<ConfiguredObject>[] objects = new 
Collection[_hierarchy.length];
+        if(_hierarchy.length == 1)
+        {
+            _broker.createChild(_hierarchy[0], providedObject);
+        }
+        else
+        {
+            for(int i = 0; i < _hierarchy.length-1; i++)
+            {
+                objects[i] = new HashSet<ConfiguredObject>();
+                if(i == 0)
+                {
+                    for(ConfiguredObject object : 
_broker.getChildren(_hierarchy[0]))
+                    {
+                        if(object.getName().equals(names.get(0)))
+                        {
+                            objects[0].add(object);
+                            break;
+                        }
+                    }
+                }
+                else
+                {
+                    for(int j = i-1; j >=0; j--)
+                    {
+                        
if(Model.getChildTypes(_hierarchy[j]).contains(_hierarchy[i]))
+                        {
+                            for(ConfiguredObject parent : objects[j])
+                            {
+                                for(ConfiguredObject object : 
parent.getChildren(_hierarchy[i]))
+                                {
+                                    if(object.getName().equals(names.get(i)))
+                                    {
+                                        objects[i].add(object);
+                                    }
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+
+            }
+            List<ConfiguredObject> parents = new ArrayList<ConfiguredObject>();
+            Class<? extends ConfiguredObject> objClass = 
_hierarchy[_hierarchy.length - 1];
+            Collection<Class<? extends ConfiguredObject>> parentClasses = 
Model.getParentTypes(objClass);
+            for(int i = _hierarchy.length-2; i >=0 ; i--)
+            {
+                if(parentClasses.contains(_hierarchy[i]))
+                {
+                    if(objects[i].size() == 1)
+                    {
+                        parents.add(objects[i].iterator().next());
+                    }
+                    else
+                    {
+                        throw new IllegalArgumentException("Cannot deduce 
parent of class "
+                                                           + 
_hierarchy[i].getSimpleName());
+                    }
+                }
+
+            }
+            ConfiguredObject theParent = parents.remove(0);
+            ConfiguredObject[] otherParents = parents.toArray(new 
ConfiguredObject[parents.size()]);
+
+            theParent.createChild(objClass, providedObject, otherParents);
+        }
+    }
+
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java?rev=1329428&r1=1329427&r2=1329428&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingServlet.java
 Mon Apr 23 20:26:57 2012
@@ -48,87 +48,9 @@ import org.codehaus.jackson.map.Serializ
 
 public class BindingServlet extends AbstractServlet
 {
-
-
     public BindingServlet(Broker broker)
     {
         super(broker, VirtualHost.class, Exchange.class, Queue.class, 
Binding.class);
     }
 
-
-    @Override
-    protected void onPut(final HttpServletRequest request, final 
HttpServletResponse response)
-            throws ServletException, IOException
-    {
-
-        response.setContentType("application/json");
-
-        String vhostName = null;
-        String queueName = null;
-        if(request.getPathInfo() != null && request.getPathInfo().length()>0)
-        {
-            String path = request.getPathInfo().substring(1);
-            String[] parts = path.split("/");
-            vhostName = parts.length == 0 ? "" : parts[0];
-            if(parts.length > 1)
-            {
-                queueName = parts[1];
-            }
-        }
-
-        if(getSubject() == null)
-        {
-            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-        }
-        else if(vhostName == null)
-        {
-            response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-        }
-        else if (queueName == null)
-        {
-            response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-        }
-        else
-        {
-            VirtualHost vhost = null;
-            for(VirtualHost host : getBroker().getVirtualHosts())
-            {
-                if(host.getName().equals(vhostName))
-                {
-                    vhost = host;
-                }
-            }
-            if(vhost == null)
-            {
-                response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-            }
-            else
-            {
-                response.setStatus(HttpServletResponse.SC_NO_CONTENT);
-                ObjectMapper mapper = new ObjectMapper();
-                Map<String,Object> queueObject = 
mapper.readValue(request.getInputStream(), LinkedHashMap.class);
-
-                final boolean isDurable = queueObject.get("durable") 
instanceof Boolean
-                                          && 
((Boolean)queueObject.get("durable"));
-                final boolean isAutoDelete = queueObject.get("auto_delete") 
instanceof Boolean
-                                             && 
((Boolean)queueObject.get("auto_delete"));
-
-                final Map<String, Object> attributes = new HashMap<String, 
Object>(queueObject);
-                attributes.remove("durable");
-                attributes.remove("auto_delete");
-
-                vhost.createQueue(queueName, State.ACTIVE, isDurable, false,
-                                     isAutoDelete ? LifetimePolicy.AUTO_DELETE 
: LifetimePolicy.PERMANENT,
-                                     0l,
-                                     attributes);
-            }
-
-
-
-        }
-
-
-
-    }
-
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionServlet.java?rev=1329428&r1=1329427&r2=1329428&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConnectionServlet.java
 Mon Apr 23 20:26:57 2012
@@ -45,7 +45,6 @@ import org.codehaus.jackson.map.Serializ
 
 public class ConnectionServlet extends AbstractServlet
 {
-
     public ConnectionServlet(Broker broker)
     {
         super(broker, VirtualHost.class, Connection.class);

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java?rev=1329428&r1=1329427&r2=1329428&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
 Mon Apr 23 20:26:57 2012
@@ -53,97 +53,4 @@ public class ExchangeServlet extends Abs
         super(broker, VirtualHost.class, Exchange.class);
     }
 
-    @Override
-    protected void onPut(final HttpServletRequest request, final 
HttpServletResponse response)
-            throws ServletException, IOException
-    {
-
-        response.setContentType("application/json");
-
-        String vhostName = null;
-        String exchangeName = null;
-        if(request.getPathInfo() != null && request.getPathInfo().length()>0)
-        {
-            String path = request.getPathInfo().substring(1);
-            String[] parts = path.split("/");
-            vhostName = parts.length == 0 ? "" : parts[0];
-            if(parts.length > 1)
-            {
-                exchangeName = parts[1];
-            }
-        }
-
-        if(getSubject() == null)
-        {
-            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-        }
-        else if(vhostName == null)
-        {
-            response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-        }
-        else if (exchangeName == null)
-        {
-            response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-        }
-        else
-        {
-            VirtualHost vhost = null;
-            for(VirtualHost host : getBroker().getVirtualHosts())
-            {
-                if(host.getName().equals(vhostName))
-                {
-                    vhost = host;
-                }
-            }
-            if(vhost == null)
-            {
-                response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-            }
-            else
-            {
-                response.setStatus(HttpServletResponse.SC_NO_CONTENT);
-                ObjectMapper mapper = new ObjectMapper();
-                Map<String,Object> exchangeObject = 
mapper.readValue(request.getInputStream(), LinkedHashMap.class);
-                final boolean isDurable = exchangeObject.get("durable") 
instanceof Boolean
-                                          && 
((Boolean)exchangeObject.get("durable"));
-
-                LifetimePolicy lifetimePolicy = LifetimePolicy.PERMANENT;
-
-                if(exchangeObject.get("lifetimePolicy") != null)
-                {
-                    String policyName = 
exchangeObject.get("lifetimePolicy").toString();
-                    try
-                    {
-                        lifetimePolicy =
-                                Enum.valueOf(LifetimePolicy.class, policyName);
-
-                    }
-                    catch (IllegalArgumentException e)
-                    {
-
-                    }
-                }
-
-                final String type = (String) exchangeObject.get("type");
-                final Map<String, Object> attributes = new HashMap<String, 
Object>(exchangeObject);
-
-                attributes.remove("name");
-                attributes.remove("durable");
-                attributes.remove("lifetimePolicy");
-                attributes.remove("type");
-
-                vhost.createExchange(exchangeName, State.ACTIVE, isDurable,
-                                     lifetimePolicy,
-                                     0l,
-                                     type,
-                                     attributes);
-            }
-
-
-
-        }
-
-
-
-    }
 }
\ No newline at end of file

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java?rev=1329428&r1=1329427&r2=1329428&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
 Mon Apr 23 20:26:57 2012
@@ -53,79 +53,4 @@ public class QueueServlet extends Abstra
         super(broker, VirtualHost.class, Queue.class);
     }
 
-    @Override
-    protected void onPut(final HttpServletRequest request, final 
HttpServletResponse response)
-            throws ServletException, IOException
-    {
-
-        response.setContentType("application/json");
-
-        String vhostName = null;
-        String queueName = null;
-        if(request.getPathInfo() != null && request.getPathInfo().length()>0)
-        {
-            String path = request.getPathInfo().substring(1);
-            String[] parts = path.split("/");
-            vhostName = parts.length == 0 ? "" : parts[0];
-            if(parts.length > 1)
-            {
-                queueName = parts[1];
-            }
-        }
-
-        if(getSubject() == null)
-        {
-            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
-        }
-        else if(vhostName == null)
-        {
-            response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-        }
-        else if (queueName == null)
-        {
-            response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-        }
-        else
-        {
-            VirtualHost vhost = null;
-            for(VirtualHost host : getBroker().getVirtualHosts())
-            {
-                if(host.getName().equals(vhostName))
-                {
-                    vhost = host;
-                }
-            }
-            if(vhost == null)
-            {
-                response.setStatus(HttpServletResponse.SC_PRECONDITION_FAILED);
-            }
-            else
-            {
-                response.setStatus(HttpServletResponse.SC_NO_CONTENT);
-                ObjectMapper mapper = new ObjectMapper();
-                Map<String,Object> queueObject = 
mapper.readValue(request.getInputStream(), LinkedHashMap.class);
-
-                final boolean isDurable = queueObject.get("durable") 
instanceof Boolean
-                                          && 
((Boolean)queueObject.get("durable"));
-                final boolean isAutoDelete = queueObject.get("auto_delete") 
instanceof Boolean
-                                             && 
((Boolean)queueObject.get("auto_delete"));
-
-                final Map<String, Object> attributes = new HashMap<String, 
Object>(queueObject);
-                attributes.remove("durable");
-                attributes.remove("auto_delete");
-
-                vhost.createQueue(queueName, State.ACTIVE, isDurable, false,
-                                     isAutoDelete ? LifetimePolicy.AUTO_DELETE 
: LifetimePolicy.PERMANENT,
-                                     0l,
-                                     attributes);
-            }
-
-
-
-        }
-
-
-
-    }
-
 }

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostServlet.java?rev=1329428&r1=1329427&r2=1329428&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostServlet.java
 Mon Apr 23 20:26:57 2012
@@ -48,26 +48,9 @@ import org.codehaus.jackson.map.Serializ
 
 public class VirtualHostServlet extends AbstractServlet
 {
-
     public VirtualHostServlet(Broker broker)
     {
         super(broker, VirtualHost.class);
     }
 
-    protected void onPut(final HttpServletRequest request, final 
HttpServletResponse response)
-            throws ServletException, IOException
-    {
-
-        response.setContentType("application/json");
-        response.setStatus(HttpServletResponse.SC_NO_CONTENT);
-
-        if(request.getPathInfo() != null && request.getPathInfo().length()>0)
-        {
-            String vhostName = request.getPathInfo().substring(1);
-            getBroker().createVirtualHost(vhostName, State.ACTIVE, true, 
LifetimePolicy.PERMANENT, 0L, Collections.EMPTY_MAP);
-        }
-
-
-    }
-
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to