You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2015/01/29 10:30:59 UTC

svn commit: r1655560 - in /qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources: js/qpid/management/ js/qpid/management/store/nonjavakeystore/ js/qpid/management/store/nonjavatruststore/ store/nonjavakeystore/ store/nonjavatrusts...

Author: orudyy
Date: Thu Jan 29 09:30:58 2015
New Revision: 1655560

URL: http://svn.apache.org/r1655560
Log:
QPID-6346: [Java Broker] Add UI for uploading of pem/der keys and certificates for non-java keystores/truststores into web management console

Added:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/show.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/show.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/add.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/show.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/add.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/show.html
Modified:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js?rev=1655560&r1=1655559&r2=1655560&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js Thu Jan 29 09:30:58 2015
@@ -90,6 +90,7 @@ define(["dojo/_base/lang",
                 }
                 this.storeName.set("disabled", effectiveData == null ? false : true);
                 this.storeType.set("disabled", effectiveData == null ? false : true);
+                this.dialog.set("title", effectiveData == null ? "Add Key Store" : "Edit Key Store - " + effectiveData.name)
                 this.dialog.show();
             },
             _initFields:function(data)

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js Thu Jan 29 09:30:58 2015
@@ -0,0 +1,162 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+define(["dojo/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/common/util", "qpid/common/metadata"],
+    function (dom, query, array, registry, util, metadata)
+    {
+        var addKeyStore =
+        {
+            init: function()
+            {
+            },
+            show: function(data)
+            {
+                var that=this;
+                util.parseHtmlIntoDiv(data.containerNode, "store/nonjavakeystore/add.html");
+
+                this.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
+                this.addButton = data.parent.addButton;
+                this.containerNode = data.containerNode;
+
+                if (!window.FileReader)
+                {
+                  this.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
+                  this.keyStoreOldBrowserWarning.className = this.keyStoreOldBrowserWarning.className.replace("hidden", "");
+                }
+
+                this._initUploadFields("privateKey", "private key");
+                this._initUploadFields("certificate", "certificate");
+                this._initUploadFields("intermediateCertificate", "intermediate certificate");
+            },
+            _initUploadFields: function(fieldName, description)
+            {
+                var that=this;
+                this[fieldName] = registry.byId("addStore." + fieldName);
+                this[fieldName + "UploadFields"] = dom.byId("addStore." + fieldName +"UploadFields");
+                this[fieldName + "UploadContainer"] = dom.byId("addStore." + fieldName + "UploadContainer");
+                this[fieldName + "UploadStatusContainer"] = dom.byId("addStore." + fieldName + "UploadStatusContainer");
+                this[fieldName + "File"] = registry.byId("addStore." + fieldName + "File");
+                this[fieldName + "FileClearButton"] = registry.byId("addStore." + fieldName + "FileClearButton");
+
+                // field to submit
+                this[fieldName + "Url"] = registry.byId("addStore." + fieldName + "Url");
+
+                if (window.FileReader)
+                {
+                  this[fieldName + "Reader"] = new FileReader();
+                  this[fieldName + "Reader"].onload = function(evt) {that._uploadFileComplete(evt, fieldName);};
+                  this[fieldName + "Reader"].onerror = function(ex) {console.error("Failed to load " + description + " file", ex);};
+                  this[fieldName + "File"].on("change", function(selected){that._fileChanged(selected, fieldName)});
+                  this[fieldName + "FileClearButton"].on("click", function(event){that._fileClearButtonClicked(event, fieldName)});
+                }
+                else
+                {
+                  // Fall back for IE8/9 which do not support FileReader
+                  this[fieldName + "UploadFields"].style.display = "none";
+                }
+
+                this[fieldName].on("blur", function(){that._pathChanged(fieldName)});
+            },
+            _fileChanged: function (evt, fieldName)
+            {
+                var file = this[fieldName + "File"].domNode.children[0].files[0];
+
+                this[fieldName + "UploadContainer"].innerHTML = file.name;
+                this[fieldName + "UploadStatusContainer"].className = "loadingIcon";
+
+                console.log("Beginning to read  file " + file.name + " for " + fieldName );
+                this[fieldName + "Reader"].readAsDataURL(file);
+            },
+            _uploadFileComplete: function(evt, fieldName)
+            {
+                var reader = evt.target;
+                var result = reader.result;
+                console.log(fieldName + " file read complete, contents " + result);
+
+                this[fieldName + "UploadStatusContainer"].className = "loadedIcon";
+
+                this[fieldName].set("value", "");
+                this[fieldName].setDisabled(true);
+                this[fieldName].set("required", false);
+
+                this[fieldName + "FileClearButton"].setDisabled(false);
+
+                this[fieldName + "Url"].set("value", result);
+            },
+             _fileClearButtonClicked: function(event, fieldName)
+            {
+                this[fieldName + "File"].reset();
+                this[fieldName + "UploadStatusContainer"].className = "";
+                this[fieldName + "UploadContainer"].innerHTML = "";
+                this[fieldName].set("required", true);
+                this[fieldName].setDisabled(false);
+                this[fieldName + "FileClearButton"].setDisabled(true);
+
+                this[fieldName + "Url"].set("value", "");
+            },
+            _pathChanged: function(fieldName)
+            {
+                var serverPathValue = this[fieldName].get("value");
+                this[fieldName + "Url"].set("value", serverPathValue);
+            },
+            update: function(effectiveData)
+            {
+                var attributes = metadata.getMetaData("KeyStore", "NonJavaKeyStore").attributes;
+                var widgets = registry.findWidgets(this.containerNode);
+                var that=this;
+                array.forEach(widgets, function(item)
+                    {
+                        var name = item.id.replace("addStore.","");
+                        var val = effectiveData[name];
+                        item.set("value", val);
+
+                        if (name.indexOf("Url") != -1)
+                        {
+                            var isDataUrl = val && val.indexOf("data:") == 0;
+                            var fieldName = name.substring(0, name.length - 3);
+                            if (isDataUrl)
+                            {
+                                  that[fieldName + "UploadStatusContainer"].className = "loadedIcon";
+                                  that[fieldName + "UploadContainer"].innerHTML = "uploaded.jks";
+                                  that[fieldName].setDisabled(true);
+                                  that[fieldName].set("required", false);
+                                  that[fieldName + "FileClearButton"].setDisabled(false);
+                            }
+                            else
+                            {
+                                  that[fieldName].set("value", val);
+                            }
+                         }
+                    });
+
+            }
+        };
+
+        try
+        {
+            addKeyStore.init();
+        }
+        catch(e)
+        {
+            console.warn(e);
+        }
+        return addKeyStore;
+    }
+);

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/show.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/show.js?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/show.js (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/show.js Thu Jan 29 09:30:58 2015
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+define(["qpid/common/util", "qpid/common/metadata", "dojo/domReady!"],
+  function (util, metadata)
+  {
+
+    function NonJavaKeyStore(data)
+    {
+        this.fields = [];
+        var attributes = metadata.getMetaData("KeyStore", "NonJavaKeyStore").attributes;
+        for(var name in attributes)
+        {
+            this.fields.push(name);
+        }
+        util.buildUI(data.containerNode, data.parent, "store/nonjavakeystore/show.html", this.fields, this);
+    }
+
+    NonJavaKeyStore.prototype.update = function(data)
+    {
+        util.updateUI(data, this.fields, this);
+    }
+
+    return NonJavaKeyStore;
+  }
+);

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js Thu Jan 29 09:30:58 2015
@@ -0,0 +1,162 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+define(["dojo/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/common/util", "qpid/common/metadata"],
+    function (dom, query, array, registry, util, metadata)
+    {
+        var addKeyStore =
+        {
+            init: function()
+            {
+            },
+            show: function(data)
+            {
+                var that=this;
+                util.parseHtmlIntoDiv(data.containerNode, "store/nonjavatruststore/add.html");
+
+                this.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
+                this.addButton = data.parent.addButton;
+                this.containerNode = data.containerNode;
+
+                if (!window.FileReader)
+                {
+                  this.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
+                  this.keyStoreOldBrowserWarning.className = this.keyStoreOldBrowserWarning.className.replace("hidden", "");
+                }
+
+                this._initUploadFields("certificates", "certificates");
+            },
+            _initUploadFields: function(fieldName, description)
+            {
+                var that=this;
+                this[fieldName] = registry.byId("addStore." + fieldName);
+                this[fieldName + "UploadFields"] = dom.byId("addStore." + fieldName +"UploadFields");
+                this[fieldName + "UploadContainer"] = dom.byId("addStore." + fieldName + "UploadContainer");
+                this[fieldName + "UploadStatusContainer"] = dom.byId("addStore." + fieldName + "UploadStatusContainer");
+                this[fieldName + "File"] = registry.byId("addStore." + fieldName + "File");
+                this[fieldName + "FileClearButton"] = registry.byId("addStore." + fieldName + "FileClearButton");
+
+                // field to submit
+                this[fieldName + "Url"] = registry.byId("addStore." + fieldName + "Url");
+
+                if (window.FileReader)
+                {
+                  this[fieldName + "Reader"] = new FileReader();
+                  this[fieldName + "Reader"].onload = function(evt) {that._uploadFileComplete(evt, fieldName);};
+                  this[fieldName + "Reader"].onerror = function(ex) {console.error("Failed to load " + description + " file", ex);};
+                  this[fieldName + "File"].on("change", function(selected){that._fileChanged(selected, fieldName)});
+                  this[fieldName + "FileClearButton"].on("click", function(event){that._fileClearButtonClicked(event, fieldName)});
+                }
+                else
+                {
+                  // Fall back for IE8/9 which do not support FileReader
+                  this[fieldName + "UploadFields"].style.display = "none";
+                }
+
+                this[fieldName].on("blur", function(){that._pathChanged(fieldName)});
+            },
+            _fileChanged: function (evt, fieldName)
+            {
+                var file = this[fieldName + "File"].domNode.children[0].files[0];
+
+                this[fieldName + "UploadContainer"].innerHTML = file.name;
+                this[fieldName + "UploadStatusContainer"].className = "loadingIcon";
+
+                console.log("Beginning to read  file " + file.name + " for " + fieldName );
+                this[fieldName + "Reader"].readAsDataURL(file);
+            },
+            _uploadFileComplete: function(evt, fieldName)
+            {
+                var reader = evt.target;
+                var result = reader.result;
+                console.log(fieldName + " file read complete, contents " + result);
+
+                // it is not clear the purpose of this operation
+                //this.addButton.setDisabled(false);
+                this[fieldName + "UploadStatusContainer"].className = "loadedIcon";
+
+                this[fieldName].set("value", "");
+                this[fieldName].setDisabled(true);
+                this[fieldName].set("required", false);
+
+                this[fieldName + "FileClearButton"].setDisabled(false);
+
+                this[fieldName + "Url"].set("value", result);
+            },
+             _fileClearButtonClicked: function(event, fieldName)
+            {
+                this[fieldName + "File"].reset();
+                this[fieldName + "UploadStatusContainer"].className = "";
+                this[fieldName + "UploadContainer"].innerHTML = "";
+                this[fieldName].set("required", true);
+                this[fieldName].setDisabled(false);
+                this[fieldName + "FileClearButton"].setDisabled(true);
+
+                this[fieldName + "Url"].set("value", "");
+            },
+            _pathChanged: function(fieldName)
+            {
+                var serverPathValue = this[fieldName].get("value");
+                this[fieldName + "Url"].set("value", serverPathValue);
+            },
+            update: function(effectiveData)
+            {
+                var attributes = metadata.getMetaData("TrustStore", "NonJavaTrustStore").attributes;
+                var widgets = registry.findWidgets(this.containerNode);
+                var that=this;
+                array.forEach(widgets, function(item)
+                    {
+                        var name = item.id.replace("addStore.","");
+                        var val = effectiveData[name];
+                        item.set("value", val);
+
+                        if (name.indexOf("Url") != -1)
+                        {
+                            var isDataUrl = val && val.indexOf("data:") == 0;
+                            var fieldName = name.substring(0, name.length - 3);
+                            if (isDataUrl)
+                            {
+                                  that[fieldName + "UploadStatusContainer"].className = "loadedIcon";
+                                  that[fieldName + "UploadContainer"].innerHTML = "uploaded.jks";
+                                  that[fieldName].setDisabled(true);
+                                  that[fieldName].set("required", false);
+                                  that[fieldName + "FileClearButton"].setDisabled(false);
+                            }
+                            else
+                            {
+                                  that[fieldName].set("value", val);
+                            }
+                         }
+                    });
+
+            }
+        };
+
+        try
+        {
+            addKeyStore.init();
+        }
+        catch(e)
+        {
+            console.warn(e);
+        }
+        return addKeyStore;
+    }
+);

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/show.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/show.js?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/show.js (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/show.js Thu Jan 29 09:30:58 2015
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+define(["dojo/query",
+        "qpid/common/util",
+        "qpid/common/metadata",
+        "dojox/grid/DataGrid",
+        "qpid/common/UpdatableStore",
+        "qpid/management/UserPreferences",
+        "dojo/domReady!"],
+  function (query, util, metadata, DataGrid, UpdatableStore, UserPreferences)
+  {
+
+
+    function NonJavaTrustStore(data)
+    {
+        this.fields = [];
+        var attributes = metadata.getMetaData("TrustStore", "NonJavaTrustStore").attributes;
+        for(var name in attributes)
+        {
+            this.fields.push(name);
+        }
+        util.buildUI(data.containerNode, data.parent, "store/nonjavatruststore/show.html", this.fields, this);
+        var gridNode = query(".details", data.containerNode)[0]
+        this.detailsGrid = new UpdatableStore([],
+                  gridNode,
+                  [
+                   { name: 'Subject', field: 'SUBJECT_NAME', width: '25%' },
+                   { name: 'Issuer', field: 'ISSUER_NAME', width: '25%' },
+                   { name: 'Valid from', field: 'VALID_START', width: '25%', formatter: function(value){ return value ? UserPreferences.formatDateTime(value) : "";}},
+                   { name: 'Valid to', field: 'VALID_END', width: '25%', formatter: function(value){ return value ? UserPreferences.formatDateTime(value) : "";}}
+                  ]);
+    }
+
+    NonJavaTrustStore.prototype.update = function(data)
+    {
+        util.updateUI(data, this.fields, this);
+        var details = data.certificateDetails;
+        for(var i=0; i < details.length; i++)
+        {
+            details[i].id = details[i].SUBJECT_NAME + "_" +  details[i].ISSUER_NAME + "_" + details[i].VALID_START + "_" + details[i].VALID_END;
+        }
+        this.detailsGrid.grid.beginUpdate();
+        this.detailsGrid.update(details);
+        this.detailsGrid.grid.endUpdate();
+    }
+
+    return NonJavaTrustStore;
+  }
+);

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/add.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/add.html?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/add.html (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/add.html Thu Jan 29 09:30:58 2015
@@ -0,0 +1,153 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+
+<div>
+    <div id="addStore.oldBrowserWarning" class="infoMessage hidden clear"></div>
+
+    <div class="clear">
+        <div id="addStore.privateKeyLabel" class="formLabel-labelCell tableContainer-labelCell">Private Key URL or Path*:</div>
+        <div class="formLabel-controlCell tableContainer-valueCell">
+            <input type="text" id="addStore.privateKey"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'privateKey',
+                              placeHolder: 'Private key URL or path to file on server',
+                              required: true,
+                              excluded: true,
+                              promptMessage: 'Location of the private key',
+                              title: 'Enter private key URL or path to file containing private key in DER or PEM format'" />
+
+            <!-- Hidden and used purely for form submission -->
+            <input type="hidden" id="addStore.privateKeyUrl"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'privateKeyUrl',
+                              required: true" />
+
+
+            <div id="addStore.privateKeyUploadFields" class="clear">
+
+                <div class="alignLeft" >
+                    <span id="addStore.privateKeyUploadContainer" class="infoMessage"></span>
+                    <span id="addStore.privateKeyUploadStatusContainer"></span>
+                </div>
+
+                <div class="alignRight">
+                    <input type="file" id="addStore.privateKeyFile"
+                           multiple="false"
+                           data-dojo-type="dojox/form/Uploader"
+                           data-dojo-props="label: 'Upload'"/>
+                    <button id="addStore.privateKeyFileClearButton"
+                            data-dojo-type="dijit/form/Button"
+                            data-dojo-props="label: 'Clear',
+                                            disabled: true">
+                    </button>
+                </div>
+                <div class="clear"></div>
+            </div>
+        </div>
+    </div>
+
+    <div class="clear">
+        <div id="addStore.serverPathLabel" class="formLabel-labelCell tableContainer-labelCell">Certificate URL or Path*:</div>
+        <div class="formLabel-controlCell tableContainer-valueCell">
+            <input type="text" id="addStore.certificate"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'certificate',
+                              placeHolder: 'Certificate URL or path to certificate file on server',
+                              required: true,
+                              excluded: true,
+                              promptMessage: 'Location of the certificate',
+                              title: 'Enter certificate URL or path to file containing certificate in DER or PEM format'" />
+
+            <!-- Hidden and used purely for form submission -->
+            <input type="hidden" id="addStore.certificateUrl"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'certificateUrl',
+                              required: true" />
+
+
+            <div id="addStore.certificateUploadFields">
+                <div class="alignLeft">
+                    <span id="addStore.certificateUploadContainer" class="infoMessage"></span>
+                    <span id="addStore.certificateUploadStatusContainer"></span>
+                </div>
+
+                <div class="alignRight">
+                    <input type="file" id="addStore.certificateFile"
+                           multiple="false"
+                           data-dojo-type="dojox/form/Uploader"
+                           data-dojo-props="label: 'Upload'"/>
+                    <button id="addStore.certificateFileClearButton"
+                            data-dojo-type="dijit/form/Button"
+                            data-dojo-props="label: 'Clear',
+                                            disabled: true">
+                    </button>
+                </div>
+                <div class="clear"></div>
+            </div>
+        </div>
+    </div>
+
+    <div class="clear">
+        <div id="addStore.intermediateCertificateLabel" class="formLabel-labelCell tableContainer-labelCell">Intermediate Certificate URL or Path:</div>
+        <div class="formLabel-controlCell tableContainer-valueCell">
+            <input type="text" id="addStore.intermediateCertificate"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'intermediateCertificate',
+                              placeHolder: 'Intermediate certificate URL or path to file on server',
+                              required: false,
+                              excluded: true,
+                              promptMessage: 'Location of the intermediate certificate',
+                              title: 'Enter intermediate certificate URL or path to file containing certificate in format DER or PEM'" />
+
+            <!-- Hidden and used purely for form submission -->
+            <input type="hidden" id="addStore.intermediateCertificateUrl"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'intermediateCertificateUrl',
+                              required: false" />
+        </div>
+
+        <div id="addStore.intermediateCertificateUploadFields">
+            <div class="alignLeft">
+                <span id="addStore.intermediateCertificateUploadContainer" class="infoMessage"></span>
+                <span id="addStore.intermediateCertificateUploadStatusContainer"></span>
+            </div>
+
+            <div class="alignRight">
+                <input type="file" id="addStore.intermediateCertificateFile"
+                       multiple="false"
+                       data-dojo-type="dojox/form/Uploader"
+                       data-dojo-props="label: 'Upload'"/>
+                <button id="addStore.intermediateCertificateFileClearButton"
+                        data-dojo-type="dijit/form/Button"
+                        data-dojo-props="label: 'Clear',
+                                        disabled: true">
+                </button>
+            </div>
+            <div class="clear"></div>
+        </div>
+    </div>
+
+</div>

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/show.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/show.html?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/show.html (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavakeystore/show.html Thu Jan 29 09:30:58 2015
@@ -0,0 +1,35 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<div>
+    <div class="clear privateKeyUrlContainer">
+        <div class="formLabel-labelCell">Private Key:</div>
+        <div ><span class="privateKeyUrl" ></span></div>
+    </div>
+    <div class="clear certificateUrlContainer">
+        <div class="formLabel-labelCell">Certificate:</div>
+        <div><span class="certificateUrl" ></span></div>
+    </div>
+    <div class="clear intermediateCertificateUrlContainer">
+        <div class="formLabel-labelCell">Intermediate Certificate:</div>
+        <div><span class="intermediateCertificateUrl" ></span></div>
+    </div>
+    <div class="clear"></div>
+</div>
+

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/add.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/add.html?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/add.html (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/add.html Thu Jan 29 09:30:58 2015
@@ -0,0 +1,67 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+
+<div>
+    <div id="addStore.oldBrowserWarning" class="infoMessage hidden clear"></div>
+
+    <div class="clear">
+        <div id="addStore.certificatesLabel" class="formLabel-labelCell tableContainer-labelCell">Certificate URL or Path*:</div>
+        <div class="formLabel-controlCell tableContainer-valueCell">
+            <input type="text" id="addStore.certificates"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'certificates',
+                              placeHolder: 'Certificate URL or path to certificate file on server',
+                              required: true,
+                              excluded: true,
+                              promptMessage: 'Location of the certificate',
+                              title: 'Enter certificate URL or path to file containing certificate in DER or PEM format'" />
+
+            <!-- Hidden and used purely for form submission -->
+            <input type="hidden" id="addStore.certificatesUrl"
+                   data-dojo-type="dijit/form/ValidationTextBox"
+                   data-dojo-props="
+                              name: 'certificatesUrl',
+                              required: true" />
+
+
+            <div id="addStore.certificatesUploadFields">
+                <div class="alignLeft">
+                    <span id="addStore.certificatesUploadContainer" class="infoMessage"></span>
+                    <span id="addStore.certificatesUploadStatusContainer"></span>
+                </div>
+
+                <div class="alignRight">
+                    <input type="file" id="addStore.certificatesFile"
+                           multiple="false"
+                           data-dojo-type="dojox/form/Uploader"
+                           data-dojo-props="label: 'Upload'"/>
+                    <button id="addStore.certificatesFileClearButton"
+                            data-dojo-type="dijit/form/Button"
+                            data-dojo-props="label: 'Clear',
+                                            disabled: true">
+                    </button>
+                </div>
+                <div class="clear"></div>
+            </div>
+        </div>
+    </div>
+
+</div>

Added: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/show.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/show.html?rev=1655560&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/show.html (added)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/store/nonjavatruststore/show.html Thu Jan 29 09:30:58 2015
@@ -0,0 +1,31 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<div>
+    <div class="clear certificatesUrlContainer">
+        <div class="formLabel-labelCell">Certificate:</div>
+        <div><span class="certificatesUrl" ></span></div>
+    </div>
+    <div class="clear"></div>
+    <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Certificate details'" class="detailsGridPanel">
+        <div class="details"></div>
+    </div>
+    <div></div>
+</div>
+



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org