From 327d76b59565ece44018864787dfad695fcda50a Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Fri, 26 Apr 2013 16:53:46 +0000 Subject: QPID-4777: Add UI to view and edit web management configuration git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1476288 13f79535-47bb-0310-9956-ffa450edef68 --- .../model/adapter/AbstractPluginAdapter.java | 59 ++++++++++++++++++---- 1 file changed, 49 insertions(+), 10 deletions(-) (limited to 'qpid/java/broker') diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java index ed4af9881f..2867a92410 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java @@ -26,19 +26,23 @@ import java.util.Collections; import java.util.Map; import java.util.UUID; -import org.apache.qpid.server.configuration.updater.TaskExecutor; +import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Plugin; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.Statistics; +import org.apache.qpid.server.security.access.Operation; public abstract class AbstractPluginAdapter extends AbstractAdapter implements Plugin { + private Broker _broker; - protected AbstractPluginAdapter(UUID id, Map defaults, Map attributes, TaskExecutor taskExecutor) + protected AbstractPluginAdapter(UUID id, Map defaults, Map attributes, Broker broker) { - super(id, defaults, attributes, taskExecutor); + super(id, defaults, attributes, broker.getTaskExecutor()); + _broker = broker; + addParent(Broker.class, broker); } @Override @@ -103,13 +107,6 @@ public abstract class AbstractPluginAdapter extends AbstractAdapter implements P return Collections.emptyList(); } - @Override - public C createChild(Class childClass, Map attributes, - ConfiguredObject... otherParents) - { - throw new UnsupportedOperationException(); - } - @Override public Collection getAttributeNames() { @@ -149,4 +146,46 @@ public abstract class AbstractPluginAdapter extends AbstractAdapter implements P } return super.getAttribute(name); } + + @Override + public C createChild(Class childClass, Map attributes, + ConfiguredObject... otherParents) + { + throw new UnsupportedOperationException(); + } + + @Override + protected void authoriseSetDesiredState(State currentState, State desiredState) throws AccessControlException + { + if(desiredState == State.DELETED) + { + if (!_broker.getSecurityManager().authoriseConfiguringBroker(getName(), Plugin.class, Operation.DELETE)) + { + throw new AccessControlException("Deletion of plugin is denied"); + } + } + } + + @Override + protected void authoriseSetAttribute(String name, Object expected, Object desired) throws AccessControlException + { + if (!_broker.getSecurityManager().authoriseConfiguringBroker(getName(), Plugin.class, Operation.UPDATE)) + { + throw new AccessControlException("Setting of plugin attribute is denied"); + } + } + + @Override + protected void authoriseSetAttributes(Map attributes) throws AccessControlException + { + if (!_broker.getSecurityManager().authoriseConfiguringBroker(getName(), Plugin.class, Operation.UPDATE)) + { + throw new AccessControlException("Setting of plugin attributes is denied"); + } + } + + protected Broker getBroker() + { + return _broker; + } } -- cgit v1.2.1