diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-04-03 11:50:36 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-04-03 11:50:36 +0000 |
| commit | 45fc3b612fe45ec01db5e6e6e65661b5d8898f1b (patch) | |
| tree | fb8e07e544de7ea2168926b4ed7dda714f632e20 /qpid/java/broker/src | |
| parent | 24b2431ab0f4cdb639122a3f1d54d66a657ecbc7 (diff) | |
| download | qpid-python-45fc3b612fe45ec01db5e6e6e65661b5d8898f1b.tar.gz | |
QPID-4695: Add validation of configured object names and IDs
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1463933 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src')
| -rw-r--r-- | qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java index e57c8c2d16..05977a22af 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java @@ -32,6 +32,7 @@ import org.apache.qpid.server.model.ConfigurationChangeListener; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.IllegalStateTransitionException; import org.apache.qpid.server.model.State; +import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.configuration.updater.ChangeAttributesTask; import org.apache.qpid.server.configuration.updater.ChangeStateTask; import org.apache.qpid.server.configuration.updater.CreateChildTask; @@ -40,6 +41,7 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor; abstract class AbstractAdapter implements ConfiguredObject { + private static final Object ID = "id"; private final Map<String,Object> _attributes = new HashMap<String, Object>(); private final Map<Class<? extends ConfiguredObject>, ConfiguredObject> _parents = new HashMap<Class<? extends ConfiguredObject>, ConfiguredObject>(); @@ -347,6 +349,15 @@ abstract class AbstractAdapter implements ConfiguredObject protected void changeAttributes(final Map<String, Object> attributes) { + if (attributes.containsKey(ID)) + { + UUID id = getId(); + Object idAttributeValue = attributes.get(ID); + if (idAttributeValue != null && !idAttributeValue.equals(id)) + { + throw new IllegalConfigurationException("Cannot change existing configured object id"); + } + } Collection<String> names = getAttributeNames(); for (String name : names) { |
