From 09b098959129e58ab7e813b062b3ce6ff352767a Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Tue, 4 Mar 2014 23:53:16 +0000 Subject: QPID-5591 : Address review comments from Robbie Gemmell git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1574258 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/server/model/ManagedAttributeField.java | 28 ++++++++++++++++++ .../model/adapter/AbstractConfiguredObject.java | 34 +++++++++------------- .../model/adapter/AbstractKeyStoreAdapter.java | 2 ++ .../server/model/adapter/ConnectionAdapter.java | 9 ++++++ .../qpid/server/model/adapter/KeyStoreAdapter.java | 5 ++++ .../qpid/server/model/adapter/SessionAdapter.java | 1 + .../server/model/adapter/TrustStoreAdapter.java | 6 +++- .../qpid/server/queue/QueueConsumerImpl.java | 7 +++++ .../manager/ExternalAuthenticationManager.java | 2 ++ .../PrincipalDatabaseAuthenticationManager.java | 1 + .../manager/SimpleLDAPAuthenticationManager.java | 7 +++++ 11 files changed, 81 insertions(+), 21 deletions(-) create mode 100644 qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeField.java (limited to 'qpid/java') diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeField.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeField.java new file mode 100644 index 0000000000..9369ef296a --- /dev/null +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttributeField.java @@ -0,0 +1,28 @@ +package org.apache.qpid.server.model;/* + * + * 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. + * + */ + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface ManagedAttributeField +{ +} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java index af71da3775..66dcd1ab3e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java @@ -23,6 +23,7 @@ package org.apache.qpid.server.model.adapter; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.security.AccessControlException; import java.security.AccessController; import java.util.*; @@ -78,12 +79,15 @@ public abstract class AbstractConfiguredObject> im private final Collection _changeListeners = new ArrayList(); + @ManagedAttributeField private final UUID _id; + private final Map _defaultAttributes = new HashMap(); private final TaskExecutor _taskExecutor; private final long _createdTime; private final String _createdBy; + @ManagedAttributeField private String _name; private final Map> _attributeTypes; @@ -348,10 +352,10 @@ public abstract class AbstractConfiguredObject> im @Override public Object getAttribute(String name) { - Attribute attr = _attributeTypes.get(name); + Attribute attr = (Attribute) _attributeTypes.get(name); if(attr != null && attr.getAnnotation().automate()) { - Object value = attr.get(this); + Object value = attr.getValue((X)this); if(value != null && attr.getAnnotation().secure() && !SecurityManager.SYSTEM.equals(Subject.getSubject(AccessController.getContext()))) { @@ -759,21 +763,6 @@ public abstract class AbstractConfiguredObject> im } - public T get(final AbstractConfiguredObject object) - { - try - { - return (T) _getter.invoke(object); - } - catch (IllegalAccessException e) - { - throw new ServerScopedRuntimeException("Unable to access attribute " + getName() + " on configuredObject type " + object.getClass().getName(), e); - } - catch (InvocationTargetException e) - { - throw new ServerScopedRuntimeException("Unable to access attribute " + getName() + " on configuredObject type " + object.getClass().getName(), e); - } - } } private static final class Statistic extends AttributeOrStatistic @@ -1347,13 +1336,14 @@ public abstract class AbstractConfiguredObject> im } } - private static Field findField(final Attribute attr, Class clazz) + private static Field findField(final Attribute attr, Class objClass) { + Class clazz = objClass; while(clazz != null) { for(Field field : clazz.getDeclaredFields()) { - if(field.getName().equals("_" + attr.getName())) + if(field.getAnnotation(ManagedAttributeField.class) != null && field.getName().equals("_" + attr.getName().replace('.','_'))) { field.setAccessible(true); return field; @@ -1361,7 +1351,11 @@ public abstract class AbstractConfiguredObject> im } clazz = clazz.getSuperclass(); } - return null; + if(objClass.isInterface() || Modifier.isAbstract(objClass.getModifiers())) + { + return null; + } + throw new ServerScopedRuntimeException("Unable to find field definition for automated field " + attr.getName() + " in class " + objClass.getName()); } private static String getName(final Method m, final Class type) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java index 794687b9c7..efc86a2594 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java @@ -32,6 +32,7 @@ import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.KeyStore; import org.apache.qpid.server.model.LifetimePolicy; +import org.apache.qpid.server.model.ManagedAttributeField; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.TrustStore; import org.apache.qpid.server.security.SecurityManager; @@ -44,6 +45,7 @@ public abstract class AbstractKeyStoreAdapter> ext public static final String DUMMY_PASSWORD_MASK = "********"; public static final String DEFAULT_KEYSTORE_TYPE = java.security.KeyStore.getDefaultType(); + @ManagedAttributeField private String _password; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java index 16b1d0092b..89d5622121 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java @@ -38,14 +38,23 @@ final class ConnectionAdapter extends AbstractConfiguredObject _sessionAdapters = new HashMap(); + @ManagedAttributeField private String _remoteAddress; + @ManagedAttributeField private String _localAddress; + @ManagedAttributeField private String _clientId; + @ManagedAttributeField private String _clientVersion; + @ManagedAttributeField private boolean _incoming; + @ManagedAttributeField private Transport _transport; + @ManagedAttributeField private Port _port; + @ManagedAttributeField private String _remoteProcessName; + @ManagedAttributeField private String _remoteProcessPid; public ConnectionAdapter(final AMQConnectionModel conn, TaskExecutor taskExecutor) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java index cdffe2f36b..06ca0d2a24 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/KeyStoreAdapter.java @@ -43,6 +43,7 @@ import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.IntegrityViolationException; import org.apache.qpid.server.model.KeyStore; +import org.apache.qpid.server.model.ManagedAttributeField; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; import org.apache.qpid.server.security.SecurityManager; @@ -64,9 +65,13 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter im put(KEY_MANAGER_FACTORY_ALGORITHM, String.class); }}); + @ManagedAttributeField private String _keyStoreType; + @ManagedAttributeField private String _certificateAlias; + @ManagedAttributeField private String _keyManagerFactoryAlgorithm; + @ManagedAttributeField private String _path; @SuppressWarnings("serial") diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java index 669bf19874..95e408ddf5 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java @@ -43,6 +43,7 @@ final class SessionAdapter extends AbstractConfiguredObject impl private AMQSessionModel _session; private Map _consumerAdapters = new HashMap(); + @ManagedAttributeField private int _channelId; public SessionAdapter(final AMQSessionModel session, TaskExecutor taskExecutor) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java index 03fac7d54d..88f40a83aa 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/TrustStoreAdapter.java @@ -44,6 +44,7 @@ import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.IntegrityViolationException; +import org.apache.qpid.server.model.ManagedAttributeField; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.TrustStore; @@ -74,10 +75,13 @@ public class TrustStoreAdapter extends AbstractKeyStoreAdapter