summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2015-02-17 14:37:53 +0000
committerAlex Rudyy <orudyy@apache.org>2015-02-17 14:37:53 +0000
commit9b0b08e1bf468b07e95637d51d53a0a5baf77f67 (patch)
tree6909443956b2ccfa20d2d3654bbeeb4b23527b15
parente15f00f8565cccda1e63869ca7c1a64d16af29ae (diff)
downloadqpid-python-9b0b08e1bf468b07e95637d51d53a0a5baf77f67.tar.gz
QPID-6364: Introduce attribute annotation property 'secureValueFilter' to mask only secure values matching the filter.
Set secureValueFilter on keystores/trustores to mask only data URLs. Stop applying oversize when actuals attributes are requested. Update corresponding keystore/truststore UI tp show actual values for non data URLs. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1660391 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java17
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredDerivedAttribute.java18
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectAttribute.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/DerivedAttribute.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStore.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/NonJavaKeyStore.java2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java2
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ResourceWidget.js36
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js7
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filekeystore/add.js79
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filetruststore/add.js74
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js93
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js85
-rw-r--r--qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java8
16 files changed, 279 insertions, 155 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
index b9a4b32acb..3ec60604c3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
@@ -44,6 +44,7 @@ import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Pattern;
import javax.security.auth.Subject;
@@ -1136,8 +1137,9 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im
if(attr != null && (attr.isAutomated() || attr.isDerived()))
{
Object value = attr.getValue((X)this);
- if(value != null && attr.isSecure() &&
- !SecurityManager.isSystemProcess())
+ Pattern secureValueFilter = attr.getSecureValueFilter();
+ if(value != null && attr.isSecure() && !SecurityManager.isSystemProcess() &&
+ (secureValueFilter == null || secureValueFilter.matcher(value.toString()).matches()))
{
return SECURE_VALUES.get(value.getClass());
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java
index 9fca898dc0..342b7ac0ba 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredAutomatedAttribute.java
@@ -28,6 +28,7 @@ import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.regex.Pattern;
import org.apache.log4j.Logger;
@@ -37,6 +38,7 @@ public class ConfiguredAutomatedAttribute<C extends ConfiguredObject, T> extend
private final ManagedAttribute _annotation;
private final Method _validValuesMethod;
+ private final Pattern _secureValuePattern;
ConfiguredAutomatedAttribute(final Class<C> clazz,
final Method getter,
@@ -53,6 +55,16 @@ public class ConfiguredAutomatedAttribute<C extends ConfiguredObject, T> extend
validValuesMethod = getValidValuesMethod(validValue, clazz);
}
_validValuesMethod = validValuesMethod;
+
+ String secureValueFilter = _annotation.secureValueFilter();
+ if (secureValueFilter == null || "".equals(secureValueFilter))
+ {
+ _secureValuePattern = null;
+ }
+ else
+ {
+ _secureValuePattern = Pattern.compile(secureValueFilter);
+ }
}
private Method getValidValuesMethod(final String validValue, final Class<C> clazz)
@@ -140,6 +152,11 @@ public class ConfiguredAutomatedAttribute<C extends ConfiguredObject, T> extend
return _annotation.description();
}
+ public Pattern getSecureValueFilter()
+ {
+ return _secureValuePattern;
+ }
+
public Collection<String> validValues()
{
if(_validValuesMethod != null)
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredDerivedAttribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredDerivedAttribute.java
index 71488edb8c..20fd0264c6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredDerivedAttribute.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredDerivedAttribute.java
@@ -21,10 +21,12 @@
package org.apache.qpid.server.model;
import java.lang.reflect.Method;
+import java.util.regex.Pattern;
public class ConfiguredDerivedAttribute<C extends ConfiguredObject, T> extends ConfiguredObjectAttribute<C,T>
{
private final DerivedAttribute _annotation;
+ private final Pattern _secureValuePattern;
ConfiguredDerivedAttribute(final Class<C> clazz,
final Method getter,
@@ -32,6 +34,16 @@ public class ConfiguredDerivedAttribute<C extends ConfiguredObject, T> extends
{
super(clazz, getter);
_annotation = annotation;
+
+ String secureValueFilter = _annotation.secureValueFilter();
+ if (secureValueFilter == null || "".equals(secureValueFilter))
+ {
+ _secureValuePattern = null;
+ }
+ else
+ {
+ _secureValuePattern = Pattern.compile(secureValueFilter);
+ }
}
public boolean isAutomated()
@@ -72,4 +84,10 @@ public class ConfiguredDerivedAttribute<C extends ConfiguredObject, T> extends
return _annotation.description();
}
+ @Override
+ public Pattern getSecureValueFilter()
+ {
+ return _secureValuePattern;
+ }
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectAttribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectAttribute.java
index 73b7839a8e..4f15d612f9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectAttribute.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectAttribute.java
@@ -22,6 +22,7 @@ package org.apache.qpid.server.model;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
+import java.util.regex.Pattern;
public abstract class ConfiguredObjectAttribute<C extends ConfiguredObject, T> extends ConfiguredObjectAttributeOrStatistic<C,T>
{
@@ -49,6 +50,8 @@ public abstract class ConfiguredObjectAttribute<C extends ConfiguredObject, T> e
public abstract String getDescription();
+ public abstract Pattern getSecureValueFilter();
+
public T convert(final Object value, C object)
{
final AttributeValueConverter<T> converter = getConverter();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/DerivedAttribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/DerivedAttribute.java
index e5c17a17e4..6de6bf25c3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/DerivedAttribute.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/DerivedAttribute.java
@@ -32,4 +32,5 @@ public @interface DerivedAttribute
boolean persist() default false;
String description() default "";
boolean oversize() default false;
+ String secureValueFilter() default "";
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java
index 05b2c610ba..2f96299703 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java
@@ -37,4 +37,5 @@ public @interface ManagedAttribute
String[] validValues() default {};
boolean oversize() default false;
String oversizedAltText() default "";
+ String secureValueFilter() default "";
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStore.java
index 0607f4b3d3..8b6a83d443 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStore.java
@@ -62,7 +62,7 @@ public interface FileKeyStore<X extends FileKeyStore<X>> extends KeyStore<X>
@ManagedAttribute(defaultValue = "${this:path}")
String getDescription();
- @ManagedAttribute( mandatory = true, secure = true, oversize = true, oversizedAltText = OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT)
+ @ManagedAttribute( mandatory = true, secure = true, oversize = true, oversizedAltText = OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT, secureValueFilter = "^data\\:.*")
String getStoreUrl();
@DerivedAttribute
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/NonJavaKeyStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/NonJavaKeyStore.java
index 78509182b5..f239b83f27 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/NonJavaKeyStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/NonJavaKeyStore.java
@@ -31,7 +31,7 @@ public interface NonJavaKeyStore<X extends NonJavaKeyStore<X>> extends KeyStore<
@ManagedAttribute(defaultValue = "${this:subjectName}")
String getDescription();
- @ManagedAttribute( mandatory = true, secure = true, oversize = true, oversizedAltText = OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT )
+ @ManagedAttribute( mandatory = true, secure = true, oversize = true, oversizedAltText = OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT, secureValueFilter = "^data\\:.*")
String getPrivateKeyUrl();
@ManagedAttribute( mandatory = true, oversize = true, oversizedAltText = OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT )
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
index 331b50ea7c..d02b85df7f 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
@@ -169,7 +169,7 @@ public class ConfiguredObjectToMapConverter
value = confObject.getAttribute(name);
}
- if(attribute.isOversized() && !extractAsConfig)
+ if(attribute.isOversized() && !extractAsConfig && !useActualValues)
{
String valueString = String.valueOf(value);
if(valueString.length() > oversizeThreshold)
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ResourceWidget.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ResourceWidget.js
index f603c96ff3..767191bcd0 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ResourceWidget.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/ResourceWidget.js
@@ -44,6 +44,7 @@ function (declare, array, lang, util, _WidgetBase, _TemplatedMixin, _WidgetsInTe
fileReaderSupported: window.FileReader ? true : false,
displayWarningWhenFileReaderUnsupported: false,
isDebug: false,
+ uploaded: false,
buildRendering: function()
{
@@ -127,6 +128,7 @@ function (declare, array, lang, util, _WidgetBase, _TemplatedMixin, _WidgetsInTe
},
_fileClearButtonClicked: function(event)
{
+ this.uploaded = false;
this.uploader.reset();
this.set("value", this._resetValue);
},
@@ -134,20 +136,17 @@ function (declare, array, lang, util, _WidgetBase, _TemplatedMixin, _WidgetsInTe
{
var serverPathValue = this.resourceLocation.get("value") || this._resetValue;
this.set("value", serverPathValue);
+ if (this.uploaded )
+ {
+ this.uploaded = !serverPathValue;
+ }
},
_setValueAttr: function(newValue, priorityChange)
{
- var isDataUrl = newValue && newValue.indexOf("data:") == 0;
+ var isDataUrl = this.uploaded || ( newValue && newValue.indexOf("data:") == 0 );
if (isDataUrl)
{
- this.uploadData.style.display = "block";
- this.selectedFileStatus.className = "loadedIcon";
- this.selectedFile.innerHTML = this.selectedFileName || "uploaded data";
- this.resourceLocation.set("value", "");
- this.resourceLocation.setDisabled(true);
- this.resourceLocation.set("required", false);
- this.clearButton.setDisabled(false);
- this.selectedFileStatus.className = "loadedIcon";
+ this._initUploaded(true);
}
else
{
@@ -172,6 +171,25 @@ function (declare, array, lang, util, _WidgetBase, _TemplatedMixin, _WidgetsInTe
_setPlaceHolderAttr: function(newValue)
{
this.resourceLocation.set("placeHolder", newValue);
+ },
+ _setUploadedAttr: function(uploaded)
+ {
+ this.uploaded = uploaded;
+ this._initUploaded(uploaded);
+ },
+ _initUploaded: function(uploaded)
+ {
+ if (uploaded)
+ {
+ this.uploadData.style.display = "block";
+ this.selectedFileStatus.className = "loadedIcon";
+ this.selectedFile.innerHTML = this.selectedFileName || "uploaded data";
+ this.resourceLocation.set("value", "");
+ this.resourceLocation.setDisabled(true);
+ this.resourceLocation.set("required", false);
+ this.clearButton.setDisabled(false);
+ this.selectedFileStatus.className = "loadedIcon";
+ }
}
}
);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js
index 5a42f12870..da37acec82 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addStore.js
@@ -81,11 +81,11 @@ define(["dojo/_base/lang",
show: function(effectiveData)
{
this.effectiveData = effectiveData;
+ this._destroyTypeFields(this.containerNode);
this.storeForm.reset();
if (effectiveData)
{
- this._destroyTypeFields(this.containerNode);
this._initFields(effectiveData);
}
this.storeName.set("disabled", effectiveData == null ? false : true);
@@ -185,11 +185,6 @@ define(["dojo/_base/lang",
{
typeUI.show({containerNode:typeFieldsContainer, parent: that, data: that.initialData, effectiveData: that.effectiveData});
util.applyMetadataToWidgets(typeFieldsContainer, category, type);
- if (that.effectiveData)
- {
- typeUI.update(that.effectiveData);
- that.effectiveData = undefined;
- }
}
catch(e)
{
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filekeystore/add.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filekeystore/add.js
index b4c45d8f99..dfe8e5059a 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filekeystore/add.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filekeystore/add.js
@@ -18,30 +18,41 @@
* 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)
+define(["dojo/dom",
+ "dojo/query",
+ "dojo/_base/array",
+ "dijit/registry",
+ "qpid/common/util",
+ "qpid/common/metadata",
+ "dojo/parser",
+ "dojo/text!store/filekeystore/add.html",
+ "dojo/domReady!"],
+ function (dom, query, array, registry, util, metadata, parser, template)
{
var addKeyStore =
{
- init: function()
- {
- },
show: function(data)
{
var that=this;
- util.parseHtmlIntoDiv(data.containerNode, "store/filekeystore/add.html");
-
this.containerNode = data.containerNode;
+ data.containerNode.innerHTML = template;
+ parser.parse(this.containerNode).then(function(instances)
+ {
+ that.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
- this.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
+ if (!window.FileReader)
+ {
+ that.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
+ that.keyStoreOldBrowserWarning.className = that.keyStoreOldBrowserWarning.className.replace("hidden", "");
+ }
- this.addButton = data.parent.addButton;
+ if (data.effectiveData)
+ {
+ that.update(data.effectiveData);
+ }
- if (!window.FileReader)
- {
- this.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
- this.keyStoreOldBrowserWarning.className = this.keyStoreOldBrowserWarning.className.replace("hidden", "");
- }
+ util.applyMetadataToWidgets(data.containerNode, "KeyStore", "FileKeyStore");
+ });
},
update: function(effectiveData)
{
@@ -53,28 +64,38 @@ define(["dojo/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/comm
if (name in attributes )
{
var attribute = attributes[name];
- if (attribute.secure || attribute.oversize)
- {
- item.set("required", false);
- item.set("placeHolder", effectiveData[name]);
- }
- else
+ var value = effectiveData[name];
+ if (value)
{
- item.set("value", effectiveData[name]);
+ if (attribute.secure)
+ {
+ if (!/^\*+/.test(value) )
+ {
+ item.set("value", value);
+ }
+ else
+ {
+ item.set("required", false);
+ if (name == "storeUrl")
+ {
+ item.set("uploaded", true)
+ }
+ else
+ {
+ item.set("placeHolder", value);
+ }
+ }
+ }
+ else
+ {
+ item.set("value", value);
+ }
}
}
});
}
};
- try
- {
- addKeyStore.init();
- }
- catch(e)
- {
- console.warn(e);
- }
return addKeyStore;
}
);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filetruststore/add.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filetruststore/add.js
index e04ee1a835..5893ce0d2d 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filetruststore/add.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/filetruststore/add.js
@@ -18,31 +18,42 @@
* 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)
+define(["dojo/dom",
+ "dojo/query",
+ "dojo/_base/array",
+ "dijit/registry",
+ "qpid/common/util",
+ "qpid/common/metadata",
+ "dojo/parser",
+ "dojo/text!store/filetruststore/add.html",
+ "dojo/domReady!"],
+ function (dom, query, array, registry, util, metadata, parser, template)
{
var addTrustStore =
{
- init: function()
- {
- },
show: function(data)
{
var that=this;
- util.parseHtmlIntoDiv(data.containerNode, "store/filetruststore/add.html");
-
this.containerNode = data.containerNode;
+ data.containerNode.innerHTML = template;
+ parser.parse(this.containerNode).then(function(instances)
+ {
+ that.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
- this.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
+ if (!window.FileReader)
+ {
+ // Fall back for IE8/9 which do not support FileReader
+ that.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
+ that.keyStoreOldBrowserWarning.className = that.keyStoreOldBrowserWarning.className.replace("hidden", "");
+ }
- this.addButton = data.parent.addButton;
+ if (data.effectiveData)
+ {
+ that.update(data.effectiveData);
+ }
- if (!window.FileReader)
- {
- // Fall back for IE8/9 which do not support FileReader
- this.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
- this.keyStoreOldBrowserWarning.className = this.keyStoreOldBrowserWarning.className.replace("hidden", "");
- }
+ util.applyMetadataToWidgets(data.containerNode, "TrustStore", "FileTrustStore");
+ });
},
update: function(effectiveData)
{
@@ -54,14 +65,25 @@ define(["dojo/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/comm
if (name in attributes )
{
var attribute = attributes[name];
- if (attribute.secure || attribute.oversize)
- {
- item.set("required", false);
- item.set("placeHolder", effectiveData[name]);
- }
- else
+ var value = effectiveData[name];
+ if (value)
{
- item.set("value", effectiveData[name]);
+ if (attribute.secure)
+ {
+ if (!/^\*+/.test(value) )
+ {
+ item.set("value", value);
+ }
+ else
+ {
+ item.set("placeHolder", value);
+ item.set("required", false);
+ }
+ }
+ else
+ {
+ item.set("value", value);
+ }
}
}
});
@@ -69,14 +91,6 @@ define(["dojo/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/comm
}
};
- try
- {
- addTrustStore.init();
- }
- catch(e)
- {
- console.warn(e);
- }
return addTrustStore;
}
);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js
index 0d74699d79..5c25ae2cc6 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavakeystore/add.js
@@ -18,64 +18,85 @@
* under the License.
*
*/
-define(["dojo/dom","dojo/query", "dojo/_base/array", "dijit/registry","qpid/common/util", "qpid/common/metadata", "qpid/common/ResourceWidget"],
- function (dom, query, array, registry, util, metadata)
+define(["dojo/dom",
+ "dojo/query",
+ "dojo/_base/array",
+ "dijit/registry",
+ "qpid/common/util",
+ "qpid/common/metadata",
+ "dojo/parser",
+ "dojo/text!store/nonjavakeystore/add.html",
+ "qpid/common/ResourceWidget",
+ "dojo/domReady!"],
+ function (dom, query, array, registry, util, metadata, parser, template)
{
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)
+ data.containerNode.innerHTML = template;
+ parser.parse(this.containerNode).then(function(instances)
{
- this.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
- this.keyStoreOldBrowserWarning.className = this.keyStoreOldBrowserWarning.className.replace("hidden", "");
- }
+ that.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
+
+ if (!window.FileReader)
+ {
+ that.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
+ that.keyStoreOldBrowserWarning.className = that.keyStoreOldBrowserWarning.className.replace("hidden", "");
+ }
+
+ if (data.effectiveData)
+ {
+ that.update(data.effectiveData);
+ }
+
+ util.applyMetadataToWidgets(data.containerNode, "KeyStore", "NonJavaKeyStore");
+ });
},
update: function(effectiveData)
{
- if (effectiveData)
- {
- var attributes = metadata.getMetaData("KeyStore", "NonJavaKeyStore").attributes;
- var widgets = registry.findWidgets(this.containerNode);
- array.forEach(widgets, function(item)
+ var attributes = metadata.getMetaData("KeyStore", "NonJavaKeyStore").attributes;
+ var widgets = registry.findWidgets(this.containerNode);
+ array.forEach(widgets, function(item)
+ {
+ var name = item.id.replace("addStore.","");
+ if (name in attributes )
{
- var name = item.id.replace("addStore.","");
- if (name in attributes )
+ var attribute = attributes[name];
+ var value = effectiveData[name];
+ if (value)
{
- var attribute = attributes[name];
- if (attribute.oversize || attribute.secure)
+ if (attribute.secure)
{
- item.set("required", false);
- item.set("placeHolder", effectiveData[name]);
+ if (!/^\*+/.test(value) )
+ {
+ item.set("value", value);
+ }
+ else
+ {
+ item.set("required", false);
+ if (name == "privateKeyUrl")
+ {
+ item.set("uploaded", true)
+ }
+ else
+ {
+ item.set("placeHolder", value);
+ }
+ }
}
else
{
- item.set("value", effectiveData[name]);
+ item.set("value", value);
}
}
- });
- }
+ }
+ });
}
};
- try
- {
- addKeyStore.init();
- }
- catch(e)
- {
- console.warn(e);
- }
return addKeyStore;
}
);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js
index 53e3b43082..550c388910 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js
+++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/store/nonjavatruststore/add.js
@@ -18,64 +18,77 @@
* 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)
+define(["dojo/dom",
+ "dojo/query",
+ "dojo/_base/array",
+ "dijit/registry",
+ "qpid/common/util",
+ "qpid/common/metadata",
+ "dojo/parser",
+ "dojo/text!store/nonjavatruststore/add.html",
+ "dojo/domReady!"],
+ function (dom, query, array, registry, util, metadata, parser, template)
{
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)
+ data.containerNode.innerHTML = template;
+ parser.parse(this.containerNode).then(function(instances)
{
- this.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
- this.keyStoreOldBrowserWarning.className = this.keyStoreOldBrowserWarning.className.replace("hidden", "");
- }
+ that.keyStoreOldBrowserWarning = dom.byId("addStore.oldBrowserWarning");
+
+ if (!window.FileReader)
+ {
+ that.keyStoreOldBrowserWarning.innerHTML = "File upload requires a more recent browser with HTML5 support";
+ that.keyStoreOldBrowserWarning.className = that.keyStoreOldBrowserWarning.className.replace("hidden", "");
+ }
+
+ if (data.effectiveData)
+ {
+ that.update(data.effectiveData);
+ }
+
+ util.applyMetadataToWidgets(data.containerNode, "TrustStore", "NonJavaTrustStore");
+ });
},
update: function(effectiveData)
{
- if (effectiveData)
- {
- var attributes = metadata.getMetaData("TrustStore", "NonJavaTrustStore").attributes;
- var widgets = registry.findWidgets(this.containerNode);
- array.forEach(widgets, function(item)
+ var attributes = metadata.getMetaData("TrustStore", "NonJavaTrustStore").attributes;
+ var widgets = registry.findWidgets(this.containerNode);
+ array.forEach(widgets, function(item)
+ {
+ var name = item.id.replace("addStore.","");
+ if (name in attributes )
{
- var name = item.id.replace("addStore.","");
- if (name in attributes )
+ var attribute = attributes[name];
+ var value = effectiveData[name];
+ if (value)
{
- var attribute = attributes[name];
- if (attribute.oversize || attribute.secure)
+ if (attribute.secure)
{
- item.set("required", false);
- item.set("placeHolder", effectiveData[name]);
+ if (!/^\*+/.test(value) )
+ {
+ item.set("value", value);
+ }
+ else
+ {
+ item.set("placeHolder", value);
+ item.set("required", false);
+ }
}
else
{
- item.set("value", effectiveData[name]);
+ item.set("value", value);
}
}
- });
- }
+ }
+ });
}
};
- try
- {
- addKeyStore.init();
- }
- catch(e)
- {
- console.warn(e);
- }
return addKeyStore;
}
);
diff --git a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
index a3bf1ab3cb..fbf00339ce 100644
--- a/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
+++ b/qpid/java/systests/src/test/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java
@@ -55,7 +55,7 @@ public class KeyStoreRestTest extends QpidRestTestCase
Map<String, Object> keystore = keyStores.get(0);
assertEquals("Unexpected name", TestBrokerConfiguration.ENTRY_NAME_SSL_KEYSTORE, keystore.get(KeyStore.NAME));
- assertEquals("unexpected path to key store", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.STORE_URL));
+ assertEquals("unexpected path to key store", ConfiguredObject.OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT, keystore.get(FileKeyStore.STORE_URL));
assertEquals("unexpected (dummy) password of default systests key store", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.PASSWORD));
assertEquals("unexpected type of default systests key store", java.security.KeyStore.getDefaultType(), keystore.get(FileKeyStore.KEY_STORE_TYPE));
assertFalse("should not be a certificateAlias attribute", keystore.containsKey(FileKeyStore.CERTIFICATE_ALIAS));
@@ -77,7 +77,7 @@ public class KeyStoreRestTest extends QpidRestTestCase
Map<String, Object> keystore = keyStores.get(0);
assertEquals("Unexpected name", name, keystore.get(KeyStore.NAME));
- assertEquals("unexpected path to key store", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.STORE_URL));
+ assertEquals("unexpected path to key store", TestSSLConstants.KEYSTORE, keystore.get(FileKeyStore.STORE_URL));
assertEquals("unexpected password", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.PASSWORD));
assertEquals("unexpected alias", certAlias, keystore.get(FileKeyStore.CERTIFICATE_ALIAS));
}
@@ -125,7 +125,7 @@ public class KeyStoreRestTest extends QpidRestTestCase
List<Map<String, Object>> keyStores = assertNumberOfKeyStores(1);
Map<String, Object> keystore = keyStores.get(0);
assertEquals("Unexpected name", TestBrokerConfiguration.ENTRY_NAME_SSL_KEYSTORE, keystore.get(KeyStore.NAME));
- assertEquals("unexpected path to key store", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.STORE_URL));
+ assertEquals("unexpected path to key store", ConfiguredObject.OVER_SIZED_ATTRIBUTE_ALTERNATIVE_TEXT, keystore.get(FileKeyStore.STORE_URL));
assertEquals("unexpected (dummy) password of default systests key store", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.PASSWORD));
assertFalse("should not be a certificateAlias attribute", keystore.containsKey(FileKeyStore.CERTIFICATE_ALIAS));
}
@@ -151,7 +151,7 @@ public class KeyStoreRestTest extends QpidRestTestCase
Map<String, Object> keystore = keyStores.get(0);
assertEquals("Unexpected name", name, keystore.get(KeyStore.NAME));
- assertEquals("unexpected data", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.STORE_URL));
+ assertEquals("unexpected data", TestSSLConstants.UNTRUSTED_KEYSTORE, keystore.get(FileKeyStore.STORE_URL));
assertEquals("unexpected password", AbstractConfiguredObject.SECURED_STRING_VALUE, keystore.get(FileKeyStore.PASSWORD));
assertEquals("unexpected alias", null, keystore.get(FileKeyStore.CERTIFICATE_ALIAS));
}