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]