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

Reply via email to