summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-04-30 01:22:13 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-04-30 01:22:13 +0000
commitae71aa7102a41735e49ec5c98409bc69fffd9a8f (patch)
treef0709ee8c5993d6995e5de59c0cdc855a540614e /qpid/java/broker-plugins
parent0d49f2fa419a414e1c9548001fcbde03d442f5c1 (diff)
downloadqpid-python-ae71aa7102a41735e49ec5c98409bc69fffd9a8f.tar.gz
QPID-5578 : [Java Broker] Use annotation to allow registration of all ConfiguredObject types at startup. Use this meta data for REST servlets. Remove unnecessary pluggable factory interfaces
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1591170 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins')
-rw-r--r--qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProvider.java2
-rw-r--r--qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactory.java55
-rw-r--r--qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java4
-rw-r--r--qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/FileAccessControlProviderAttributeDescriptions.properties19
-rw-r--r--qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java25
-rw-r--r--qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java2
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java36
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java14
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java12
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java7
-rw-r--r--qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java2
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java4
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java5
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/AbstractSpecialisedAttributeLister.java77
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java47
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java46
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java46
17 files changed, 138 insertions, 265 deletions
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProvider.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProvider.java
index 961eb25236..d54f226a00 100644
--- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProvider.java
+++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProvider.java
@@ -27,6 +27,6 @@ import org.apache.qpid.server.model.ManagedObject;
@ManagedObject( category = false, type="AclFile" )
public interface ACLFileAccessControlProvider<X extends ACLFileAccessControlProvider<X>> extends AccessControlProvider<X>
{
- @ManagedAttribute( automate = true, mandatory = true )
+ @ManagedAttribute( automate = true, mandatory = true, description = "File location" )
String getPath();
}
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactory.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactory.java
deleted file mode 100644
index 1547adc6e5..0000000000
--- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *
- * 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.
- *
- */
-package org.apache.qpid.server.security.access.plugins;
-
-import java.util.Map;
-
-import org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.plugin.AccessControlProviderFactory;
-import org.apache.qpid.server.plugin.PluggableService;
-import org.apache.qpid.server.util.ResourceBundleLoader;
-
-@PluggableService
-public class ACLFileAccessControlProviderFactory extends AbstractConfiguredObjectTypeFactory<ACLFileAccessControlProviderImpl> implements AccessControlProviderFactory<ACLFileAccessControlProviderImpl>
-{
- public static final String RESOURCE_BUNDLE = "org.apache.qpid.server.security.access.plugins.FileAccessControlProviderAttributeDescriptions";
-
- public ACLFileAccessControlProviderFactory()
- {
- super(ACLFileAccessControlProviderImpl.class);
- }
-
- @Override
- public Map<String, String> getAttributeDescriptions()
- {
- return ResourceBundleLoader.getResources(RESOURCE_BUNDLE);
- }
-
- @Override
- public ACLFileAccessControlProviderImpl createInstance(final Map<String, Object> attributes,
- final ConfiguredObject<?>... parents)
- {
- return new ACLFileAccessControlProviderImpl(attributes, getParent(Broker.class,parents));
- }
-
-}
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
index c3ce92f5b1..554f2f46c5 100644
--- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
+++ b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderImpl.java
@@ -35,8 +35,8 @@ import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.IllegalStateTransitionException;
import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.plugin.AccessControlProviderFactory;
import org.apache.qpid.server.security.AccessControl;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.util.MapValueConverter;
@@ -50,12 +50,12 @@ public class ACLFileAccessControlProviderImpl
protected DefaultAccessControl _accessControl;
protected final Broker _broker;
- protected Map<String, AccessControlProviderFactory> _factories;
private AtomicReference<State> _state;
@ManagedAttributeField
private String _path;
+ @ManagedObjectFactoryConstructor
public ACLFileAccessControlProviderImpl(Map<String, Object> attributes, Broker broker)
{
super(parentsMap(broker), attributes);
diff --git a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/FileAccessControlProviderAttributeDescriptions.properties b/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/FileAccessControlProviderAttributeDescriptions.properties
deleted file mode 100644
index e847e90f57..0000000000
--- a/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/FileAccessControlProviderAttributeDescriptions.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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.
-
-path=File location* \ No newline at end of file
diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
index fab6ad1750..01da01eb97 100644
--- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
+++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java
@@ -33,9 +33,7 @@ import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.model.AccessControlProvider;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
-import org.apache.qpid.server.model.ConfiguredObjectFactory;
import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
-import org.apache.qpid.server.model.GroupProvider;
import org.apache.qpid.server.security.access.FileAccessControlProviderConstants;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.test.utils.TestFileUtils;
@@ -43,28 +41,30 @@ import org.apache.qpid.test.utils.TestFileUtils;
public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase
{
private Broker _broker;
+ private ConfiguredObjectFactoryImpl _objectFactory;
@Override
public void setUp() throws Exception
{
super.setUp();
_broker = mock(Broker.class);
- ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance());
+ _objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance());
- when(_broker.getObjectFactory()).thenReturn(objectFactory);
- when(_broker.getModel()).thenReturn(objectFactory.getModel());
+ when(_broker.getObjectFactory()).thenReturn(_objectFactory);
+ when(_broker.getModel()).thenReturn(_objectFactory.getModel());
when(_broker.getCategoryClass()).thenReturn(Broker.class);
}
public void testCreateInstanceWhenAclFileIsNotPresent()
{
- ACLFileAccessControlProviderFactory factory = new ACLFileAccessControlProviderFactory();
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(AccessControlProvider.ID, UUID.randomUUID());
attributes.put(AccessControlProvider.NAME, "acl");
+ attributes.put(AccessControlProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE);
+
try
{
- AccessControlProvider acl = factory.create(null, attributes, _broker);
+ AccessControlProvider acl = _objectFactory.create(AccessControlProvider.class, attributes, _broker);
fail("ACL was created without a configuration file path specified");
}
catch(IllegalArgumentException e)
@@ -73,16 +73,16 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase
}
}
+
public void testCreateInstanceWhenAclFileIsSpecified()
{
File aclFile = TestFileUtils.createTempFile(this, ".acl", "ACL ALLOW all all");
- ACLFileAccessControlProviderFactory factory = new ACLFileAccessControlProviderFactory();
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(AccessControlProvider.ID, UUID.randomUUID());
attributes.put(AccessControlProvider.NAME, "acl");
- attributes.put(GroupProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE);
+ attributes.put(AccessControlProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE);
attributes.put(FileAccessControlProviderConstants.PATH, aclFile.getAbsolutePath());
- AccessControlProvider acl = factory.create(null, attributes, _broker);
+ AccessControlProvider acl = _objectFactory.create(AccessControlProvider.class, attributes, _broker);
acl.getAccessControl().open();
assertNotNull("ACL was not created from acl file: " + aclFile.getAbsolutePath(), acl);
@@ -92,15 +92,14 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase
{
File aclFile = new File(TMP_FOLDER, "my-non-existing-acl-" + System.currentTimeMillis());
assertFalse("ACL file " + aclFile.getAbsolutePath() + " actually exists but should not", aclFile.exists());
- ACLFileAccessControlProviderFactory factory = new ACLFileAccessControlProviderFactory();
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(AccessControlProvider.ID, UUID.randomUUID());
attributes.put(AccessControlProvider.NAME, "acl");
- attributes.put(GroupProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE);
+ attributes.put(AccessControlProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE);
attributes.put(FileAccessControlProviderConstants.PATH, aclFile.getAbsolutePath());
try
{
- AccessControlProvider control = factory.create(null, attributes, _broker);
+ AccessControlProvider control = _objectFactory.create(AccessControlProvider.class, attributes, _broker);
control.getAccessControl().open();
fail("It should not be possible to create and initialise ACL with non existing file");
}
diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java
index 523640adad..0ce2555bcf 100644
--- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java
+++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/RuleSetTest.java
@@ -192,7 +192,7 @@ public class RuleSetTest extends QpidTestCase
ExchangeImpl<?> exchange = mock(ExchangeImpl.class);
when(exchange.getParent(VirtualHost.class)).thenReturn(_virtualHost);
- when(exchange.getTypeName()).thenReturn(_exchangeType);
+ when(exchange.getType()).thenReturn(_exchangeType);
when(_virtualHost.getName()).thenReturn(ALLOWED_VH);
assertEquals(Result.ALLOWED, _ruleSet.check(_testSubject, Operation.CREATE, ObjectType.EXCHANGE, new ObjectProperties(exchange)));
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
index db94249c64..af1bd00ae9 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
@@ -32,10 +32,9 @@ import java.util.UUID;
import org.apache.log4j.Logger;
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.consumer.ConsumerImpl;
-import org.apache.qpid.server.exchange.DirectExchange;
import org.apache.qpid.server.exchange.ExchangeImpl;
-import org.apache.qpid.server.exchange.HeadersExchange;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.FilterManager;
import org.apache.qpid.server.filter.FilterManagerFactory;
@@ -49,7 +48,6 @@ import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.NoFactoryForTypeException;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.UnknownConfiguredObjectException;
-import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.QueueArgumentsConverter;
import org.apache.qpid.server.store.DurableConfigurationStore;
@@ -694,11 +692,11 @@ public class ServerSessionDelegate extends SessionDelegate
if(nameNullOrEmpty(method.getExchange()))
{
// special case handling to fake the existence of the default exchange for 0-10
- if(!DirectExchange.TYPE.getType().equals(method.getType()))
+ if(!ExchangeDefaults.DIRECT_EXCHANGE_CLASS.equals(method.getType()))
{
exception(session, method, ExecutionErrorCode.NOT_ALLOWED,
"Attempt to redeclare default exchange "
- + " of type " + DirectExchange.TYPE.getType()
+ + " of type " + ExchangeDefaults.DIRECT_EXCHANGE_CLASS
+ " to " + method.getType() +".");
}
if(!nameNullOrEmpty(method.getAlternateExchange()))
@@ -721,11 +719,11 @@ public class ServerSessionDelegate extends SessionDelegate
}
else
{
- if (!exchange.getTypeName().equals(method.getType())
+ if (!exchange.getType().equals(method.getType())
&& (method.getType() != null && method.getType().length() > 0))
{
exception(session, method, ExecutionErrorCode.NOT_ALLOWED, "Attempt to redeclare exchange: "
- + exchangeName + " of type " + exchange.getTypeName() + " to " + method.getType() + ".");
+ + exchangeName + " of type " + exchange.getType() + " to " + method.getType() + ".");
}
}
}
@@ -762,11 +760,11 @@ public class ServerSessionDelegate extends SessionDelegate
catch(ExchangeExistsException e)
{
ExchangeImpl exchange = e.getExistingExchange();
- if(!exchange.getTypeName().equals(method.getType()))
+ if(!exchange.getType().equals(method.getType()))
{
exception(session, method, ExecutionErrorCode.NOT_ALLOWED,
"Attempt to redeclare exchange: " + exchangeName
- + " of type " + exchange.getTypeName()
+ + " of type " + exchange.getType()
+ " to " + method.getType() +".");
}
else if(method.hasAlternateExchange()
@@ -887,18 +885,6 @@ public class ServerSessionDelegate extends SessionDelegate
return false;
}
- private boolean isStandardExchange(ExchangeImpl exchange, Collection<ExchangeType<? extends ExchangeImpl>> registeredTypes)
- {
- for(ExchangeType type : registeredTypes)
- {
- if(type.getDefaultExchangeName().equals( exchange.getName() ))
- {
- return true;
- }
- }
- return false;
- }
-
@Override
public void exchangeQuery(Session session, ExchangeQuery method)
{
@@ -912,7 +898,7 @@ public class ServerSessionDelegate extends SessionDelegate
{
// Fake the existence of the "default" exchange for 0-10
result.setDurable(true);
- result.setType(DirectExchange.TYPE.getType());
+ result.setType(ExchangeDefaults.DIRECT_EXCHANGE_CLASS);
result.setNotFound(false);
}
else
@@ -922,7 +908,7 @@ public class ServerSessionDelegate extends SessionDelegate
if(exchange != null)
{
result.setDurable(exchange.isDurable());
- result.setType(exchange.getTypeName());
+ result.setType(exchange.getType());
result.setNotFound(false);
}
else
@@ -968,9 +954,9 @@ public class ServerSessionDelegate extends SessionDelegate
{
exception(session, method, ExecutionErrorCode.NOT_FOUND, "Exchange: '" + exchangeName + "' not found");
}
- else if(exchange.getExchangeType().equals(HeadersExchange.TYPE) && (!method.hasArguments() || method.getArguments() == null || !method.getArguments().containsKey("x-match")))
+ else if(exchange.getType().equals(ExchangeDefaults.HEADERS_EXCHANGE_CLASS) && (!method.hasArguments() || method.getArguments() == null || !method.getArguments().containsKey("x-match")))
{
- exception(session, method, ExecutionErrorCode.INTERNAL_ERROR, "Bindings to an exchange of type " + HeadersExchange.TYPE.getType() + " require an x-match header");
+ exception(session, method, ExecutionErrorCode.INTERNAL_ERROR, "Bindings to an exchange of type " + ExchangeDefaults.HEADERS_EXCHANGE_CLASS + " require an x-match header");
}
else
{
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java
index 73b53c5e64..aaf88c81d5 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java
@@ -28,12 +28,12 @@ import org.apache.log4j.Logger;
import org.apache.qpid.AMQConnectionException;
import org.apache.qpid.AMQException;
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.framing.AMQMethodBody;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.ExchangeDeclareBody;
import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.protocol.AMQConstant;
-import org.apache.qpid.server.exchange.DirectExchange;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.NoFactoryForTypeException;
@@ -81,11 +81,11 @@ public class ExchangeDeclareHandler implements StateAwareMethodListener<Exchange
if(isDefaultExchange(exchangeName))
{
- if(!new AMQShortString(DirectExchange.TYPE.getType()).equals(body.getType()))
+ if(!new AMQShortString(ExchangeDefaults.DIRECT_EXCHANGE_CLASS).equals(body.getType()))
{
throw new AMQConnectionException(AMQConstant.NOT_ALLOWED, "Attempt to redeclare default exchange: "
+ " of type "
- + DirectExchange.TYPE.getType()
+ + ExchangeDefaults.DIRECT_EXCHANGE_CLASS
+ " to " + body.getType() +".",
body.getClazz(), body.getMethod(),
body.getMajor(), body.getMinor(),null);
@@ -100,11 +100,11 @@ public class ExchangeDeclareHandler implements StateAwareMethodListener<Exchange
{
throw body.getChannelException(AMQConstant.NOT_FOUND, "Unknown exchange: " + exchangeName);
}
- else if (!(body.getType() == null || body.getType().length() ==0) && !exchange.getTypeName().equals(body.getType().asString()))
+ else if (!(body.getType() == null || body.getType().length() ==0) && !exchange.getType().equals(body.getType().asString()))
{
throw new AMQConnectionException(AMQConstant.NOT_ALLOWED, "Attempt to redeclare exchange: " +
- exchangeName + " of type " + exchange.getTypeName()
+ exchangeName + " of type " + exchange.getType()
+ " to " + body.getType() +".",body.getClazz(), body.getMethod(),body.getMajor(),body.getMinor(),null);
}
@@ -137,11 +137,11 @@ public class ExchangeDeclareHandler implements StateAwareMethodListener<Exchange
catch(ExchangeExistsException e)
{
exchange = e.getExistingExchange();
- if(!new AMQShortString(exchange.getTypeName()).equals(body.getType()))
+ if(!new AMQShortString(exchange.getType()).equals(body.getType()))
{
throw new AMQConnectionException(AMQConstant.NOT_ALLOWED, "Attempt to redeclare exchange: "
+ exchangeName + " of type "
- + exchange.getTypeName()
+ + exchange.getType()
+ " to " + body.getType() +".",
body.getClazz(), body.getMethod(),
body.getMajor(), body.getMinor(),null);
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java
index e3f40c3555..0140d2ec7e 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java
@@ -20,9 +20,13 @@
*/
package org.apache.qpid.server.protocol.v0_8.handler;
+import java.security.AccessControlException;
+import java.util.Map;
+
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.framing.AMQMethodBody;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
@@ -30,17 +34,13 @@ import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.framing.QueueBindBody;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.exchange.ExchangeImpl;
-import org.apache.qpid.server.exchange.TopicExchange;
import org.apache.qpid.server.protocol.v0_8.AMQChannel;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
-import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
import org.apache.qpid.server.protocol.v0_8.state.StateAwareMethodListener;
+import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-import java.security.AccessControlException;
-import java.util.Map;
-
public class QueueBindHandler implements StateAwareMethodListener<QueueBindBody>
{
private static final Logger _log = Logger.getLogger(QueueBindHandler.class);
@@ -125,7 +125,7 @@ public class QueueBindHandler implements StateAwareMethodListener<QueueBindBody>
if (!exch.isBound(bindingKey, arguments, queue))
{
- if(!exch.addBinding(bindingKey, queue, arguments) && TopicExchange.TYPE.equals(exch.getExchangeType()))
+ if(!exch.addBinding(bindingKey, queue, arguments) && ExchangeDefaults.TOPIC_EXCHANGE_CLASS.equals(exch.getType()))
{
exch.replaceBinding(bindingKey, queue, arguments);
}
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
index f6823824fd..7a844cbc79 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
@@ -58,13 +58,12 @@ import org.apache.qpid.amqp_1_0.type.transport.AmqpError;
import org.apache.qpid.amqp_1_0.type.transport.Detach;
import org.apache.qpid.amqp_1_0.type.transport.Error;
import org.apache.qpid.amqp_1_0.type.transport.Transfer;
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.filter.SelectorParsingException;
import org.apache.qpid.filter.selector.ParseException;
import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.consumer.ConsumerImpl;
-import org.apache.qpid.server.exchange.DirectExchange;
import org.apache.qpid.server.exchange.ExchangeImpl;
-import org.apache.qpid.server.exchange.TopicExchange;
import org.apache.qpid.server.filter.JMSSelectorFilter;
import org.apache.qpid.server.filter.SimpleFilterManager;
import org.apache.qpid.server.message.MessageInstance;
@@ -259,7 +258,7 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
{
if(!hasBindingFilter
&& entry.getValue() instanceof ExactSubjectFilter
- && exchange.getExchangeType() == DirectExchange.TYPE)
+ && exchange.getType().equals(ExchangeDefaults.DIRECT_EXCHANGE_CLASS))
{
ExactSubjectFilter filter = (ExactSubjectFilter) filters.values().iterator().next();
source.setFilter(filters);
@@ -269,7 +268,7 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
else if(!hasBindingFilter
&& entry.getValue() instanceof MatchingSubjectFilter
- && exchange.getExchangeType() == TopicExchange.TYPE)
+ && exchange.getType().equals(ExchangeDefaults.TOPIC_EXCHANGE_CLASS))
{
MatchingSubjectFilter filter = (MatchingSubjectFilter) filters.values().iterator().next();
source.setFilter(filters);
diff --git a/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java b/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
index e9fe0b59fa..69479b73d6 100644
--- a/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
+++ b/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
@@ -115,7 +115,7 @@ public class MessageConverter_0_10_to_0_8 implements MessageConverter<MessageTra
ExchangeImpl exchange = vhost.getExchange(exchangeName);
String exchangeClass = exchange == null
? ExchangeDefaults.DIRECT_EXCHANGE_CLASS
- : exchange.getTypeName();
+ : exchange.getType();
props.setReplyTo(exchangeClass + "://" + exchangeName + "//?routingkey='" + (routingKey == null
? ""
: routingKey + "'"));
diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
index 0bd1cf27dc..8f43cdf9ef 100644
--- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
+++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
@@ -50,9 +50,9 @@ import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.message.internal.InternalMessage;
import org.apache.qpid.server.message.internal.InternalMessageHeader;
-import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.ConfigurationChangeListener;
import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObjectTypeRegistry;
import org.apache.qpid.server.model.ManagedObject;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.plugin.MessageConverter;
@@ -235,7 +235,7 @@ class ManagementNode implements MessageSource, MessageDestination
}
}
managedEntityType = new ManagedEntityType(clazz.getName(), parentSet.toArray(new ManagedEntityType[parentSet.size()]),
- (String[])(AbstractConfiguredObject.getAttributeNames(
+ (String[])(ConfiguredObjectTypeRegistry.getAttributeNames(
clazz).toArray(new String[0])),
opsList.toArray(new String[opsList.size()]));
_entityTypes.put(clazz.getName(),managedEntityType);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
index 0ed97ac3a0..1937ee8744 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java
@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.codec.binary.Base64;
+
import org.apache.qpid.server.management.plugin.servlet.ServletConnectionPrincipal;
import org.apache.qpid.server.management.plugin.session.LoginLogoutReporter;
import org.apache.qpid.server.model.AuthenticationProvider;
@@ -44,7 +45,7 @@ import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
-import org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.ExternalAuthenticationManager;
import org.apache.qpid.transport.network.security.ssl.SSLUtil;
public class HttpManagementUtil
@@ -162,7 +163,7 @@ public class HttpManagementUtil
{
principal = certificates[0].getSubjectX500Principal();
- if(!Boolean.valueOf(String.valueOf(authenticationProvider.getAttribute(ExternalAuthenticationManagerFactory.ATTRIBUTE_USE_FULL_DN))))
+ if(!Boolean.valueOf(String.valueOf(authenticationProvider.getAttribute(ExternalAuthenticationManager.ATTRIBUTE_USE_FULL_DN))))
{
String username;
String dn = ((X500Principal) principal).getName(X500Principal.RFC2253);
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/AbstractSpecialisedAttributeLister.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/AbstractSpecialisedAttributeLister.java
new file mode 100644
index 0000000000..173e4fce66
--- /dev/null
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/AbstractSpecialisedAttributeLister.java
@@ -0,0 +1,77 @@
+/*
+ *
+ * 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.
+ *
+ */
+package org.apache.qpid.server.management.plugin.servlet.rest.action;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import org.apache.qpid.server.management.plugin.servlet.rest.Action;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObjectAttribute;
+import org.apache.qpid.server.model.ConfiguredObjectTypeRegistry;
+
+abstract class AbstractSpecialisedAttributeLister<T extends ConfiguredObject> implements Action
+{
+
+
+ private static final String ATTRIBUTES = "attributes";
+ private static final String DESCRIPTIONS = "descriptions";
+
+ @Override
+ final public Object perform(Map<String, Object> request, Broker broker)
+ {
+ Collection<Class<? extends ConfiguredObject>> groupProviderTypes =
+ ConfiguredObjectTypeRegistry.getTypeSpecialisations(getCategoryClass());
+
+ Map<String, Object> attributes = new TreeMap<String, Object>();
+
+ for (Class<? extends ConfiguredObject> groupProviderType : groupProviderTypes)
+ {
+ Collection<ConfiguredObjectAttribute<?, ?>> typeSpecificAttributes =
+ ConfiguredObjectTypeRegistry.getTypeSpecificAttributes(groupProviderType);
+
+ Map<String, Object> data = new HashMap<String, Object>();
+
+ Collection<String> attributeNames = new TreeSet<>();
+ Map<String,String> descriptions = new HashMap<>();
+ for(ConfiguredObjectAttribute<?, ?> attr : typeSpecificAttributes)
+ {
+ attributeNames.add(attr.getName());
+ if(!"".equals(attr.getAnnotation().description()))
+ {
+ descriptions.put(attr.getName(), attr.getAnnotation().description());
+ }
+ }
+ data.put(ATTRIBUTES, attributeNames);
+ data.put(DESCRIPTIONS, descriptions);
+
+ attributes.put(ConfiguredObjectTypeRegistry.getType(groupProviderType), data);
+ }
+ return attributes;
+ }
+
+ abstract Class<T> getCategoryClass();
+
+}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java
index 84d05997b5..1eb3f9a9ac 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAccessControlProviderAttributes.java
@@ -20,32 +20,10 @@
*/
package org.apache.qpid.server.management.plugin.servlet.rest.action;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import org.apache.qpid.server.model.AccessControlProvider;
-import org.apache.qpid.server.management.plugin.servlet.rest.Action;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.plugin.AccessControlProviderFactory;
-import org.apache.qpid.server.plugin.QpidServiceLoader;
-
-public class ListAccessControlProviderAttributes implements Action
+public class ListAccessControlProviderAttributes extends AbstractSpecialisedAttributeLister<AccessControlProvider>
{
- private static final String ATTRIBUTES = "attributes";
- private static final String DESCRIPTIONS = "descriptions";
- private Map<String, AccessControlProviderFactory> _factories;
-
- public ListAccessControlProviderAttributes()
- {
- _factories = new TreeMap<String, AccessControlProviderFactory>();
- Iterable<AccessControlProviderFactory> factories = new QpidServiceLoader<AccessControlProviderFactory>()
- .instancesOf(AccessControlProviderFactory.class);
- for (AccessControlProviderFactory factory : factories)
- {
- _factories.put(factory.getType(), factory);
- }
- }
-
@Override
public String getName()
{
@@ -53,25 +31,8 @@ public class ListAccessControlProviderAttributes implements Action
}
@Override
- public Object perform(Map<String, Object> request, Broker broker)
+ Class<AccessControlProvider> getCategoryClass()
{
- Map<String, Object> attributes = new TreeMap<String, Object>();
- for (String providerType : _factories.keySet())
- {
- AccessControlProviderFactory<?> factory = _factories.get(providerType);
-
- Map<String, Object> data = new HashMap<String, Object>();
- // TODO RG - fix
- // data.put(ATTRIBUTES, factory.getAttributeNames());
- Map<String, String> resources = factory.getAttributeDescriptions();
- if (resources != null)
- {
- data.put(DESCRIPTIONS, resources);
- }
-
- attributes.put(factory.getType(), data);
- }
- return attributes;
+ return AccessControlProvider.class;
}
-
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java
index 5c629587e0..3e006a705a 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListAuthenticationProviderAttributes.java
@@ -20,32 +20,10 @@
*/
package org.apache.qpid.server.management.plugin.servlet.rest.action;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import org.apache.qpid.server.model.AuthenticationProvider;
-import org.apache.qpid.server.management.plugin.servlet.rest.Action;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
-import org.apache.qpid.server.plugin.QpidServiceLoader;
-
-public class ListAuthenticationProviderAttributes implements Action
+public class ListAuthenticationProviderAttributes extends AbstractSpecialisedAttributeLister<AuthenticationProvider>
{
- private static final String ATTRIBUTES = "attributes";
- private static final String DESCRIPTIONS = "descriptions";
- private Map<String, AuthenticationManagerFactory> _factories;
-
- public ListAuthenticationProviderAttributes()
- {
- _factories = new TreeMap<String, AuthenticationManagerFactory>();
- Iterable<AuthenticationManagerFactory> factories = new QpidServiceLoader<AuthenticationManagerFactory>()
- .instancesOf(AuthenticationManagerFactory.class);
- for (AuthenticationManagerFactory factory : factories)
- {
- _factories.put(factory.getType(), factory);
- }
- }
-
@Override
public String getName()
{
@@ -53,24 +31,8 @@ public class ListAuthenticationProviderAttributes implements Action
}
@Override
- public Object perform(Map<String, Object> request, Broker broker)
+ Class<AuthenticationProvider> getCategoryClass()
{
- Map<String, Object> attributes = new TreeMap<String, Object>();
- for (String providerType : _factories.keySet())
- {
- AuthenticationManagerFactory factory = _factories.get(providerType);
-
- Map<String, Object> data = new HashMap<String, Object>();
- data.put(ATTRIBUTES, factory.getAttributeNames());
- Map<String, String> resources = factory.getAttributeDescriptions();
- if (resources != null)
- {
- data.put(DESCRIPTIONS, resources);
- }
-
- attributes.put(factory.getType(), data);
- }
- return attributes;
+ return AuthenticationProvider.class;
}
-
}
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java
index d1414faa71..ecb4320f1f 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListGroupProviderAttributes.java
@@ -20,32 +20,10 @@
*/
package org.apache.qpid.server.management.plugin.servlet.rest.action;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import org.apache.qpid.server.model.GroupProvider;
-import org.apache.qpid.server.management.plugin.servlet.rest.Action;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.plugin.GroupManagerFactory;
-import org.apache.qpid.server.plugin.QpidServiceLoader;
-
-public class ListGroupProviderAttributes implements Action
+public class ListGroupProviderAttributes extends AbstractSpecialisedAttributeLister<GroupProvider>
{
- private static final String ATTRIBUTES = "attributes";
- private static final String DESCRIPTIONS = "descriptions";
- private Map<String, GroupManagerFactory> _factories;
-
- public ListGroupProviderAttributes()
- {
- _factories = new TreeMap<String, GroupManagerFactory>();
- Iterable<GroupManagerFactory> factories = new QpidServiceLoader<GroupManagerFactory>()
- .instancesOf(GroupManagerFactory.class);
- for (GroupManagerFactory factory : factories)
- {
- _factories.put(factory.getType(), factory);
- }
- }
-
@Override
public String getName()
{
@@ -53,24 +31,8 @@ public class ListGroupProviderAttributes implements Action
}
@Override
- public Object perform(Map<String, Object> request, Broker broker)
+ Class<GroupProvider> getCategoryClass()
{
- Map<String, Object> attributes = new TreeMap<String, Object>();
- for (String providerType : _factories.keySet())
- {
- GroupManagerFactory factory = _factories.get(providerType);
-
- Map<String, Object> data = new HashMap<String, Object>();
- data.put(ATTRIBUTES, factory.getAttributeNames());
- Map<String, String> resources = factory.getAttributeDescriptions();
- if (resources != null)
- {
- data.put(DESCRIPTIONS, resources);
- }
-
- attributes.put(factory.getType(), data);
- }
- return attributes;
+ return GroupProvider.class;
}
-
}