Author: rgodfrey Date: Mon Apr 9 19:03:12 2012 New Revision: 1311372 URL: http://svn.apache.org/viewvc?rev=1311372&view=rev Log: NO-JIRA : [Java Config] Add "Add Exchange" functionality
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 qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/vhost.html qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java 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=1311372&r1=1311371&r2=1311372&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 9 19:03:12 2012 @@ -201,7 +201,7 @@ public class ExchangeServlet extends Abs { response.setContentType("application/json"); - + String vhostName = null; String exchangeName = null; if(request.getPathInfo() != null && request.getPathInfo().length()>0) @@ -246,20 +246,36 @@ public class ExchangeServlet extends Abs 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")); - final boolean isAutoDelete = exchangeObject.get("auto_delete") instanceof Boolean - && ((Boolean)exchangeObject.get("auto_delete")); + + 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("auto_delete"); + attributes.remove("lifetimePolicy"); attributes.remove("type"); vhost.createExchange(exchangeName, State.ACTIVE, isDurable, - isAutoDelete ? LifetimePolicy.AUTO_DELETE : LifetimePolicy.PERMANENT, + lifetimePolicy, 0l, type, attributes); Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js?rev=1311372&r1=1311371&r2=1311372&view=diff ============================================================================== --- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js (original) +++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js Mon Apr 9 19:03:12 2012 @@ -71,15 +71,18 @@ require(["dojo/store/JsonRest", var bindings = thisObj.exchangeData[ "bindings" ]; var consumers = thisObj.exchangeData[ "consumers" ]; - for(var i=0; i < bindings.length; i++) + if(bindings) { - if(bindings[i].arguments) + for(var i=0; i < bindings.length; i++) { - bindings[i].argumentString = dojo.toJson(bindings[i].arguments); - } - else - { - bindings[i].argumentString = ""; + if(bindings[i].arguments) + { + bindings[i].argumentString = dojo.toJson(bindings[i].arguments); + } + else + { + bindings[i].argumentString = ""; + } } } @@ -87,9 +90,6 @@ require(["dojo/store/JsonRest", thisObj.updateHeader(); - - stats = thisObj.exchangeData[ "statistics" ]; - var messageIn = thisObj.exchangeData["messagesIn"]; var bytesIn = thisObj.exchangeData["bytesIn"]; var messageDrop = thisObj.exchangeData["messagesDropped"]; Modified: qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/vhost.html URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/vhost.html?rev=1311372&r1=1311371&r2=1311372&view=diff ============================================================================== --- qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/vhost.html (original) +++ qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/vhost.html Mon Apr 9 19:03:12 2012 @@ -34,6 +34,27 @@ </script> <script src="/js/sasl.js"> </script> + <script> + require(["dojo/parser", + /* dojox/ validate resources */ + "dojox/validate/us", "dojox/validate/web", + /* basic dijit classes */ + "dijit/form/CheckBox", "dijit/form/Textarea", "dijit/form/FilteringSelect", "dijit/form/TextBox", "dijit/form/ValidationTextBox", "dijit/form/DateTextBox", "dijit/form/TimeTextBox", "dijit/form/Button", "dijit/form/RadioButton", "dijit/form/Form", "dijit/form/DateTextBox", + /* basic dojox classes */ + "dojox/form/BusyButton", "dojox/form/CheckedMultiSelect", "dojo/domReady!"]); + + // Require the Dialog class + require(["dijit/registry", "dijit/Dialog"], function(registry) { + // Show the dialog + addExchangeDialog = function() { + registry.byId("addExchange").show(); + } + // Hide the dialog + hideAddExchange = function() { + registry.byId("addExchange").hide(); + } + }); + </script> </head> <body class="claro"> @@ -66,6 +87,90 @@ <br/> <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Exchanges'"> <div id="exchanges"></div> + <br/> + <button onclick="addExchangeDialog();">Add Exchange</button> + + <div class="dijitHidden"> + <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Add Exchange'" id="addExchange"> + <h1>Add a new Exchange</h1> + <br/> + <form dojoType="dijit.form.Form" method="post"> + <script type="dojo/method" event="onSubmit"> + if(this.validate()) + { + var exchangeData = {}; + exchangeData.name = dojo.byId("addExchangeName").value; + exchangeData.type = dijit.byId("addExchangeType").get('value'); + exchangeData.durable = dojo.byId("addExchangeDurable").checked; + exchangeData.lifetimePolicy = dijit.byId("addExchangeLifetimePolicy").get('value'); + + + var urlQuery = dojo.queryToObject(dojo.doc.location.search.substr((dojo.doc.location.search[0] === "?" ? 1 : 0))); + var postUrl = "/rest/exchange/" + urlQuery.vhost + "/" + exchangeData.name; + + + dojo.xhrPut( { url: "/rest/exchange/" + urlQuery.vhost + "/" + exchangeData.name, + handleAs: "json", + headers: { "Content-Type": "application/json"}, + putData: dojo.toJson( exchangeData ) + }).then( function(data) + { + hideAddExchange(); + }, + function(error) + { + alert(error); + } + ); + return false; + } + else + { + alert('Form contains invalid data. Please correct first'); + return false; + } + return false; + </script> + <table cellpadding="0" cellspacing="2"> + <tr> + <td valign="top"><strong>Name: </strong></td> + <td><input type="text" required="true" name="name" id="addExchangeName" placeholder="Exchange Name" + dojoType="dijit.form.ValidationTextBox"/></td> + </tr> + <tr> + <td valign="top"><strong>Type: </strong></td> + <td> + <select name="type" id="addExchangeType" dojoType="dijit.form.FilteringSelect"> + <option value="direct">direct</option> + <option value="topic">topic</option> + <option value="headers">headers</option> + <option value="fanout">fanout</option> + </select> + </td> + </tr> + <tr> + <td valign="top"><strong>Durable? </strong></td> + <td><input type="checkbox" name="durable" id="addExchangeDurable" dojoType="dijit.form.CheckBox" /></td> + </tr> + <tr> + <td valign="top"><strong>Lifetime Policy: </strong></td> + <td> + <select name="lifetimePolicy" id="addExchangeLifetimePolicy" dojoType="dijit.form.FilteringSelect"> + <option value="PERMANENT">permanent</option> + <option value="AUTO_DELETE">auto-delete</option> + </select> + </td> + </tr> + </table> + <br/> + <input type="submit" value="Submit Form" id="addExchangeOk" dojoType="dojox.form.BusyButton" + label="Add" busyLabel="Submitting Form..." timeout="2000" /> + <input type="button" value="Cancel" label="Cancel" id="addExchangeCancel" data-dojo-props="onClick:hideAddExchange" dojoType="dijit.form.Button" /> + + </form> + + </div> + </div> </div> <br/> <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Queues'"> Modified: qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java URL: http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java?rev=1311372&r1=1311371&r2=1311372&view=diff ============================================================================== --- qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java (original) +++ qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java Mon Apr 9 19:03:12 2012 @@ -253,7 +253,7 @@ final class ExchangeAdapter extends Abst { if(ID.equals(name)) { - return getId(); + return getId(); } else if(NAME.equals(name)) { @@ -269,7 +269,7 @@ final class ExchangeAdapter extends Abst } else if(LIFETIME_POLICY.equals(name)) { - return LifetimePolicy.PERMANENT; + return _exchange.isAutoDelete() ? LifetimePolicy.AUTO_DELETE : LifetimePolicy.PERMANENT; } else if(TIME_TO_LIVE.equals(name)) { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org