diff options
99 files changed, 2359 insertions, 1228 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgrader.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgrader.java index 1a5ef9adca..124584e99c 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgrader.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgrader.java @@ -82,6 +82,58 @@ public abstract class StoreUpgrader } }; + + private final static StoreUpgrader UPGRADE_1_2 = new StoreUpgrader("1.2") + { + @Override + protected void doUpgrade(ConfigurationEntryStore store) + { + ConfigurationEntry root = store.getRootEntry(); + Map<String, Collection<ConfigurationEntry>> children = root.getChildren(); + Collection<ConfigurationEntry> changed = new HashSet<ConfigurationEntry>(); + Collection<ConfigurationEntry> keyStores = children.get("KeyStore"); + if(keyStores != null) + { + for(ConfigurationEntry keyStore : keyStores) + { + Map<String, Object> attributes = keyStore.getAttributes(); + if(attributes.containsKey("type")) + { + attributes = new HashMap<String, Object>(attributes); + attributes.put("keyStoreType", attributes.remove("type")); + + changed.add(new ConfigurationEntry(keyStore.getId(),keyStore.getType(),attributes,keyStore.getChildrenIds(),store)); + + } + + } + } + Collection<ConfigurationEntry> trustStores = children.get("TrustStore"); + if(trustStores != null) + { + for(ConfigurationEntry trustStore : trustStores) + { + Map<String, Object> attributes = trustStore.getAttributes(); + if(attributes.containsKey("type")) + { + attributes = new HashMap<String, Object>(attributes); + attributes.put("trustStoreType", attributes.remove("type")); + + changed.add(new ConfigurationEntry(trustStore.getId(),trustStore.getType(),attributes,trustStore.getChildrenIds(),store)); + + } + + } + } + Map<String, Object> attributes = new HashMap<String, Object>(root.getAttributes()); + attributes.put(Broker.MODEL_VERSION, "1.3"); + changed.add(new ConfigurationEntry(root.getId(),root.getType(),attributes,root.getChildrenIds(),store)); + + store.save(changed.toArray(new ConfigurationEntry[changed.size()])); + + } + }; + private StoreUpgrader(String version) { _upgraders.put(version, this); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java index 20d0166c9d..711bcbfda9 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java @@ -22,10 +22,11 @@ package org.apache.qpid.server.model; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.UUID; import org.apache.qpid.server.security.AccessControl; -public interface AccessControlProvider extends ConfiguredObject +public interface AccessControlProvider<X extends AccessControlProvider<X>> extends ConfiguredObject<X> { public static final String DESCRIPTION = "description"; public static final String STATE = "state"; @@ -36,19 +37,6 @@ public interface AccessControlProvider extends ConfiguredObject public static final String UPDATED = "updated"; public static final String TYPE = "type"; - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList(ID, - NAME, - DESCRIPTION, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - TYPE)); - //retrieve the underlying AccessControl object AccessControl getAccessControl(); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AmqpManagement.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AmqpManagement.java index 43b77bfe1d..a7ef6e4e4e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AmqpManagement.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AmqpManagement.java @@ -27,8 +27,8 @@ import java.lang.annotation.RetentionPolicy; public @interface AmqpManagement { - String[] attributes(); - String[] operations(); + String[] attributes() default {}; + String[] operations() default {}; boolean managesChildren() default false; // for objects that manage children, a management node needs to be created boolean creatable() default true; String defaultImplementation() default ""; // in this case the class/interface itself is to be used diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java index 4fccf47e0e..2a419585bd 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Attribute.java @@ -21,12 +21,100 @@ package org.apache.qpid.server.model; -public abstract class Attribute<C extends ConfiguredObject, T> +import java.lang.reflect.Method; +import java.util.*; + +public final class Attribute<C extends ConfiguredObject, T> { + private static Map<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> _allAttributes = + Collections.synchronizedMap(new HashMap<Class<? extends ConfiguredObject>, Collection<Attribute<?, ?>>>()); + private final String _name; - public Attribute(String name) + private final Class<T> _type; + private final Converter<T> _converter; + private final Method _getter; + + private Attribute(Class<C> clazz, String name, Class<T> type, final Method getter) { _name = name; + _type = type; + _converter = getConverter(type); + _getter = getter; + addToAttributesSet(clazz, this); + } + + private static <X> Converter<X> getConverter(final Class<X> type) + { + if(type == String.class) + { + return (Converter<X>) STRING_CONVERTER; + } + else if(type == Integer.class) + { + return (Converter<X>) INT_CONVERTER; + } + else if(type == Long.class) + { + return (Converter<X>) LONG_CONVERTER; + } + else if(type == Boolean.class) + { + return (Converter<X>) BOOLEAN_CONVERTER; + } + else if(type == UUID.class) + { + return (Converter<X>) UUID_CONVERTER; + } + else if(Enum.class.isAssignableFrom(type)) + { + return (Converter<X>) new EnumConverter((Class<? extends Enum>)type); + } + else if(List.class.isAssignableFrom(type)) + { + return (Converter<X>) LIST_CONVERTER; + } + else if(Map.class.isAssignableFrom(type)) + { + return (Converter<X>) MAP_CONVERTER; + } + else if(Collection.class.isAssignableFrom(type)) + { + return (Converter<X>) COLLECTION_CONVERTER; + } + else if(ConfiguredObject.class.isAssignableFrom(type)) + { + return (Converter<X>) new ConfiguredObjectConverter(type); + } + throw new IllegalArgumentException("Cannot create attributes of type " + type.getName()); + } + + private static void addToAttributesSet(final Class<? extends ConfiguredObject> clazz, final Attribute<?, ?> attribute) + { + synchronized (_allAttributes) + { + Collection<Attribute<?,?>> classAttributes = _allAttributes.get(clazz); + if(classAttributes == null) + { + classAttributes = new ArrayList<Attribute<?, ?>>(); + for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> entry : _allAttributes.entrySet()) + { + if(entry.getKey().isAssignableFrom(clazz)) + { + classAttributes.addAll(entry.getValue()); + } + } + _allAttributes.put(clazz, classAttributes); + + } + for(Map.Entry<Class<? extends ConfiguredObject>, Collection<Attribute<?,?>>> entry : _allAttributes.entrySet()) + { + if(clazz.isAssignableFrom(entry.getKey())) + { + entry.getValue().add(attribute); + } + } + + } } public String getName() @@ -34,166 +122,466 @@ public abstract class Attribute<C extends ConfiguredObject, T> return _name; } - abstract public Class<T> getType(); + public Class<T> getType() + { + return _type; + } public T getValue(C configuredObject) { Object o = configuredObject.getAttribute(_name); - if(getType().isInstance(o)) - { - return (T) o; - } - return null; + return _converter.convert(o); } - - public T setValue(T expected, T desired, C configuredObject) + + + public T getValue(Map<String, Object> attributeMap) { - return (T) configuredObject.setAttribute(_name, expected, desired); + Object o = attributeMap.get(_name); + return _converter.convert(o); } - abstract public T setValue(String stringValue, C configuredObject); - static class StringAttribute<C extends ConfiguredObject> extends Attribute<C, String> + @Override + public String toString() + { + return _name; + } + + private static interface Converter<T> { + T convert(Object o); + } - public StringAttribute(String name) + private static final Converter<String> STRING_CONVERTER = new Converter<String>() { - super(name); - } + @Override + public String convert(final Object o) + { + return o == null ? null : o.toString(); + } + }; + private static final Converter<UUID> UUID_CONVERTER = new Converter<UUID>() + { @Override - public Class<String> getType() + public UUID convert(final Object o) { - return String.class; + if(o instanceof UUID) + { + return (UUID)o; + } + else if(o instanceof String) + { + return UUID.fromString((String)o); + } + else if(o == null) + { + return null; + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a UUID"); + } } + }; + + private static final Converter<Long> LONG_CONVERTER = new Converter<Long>() + { @Override - public String setValue(String stringValue, C configuredObject) + public Long convert(final Object o) { - return setValue(getValue(configuredObject), stringValue, configuredObject); + if(o instanceof Long) + { + return (Long)o; + } + else if(o instanceof Number) + { + return ((Number)o).longValue(); + } + else if(o instanceof String) + { + return Long.valueOf((String)o); + } + else if(o == null) + { + return null; + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Long"); + } } + }; - } - - static class IntegerAttribute<C extends ConfiguredObject> extends Attribute<C, Integer> + private static final Converter<Integer> INT_CONVERTER = new Converter<Integer>() { - public IntegerAttribute(String name) + @Override + public Integer convert(final Object o) { - super(name); + if(o instanceof Integer) + { + return (Integer)o; + } + else if(o instanceof Number) + { + return ((Number)o).intValue(); + } + else if(o instanceof String) + { + return Integer.valueOf((String)o); + } + else if(o == null) + { + return null; + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to an Integer"); + } } + }; + + private static final Converter<Boolean> BOOLEAN_CONVERTER = new Converter<Boolean>() + { @Override - public Class<Integer> getType() + public Boolean convert(final Object o) { - return Integer.class; + if(o instanceof Boolean) + { + return (Boolean)o; + } + else if(o instanceof String) + { + return Boolean.valueOf((String)o); + } + else if(o == null) + { + return null; + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Boolean"); + } } + }; + private static final Converter<List> LIST_CONVERTER = new Converter<List>() + { @Override - public Integer setValue(String stringValue, C configuredObject) + public List convert(final Object o) { - try + if(o instanceof List) + { + return (List)o; + } + else if(o == null) { - Integer val = Integer.valueOf(stringValue); - return setValue(getValue(configuredObject), val, configuredObject); + return null; } - catch (NumberFormatException e) + else { - throw new IllegalArgumentException(e); + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a List"); } } - } - + }; - static class LongAttribute<C extends ConfiguredObject> extends Attribute<C, Long> + private static final Converter<Collection> COLLECTION_CONVERTER = new Converter<Collection>() { - - public LongAttribute(String name) + @Override + public Collection convert(final Object o) { - super(name); + if(o instanceof Collection) + { + return (Collection)o; + } + else if(o == null) + { + return null; + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a List"); + } } + }; + private static final Converter<Map> MAP_CONVERTER = new Converter<Map>() + { @Override - public Class<Long> getType() + public Map convert(final Object o) { - return Long.class; + if(o instanceof Map) + { + return (Map)o; + } + else if(o == null) + { + return null; + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a Map"); + } + } + }; + + private static final class EnumConverter<X extends Enum<X>> implements Converter<X> + { + private final Class<X> _klazz; + + private EnumConverter(final Class<X> klazz) + { + _klazz = klazz; } @Override - public Long setValue(String stringValue, C configuredObject) + public X convert(final Object o) { - try + if(o == null) + { + return null; + } + else if(_klazz.isInstance(o)) { - Long val = Long.valueOf(stringValue); - return setValue(getValue(configuredObject), val, configuredObject); + return (X) o; } - catch (NumberFormatException e) + else if(o instanceof String) { - throw new IllegalArgumentException(e); + return Enum.valueOf(_klazz,(String)o); + } + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a " + _klazz.getName()); } } } - - static class DoubleAttribute<C extends ConfiguredObject> extends Attribute<C, Double> + private static final class ConfiguredObjectConverter<X extends ConfiguredObject<X>> implements Converter<X> { + private final Class<X> _klazz; - public DoubleAttribute(String name) + private ConfiguredObjectConverter(final Class<X> klazz) { - super(name); + _klazz = klazz; } @Override - public Class<Double> getType() + public X convert(final Object o) { - return Double.class; + if(o == null) + { + return null; + } + else if(_klazz.isInstance(o)) + { + return (X) o; + } + // TODO - traverse tree based on UUID + else + { + throw new IllegalArgumentException("Cannot convert type " + o.getClass() + " to a " + _klazz.getName()); + } } + } - @Override - public Double setValue(String stringValue, C configuredObject) + + public static <X extends ConfiguredObject> Collection<String> getAttributeNames(Class<X> clazz) + { + final Collection<Attribute<? super X, ?>> attrs = getAttributes(clazz); + + return new AbstractCollection<String>() { - try + @Override + public Iterator<String> iterator() { - Double val = Double.valueOf(stringValue); - return setValue(getValue(configuredObject), val, configuredObject); + final Iterator<Attribute<? super X, ?>> underlyingIterator = attrs.iterator(); + return new Iterator<String>() + { + @Override + public boolean hasNext() + { + return underlyingIterator.hasNext(); + } + + @Override + public String next() + { + return underlyingIterator.next().getName(); + } + + @Override + public void remove() + { + throw new UnsupportedOperationException(); + } + }; } - catch (NumberFormatException e) + + @Override + public int size() { - throw new IllegalArgumentException(e); + return attrs.size(); } - } - } + }; + } - static class FloatAttribute<C extends ConfiguredObject> extends Attribute<C, Float> + protected static <X extends ConfiguredObject> Collection<Attribute<? super X, ?>> getAttributes(final Class<X> clazz) { + if(!_allAttributes.containsKey(clazz)) + { + processAttributes(clazz); + } + final Collection<Attribute<? super X, ?>> attributes = (Collection) _allAttributes.get(clazz); + return attributes; + } - public FloatAttribute(String name) + private static <X extends ConfiguredObject> void processAttributes(final Class<X> clazz) + { + if(_allAttributes.containsKey(clazz)) { - super(name); + return; } - @Override - public Class<Float> getType() + + for(Class<?> parent : clazz.getInterfaces()) { - return Float.class; + if(ConfiguredObject.class.isAssignableFrom(parent)) + { + processAttributes((Class<? extends ConfiguredObject>)parent); + } + } + final Class<? super X> superclass = clazz.getSuperclass(); + if(superclass != null && ConfiguredObject.class.isAssignableFrom(superclass)) + { + processAttributes((Class<? extends ConfiguredObject>) superclass); } - @Override - public Float setValue(String stringValue, C configuredObject) + final ArrayList<Attribute<?, ?>> attributeList = new ArrayList<Attribute<?, ?>>(); + _allAttributes.put(clazz, attributeList); + + for(Class<?> parent : clazz.getInterfaces()) { - try + if(ConfiguredObject.class.isAssignableFrom(parent)) { - Float val = Float.valueOf(stringValue); - return setValue(getValue(configuredObject), val, configuredObject); + Collection<Attribute<?, ?>> attrs = _allAttributes.get(parent); + for(Attribute<?,?> attr : attrs) + { + if(!attributeList.contains(attr)) + { + attributeList.add(attr); + } + } } - catch (NumberFormatException e) + } + if(superclass != null && ConfiguredObject.class.isAssignableFrom(superclass)) + { + Collection<Attribute<?, ?>> attrs = _allAttributes.get(superclass); + for(Attribute<?,?> attr : attrs) { - throw new IllegalArgumentException(e); + if(!attributeList.contains(attr)) + { + attributeList.add(attr); + } + } + + } + + + for(Method m : clazz.getDeclaredMethods()) + { + ManagedAttribute annotation = m.getAnnotation(ManagedAttribute.class); + if(annotation != null) + { + if(m.getParameterTypes().length != 0) + { + throw new IllegalArgumentException("ManagedAttribute annotation should only be added to no-arg getters"); + } + Class<?> type = m.getReturnType(); + if(type.isPrimitive()) + { + if(type == Boolean.TYPE) + { + type = Boolean.class; + } + else if(type == Byte.TYPE) + { + type = Byte.class; + } + else if(type == Short.TYPE) + { + type = Short.class; + } + else if(type == Integer.TYPE) + { + type = Integer.class; + } + else if(type == Long.TYPE) + { + type = Long.class; + } + else if(type == Float.TYPE) + { + type = Float.class; + } + else if(type == Double.TYPE) + { + type = Double.class; + } + else if(type == Character.TYPE) + { + type = Character.class; + } + } + String methodName = m.getName(); + String baseName; + + if(type == Boolean.class ) + { + if((methodName.startsWith("get") || methodName.startsWith("has")) && methodName.length() >= 4) + { + baseName = methodName.substring(3); + } + else if(methodName.startsWith("is") && methodName.length() >= 3) + { + baseName = methodName.substring(2); + } + else + { + throw new IllegalArgumentException("Method name " + methodName + " does not conform to the required pattern for ManagedAttributes"); + } + } + else + { + if(methodName.startsWith("get") && methodName.length() >= 4) + { + baseName = methodName.substring(3); + } + else + { + throw new IllegalArgumentException("Method name " + methodName + " does not conform to the required pattern for ManagedAttributes"); + } + } + + String name = baseName.length() == 1 ? baseName.toLowerCase() : baseName.substring(0,1).toLowerCase() + baseName.substring(1); + name = name.replace('_','.'); + Attribute<X,?> newAttr = new Attribute(clazz,name,type,m); + } } } + public static void main(String[] args) + { + System.err.println(Attribute.getAttributeNames(KeyStore.class)); + System.err.println(Attribute.getAttributeNames(Binding.class)); + System.err.println(Attribute.getAttributeNames(Exchange.class)); + System.err.println(Attribute.getAttributeNames(Broker.class)); + + } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java index c111f40cc8..6c6c8b8c66 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java @@ -26,7 +26,7 @@ import java.util.Collections; import org.apache.qpid.server.security.SubjectCreator; -public interface AuthenticationProvider extends ConfiguredObject +public interface AuthenticationProvider<X extends AuthenticationProvider<X>> extends ConfiguredObject<X> { public static final String DESCRIPTION = "description"; @@ -37,21 +37,6 @@ public interface AuthenticationProvider extends ConfiguredObject public static final String CREATED = "created"; public static final String UPDATED = "updated"; - public static final String TYPE = "type"; - - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList(ID, - NAME, - DESCRIPTION, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - TYPE - )); //children Collection<VirtualHostAlias> getVirtualHostPortBindings(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java index d5f833e393..030c7ce610 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java @@ -25,7 +25,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Map; -public interface Binding extends ConfiguredObject +public interface Binding<X extends Binding<X>> extends ConfiguredObject<X> { public String MATCHED_BYTES = "matchedBytes"; @@ -50,23 +50,13 @@ public interface Binding extends ConfiguredObject public String QUEUE = "queue"; public String EXCHANGE = "exchange"; - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableCollection( - Arrays.asList(ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - EXCHANGE, - QUEUE, - ARGUMENTS) - ); - + @ManagedAttribute + Queue getQueue(); + @ManagedAttribute + Exchange getExchange(); + @ManagedAttribute Map<String,Object> getArguments(); void delete(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java index 5df6d9475e..65f1429987 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java @@ -32,7 +32,7 @@ import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; -public interface Broker extends ConfiguredObject +public interface Broker<X extends Broker<X>> extends ConfiguredObject<X> { String BUILD_VERSION = "buildVersion"; @@ -45,7 +45,7 @@ public interface Broker extends ConfiguredObject String SUPPORTED_VIRTUALHOST_TYPES = "supportedVirtualHostTypes"; String SUPPORTED_VIRTUALHOST_STORE_TYPES = "supportedVirtualHostStoreTypes"; String SUPPORTED_AUTHENTICATION_PROVIDERS = "supportedAuthenticationProviders"; - String SUPPORTED_PREFERENCES_PROVIDERS_TYPES = "supportedPreferencesProviderTypes"; + String SUPPORTED_PREFERENCES_PROVIDER_TYPES = "supportedPreferencesProviderTypes"; String CREATED = "created"; String DURABLE = "durable"; String LIFETIME_POLICY = "lifetimePolicy"; @@ -80,63 +80,116 @@ public interface Broker extends ConfiguredObject String VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE = "virtualhost.storeTransactionOpenTimeoutClose"; String VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_WARN = "virtualhost.storeTransactionOpenTimeoutWarn"; - // Attributes - Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList(BUILD_VERSION, - BYTES_RETAINED, - OPERATING_SYSTEM, - PLATFORM, - PROCESS_PID, - PRODUCT_VERSION, - SUPPORTED_BROKER_STORE_TYPES, - SUPPORTED_VIRTUALHOST_STORE_TYPES, - SUPPORTED_AUTHENTICATION_PROVIDERS, - SUPPORTED_PREFERENCES_PROVIDERS_TYPES, - CREATED, - DURABLE, - ID, - LIFETIME_POLICY, - NAME, - STATE, - TIME_TO_LIVE, - UPDATED, - DEFAULT_VIRTUAL_HOST, - QUEUE_ALERT_THRESHOLD_MESSAGE_AGE, - QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, - QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, - QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE, - QUEUE_ALERT_REPEAT_GAP, - QUEUE_FLOW_CONTROL_SIZE_BYTES, - QUEUE_FLOW_CONTROL_RESUME_SIZE_BYTES, - QUEUE_MAXIMUM_DELIVERY_ATTEMPTS, - QUEUE_DEAD_LETTER_QUEUE_ENABLED, - VIRTUALHOST_HOUSEKEEPING_CHECK_PERIOD, - CONNECTION_SESSION_COUNT_LIMIT, - CONNECTION_HEART_BEAT_DELAY, - CONNECTION_CLOSE_WHEN_NO_ROUTE, - STATISTICS_REPORTING_PERIOD, - STATISTICS_REPORTING_RESET_ENABLED, - STORE_TYPE, - STORE_VERSION, - STORE_PATH, - MODEL_VERSION, - VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE, - VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_WARN, - VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE, - VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_WARN - )); + @ManagedAttribute + String getBuildVersion(); + + @ManagedAttribute + String getOperatingSystem(); + + @ManagedAttribute + String getPlatform(); + + @ManagedAttribute + String getProcessPid(); + + @ManagedAttribute + String getProductVersion(); + + @ManagedAttribute + Collection<String> getSupportedBrokerStoreTypes(); + + @ManagedAttribute + Collection<String> getSupportedVirtualHostStoreTypes(); + + @ManagedAttribute + Collection<String> getSupportedAuthenticationProviders(); + + @ManagedAttribute + Collection<String> getSupportedPreferencesProviderTypes(); + + @ManagedAttribute + String getDefaultVirtualHost(); + + @ManagedAttribute + int getQueue_alertThresholdMessageAge(); + + @ManagedAttribute + long getQueue_alertThresholdQueueDepthMessages(); + + @ManagedAttribute + long getQueue_alertThresholdQueueDepthBytes(); + + @ManagedAttribute + long getQueue_alertThresholdMessageSize(); + + @ManagedAttribute + long getQueue_alertRepeatGap(); + + @ManagedAttribute + long getQueue_flowControlSizeBytes(); + + @ManagedAttribute + long getQueue_flowResumeSizeBytes(); + + @ManagedAttribute + int getQueue_maximumDeliveryAttempts(); + + @ManagedAttribute + boolean isQueue_deadLetterQueueEnabled(); + + @ManagedAttribute + long getVirtualhost_housekeepingCheckPeriod(); + + @ManagedAttribute + int getConnection_sessionCountLimit(); + + @ManagedAttribute + int getConnection_heartBeatDelay(); + + @ManagedAttribute + boolean getConnection_closeWhenNoRoute(); + + @ManagedAttribute + int getStatisticsReportingPeriod(); + + @ManagedAttribute + boolean getStatisticsReportingResetEnabled(); + + @ManagedAttribute + String getStoreType(); + + @ManagedAttribute + int getStoreVersion(); + + @ManagedAttribute + String getStorePath(); + + @ManagedAttribute + String getModelVersion(); + + @ManagedAttribute + long getVirtualhost_storeTransactionIdleTimeoutClose(); + + @ManagedAttribute + long getVirtualhost_storeTransactionIdleTimeoutWarn(); + + @ManagedAttribute + long getVirtualhost_storeTransactionOpenTimeoutClose(); + + @ManagedAttribute + long getVirtualhost_storeTransactionOpenTimeoutWarn(); + //children - Collection < VirtualHost > getVirtualHosts(); + Collection < VirtualHost<?> > getVirtualHosts(); - Collection<Port> getPorts(); + Collection<Port<?>> getPorts(); - Collection<AuthenticationProvider> getAuthenticationProviders(); + Collection<AuthenticationProvider<?>> getAuthenticationProviders(); - Collection<AccessControlProvider> getAccessControlProviders(); + Collection<AccessControlProvider<?>> getAccessControlProviders(); - Collection<GroupProvider> getGroupProviders(); + Collection<GroupProvider<?>> getGroupProviders(); /** * A temporary hack to expose root message logger via broker instance. @@ -155,25 +208,25 @@ public interface Broker extends ConfiguredObject */ LogRecorder getLogRecorder(); - AuthenticationProvider findAuthenticationProviderByName(String authenticationProviderName); + AuthenticationProvider<?> findAuthenticationProviderByName(String authenticationProviderName); - VirtualHost findVirtualHostByName(String name); + VirtualHost<?> findVirtualHostByName(String name); - KeyStore findKeyStoreByName(String name); + KeyStore<?> findKeyStoreByName(String name); - TrustStore findTrustStoreByName(String name); + TrustStore<?> findTrustStoreByName(String name); /** * Get the SubjectCreator for the given socket address. * TODO: move the authentication related functionality into host aliases and AuthenticationProviders * - * @param address The (listening) socket address for which the AuthenticationManager is required + * @param localAddress The (listening) socket address for which the AuthenticationManager is required */ SubjectCreator getSubjectCreator(SocketAddress localAddress); - Collection<KeyStore> getKeyStores(); + Collection<KeyStore<?>> getKeyStores(); - Collection<TrustStore> getTrustStores(); + Collection<TrustStore<?>> getTrustStores(); /* * TODO: Remove this method. Eventually the broker will become a registry. @@ -184,5 +237,5 @@ public interface Broker extends ConfiguredObject boolean isManagementMode(); - AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress); + AuthenticationProvider<?> getAuthenticationProvider(SocketAddress localAddress); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java index ab9c60573a..b236581cbf 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java @@ -25,27 +25,28 @@ import java.util.Collection; import java.util.Map; import java.util.UUID; -@AmqpManagement( - attributes = { - ConfiguredObject.ID, - ConfiguredObject.NAME - }, - operations = {}, - creatable = false -) +@AmqpManagement( creatable = false ) /** * An object that can be "managed" (eg via the web interface) and usually read from configuration. */ -public interface ConfiguredObject +public interface ConfiguredObject<X extends ConfiguredObject<X>> { public static final String ID = "id"; public static final String NAME = "name"; -// public static final String TYPE = "type"; + public static final String TYPE = "type"; + public static final String DESCRIPTION = "description"; + public static final String LAST_UPDATED_BY = "lastUpdatedBy"; + public static final String LAST_UPDATED_TIME = "lastUpdatedTime"; + public static final String CREATED_BY = "createdBy"; + public static final String CREATED_TIME = "createdTime"; + + /** * Get the universally unique identifier for the object * * @return the objects id */ + @ManagedAttribute UUID getId(); /** @@ -53,9 +54,28 @@ public interface ConfiguredObject * * @return the name of the object */ + @ManagedAttribute String getName(); + @ManagedAttribute + String getDescription(); + + @ManagedAttribute + String getType(); + + @ManagedAttribute + String getLastUpdatedBy(); + + @ManagedAttribute + long getLastUpdatedTime(); + + @ManagedAttribute + String getCreatedBy(); + + @ManagedAttribute + long getCreatedTime(); + /** * Attempt to change the name of the object * @@ -109,7 +129,8 @@ public interface ConfiguredObject * * @return the actual state of the object */ - State getActualState(); + @ManagedAttribute + State getState(); /** @@ -142,6 +163,7 @@ public interface ConfiguredObject * * @return the durability */ + @ManagedAttribute boolean isDurable(); /** @@ -162,6 +184,7 @@ public interface ConfiguredObject * * @return the lifetime policy */ + @ManagedAttribute LifetimePolicy getLifetimePolicy(); /** @@ -183,6 +206,7 @@ public interface ConfiguredObject * * @return the time to live */ + @ManagedAttribute long getTimeToLive(); /** @@ -222,6 +246,8 @@ public interface ConfiguredObject */ Object getAttribute(String name); + <T> T getAttribute(Attribute<? super X, T> attr); + /** * Return the map containing only explicitly set attributes * diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java index a7350f528c..5e86f83dfb 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java @@ -24,33 +24,8 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -@AmqpManagement( - attributes = { - Connection.ID, - Connection.NAME, - Connection.STATE, - Connection.DURABLE, - Connection.LIFETIME_POLICY, - Connection.TIME_TO_LIVE, - Connection.CREATED, - Connection.UPDATED, - Connection.CLIENT_ID, - Connection.CLIENT_VERSION, - Connection.INCOMING, - Connection.LOCAL_ADDRESS, - Connection.PRINCIPAL, - Connection.PROPERTIES, - Connection.REMOTE_ADDRESS, - Connection.REMOTE_PROCESS_NAME, - Connection.REMOTE_PROCESS_PID, - Connection.SESSION_COUNT_LIMIT, - Connection.TRANSPORT, - Connection.PORT - }, - operations = {}, - creatable = false -) -public interface Connection extends ConfiguredObject +@AmqpManagement( creatable = false ) +public interface Connection<X extends Connection<X>> extends ConfiguredObject<X> { // Statistics @@ -106,29 +81,38 @@ public interface Connection extends ConfiguredObject /** Name of port associated with the connection */ public static final String PORT = "port"; + @ManagedAttribute + String getClientId(); - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableCollection( - Arrays.asList( ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - CLIENT_ID, - CLIENT_VERSION, - INCOMING, - LOCAL_ADDRESS, - PRINCIPAL, - PROPERTIES, - REMOTE_ADDRESS, - REMOTE_PROCESS_NAME, - REMOTE_PROCESS_PID, - SESSION_COUNT_LIMIT, - TRANSPORT, - PORT)); + @ManagedAttribute + String getClientVersion(); + + @ManagedAttribute + boolean isIncoming(); + + @ManagedAttribute + String getLocalAddress(); + + @ManagedAttribute + String getPrincipal(); + + @ManagedAttribute + String getRemoteAddress(); + + @ManagedAttribute + String getRemoteProcessName(); + + @ManagedAttribute + String getRemoteProcessPid(); + + @ManagedAttribute + long getSessionCountLimit(); + + @ManagedAttribute + Transport getTransport(); + + @ManagedAttribute + Port getPort(); //children Collection<Session> getSessions(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java index 6f8726d0c8..54b81c724d 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java @@ -24,7 +24,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -public interface Consumer extends ConfiguredObject +public interface Consumer<X extends Consumer<X>> extends ConfiguredObject<X> { public String DISTRIBUTION_MODE = "distributionMode"; public String EXCLUSIVE = "exclusive"; @@ -38,21 +38,22 @@ public interface Consumer extends ConfiguredObject public String TIME_TO_LIVE = "timeToLive"; public String UPDATED = "updated"; - public Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableCollection( - Arrays.asList(ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - DISTRIBUTION_MODE, - SETTLEMENT_MODE, - EXCLUSIVE, - NO_LOCAL, - SELECTOR)); + @ManagedAttribute + String getDistributionMode(); + + @ManagedAttribute + String getSettlementMode(); + + @ManagedAttribute + boolean isExclusive(); + + @ManagedAttribute + boolean isNoLocal(); + + @ManagedAttribute + String getSelector(); + + public String BYTES_OUT = "bytesOut"; public String MESSAGES_OUT = "messagesOut"; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/EventType.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/EventType.java deleted file mode 100644 index edd5ce4250..0000000000 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/EventType.java +++ /dev/null @@ -1,60 +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.model; - -import java.util.HashMap; -import java.util.Map; - -/** - * A type of event generated by a ConfiguredObject. - */ -public abstract class EventType<T extends EventType<T>> -{ - private static final Map<Class<? extends EventType>, Integer> EVENT_TYPES = - new HashMap<Class<? extends EventType>, Integer>(); - - private final int _classId; - - protected EventType() - { - synchronized (EVENT_TYPES) - { - if(EVENT_TYPES.containsKey(getClass())) - { - throw new IllegalArgumentException("Cannot define more one instance of the same EventType " + - getClass().getName()); - } - else - { - _classId = EVENT_TYPES.size(); - EVENT_TYPES.put(getClass(), _classId); - } - } - } - - public final int getId() - { - return _classId; - } - - abstract public Event<T> newEvent(); -} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java index c4575a7359..792453b13f 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java @@ -25,23 +25,9 @@ import java.util.Collection; import java.util.Collections; import java.util.Map; -@AmqpManagement( - attributes = { - Exchange.ID, - Exchange.NAME, - Exchange.STATE, - Exchange.DURABLE, - Exchange.LIFETIME_POLICY, - Exchange.TIME_TO_LIVE, - Exchange.CREATED, - Exchange.UPDATED, - Exchange.ALTERNATE_EXCHANGE, - Exchange.TYPE - }, - operations = {} -) +@AmqpManagement -public interface Exchange extends ConfiguredObject +public interface Exchange<X extends Exchange<X>> extends ConfiguredObject<X> { String BINDING_COUNT = "bindingCount"; String BYTES_DROPPED = "bytesDropped"; @@ -68,25 +54,11 @@ public interface Exchange extends ConfiguredObject String TIME_TO_LIVE = "timeToLive"; String UPDATED = "updated"; String ALTERNATE_EXCHANGE = "alternateExchange"; - String TYPE = "type"; // Attributes - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - ALTERNATE_EXCHANGE, - TYPE - )); - String getExchangeType(); + @ManagedAttribute + Exchange<?> getAlternateExchange(); //children Collection<Binding> getBindings(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java index e62949708d..47a467f7c4 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java @@ -19,11 +19,7 @@ */ package org.apache.qpid.server.model; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - -public interface Group extends ConfiguredObject +public interface Group<X extends Group<X>> extends ConfiguredObject<X> { String CREATED = "created"; String DURABLE = "durable"; @@ -32,19 +28,4 @@ public interface Group extends ConfiguredObject String TIME_TO_LIVE = "timeToLive"; String UPDATED = "updated"; - // Attributes - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED - )); - - } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java index 46dd6ec3e2..5b7720f8e4 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java @@ -23,7 +23,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -public interface GroupMember extends ConfiguredObject +public interface GroupMember<X extends GroupMember<X>> extends ConfiguredObject<X> { String CREATED = "created"; String DURABLE = "durable"; @@ -32,19 +32,4 @@ public interface GroupMember extends ConfiguredObject String TIME_TO_LIVE = "timeToLive"; String UPDATED = "updated"; - // Attributes - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED - )); - - } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java index e5c64ec882..35fa7e6ac5 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java @@ -25,7 +25,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Set; -public interface GroupProvider extends ConfiguredObject +public interface GroupProvider<X extends GroupProvider<X>> extends ConfiguredObject<X> { public static final String DESCRIPTION = "description"; public static final String STATE = "state"; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java index 1e1cbb7cef..6d425492ea 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java @@ -26,7 +26,7 @@ import java.util.Collection; import java.util.Collections; import javax.net.ssl.KeyManager; -public interface KeyStore extends ConfiguredObject +public interface KeyStore<X extends KeyStore<X>> extends ConfiguredObject<X> { String DURABLE = "durable"; String LIFETIME_POLICY = "lifetimePolicy"; @@ -38,30 +38,43 @@ public interface KeyStore extends ConfiguredObject String PATH = "path"; String PASSWORD = "password"; - String TYPE = "type"; + String KEY_STORE_TYPE = "keyStoreType"; String CERTIFICATE_ALIAS = "certificateAlias"; String KEY_MANAGER_FACTORY_ALGORITHM = "keyManagerFactoryAlgorithm"; public static final Collection<String> AVAILABLE_ATTRIBUTES = Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - DESCRIPTION, - PATH, - PASSWORD, - TYPE, - CERTIFICATE_ALIAS, - KEY_MANAGER_FACTORY_ALGORITHM - )); + Arrays.asList( + ID, + NAME, + STATE, + DURABLE, + LIFETIME_POLICY, + TIME_TO_LIVE, + CREATED, + UPDATED, + DESCRIPTION, + PATH, + PASSWORD, + KEY_STORE_TYPE, + CERTIFICATE_ALIAS, + KEY_MANAGER_FACTORY_ALGORITHM + )); + @ManagedAttribute( secure = true ) public String getPassword(); + + @ManagedAttribute + public String getPath(); + + @ManagedAttribute + public String getCertificateAlias(); + + @ManagedAttribute + public String getKeyManagerFactoryAlgorithm(); + + @ManagedAttribute + public String getKeyStoreType(); public void setPassword(String password); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Event.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java index 91b684f06e..534ff63b86 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Event.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedAttribute.java @@ -1,3 +1,4 @@ +package org.apache.qpid.server.model; /* * * Licensed to the Apache Software Foundation (ASF) under one @@ -19,9 +20,13 @@ * */ -package org.apache.qpid.server.model; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) -abstract public class Event<T extends EventType> +public @interface ManagedAttribute { - abstract public T getEventType(); + boolean secure() default false; + boolean derived() default false; } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java index 50538a5580..f940b323be 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java @@ -37,7 +37,7 @@ public class Model * */ public static final int MODEL_MAJOR_VERSION = 1; - public static final int MODEL_MINOR_VERSION = 2; + public static final int MODEL_MINOR_VERSION = 3; public static final String MODEL_VERSION = MODEL_MAJOR_VERSION + "." + MODEL_MINOR_VERSION; private static final Model MODEL_INSTANCE = new Model(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java index 1027e5ce8c..235cedf198 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PasswordCredentialManagingAuthenticationProvider.java @@ -25,7 +25,7 @@ import java.util.Map; import javax.security.auth.login.AccountNotFoundException; -public interface PasswordCredentialManagingAuthenticationProvider extends AuthenticationProvider +public interface PasswordCredentialManagingAuthenticationProvider<X extends PasswordCredentialManagingAuthenticationProvider<X>> extends AuthenticationProvider<X> { boolean createUser(String username, String password, Map<String, String> attributes); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java index 7cdea9d12c..bb8a8b9ecd 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java @@ -24,7 +24,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -public interface Plugin extends ConfiguredObject +public interface Plugin<X extends Plugin<X>> extends ConfiguredObject<X> { //Hack, using it for the class name only for consistency with the other things. String CREATED = "created"; @@ -35,16 +35,7 @@ public interface Plugin extends ConfiguredObject String UPDATED = "updated"; // Attributes - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED - )); + + @ManagedAttribute + String getPluginType(); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java index 9458ac4120..b443bd2804 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java @@ -24,8 +24,9 @@ import java.security.AccessControlException; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.List; -public interface Port extends ConfiguredObject +public interface Port<X extends Port<X>> extends ConfiguredObject<X> { String CREATED = "created"; String DURABLE = "durable"; @@ -47,41 +48,47 @@ public interface Port extends ConfiguredObject String TRUST_STORES = "trustStores"; // Attributes - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - BINDING_ADDRESS, - PORT, - PROTOCOLS, - TRANSPORTS, - TCP_NO_DELAY, - SEND_BUFFER_SIZE, - RECEIVE_BUFFER_SIZE, - NEED_CLIENT_AUTH, - WANT_CLIENT_AUTH, - AUTHENTICATION_PROVIDER, - KEY_STORE, - TRUST_STORES - )); - + @ManagedAttribute String getBindingAddress(); + @ManagedAttribute int getPort(); + @ManagedAttribute + Collection<Protocol> getProtocols(); + + @ManagedAttribute + Collection<Transport> getTransports(); + + @ManagedAttribute + boolean isTcpNoDelay(); + + @ManagedAttribute + int getSendBufferSize(); + + @ManagedAttribute + int getReceiveBufferSize(); + + @ManagedAttribute + boolean getNeedClientAuth(); + + @ManagedAttribute + boolean getWantClientAuth(); + + @ManagedAttribute + AuthenticationProvider getAuthenticationProvider(); + + @ManagedAttribute KeyStore getKeyStore(); + @ManagedAttribute Collection<TrustStore> getTrustStores(); - Collection<Transport> getTransports(); + + + + void addTransport(Transport transport) throws IllegalStateException, AccessControlException, @@ -91,7 +98,6 @@ public interface Port extends ConfiguredObject AccessControlException, IllegalArgumentException; - Collection<Protocol> getProtocols(); void addProtocol(Protocol protocol) throws IllegalStateException, AccessControlException, @@ -101,7 +107,6 @@ public interface Port extends ConfiguredObject AccessControlException, IllegalArgumentException; - AuthenticationProvider getAuthenticationProvider(); //children Collection<VirtualHostAlias> getVirtualHostBindings(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java index c895ce36f8..18ace288e4 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java @@ -27,9 +27,8 @@ import java.util.Collections; import java.util.Map; import java.util.Set; -public interface PreferencesProvider extends ConfiguredObject +public interface PreferencesProvider<X extends PreferencesProvider<X>> extends ConfiguredObject<X> { - String TYPE = "type"; String CREATED = "created"; String UPDATED = "updated"; String DURABLE = "durable"; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Publisher.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Publisher.java index cdb85d8023..2cd8f1aad2 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Publisher.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Publisher.java @@ -20,6 +20,6 @@ */ package org.apache.qpid.server.model; -public interface Publisher extends ConfiguredObject +public interface Publisher<X extends Publisher<X>> extends ConfiguredObject<X> { } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java index dc65c6ef81..9f806caa93 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java @@ -25,41 +25,9 @@ import java.util.Collection; import java.util.Collections; import org.apache.qpid.server.queue.QueueEntryVisitor; -@AmqpManagement( - attributes = { - Queue.ID, - Queue.NAME, - Queue.DESCRIPTION, - Queue.STATE, - Queue.DURABLE, - Queue.LIFETIME_POLICY, - Queue.TIME_TO_LIVE, - Queue.CREATED, - Queue.UPDATED, - Queue.QUEUE_TYPE, - Queue.ALTERNATE_EXCHANGE, - Queue.EXCLUSIVE, - Queue.OWNER, - Queue.NO_LOCAL, - Queue.LVQ_KEY, - Queue.SORT_KEY, - Queue.MESSAGE_GROUP_KEY, - Queue.MESSAGE_GROUP_SHARED_GROUPS, - Queue.MAXIMUM_DELIVERY_ATTEMPTS, - Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, - Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, - Queue.QUEUE_FLOW_STOPPED, - Queue.ALERT_THRESHOLD_MESSAGE_AGE, - Queue.ALERT_THRESHOLD_MESSAGE_SIZE, - Queue.ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, - Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, - Queue.ALERT_REPEAT_GAP, - Queue.PRIORITIES - }, - operations = {} -) - -public interface Queue extends ConfiguredObject +@AmqpManagement + +public interface Queue<X extends Queue<X>> extends ConfiguredObject<X> { public static final String BINDING_COUNT = "bindingCount"; public static final String CONSUMER_COUNT = "consumerCount"; @@ -103,14 +71,10 @@ public interface Queue extends ConfiguredObject - public static final String DESCRIPTION = "description"; public static final String STATE = "state"; public static final String DURABLE = "durable"; public static final String LIFETIME_POLICY = "lifetimePolicy"; public static final String TIME_TO_LIVE = "timeToLive"; - public static final String CREATED = "created"; - public static final String UPDATED = "updated"; - public static final String ARGUMENTS = "arguments"; public static final String ALERT_REPEAT_GAP = "alertRepeatGap"; public static final String ALERT_THRESHOLD_MESSAGE_AGE = "alertThresholdMessageAge"; @@ -135,41 +99,69 @@ public interface Queue extends ConfiguredObject public static final String CREATE_DLQ_ON_CREATION = "x-qpid-dlq-enabled"; // TODO - this value should change - public static final String FEDERATION_EXCLUDES = "federationExcludes"; - public static final String FEDERATION_ID = "federationId"; + @ManagedAttribute + String getQueueType(); + @ManagedAttribute + Exchange getAlternateExchange(); + + @ManagedAttribute + ExclusivityPolicy getExclusive(); + + @ManagedAttribute + String getOwner(); + + @ManagedAttribute + boolean getNoLocal(); + + @ManagedAttribute + String getLvqKey(); + + @ManagedAttribute + String getSortKey(); + + @ManagedAttribute + String getMessageGroupKey(); + + + // TODO - this should either be a boolean or maybe an enum + @ManagedAttribute + int getMessageGroupSharedGroups(); + + + @ManagedAttribute + int getMaximumDeliveryAttempts(); + + @ManagedAttribute + long getQueueFlowControlSizeBytes(); + + @ManagedAttribute + long getQueueFlowResumeSizeBytes(); + + + // TODO - this is not an attribute + @ManagedAttribute + boolean isQueueFlowStopped(); + + + @ManagedAttribute + long getAlertThresholdMessageAge(); + + @ManagedAttribute + long getAlertThresholdMessageSize(); + + @ManagedAttribute + long getAlertThresholdQueueDepthBytes(); + + @ManagedAttribute + long getAlertThresholdQueueDepthMessages(); + + @ManagedAttribute + long getAlertRepeatGap(); + + @ManagedAttribute + int getPriorities(); - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList(ID, - NAME, - DESCRIPTION, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - QUEUE_TYPE, - ALTERNATE_EXCHANGE, - EXCLUSIVE, - OWNER, - NO_LOCAL, - LVQ_KEY, - SORT_KEY, - MESSAGE_GROUP_KEY, - MESSAGE_GROUP_SHARED_GROUPS, - MAXIMUM_DELIVERY_ATTEMPTS, - QUEUE_FLOW_CONTROL_SIZE_BYTES, - QUEUE_FLOW_RESUME_SIZE_BYTES, - QUEUE_FLOW_STOPPED, - ALERT_THRESHOLD_MESSAGE_AGE, - ALERT_THRESHOLD_MESSAGE_SIZE, - ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, - ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, - ALERT_REPEAT_GAP, - PRIORITIES - )); //children diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java index 40ff3ef686..a6cd7cc9d6 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java @@ -24,7 +24,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -public interface Session extends ConfiguredObject +public interface Session<X extends Session<X>> extends ConfiguredObject<X> { // Statistics @@ -63,17 +63,12 @@ public interface Session extends ConfiguredObject // available credit of both producer and consumer sides. public static final String PRODUCER_FLOW_BLOCKED = "producerFlowBlocked"; - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableCollection(Arrays.asList(ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - CHANNEL_ID, - PRODUCER_FLOW_BLOCKED)); + @ManagedAttribute + int getChannelId(); + + @ManagedAttribute + boolean isProducerFlowBlocked(); + Collection<Consumer> getConsumers(); Collection<Publisher> getPublishers(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java index e4eac98bc0..3c660ac3a6 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java @@ -26,7 +26,7 @@ import java.util.Collection; import java.util.Collections; import javax.net.ssl.TrustManager; -public interface TrustStore extends ConfiguredObject +public interface TrustStore<X extends TrustStore<X>> extends ConfiguredObject<X> { String DURABLE = "durable"; String LIFETIME_POLICY = "lifetimePolicy"; @@ -38,31 +38,26 @@ public interface TrustStore extends ConfiguredObject String PATH = "path"; String PASSWORD = "password"; - String TYPE = "type"; + String TRUST_STORE_TYPE = "trustStoreType"; String PEERS_ONLY = "peersOnly"; String TRUST_MANAGER_FACTORY_ALGORITHM = "trustManagerFactoryAlgorithm"; - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - DESCRIPTION, - PATH, - PASSWORD, - TYPE, - PEERS_ONLY, - TRUST_MANAGER_FACTORY_ALGORITHM - )); - + @ManagedAttribute( secure = true ) public String getPassword(); + @ManagedAttribute + public String getPath(); + + @ManagedAttribute + public String getTrustManagerFactoryAlgorithm(); + + @ManagedAttribute + public String getTrustStoreType(); + + @ManagedAttribute + public boolean isPeersOnly(); + + public void setPassword(String password); public TrustManager[] getTrustManagers() throws GeneralSecurityException; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java index 9d7dd7c0cd..b242080e03 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java @@ -26,7 +26,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Map; -public interface User extends ConfiguredObject +public interface User<X extends User<X>> extends ConfiguredObject<X> { String CREATED = "created"; String DURABLE = "durable"; @@ -51,6 +51,10 @@ public interface User extends ConfiguredObject PASSWORD )); + + @ManagedAttribute + String getPassword(); + public void setPassword(String password); public Map<String, Object> getPreferences(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java index dd3e9e4b61..e24b048870 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java @@ -21,7 +21,6 @@ package org.apache.qpid.server.model; import org.apache.qpid.server.message.MessageInstance; -import org.apache.qpid.server.queue.QueueEntry; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.store.MessageStore; @@ -31,44 +30,9 @@ import java.util.Collection; import java.util.Collections; import java.util.Map; -@AmqpManagement( - attributes = { - VirtualHost.ID, - VirtualHost.NAME, - VirtualHost.TYPE, - VirtualHost.STATE, - VirtualHost.DURABLE, - VirtualHost.LIFETIME_POLICY, - VirtualHost.TIME_TO_LIVE, - VirtualHost.CREATED, - VirtualHost.UPDATED, - VirtualHost.SUPPORTED_EXCHANGE_TYPES, - VirtualHost.SUPPORTED_QUEUE_TYPES, - VirtualHost.QUEUE_DEAD_LETTER_QUEUE_ENABLED, - VirtualHost.HOUSEKEEPING_CHECK_PERIOD, - VirtualHost.QUEUE_MAXIMUM_DELIVERY_ATTEMPTS, - VirtualHost.QUEUE_FLOW_CONTROL_SIZE_BYTES, - VirtualHost.QUEUE_FLOW_RESUME_SIZE_BYTES, - VirtualHost.CONFIG_STORE_TYPE, - VirtualHost.CONFIG_STORE_PATH, - VirtualHost.STORE_TYPE, - VirtualHost.STORE_PATH, - VirtualHost.STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE, - VirtualHost.STORE_TRANSACTION_IDLE_TIMEOUT_WARN, - VirtualHost.STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE, - VirtualHost.STORE_TRANSACTION_OPEN_TIMEOUT_WARN, - VirtualHost.QUEUE_ALERT_REPEAT_GAP, - VirtualHost.QUEUE_ALERT_THRESHOLD_MESSAGE_AGE, - VirtualHost.QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE, - VirtualHost.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, - VirtualHost.QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, - VirtualHost.CONFIG_PATH - }, - operations = {}, - managesChildren = true -) - -public interface VirtualHost extends ConfiguredObject +@AmqpManagement( managesChildren = true ) + +public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<X> { // Statistics @@ -121,47 +85,77 @@ public interface VirtualHost extends ConfiguredObject String LIFETIME_POLICY = "lifetimePolicy"; String STATE = "state"; String TIME_TO_LIVE = "timeToLive"; - String TYPE = "type"; String UPDATED = "updated"; String CONFIG_PATH = "configPath"; // Attributes - public static final Collection<String> AVAILABLE_ATTRIBUTES = - Collections.unmodifiableList( - Arrays.asList( - ID, - NAME, - TYPE, - STATE, - DURABLE, - LIFETIME_POLICY, - TIME_TO_LIVE, - CREATED, - UPDATED, - SUPPORTED_EXCHANGE_TYPES, - SUPPORTED_QUEUE_TYPES, - QUEUE_DEAD_LETTER_QUEUE_ENABLED, - HOUSEKEEPING_CHECK_PERIOD, - QUEUE_MAXIMUM_DELIVERY_ATTEMPTS, - QUEUE_FLOW_CONTROL_SIZE_BYTES, - QUEUE_FLOW_RESUME_SIZE_BYTES, - CONFIG_STORE_TYPE, - CONFIG_STORE_PATH, - STORE_TYPE, - STORE_PATH, - STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE, - STORE_TRANSACTION_IDLE_TIMEOUT_WARN, - STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE, - STORE_TRANSACTION_OPEN_TIMEOUT_WARN, - QUEUE_ALERT_REPEAT_GAP, - QUEUE_ALERT_THRESHOLD_MESSAGE_AGE, - QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE, - QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, - QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, - CONFIG_PATH)); int CURRENT_CONFIG_VERSION = 4; + @ManagedAttribute + Collection<String> getSupportedExchangeTypes(); + + @ManagedAttribute + Collection<String> getSupportedQueueTypes(); + + @ManagedAttribute + boolean isQueue_deadLetterQueueEnabled(); + + @ManagedAttribute + long getHousekeepingCheckPeriod(); + + @ManagedAttribute + int getQueue_maximumDeliveryAttempts(); + + @ManagedAttribute + long getQueue_flowControlSizeBytes(); + + @ManagedAttribute + long getQueue_flowResumeSizeBytes(); + + @ManagedAttribute + String getConfigStoreType(); + + @ManagedAttribute + String getConfigStorePath(); + + @ManagedAttribute + String getStoreType(); + + @ManagedAttribute + String getStorePath(); + + @ManagedAttribute + long getStoreTransactionIdleTimeoutClose(); + + @ManagedAttribute + long getStoreTransactionIdleTimeoutWarn(); + + @ManagedAttribute + long getStoreTransactionOpenTimeoutClose(); + + @ManagedAttribute + long getStoreTransactionOpenTimeoutWarn(); + + @ManagedAttribute + long getQueue_alertRepeatGap(); + + @ManagedAttribute + long getQueue_alertThresholdMessageAge(); + + @ManagedAttribute + long getQueue_alertThresholdMessageSize(); + + @ManagedAttribute + long getQueue_alertThresholdQueueDepthBytes(); + + @ManagedAttribute + long getQueue_alertThresholdQueueDepthMessages(); + + @ManagedAttribute + String getConfigPath(); + + //children Collection<VirtualHostAlias> getAliases(); Collection<Connection> getConnections(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java index 31403d78e5..92e0d7fff9 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java @@ -23,7 +23,7 @@ package org.apache.qpid.server.model; import java.security.AccessControlException; import java.util.Collection; -public interface VirtualHostAlias extends ConfiguredObject +public interface VirtualHostAlias<X extends VirtualHostAlias<X>> extends ConfiguredObject<X> { // parents Port getPort(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java index cc669538d8..bae890ecf6 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractConfiguredObject.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.ConfigurationChangeListener; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.IllegalStateTransitionException; @@ -39,7 +40,7 @@ import org.apache.qpid.server.configuration.updater.CreateChildTask; import org.apache.qpid.server.configuration.updater.SetAttributeTask; import org.apache.qpid.server.configuration.updater.TaskExecutor; -public abstract class AbstractAdapter implements ConfiguredObject +public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> implements ConfiguredObject<X> { private static final Object ID = "id"; private final Map<String,Object> _attributes = new HashMap<String, Object>(); @@ -52,13 +53,16 @@ public abstract class AbstractAdapter implements ConfiguredObject private final Map<String, Object> _defaultAttributes = new HashMap<String, Object>(); private final TaskExecutor _taskExecutor; - protected AbstractAdapter(UUID id, Map<String, Object> defaults, Map<String, Object> attributes, TaskExecutor taskExecutor) + protected AbstractConfiguredObject(UUID id, + Map<String, Object> defaults, + Map<String, Object> attributes, + TaskExecutor taskExecutor) { this(id, defaults, attributes, taskExecutor, true); } - protected AbstractAdapter(UUID id, Map<String, Object> defaults, Map<String, Object> attributes, - TaskExecutor taskExecutor, boolean filterAttributes) + protected AbstractConfiguredObject(UUID id, Map<String, Object> defaults, Map<String, Object> attributes, + TaskExecutor taskExecutor, boolean filterAttributes) { _taskExecutor = taskExecutor; @@ -97,7 +101,7 @@ public abstract class AbstractAdapter implements ConfiguredObject } } - protected AbstractAdapter(UUID id, TaskExecutor taskExecutor) + protected AbstractConfiguredObject(UUID id, TaskExecutor taskExecutor) { this(id, null, null, taskExecutor); } @@ -126,7 +130,7 @@ public abstract class AbstractAdapter implements ConfiguredObject } else { - return getActualState(); + return getState(); } } else @@ -232,6 +236,18 @@ public abstract class AbstractAdapter implements ConfiguredObject } @Override + public String getDescription() + { + return (String) getAttribute(DESCRIPTION); + } + + @Override + public <T> T getAttribute(final Attribute<? super X, T> attr) + { + return (T) getAttribute(attr.getName()); + } + + @Override public final Map<String, Object> getActualAttributes() { synchronized (_attributes) @@ -474,4 +490,34 @@ public abstract class AbstractAdapter implements ConfiguredObject return merged; } + + @Override + public String getLastUpdatedBy() + { + return null; + } + + @Override + public long getLastUpdatedTime() + { + return 0; + } + + @Override + public String getCreatedBy() + { + return null; + } + + @Override + public long getCreatedTime() + { + return 0; + } + + @Override + public String getType() + { + return (String)getAttribute(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 707cf8076d..315584c4d5 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 @@ -35,7 +35,7 @@ import org.apache.qpid.server.model.Statistics; import org.apache.qpid.server.model.TrustStore; import org.apache.qpid.server.util.MapValueConverter; -public abstract class AbstractKeyStoreAdapter extends AbstractAdapter +public abstract class AbstractKeyStoreAdapter<X extends ConfiguredObject<X>> extends AbstractConfiguredObject<X> { public static final String DUMMY_PASSWORD_MASK = "********"; public static final String DEFAULT_KEYSTORE_TYPE = java.security.KeyStore.getDefaultType(); @@ -67,7 +67,7 @@ public abstract class AbstractKeyStoreAdapter extends AbstractAdapter } @Override - public State getActualState() + public State getState() { return State.ACTIVE; } @@ -140,7 +140,7 @@ public abstract class AbstractKeyStoreAdapter extends AbstractAdapter } else if(KeyStore.STATE.equals(name)) { - return getActualState(); + return getState(); } else if(KeyStore.DURABLE.equals(name)) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java index 2867a92410..ab33933eec 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.Map; import java.util.UUID; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.LifetimePolicy; @@ -34,7 +35,7 @@ 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 +public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends AbstractConfiguredObject<X> implements Plugin<X> { private Broker _broker; @@ -52,7 +53,7 @@ public abstract class AbstractPluginAdapter extends AbstractAdapter implements P } @Override - public State getActualState() + public State getState() { return null; } @@ -110,7 +111,7 @@ public abstract class AbstractPluginAdapter extends AbstractAdapter implements P @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Plugin.class); } @Override @@ -122,7 +123,7 @@ public abstract class AbstractPluginAdapter extends AbstractAdapter implements P } else if (STATE.equals(name)) { - return getActualState(); + return getState(); } else if (DURABLE.equals(name)) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java index a6fe191523..3b69c66d7e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java @@ -30,19 +30,13 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; import org.apache.log4j.Logger; -import org.apache.qpid.server.model.AccessControlProvider; -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.LifetimePolicy; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.plugin.AccessControlFactory; import org.apache.qpid.server.security.AccessControl; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.util.MapValueConverter; -public class AccessControlProviderAdapter extends AbstractAdapter implements AccessControlProvider +public class AccessControlProviderAdapter extends AbstractConfiguredObject<AccessControlProviderAdapter> implements AccessControlProvider<AccessControlProviderAdapter> { private static final Logger LOGGER = Logger.getLogger(AccessControlProviderAdapter.class); @@ -85,7 +79,7 @@ public class AccessControlProviderAdapter extends AbstractAdapter implements Acc protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes) { - List<String> attributesNames = new ArrayList<String>(AVAILABLE_ATTRIBUTES); + List<String> attributesNames = new ArrayList<String>(Attribute.getAttributeNames(AccessControlProvider.class)); if (factoryAttributes != null) { attributesNames.addAll(factoryAttributes); @@ -107,7 +101,7 @@ public class AccessControlProviderAdapter extends AbstractAdapter implements Acc } @Override - public State getActualState() + public State getState() { return _state.get(); } @@ -183,7 +177,7 @@ public class AccessControlProviderAdapter extends AbstractAdapter implements Acc } else if(STATE.equals(name)) { - return getActualState(); + return getState(); } else if(TIME_TO_LIVE.equals(name)) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java index 42a234579b..1e1a9ba4ec 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java @@ -50,12 +50,12 @@ import org.apache.qpid.server.transport.TransportProvider; import org.apache.qpid.server.util.ServerScopedRuntimeException; import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager; -public class AmqpPortAdapter extends PortAdapter +public class AmqpPortAdapter extends PortAdapter<AmqpPortAdapter> { - private final Broker _broker; + private final Broker<?> _broker; private AcceptingTransport _transport; - public AmqpPortAdapter(UUID id, Broker broker, Map<String, Object> attributes, Map<String, Object> defaultAttributes, TaskExecutor taskExecutor) + public AmqpPortAdapter(UUID id, Broker<?> broker, Map<String, Object> attributes, Map<String, Object> defaultAttributes, TaskExecutor taskExecutor) { super(id, broker, attributes, defaultAttributes, taskExecutor); _broker = broker; @@ -201,4 +201,34 @@ public class AmqpPortAdapter extends PortAdapter } return null; } + + @Override + public boolean isTcpNoDelay() + { + return false; + } + + @Override + public int getSendBufferSize() + { + return 0; + } + + @Override + public int getReceiveBufferSize() + { + return 0; + } + + @Override + public boolean getNeedClientAuth() + { + return false; + } + + @Override + public boolean getWantClientAuth() + { + return false; + } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java index 162f579114..bf244975ee 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java @@ -35,20 +35,7 @@ import java.util.concurrent.atomic.AtomicReference; import javax.security.auth.login.AccountNotFoundException; import org.apache.log4j.Logger; -import org.apache.qpid.server.model.AuthenticationProvider; -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.IntegrityViolationException; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.PreferencesProvider; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.UUIDGenerator; -import org.apache.qpid.server.model.User; -import org.apache.qpid.server.model.VirtualHostAlias; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.plugin.AuthenticationManagerFactory; import org.apache.qpid.server.plugin.PreferencesProviderFactory; import org.apache.qpid.server.plugin.QpidServiceLoader; @@ -63,7 +50,9 @@ import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticat import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.util.MapValueConverter; -public abstract class AuthenticationProviderAdapter<T extends AuthenticationManager> extends AbstractAdapter implements AuthenticationProvider +public abstract class AuthenticationProviderAdapter<X extends AuthenticationProvider<X>, T extends AuthenticationManager> extends + AbstractConfiguredObject<X> + implements AuthenticationProvider<X> { private static final Logger LOGGER = Logger.getLogger(AuthenticationProviderAdapter.class); @@ -124,7 +113,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana } @Override - public State getActualState() + public State getState() { return _state.get(); } @@ -200,7 +189,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana } else if(STATE.equals(name)) { - return getActualState(); + return getState(); } else if(TIME_TO_LIVE.equals(name)) { @@ -250,7 +239,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana _authManager.onDelete(); if (_preferencesProvider != null) { - _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.DELETED); + _preferencesProvider.setDesiredState(_preferencesProvider.getState(), State.DELETED); } return true; } @@ -268,7 +257,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana _authManager.initialise(); if (_preferencesProvider != null) { - _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.ACTIVE); + _preferencesProvider.setDesiredState(_preferencesProvider.getState(), State.ACTIVE); } return true; } @@ -304,7 +293,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana _authManager.close(); if (_preferencesProvider != null) { - _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.STOPPED); + _preferencesProvider.setDesiredState(_preferencesProvider.getState(), State.STOPPED); } return true; } @@ -350,7 +339,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes) { - List<String> attributesNames = new ArrayList<String>(AVAILABLE_ATTRIBUTES); + List<String> attributesNames = new ArrayList<String>(Attribute.getAttributeNames(AuthenticationProvider.class)); if (factoryAttributes != null) { attributesNames.addAll(factoryAttributes); @@ -449,7 +438,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana throw new IllegalArgumentException("Cannot create child of class " + childClass.getSimpleName()); } - public static class SimpleAuthenticationProviderAdapter extends AuthenticationProviderAdapter<AuthenticationManager> + public static class SimpleAuthenticationProviderAdapter extends AuthenticationProviderAdapter<SimpleAuthenticationProviderAdapter,AuthenticationManager> { public SimpleAuthenticationProviderAdapter( @@ -460,8 +449,8 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana } public static class PrincipalDatabaseAuthenticationManagerAdapter - extends AuthenticationProviderAdapter<PrincipalDatabaseAuthenticationManager> - implements PasswordCredentialManagingAuthenticationProvider + extends AuthenticationProviderAdapter<PrincipalDatabaseAuthenticationManagerAdapter, PrincipalDatabaseAuthenticationManager> + implements PasswordCredentialManagingAuthenticationProvider<PrincipalDatabaseAuthenticationManagerAdapter> { public PrincipalDatabaseAuthenticationManagerAdapter( UUID id, Broker broker, PrincipalDatabaseAuthenticationManager authManager, Map<String, Object> attributes, Collection<String> attributeNames) @@ -592,7 +581,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana super.childRemoved(child); } - private class PrincipalAdapter extends AbstractAdapter implements User + private class PrincipalAdapter extends AbstractConfiguredObject<PrincipalAdapter> implements User<PrincipalAdapter> { private final Principal _user; @@ -605,6 +594,12 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana } @Override + public String getPassword() + { + return (String)getAttribute(PASSWORD); + } + + @Override public void setPassword(String password) { try @@ -631,7 +626,7 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana } @Override - public State getActualState() + public State getState() { return State.ACTIVE; } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java index 322c8a0ea4..06f3dbd50e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactory.java @@ -60,7 +60,7 @@ public class AuthenticationProviderFactory */ public AuthenticationProvider create(UUID id, Broker broker, Map<String, Object> attributes) { - AuthenticationProviderAdapter<?> provider = createAuthenticationProvider(id, broker, attributes); + AuthenticationProviderAdapter provider = createAuthenticationProvider(id, broker, attributes); provider.getAuthManager().onCreate(); return provider; } @@ -76,14 +76,14 @@ public class AuthenticationProviderFactory return createAuthenticationProvider(id, broker, attributes); } - private AuthenticationProviderAdapter<?> createAuthenticationProvider(UUID id, Broker broker, Map<String, Object> attributes) + private AuthenticationProviderAdapter createAuthenticationProvider(UUID id, Broker broker, Map<String, Object> attributes) { for (AuthenticationManagerFactory factory : _factories) { AuthenticationManager manager = factory.createInstance(broker, attributes); if (manager != null) { - AuthenticationProviderAdapter<?> authenticationProvider; + AuthenticationProviderAdapter authenticationProvider; if (manager instanceof PrincipalDatabaseAuthenticationManager) { authenticationProvider = new PrincipalDatabaseAuthenticationManagerAdapter(id, broker, diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java index 5111810556..e53db4a2da 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java @@ -26,16 +26,9 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.apache.qpid.server.model.Binding; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.IllegalStateTransitionException; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; - -final class BindingAdapter extends AbstractAdapter implements Binding +import org.apache.qpid.server.model.*; + +final class BindingAdapter extends AbstractConfiguredObject<BindingAdapter> implements Binding<BindingAdapter> { private final org.apache.qpid.server.binding.Binding _binding; private Statistics _statistics = NoStatistics.getInstance(); @@ -76,7 +69,7 @@ final class BindingAdapter extends AbstractAdapter implements Binding return null; //TODO } - public State getActualState() + public State getState() { return null; //TODO } @@ -195,7 +188,7 @@ final class BindingAdapter extends AbstractAdapter implements Binding @Override public Collection<String> getAttributeNames() { - return Binding.AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Binding.class); } @Override diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java index d380996da2..95af3ec74c 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java @@ -25,7 +25,6 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import java.security.AccessControlException; import java.security.PrivilegedAction; -import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -45,22 +44,7 @@ import org.apache.qpid.server.logging.RootMessageLogger; import org.apache.qpid.server.logging.actors.BrokerActor; import org.apache.qpid.server.logging.actors.CurrentActor; import org.apache.qpid.server.logging.messages.BrokerMessages; -import org.apache.qpid.server.model.AccessControlProvider; -import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfigurationChangeListener; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.GroupProvider; -import org.apache.qpid.server.model.KeyStore; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Model; -import org.apache.qpid.server.model.Plugin; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.TrustStore; -import org.apache.qpid.server.model.UUIDGenerator; -import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.model.adapter.AuthenticationProviderAdapter.SimpleAuthenticationProviderAdapter; import org.apache.qpid.server.plugin.PreferencesProviderFactory; import org.apache.qpid.server.plugin.VirtualHostFactory; @@ -77,7 +61,7 @@ import org.apache.qpid.util.SystemUtils; import javax.security.auth.Subject; -public class BrokerAdapter extends AbstractAdapter implements Broker, ConfigurationChangeListener +public class BrokerAdapter<X extends Broker<X>> extends AbstractConfiguredObject<X> implements Broker<X>, ConfigurationChangeListener { private static final Logger LOGGER = Logger.getLogger(BrokerAdapter.class); @@ -171,15 +155,15 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat private final RootMessageLogger _rootMessageLogger; private StatisticsAdapter _statistics; - private final Map<String, VirtualHost> _vhostAdapters = new HashMap<String, VirtualHost>(); - private final Map<UUID, Port> _portAdapters = new HashMap<UUID, Port>(); + private final Map<String, VirtualHost<?>> _vhostAdapters = new HashMap<String, VirtualHost<?>>(); + private final Map<UUID, Port<?>> _portAdapters = new HashMap<UUID, Port<?>>(); private final Map<Port, Integer> _stillInUsePortNumbers = new HashMap<Port, Integer>(); - private final Map<UUID, AuthenticationProvider> _authenticationProviders = new HashMap<UUID, AuthenticationProvider>(); - private final Map<String, GroupProvider> _groupProviders = new HashMap<String, GroupProvider>(); - private final Map<UUID, ConfiguredObject> _plugins = new HashMap<UUID, ConfiguredObject>(); - private final Map<String, KeyStore> _keyStores = new HashMap<String, KeyStore>(); - private final Map<String, TrustStore> _trustStores = new HashMap<String, TrustStore>(); - private final Map<UUID, AccessControlProvider> _accessControlProviders = new HashMap<UUID, AccessControlProvider>(); + private final Map<UUID, AuthenticationProvider<?>> _authenticationProviders = new HashMap<UUID, AuthenticationProvider<?>>(); + private final Map<String, GroupProvider<?>> _groupProviders = new HashMap<String, GroupProvider<?>>(); + private final Map<UUID, ConfiguredObject<?>> _plugins = new HashMap<UUID, ConfiguredObject<?>>(); + private final Map<String, KeyStore<?>> _keyStores = new HashMap<String, KeyStore<?>>(); + private final Map<String, TrustStore<?>> _trustStores = new HashMap<String, TrustStore<?>>(); + private final Map<UUID, AccessControlProvider<?>> _accessControlProviders = new HashMap<UUID, AccessControlProvider<?>>(); private final GroupProviderFactory _groupProviderFactory; private final AuthenticationProviderFactory _authenticationProviderFactory; @@ -191,7 +175,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat private Collection<String> _supportedBrokerStoreTypes; private final ConfigurationEntryStore _brokerStore; - private AuthenticationProvider _managementAuthenticationProvider; + private AuthenticationProvider<?> _managementAuthenticationProvider; private BrokerOptions _brokerOptions; public BrokerAdapter(UUID id, Map<String, Object> attributes, StatisticsGatherer statisticsGatherer, VirtualHostRegistry virtualHostRegistry, @@ -217,45 +201,241 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat if (_brokerOptions.isManagementMode()) { AuthenticationManager authManager = new SimpleAuthenticationManager(BrokerOptions.MANAGEMENT_MODE_USER_NAME, _brokerOptions.getManagementModePassword()); - AuthenticationProvider authenticationProvider = new SimpleAuthenticationProviderAdapter(UUID.randomUUID(), this, + _managementAuthenticationProvider = new SimpleAuthenticationProviderAdapter(UUID.randomUUID(), this, authManager, Collections.<String, Object> emptyMap(), Collections.<String> emptySet()); - _managementAuthenticationProvider = authenticationProvider; } } - public Collection<VirtualHost> getVirtualHosts() + @Override + public String getBuildVersion() + { + return (String) getAttribute(BUILD_VERSION); + } + + @Override + public String getOperatingSystem() + { + return (String) getAttribute(OPERATING_SYSTEM); + } + + @Override + public String getPlatform() + { + return (String) getAttribute(PLATFORM); + } + + @Override + public String getProcessPid() + { + return (String) getAttribute(PROCESS_PID); + } + + @Override + public String getProductVersion() + { + return (String) getAttribute(PRODUCT_VERSION); + } + + @Override + public Collection<String> getSupportedBrokerStoreTypes() + { + return _supportedBrokerStoreTypes; + } + + @Override + public Collection<String> getSupportedVirtualHostStoreTypes() + { + return _supportedVirtualHostStoreTypes; + } + + @Override + public Collection<String> getSupportedAuthenticationProviders() + { + return _authenticationProviderFactory.getSupportedAuthenticationProviders(); + } + + @Override + public Collection<String> getSupportedPreferencesProviderTypes() + { + return PreferencesProviderFactory.FACTORIES.getDescriptiveTypes(); + } + + @Override + public String getDefaultVirtualHost() + { + return (String) getAttribute(DEFAULT_VIRTUAL_HOST); + } + + @Override + public int getQueue_alertThresholdMessageAge() + { + return (Integer) getAttribute(QUEUE_ALERT_THRESHOLD_MESSAGE_AGE); + } + + @Override + public long getQueue_alertThresholdQueueDepthMessages() + { + return (Long) getAttribute(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES); + } + + @Override + public long getQueue_alertThresholdQueueDepthBytes() + { + return (Long) getAttribute(QUEUE_ALERT_THRESHOLD_QUEUE_DEPTH_BYTES); + } + + @Override + public long getQueue_alertThresholdMessageSize() + { + return (Long) getAttribute(QUEUE_ALERT_THRESHOLD_MESSAGE_SIZE); + } + + @Override + public long getQueue_alertRepeatGap() + { + return (Long) getAttribute(QUEUE_ALERT_REPEAT_GAP); + } + + @Override + public long getQueue_flowControlSizeBytes() + { + return (Long) getAttribute(QUEUE_FLOW_CONTROL_SIZE_BYTES); + } + + @Override + public long getQueue_flowResumeSizeBytes() + { + return (Long) getAttribute(QUEUE_FLOW_CONTROL_RESUME_SIZE_BYTES); + } + + @Override + public int getQueue_maximumDeliveryAttempts() + { + return (Integer) getAttribute(QUEUE_MAXIMUM_DELIVERY_ATTEMPTS); + } + + @Override + public boolean isQueue_deadLetterQueueEnabled() + { + return (Boolean) getAttribute(QUEUE_DEAD_LETTER_QUEUE_ENABLED); + } + + @Override + public long getVirtualhost_housekeepingCheckPeriod() + { + return (Long) getAttribute(VIRTUALHOST_HOUSEKEEPING_CHECK_PERIOD); + } + + @Override + public int getConnection_sessionCountLimit() + { + return (Integer) getAttribute(CONNECTION_SESSION_COUNT_LIMIT); + } + + @Override + public int getConnection_heartBeatDelay() + { + return (Integer) getAttribute(CONNECTION_HEART_BEAT_DELAY); + } + + @Override + public boolean getConnection_closeWhenNoRoute() + { + return (Boolean) getAttribute(CONNECTION_CLOSE_WHEN_NO_ROUTE); + } + + @Override + public int getStatisticsReportingPeriod() + { + return (Integer) getAttribute(STATISTICS_REPORTING_PERIOD); + } + + @Override + public boolean getStatisticsReportingResetEnabled() + { + return (Boolean) getAttribute(STATISTICS_REPORTING_RESET_ENABLED); + } + + @Override + public String getStoreType() + { + return _brokerStore.getType(); + } + + @Override + public int getStoreVersion() + { + return _brokerStore.getVersion(); + } + + @Override + public String getStorePath() + { + return _brokerStore.getStoreLocation(); + } + + @Override + public String getModelVersion() + { + return Model.MODEL_VERSION; + } + + @Override + public long getVirtualhost_storeTransactionIdleTimeoutClose() + { + return (Long) getAttribute(VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_CLOSE); + } + + @Override + public long getVirtualhost_storeTransactionIdleTimeoutWarn() + { + return (Long) getAttribute(VIRTUALHOST_STORE_TRANSACTION_IDLE_TIMEOUT_WARN); + } + + @Override + public long getVirtualhost_storeTransactionOpenTimeoutClose() + { + return (Long) getAttribute(VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_CLOSE); + } + + @Override + public long getVirtualhost_storeTransactionOpenTimeoutWarn() + { + return (Long) getAttribute(VIRTUALHOST_STORE_TRANSACTION_OPEN_TIMEOUT_WARN); + } + + public Collection<VirtualHost<?>> getVirtualHosts() { synchronized(_vhostAdapters) { - return new ArrayList<VirtualHost>(_vhostAdapters.values()); + return new ArrayList<VirtualHost<?>>(_vhostAdapters.values()); } } - public Collection<Port> getPorts() + public Collection<Port<?>> getPorts() { synchronized (_portAdapters) { - final ArrayList<Port> ports = new ArrayList<Port>(_portAdapters.values()); - return ports; + return new ArrayList<Port<?>>(_portAdapters.values()); } } - public Collection<AuthenticationProvider> getAuthenticationProviders() + public Collection<AuthenticationProvider<?>> getAuthenticationProviders() { synchronized (_authenticationProviders) { - return new ArrayList<AuthenticationProvider>(_authenticationProviders.values()); + return new ArrayList<AuthenticationProvider<?>>(_authenticationProviders.values()); } } - public AuthenticationProvider findAuthenticationProviderByName(String authenticationProviderName) + public AuthenticationProvider<?> findAuthenticationProviderByName(String authenticationProviderName) { if (isManagementMode()) { return _managementAuthenticationProvider; } - Collection<AuthenticationProvider> providers = getAuthenticationProviders(); - for (AuthenticationProvider authenticationProvider : providers) + Collection<AuthenticationProvider<?>> providers = getAuthenticationProviders(); + for (AuthenticationProvider<?> authenticationProvider : providers) { if (authenticationProvider.getName().equals(authenticationProviderName)) { @@ -265,7 +445,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat return null; } - public KeyStore findKeyStoreByName(String keyStoreName) + public KeyStore<?> findKeyStoreByName(String keyStoreName) { synchronized(_keyStores) { @@ -273,7 +453,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } } - public TrustStore findTrustStoreByName(String trustStoreName) + public TrustStore<?> findTrustStoreByName(String trustStoreName) { synchronized(_trustStores) { @@ -282,13 +462,11 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } @Override - public Collection<GroupProvider> getGroupProviders() + public Collection<GroupProvider<?>> getGroupProviders() { synchronized (_groupProviders) { - final ArrayList<GroupProvider> groupManagers = - new ArrayList<GroupProvider>(_groupProviders.values()); - return groupManagers; + return new ArrayList<GroupProvider<?>>(_groupProviders.values()); } } @@ -335,7 +513,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } - public State getActualState() + public State getState() { return null; //TODO } @@ -462,7 +640,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat */ private Port createPort(Map<String, Object> attributes) { - Port port = _portFactory.createPort(UUID.randomUUID(), this, attributes); + Port<?> port = _portFactory.createPort(UUID.randomUUID(), this, attributes); addPort(port); //1. AMQP ports are disabled during ManagementMode. @@ -477,7 +655,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat return port; } - private void addPort(Port port) + private void addPort(Port<?> port) { synchronized (_portAdapters) { @@ -485,19 +663,19 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat String portName = port.getName(); UUID portId = port.getId(); - for(Port p : _portAdapters.values()) + for(Port<?> p : _portAdapters.values()) { if(portNumber == p.getPort()) { throw new IllegalConfigurationException("Can't add port " + portName + " because port number " + portNumber + " is already configured for port " + p.getName()); } - if(portName == p.getName()) + if(portName.equals(p.getName())) { throw new IllegalConfigurationException("Can't add Port because one with name " + portName + " already exists"); } - if(portId == p.getId()) + if(portId.equals(p.getId())) { throw new IllegalConfigurationException("Can't add Port because one with id " + portId + " already exists"); } @@ -508,9 +686,9 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat port.addChangeListener(this); } - private AccessControlProvider createAccessControlProvider(Map<String, Object> attributes) + private AccessControlProvider<?> createAccessControlProvider(Map<String, Object> attributes) { - AccessControlProvider accessControlProvider = null; + AccessControlProvider<?> accessControlProvider; synchronized (_accessControlProviders) { accessControlProvider = _accessControlProviderFactory.create(UUID.randomUUID(), this, attributes); @@ -526,7 +704,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat /** * @throws IllegalConfigurationException if an AuthenticationProvider with the same name already exists */ - private void addAccessControlProvider(AccessControlProvider accessControlProvider) + private void addAccessControlProvider(AccessControlProvider<?> accessControlProvider) { String name = accessControlProvider.getName(); synchronized (_authenticationProviders) @@ -535,7 +713,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat { throw new IllegalConfigurationException("Can't add AccessControlProvider because one with id " + accessControlProvider.getId() + " already exists"); } - for (AccessControlProvider provider : _accessControlProviders.values()) + for (AccessControlProvider<?> provider : _accessControlProviders.values()) { if (provider.getName().equals(name)) { @@ -549,9 +727,9 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat accessControlProvider.addChangeListener(_securityManager); } - private boolean deleteAccessControlProvider(AccessControlProvider accessControlProvider) + private boolean deleteAccessControlProvider(AccessControlProvider<?> accessControlProvider) { - AccessControlProvider removedAccessControlProvider = null; + AccessControlProvider removedAccessControlProvider; synchronized (_accessControlProviders) { removedAccessControlProvider = _accessControlProviders.remove(accessControlProvider.getId()); @@ -568,7 +746,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat private AuthenticationProvider createAuthenticationProvider(Map<String, Object> attributes) { - AuthenticationProvider authenticationProvider = _authenticationProviderFactory.create(UUID.randomUUID(), this, attributes); + AuthenticationProvider<?> authenticationProvider = _authenticationProviderFactory.create(UUID.randomUUID(), this, attributes); authenticationProvider.setDesiredState(State.INITIALISING, State.ACTIVE); addAuthenticationProvider(authenticationProvider); return authenticationProvider; @@ -577,7 +755,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat /** * @throws IllegalConfigurationException if an AuthenticationProvider with the same name already exists */ - private void addAuthenticationProvider(AuthenticationProvider authenticationProvider) + private void addAuthenticationProvider(AuthenticationProvider<?> authenticationProvider) { String name = authenticationProvider.getName(); synchronized (_authenticationProviders) @@ -598,15 +776,15 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat authenticationProvider.addChangeListener(this); } - private GroupProvider createGroupProvider(Map<String, Object> attributes) + private GroupProvider<?> createGroupProvider(Map<String, Object> attributes) { - GroupProvider groupProvider = _groupProviderFactory.create(UUID.randomUUID(), this, attributes); + GroupProvider<?> groupProvider = _groupProviderFactory.create(UUID.randomUUID(), this, attributes); groupProvider.setDesiredState(State.INITIALISING, State.ACTIVE); addGroupProvider(groupProvider); return groupProvider; } - private void addGroupProvider(GroupProvider groupProvider) + private void addGroupProvider(GroupProvider<?> groupProvider) { synchronized (_groupProviders) { @@ -711,7 +889,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Broker.class); } @Override @@ -786,7 +964,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat { return _authenticationProviderFactory.getSupportedAuthenticationProviders(); } - else if (SUPPORTED_PREFERENCES_PROVIDERS_TYPES.equals(name)) + else if (SUPPORTED_PREFERENCES_PROVIDER_TYPES.equals(name)) { return PreferencesProviderFactory.FACTORIES.getDescriptiveTypes(); } @@ -811,7 +989,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat private boolean deletePort(State oldState, Port portAdapter) { - Port removedPort = null; + Port<?> removedPort; synchronized (_portAdapters) { removedPort = _portAdapters.remove(portAdapter.getId()); @@ -832,9 +1010,9 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat return removedPort != null; } - private boolean deleteAuthenticationProvider(AuthenticationProvider authenticationProvider) + private boolean deleteAuthenticationProvider(AuthenticationProvider<?> authenticationProvider) { - AuthenticationProvider removedAuthenticationProvider = null; + AuthenticationProvider removedAuthenticationProvider; synchronized (_authenticationProviders) { removedAuthenticationProvider = _authenticationProviders.remove(authenticationProvider.getId()); @@ -848,7 +1026,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat return removedAuthenticationProvider != null; } - private void addVirtualHost(VirtualHost virtualHost) + private void addVirtualHost(VirtualHost<?> virtualHost) { synchronized (_vhostAdapters) { @@ -909,7 +1087,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat Collection<? extends ConfiguredObject> adapters = configuredObjectMap.values(); for (ConfiguredObject configuredObject : adapters) { - if (State.ACTIVE.equals(desiredState) && State.QUIESCED.equals(configuredObject.getActualState())) + if (State.ACTIVE.equals(desiredState) && State.QUIESCED.equals(configuredObject.getState())) { if (LOGGER.isDebugEnabled()) { @@ -997,14 +1175,14 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat { //Record all the originally used port numbers of active ports, to ensure that when //creating new ports we don't try to re-bind a port number that we are still using - if(attributeName == Port.PORT && object.getActualState() == State.ACTIVE) + if(Port.PORT.equals(attributeName) && object.getState() == State.ACTIVE) { recordPreviouslyUsedPortNumberIfNecessary((Port) object, (Integer)oldAttributeValue); } } } - private void addPlugin(ConfiguredObject plugin) + private void addPlugin(ConfiguredObject<?> plugin) { synchronized(_plugins) { @@ -1018,7 +1196,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } - private Collection<ConfiguredObject> getPlugins() + private Collection<ConfiguredObject<?>> getPlugins() { synchronized(_plugins) { @@ -1104,12 +1282,12 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } @Override - public AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress) + public AuthenticationProvider<?> getAuthenticationProvider(SocketAddress localAddress) { InetSocketAddress inetSocketAddress = (InetSocketAddress)localAddress; AuthenticationProvider provider = null; - Collection<Port> ports = getPorts(); - for (Port p : ports) + Collection<Port<?>> ports = getPorts(); + for (Port<?> p : ports) { if (inetSocketAddress.getPort() == p.getPort()) { @@ -1121,7 +1299,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } @Override - public Collection<KeyStore> getKeyStores() + public Collection<KeyStore<?>> getKeyStores() { synchronized(_keyStores) { @@ -1130,7 +1308,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } @Override - public Collection<TrustStore> getTrustStores() + public Collection<TrustStore<?>> getTrustStores() { synchronized(_trustStores) { @@ -1245,11 +1423,11 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat } @Override - public Collection<AccessControlProvider> getAccessControlProviders() + public Collection<AccessControlProvider<?>> getAccessControlProviders() { synchronized (_accessControlProviders) { - return new ArrayList<AccessControlProvider>(_accessControlProviders.values()); + return new ArrayList<AccessControlProvider<?>>(_accessControlProviders.values()); } } 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 3cb6493338..41510836db 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 @@ -32,20 +32,13 @@ import java.util.List; import java.util.Map; import org.apache.qpid.protocol.AMQConstant; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Connection; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.Session; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.UUIDGenerator; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.protocol.AMQConnectionModel; import org.apache.qpid.server.protocol.AMQSessionModel; import org.apache.qpid.server.stats.StatisticsGatherer; -final class ConnectionAdapter extends AbstractAdapter implements Connection +final class ConnectionAdapter extends AbstractConfiguredObject<ConnectionAdapter> implements Connection<ConnectionAdapter> { private AMQConnectionModel _connection; @@ -60,6 +53,73 @@ final class ConnectionAdapter extends AbstractAdapter implements Connection _statistics = new ConnectionStatisticsAdapter(conn); } + @Override + public String getClientId() + { + return (String) getAttribute(CLIENT_ID); + } + + @Override + public String getClientVersion() + { + return (String) getAttribute(CLIENT_VERSION); + } + + @Override + public boolean isIncoming() + { + return true; + } + + @Override + public String getLocalAddress() + { + return (String)getAttribute(LOCAL_ADDRESS); + } + + @Override + public String getPrincipal() + { + final Principal authorizedPrincipal = _connection.getAuthorizedPrincipal(); + return authorizedPrincipal == null ? null : authorizedPrincipal.getName(); + } + + @Override + public String getRemoteAddress() + { + return _connection.getRemoteAddressString(); + } + + @Override + public String getRemoteProcessName() + { + return null; + } + + @Override + public String getRemoteProcessPid() + { + return null; + } + + @Override + public long getSessionCountLimit() + { + return _connection.getSessionCountLimit(); + } + + @Override + public Transport getTransport() + { + return _connection.getTransport(); + } + + @Override + public Port getPort() + { + return _connection.getPort(); + } + public Collection<Session> getSessions() { List<AMQSessionModel> actualSessions = _connection.getSessionModels(); @@ -124,7 +184,7 @@ final class ConnectionAdapter extends AbstractAdapter implements Connection return null; //TODO } - public State getActualState() + public State getState() { return null; //TODO } @@ -230,8 +290,8 @@ final class ConnectionAdapter extends AbstractAdapter implements Connection @Override public Collection<String> getAttributeNames() { - final HashSet<String> attrNames = new HashSet<String>(super.getAttributeNames()); - attrNames.addAll(Connection.AVAILABLE_ATTRIBUTES); + final HashSet<String> attrNames = new HashSet<String>(Attribute.getAttributeNames(Connection.class)); + return Collections.unmodifiableCollection(attrNames); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java index 7935077a40..2573390851 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java @@ -21,6 +21,8 @@ package org.apache.qpid.server.model.adapter; import java.util.Map; + +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.State; @@ -32,7 +34,7 @@ import java.security.AccessControlException; import java.util.Collection; import java.util.Collections; -public class ConsumerAdapter extends AbstractAdapter implements org.apache.qpid.server.model.Consumer +public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> implements org.apache.qpid.server.model.Consumer<ConsumerAdapter> { private final Consumer _consumer; private final QueueAdapter _queue; @@ -65,7 +67,7 @@ public class ConsumerAdapter extends AbstractAdapter implements org.apache.qpid. return null; //TODO } - public State getActualState() + public State getState() { return null; //TODO } @@ -106,7 +108,7 @@ public class ConsumerAdapter extends AbstractAdapter implements org.apache.qpid. @Override public Collection<String> getAttributeNames() { - return org.apache.qpid.server.model.Consumer.AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(org.apache.qpid.server.model.Consumer.class); } @Override @@ -184,6 +186,36 @@ public class ConsumerAdapter extends AbstractAdapter implements org.apache.qpid. throw new IllegalArgumentException(); } + @Override + public String getDistributionMode() + { + return _consumer.acquires() ? "MOVE" : "COPY"; + } + + @Override + public String getSettlementMode() + { + return null; + } + + @Override + public boolean isExclusive() + { + return false; + } + + @Override + public boolean isNoLocal() + { + return false; + } + + @Override + public String getSelector() + { + return null; + } + private class ConsumerStatistics implements Statistics { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java index 52226d503a..cfd1af1f4b 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java @@ -28,20 +28,13 @@ import java.util.HashMap; import java.util.Map; import org.apache.qpid.server.binding.Binding; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.ConfiguredObjectFinder; -import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Publisher; -import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.util.MapValueConverter; import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException; import org.apache.qpid.server.virtualhost.RequiredExchangeException; -final class ExchangeAdapter extends AbstractAdapter implements Exchange, org.apache.qpid.server.exchange.Exchange.BindingListener +final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> implements Exchange<ExchangeAdapter>, org.apache.qpid.server.exchange.Exchange.BindingListener { private final org.apache.qpid.server.exchange.Exchange _exchange; @@ -83,7 +76,8 @@ final class ExchangeAdapter extends AbstractAdapter implements Exchange, org.apa } - public String getExchangeType() + @Override + public String getType() { return _exchange.getType().getType(); } @@ -171,7 +165,7 @@ final class ExchangeAdapter extends AbstractAdapter implements Exchange, org.apa return null; //TODO } - public State getActualState() + public State getState() { return null; //TODO } @@ -341,7 +335,7 @@ final class ExchangeAdapter extends AbstractAdapter implements Exchange, org.apa } else if(TYPE.equals(name)) { - return _exchange.getTypeName(); + return getType(); } return super.getAttribute(name); } @@ -349,7 +343,7 @@ final class ExchangeAdapter extends AbstractAdapter implements Exchange, org.apa @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Exchange.class); } @Override @@ -422,4 +416,10 @@ final class ExchangeAdapter extends AbstractAdapter implements Exchange, org.apa return null; // TODO - Implement } } + + @Override + public Exchange<?> getAlternateExchange() + { + return null; + } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java index ea1f735c15..bc43617a26 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java @@ -45,14 +45,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.configuration.updater.TaskExecutor; -import org.apache.qpid.server.model.AuthenticationProvider; -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.LifetimePolicy; -import org.apache.qpid.server.model.PreferencesProvider; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.util.MapValueConverter; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonProcessingException; @@ -60,7 +53,7 @@ import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializationConfig; import org.codehaus.jackson.type.TypeReference; -public class FileSystemPreferencesProvider extends AbstractAdapter implements PreferencesProvider +public class FileSystemPreferencesProvider extends AbstractConfiguredObject<FileSystemPreferencesProvider> implements PreferencesProvider<FileSystemPreferencesProvider> { private static final Logger LOGGER = Logger.getLogger(FileSystemPreferencesProvider.class); public static String PATH = "path"; @@ -80,20 +73,14 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr put(TYPE, String.class); }}); - @SuppressWarnings("serial") - private static Collection<String> AVAILABLE_ATTRIBUTES = Collections.unmodifiableList(new ArrayList<String>( - PreferencesProvider.AVAILABLE_ATTRIBUTES) - {{ - add(PATH); - }}); - - private final AuthenticationProvider _authenticationProvider; + private final AuthenticationProvider<? extends AuthenticationProvider> _authenticationProvider; private AtomicReference<State> _state; private FileSystemPreferencesStore _store; - protected FileSystemPreferencesProvider(UUID id, Map<String, Object> attributes, AuthenticationProvider authenticationProvider, - TaskExecutor taskExecutor) + protected FileSystemPreferencesProvider(UUID id, Map<String, Object> attributes, + AuthenticationProvider<? extends AuthenticationProvider> authenticationProvider, + TaskExecutor taskExecutor) { super(id, DEFAULTS, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES), taskExecutor); State state = MapValueConverter.getEnumAttribute(State.class, STATE, attributes, State.INITIALISING); @@ -106,7 +93,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(FileSystemPreferencesProvider.class); } @Override @@ -115,6 +102,12 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr return (String) getAttribute(AuthenticationProvider.NAME); } + @ManagedAttribute + public String getPath() + { + return (String) getAttribute(PATH); + } + @Override public String setName(String currentName, String desiredName) throws IllegalStateException, AccessControlException { @@ -122,7 +115,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr } @Override - public State getActualState() + public State getState() { return _state.get(); } @@ -198,7 +191,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr } else if (STATE.equals(name)) { - return getActualState(); + return getState(); } else if (TIME_TO_LIVE.equals(name)) { @@ -249,7 +242,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr catch (RuntimeException e) { _state.compareAndSet(State.ACTIVE, State.ERRORED); - Broker broker = getAuthenticationProvider().getParent(Broker.class); + Broker<?> broker = getAuthenticationProvider().getParent(Broker.class); if (broker != null && broker.isManagementMode()) { LOGGER.warn("Failed to activate preferences provider: " + getName(), e); @@ -313,7 +306,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr return _store.listUserIDs(); } - public AuthenticationProvider getAuthenticationProvider() + public AuthenticationProvider<? extends AuthenticationProvider> getAuthenticationProvider() { return _authenticationProvider; } @@ -378,7 +371,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr throw new IllegalConfigurationException("Changing the type of preferences provider is not supported"); } String path = (String) attributes.get(PATH); - if (path == null || path.equals("") || !(path instanceof String)) + if (path == null || path.equals("")) { throw new IllegalConfigurationException("Path to preferences file is not specified"); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactory.java index 32ee910973..666fa47557 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactory.java @@ -40,9 +40,9 @@ public class FileSystemPreferencesProviderFactory implements PreferencesProvider @Override public PreferencesProvider createInstance(UUID id, Map<String, Object> attributes, - AuthenticationProvider authenticationProvider) + AuthenticationProvider<? extends AuthenticationProvider> authenticationProvider) { - Broker broker = authenticationProvider.getParent(Broker.class); + Broker<?> broker = authenticationProvider.getParent(Broker.class); FileSystemPreferencesProvider provider = new FileSystemPreferencesProvider(id, attributes, authenticationProvider, broker.getTaskExecutor()); // create store if such does not exist diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java index 973fb6e416..559bdeb6f0 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java @@ -31,24 +31,14 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; import org.apache.log4j.Logger; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Group; -import org.apache.qpid.server.model.GroupMember; -import org.apache.qpid.server.model.GroupProvider; -import org.apache.qpid.server.model.IllegalStateTransitionException; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.UUIDGenerator; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.security.group.GroupManager; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.util.MapValueConverter; -public class GroupProviderAdapter extends AbstractAdapter implements - GroupProvider +public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProviderAdapter> implements GroupProvider<GroupProviderAdapter> { private static Logger LOGGER = Logger.getLogger(GroupProviderAdapter.class); @@ -87,7 +77,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements protected Collection<String> createSupportedAttributes(Collection<String> factoryAttributes) { - List<String> attributesNames = new ArrayList<String>(AVAILABLE_ATTRIBUTES); + List<String> attributesNames = new ArrayList<String>(Attribute.getAttributeNames(GroupProvider.class)); if (factoryAttributes != null) { attributesNames.addAll(factoryAttributes); @@ -110,7 +100,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements } @Override - public State getActualState() + public State getState() { return _state.get(); } @@ -188,7 +178,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements } else if (STATE.equals(name)) { - return getActualState(); + return getState(); } else if (TIME_TO_LIVE.equals(name)) { @@ -372,7 +362,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements throw new UnsupportedOperationException("Changing attributes on group providers is not supported."); } - private class GroupAdapter extends AbstractAdapter implements Group + private class GroupAdapter extends AbstractConfiguredObject<GroupAdapter> implements Group<GroupAdapter> { private final String _group; @@ -397,7 +387,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements } @Override - public State getActualState() + public State getState() { return State.ACTIVE; } @@ -496,7 +486,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements @Override public Collection<String> getAttributeNames() { - return Group.AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Group.class); } @Override @@ -541,8 +531,8 @@ public class GroupProviderAdapter extends AbstractAdapter implements throw new UnsupportedOperationException("Changing attributes on group is not supported."); } - private class GroupMemberAdapter extends AbstractAdapter implements - GroupMember + private class GroupMemberAdapter extends AbstractConfiguredObject<GroupMemberAdapter> implements + GroupMember<GroupMemberAdapter> { private String _memberName; @@ -555,7 +545,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements @Override public Collection<String> getAttributeNames() { - return GroupMember.AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(GroupMember.class); } @Override @@ -586,7 +576,7 @@ public class GroupProviderAdapter extends AbstractAdapter implements } @Override - public State getActualState() + public State getState() { return null; } 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 27ecb9ca75..1ebdb7af4b 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 @@ -38,6 +38,7 @@ import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import org.apache.qpid.server.configuration.IllegalConfigurationException; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.IntegrityViolationException; import org.apache.qpid.server.model.KeyStore; @@ -49,34 +50,34 @@ import org.apache.qpid.server.util.ServerScopedRuntimeException; import org.apache.qpid.transport.network.security.ssl.QpidClientX509KeyManager; import org.apache.qpid.transport.network.security.ssl.SSLUtil; -public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore +public class KeyStoreAdapter extends AbstractKeyStoreAdapter<KeyStoreAdapter> implements KeyStore<KeyStoreAdapter> { @SuppressWarnings("serial") public static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{ put(NAME, String.class); put(PATH, String.class); put(PASSWORD, String.class); - put(TYPE, String.class); + put(KEY_STORE_TYPE, String.class); put(CERTIFICATE_ALIAS, String.class); put(KEY_MANAGER_FACTORY_ALGORITHM, String.class); }}); @SuppressWarnings("serial") public static final Map<String, Object> DEFAULTS = Collections.unmodifiableMap(new HashMap<String, Object>(){{ - put(KeyStore.TYPE, DEFAULT_KEYSTORE_TYPE); + put(KeyStore.KEY_STORE_TYPE, DEFAULT_KEYSTORE_TYPE); put(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM, KeyManagerFactory.getDefaultAlgorithm()); }}); - private Broker _broker; + private Broker<?> _broker; - public KeyStoreAdapter(UUID id, Broker broker, Map<String, Object> attributes) + public KeyStoreAdapter(UUID id, Broker<?> broker, Map<String, Object> attributes) { super(id, broker, DEFAULTS, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES)); _broker = broker; String keyStorePath = (String)getAttribute(KeyStore.PATH); String keyStorePassword = getPassword(); - String keyStoreType = (String)getAttribute(KeyStore.TYPE); + String keyStoreType = (String)getAttribute(KeyStore.KEY_STORE_TYPE); String keyManagerFactoryAlgorithm = (String)getAttribute(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM); String certAlias = (String)getAttribute(KeyStore.CERTIFICATE_ALIAS); @@ -85,9 +86,15 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore } @Override + public String getDescription() + { + return null; + } + + @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(KeyStore.class); } @Override @@ -162,7 +169,7 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore String keyStorePath = (String)merged.get(KeyStore.PATH); String keyStorePassword = (String) merged.get(KeyStore.PASSWORD); - String keyStoreType = (String)merged.get(KeyStore.TYPE); + String keyStoreType = (String)merged.get(KeyStore.KEY_STORE_TYPE); String keyManagerFactoryAlgorithm = (String)merged.get(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM); String certAlias = (String)merged.get(KeyStore.CERTIFICATE_ALIAS); @@ -176,7 +183,7 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore String keyStorePassword, String alias, String keyManagerFactoryAlgorithm) { - java.security.KeyStore keyStore = null; + java.security.KeyStore keyStore; try { keyStore = SSLUtil.getInitializedKeyStore(keyStorePath, keyStorePassword, type); @@ -188,7 +195,7 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore if (alias != null) { - Certificate cert = null; + Certificate cert; try { cert = keyStore.getCertificate(alias); @@ -216,11 +223,35 @@ public class KeyStoreAdapter extends AbstractKeyStoreAdapter implements KeyStore } } + @Override + public String getPath() + { + return (String) getAttribute(PATH); + } + + @Override + public String getCertificateAlias() + { + return (String) getAttribute(CERTIFICATE_ALIAS); + } + + @Override + public String getKeyManagerFactoryAlgorithm() + { + return (String) getAttribute(KEY_MANAGER_FACTORY_ALGORITHM); + } + + @Override + public String getKeyStoreType() + { + return (String) getAttribute(KEY_STORE_TYPE); + } + public KeyManager[] getKeyManagers() throws GeneralSecurityException { String keyStorePath = (String)getAttribute(KeyStore.PATH); String keyStorePassword = getPassword(); - String keyStoreType = (String)getAttribute(KeyStore.TYPE); + String keyStoreType = (String)getAttribute(KeyStore.KEY_STORE_TYPE); String keyManagerFactoryAlgorithm = (String)getAttribute(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM); String certAlias = (String)getAttribute(KeyStore.CERTIFICATE_ALIAS); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NonAmqpPortAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NonAmqpPortAdapter.java new file mode 100644 index 0000000000..24b880c1b7 --- /dev/null +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/NonAmqpPortAdapter.java @@ -0,0 +1,39 @@ +/* + * + * 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.model.adapter; + +import org.apache.qpid.server.configuration.updater.TaskExecutor; +import org.apache.qpid.server.model.Broker; + +import java.util.Map; +import java.util.UUID; + +public class NonAmqpPortAdapter extends PortAdapter<NonAmqpPortAdapter> +{ + public NonAmqpPortAdapter(final UUID id, + final Broker<?> broker, + final Map<String, Object> attributes, + final Map<String, Object> defaults, + final TaskExecutor taskExecutor) + { + super(id, broker, attributes, defaults, taskExecutor); + } +} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java index 882335626d..dcad57c7a4 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java @@ -33,27 +33,14 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; -import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Connection; -import org.apache.qpid.server.model.KeyStore; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.Protocol; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.Transport; -import org.apache.qpid.server.model.TrustStore; -import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.model.VirtualHostAlias; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.util.MapValueConverter; import org.apache.qpid.server.util.ParameterizedTypeImpl; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.configuration.updater.TaskExecutor; -public class PortAdapter extends AbstractAdapter implements Port +abstract public class PortAdapter<X extends PortAdapter<X>> extends AbstractConfiguredObject<X> implements Port<X> { @SuppressWarnings("serial") public static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{ @@ -73,11 +60,11 @@ public class PortAdapter extends AbstractAdapter implements Port put(AUTHENTICATION_PROVIDER, String.class); }}); - private final Broker _broker; + private final Broker<?> _broker; private AuthenticationProvider _authenticationProvider; private AtomicReference<State> _state; - public PortAdapter(UUID id, Broker broker, Map<String, Object> attributes, Map<String, Object> defaults, TaskExecutor taskExecutor) + public PortAdapter(UUID id, Broker<?> broker, Map<String, Object> attributes, Map<String, Object> defaults, TaskExecutor taskExecutor) { super(id, defaults, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES), taskExecutor); _broker = broker; @@ -162,9 +149,9 @@ public class PortAdapter extends AbstractAdapter implements Port public Collection<VirtualHostAlias> getVirtualHostBindings() { List<VirtualHostAlias> aliases = new ArrayList<VirtualHostAlias>(); - for(VirtualHost vh : _broker.getVirtualHosts()) + for(VirtualHost<?> vh : _broker.getVirtualHosts()) { - for(VirtualHostAlias alias : vh.getAliases()) + for(VirtualHostAlias<?> alias : vh.getAliases()) { if(alias.getPort().equals(this)) { @@ -194,7 +181,7 @@ public class PortAdapter extends AbstractAdapter implements Port } @Override - public State getActualState() + public State getState() { return _state.get(); } @@ -272,7 +259,7 @@ public class PortAdapter extends AbstractAdapter implements Port } else if(STATE.equals(name)) { - return getActualState(); + return getState(); } else if(DURABLE.equals(name)) { @@ -300,7 +287,7 @@ public class PortAdapter extends AbstractAdapter implements Port @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Port.class); } @Override @@ -465,9 +452,9 @@ public class PortAdapter extends AbstractAdapter implements Port String authenticationProviderName = (String)merged.get(AUTHENTICATION_PROVIDER); if (authenticationProviderName != null) { - Collection<AuthenticationProvider> providers = _broker.getAuthenticationProviders(); - AuthenticationProvider provider = null; - for (AuthenticationProvider p : providers) + Collection<AuthenticationProvider<?>> providers = _broker.getAuthenticationProviders(); + AuthenticationProvider<?> provider = null; + for (AuthenticationProvider<?> p : providers) { if (p.getName().equals(authenticationProviderName)) { @@ -567,4 +554,33 @@ public class PortAdapter extends AbstractAdapter implements Port return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + ", port=" + getPort() + "]"; } + @Override + public boolean isTcpNoDelay() + { + return (Boolean)getAttribute(TCP_NO_DELAY); + } + + @Override + public int getSendBufferSize() + { + return (Integer)getAttribute(SEND_BUFFER_SIZE); + } + + @Override + public int getReceiveBufferSize() + { + return (Integer)getAttribute(RECEIVE_BUFFER_SIZE); + } + + @Override + public boolean getNeedClientAuth() + { + return (Boolean)getAttribute(NEED_CLIENT_AUTH); + } + + @Override + public boolean getWantClientAuth() + { + return (Boolean)getAttribute(WANT_CLIENT_AUTH); + } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java index 25a8cc93ad..8d7ba3688e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortFactory.java @@ -141,7 +141,7 @@ public class PortFactory } defaults.put(Port.NAME, portValue + "-" + protocol.name()); - port = new PortAdapter(id, broker, attributes, defaults, broker.getTaskExecutor()); + port = new NonAmqpPortAdapter(id, broker, attributes, defaults, broker.getTaskExecutor()); boolean rmiPort = port.getProtocols().contains(Protocol.RMI); if (rmiPort && port.getTransports().contains(Transport.SSL)) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java index 5223977136..80da77fe5f 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java @@ -39,7 +39,7 @@ import org.apache.qpid.server.store.DurableConfigurationStoreHelper; import org.apache.qpid.server.consumer.Consumer; import org.apache.qpid.server.util.MapValueConverter; -final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractAdapter implements Queue, +final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredObject<QueueAdapter<Q>> implements Queue<QueueAdapter<Q>>, MessageSource.ConsumerRegistrationListener<Q>, AMQQueue.NotificationListener { @@ -135,6 +135,124 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractAdapter impl } } + @Override + public String getQueueType() + { + return (String) getAttribute(QUEUE_TYPE); + } + + @Override + public Exchange getAlternateExchange() + { + org.apache.qpid.server.exchange.Exchange alternateExchange = _queue.getAlternateExchange(); + return alternateExchange == null ? null : + ConfiguredObjectFinder.findConfiguredObjectByName(_vhost.getExchanges(), + alternateExchange.getName()); + } + + @Override + public ExclusivityPolicy getExclusive() + { + return (ExclusivityPolicy) _queue.getAttribute(EXCLUSIVE); + } + + @Override + public String getOwner() + { + return _queue.getOwner(); + } + + @Override + public boolean getNoLocal() + { + // TODO + return false; + } + + @Override + public String getLvqKey() + { + return (String) _queue.getAttribute(LVQ_KEY); + } + + @Override + public String getSortKey() + { + return (String) _queue.getAttribute(SORT_KEY); + } + + @Override + public String getMessageGroupKey() + { + return (String) _queue.getAttribute(MESSAGE_GROUP_KEY); + } + + @Override + public int getMessageGroupSharedGroups() + { + return (Integer) _queue.getAttribute(MESSAGE_GROUP_SHARED_GROUPS); + } + + @Override + public int getMaximumDeliveryAttempts() + { + return _queue.getMaximumDeliveryCount(); + } + + @Override + public long getQueueFlowControlSizeBytes() + { + return _queue.getCapacity(); + } + + @Override + public long getQueueFlowResumeSizeBytes() + { + return _queue.getFlowResumeCapacity(); + } + + @Override + public boolean isQueueFlowStopped() + { + return false; + } + + @Override + public long getAlertThresholdMessageAge() + { + return _queue.getMaximumMessageAge(); + } + + @Override + public long getAlertThresholdMessageSize() + { + return _queue.getMaximumMessageSize(); + } + + @Override + public long getAlertThresholdQueueDepthBytes() + { + return _queue.getMaximumQueueDepth(); + } + + @Override + public long getAlertThresholdQueueDepthMessages() + { + return _queue.getMaximumMessageCount(); + } + + @Override + public long getAlertRepeatGap() + { + return _queue.getMinimumAlertRepeatGap(); + } + + @Override + public int getPriorities() + { + return (Integer) _queue.getAttribute(PRIORITIES); + } + public Collection<org.apache.qpid.server.model.Binding> getBindings() { synchronized (_bindingAdapters) @@ -173,7 +291,7 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractAdapter impl return null; //TODO } - public State getActualState() + public State getState() { return null; //TODO } @@ -215,7 +333,7 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractAdapter impl @Override public Collection<String> getAttributeNames() { - return Queue.AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(Queue.class); } @Override @@ -451,10 +569,6 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractAdapter impl } return "standard"; } - else if(CREATED.equals(name)) - { - // TODO - } else if(DURABLE.equals(name)) { return _queue.isDurable(); @@ -479,10 +593,6 @@ final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractAdapter impl { // TODO } - else if(UPDATED.equals(name)) - { - // TODO - } else if (DESCRIPTION.equals(name)) { return _queue.getDescription(); 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 6b76eeefa0..0e14709b83 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 @@ -28,18 +28,13 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Publisher; -import org.apache.qpid.server.model.Session; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.UUIDGenerator; + +import org.apache.qpid.server.model.*; import org.apache.qpid.server.consumer.Consumer; import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.protocol.AMQSessionModel; -final class SessionAdapter extends AbstractAdapter implements Session +final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> implements Session<SessionAdapter> { // Attributes @@ -55,6 +50,18 @@ final class SessionAdapter extends AbstractAdapter implements Session _statistics = new SessionStatistics(); } + @Override + public int getChannelId() + { + return _session.getChannelId(); + } + + @Override + public boolean isProducerFlowBlocked() + { + return _session.getBlocking(); + } + public Collection<org.apache.qpid.server.model.Consumer> getConsumers() { synchronized (_consumerAdapters) @@ -79,7 +86,7 @@ final class SessionAdapter extends AbstractAdapter implements Session return null; //TODO } - public State getActualState() + public State getState() { return null; //TODO } @@ -151,10 +158,7 @@ final class SessionAdapter extends AbstractAdapter implements Session @Override public Collection<String> getAttributeNames() { - Collection<String> names = new HashSet<String>(super.getAttributeNames()); - names.addAll(AVAILABLE_ATTRIBUTES); - - return Collections.unmodifiableCollection(names); + return Attribute.getAttributeNames(Session.class); } @Override 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 2d703e2baf..65b7a88bb9 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 @@ -38,9 +38,9 @@ import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509TrustManager; import org.apache.qpid.server.configuration.IllegalConfigurationException; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.IntegrityViolationException; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; @@ -52,35 +52,35 @@ import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager; import org.apache.qpid.transport.network.security.ssl.QpidPeersOnlyTrustManager; import org.apache.qpid.transport.network.security.ssl.SSLUtil; -public class TrustStoreAdapter extends AbstractKeyStoreAdapter implements TrustStore +public class TrustStoreAdapter extends AbstractKeyStoreAdapter<TrustStoreAdapter> implements TrustStore<TrustStoreAdapter> { @SuppressWarnings("serial") public static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{ put(NAME, String.class); put(PATH, String.class); put(PASSWORD, String.class); - put(TYPE, String.class); + put(TRUST_STORE_TYPE, String.class); put(PEERS_ONLY, Boolean.class); put(TRUST_MANAGER_FACTORY_ALGORITHM, String.class); }}); @SuppressWarnings("serial") public static final Map<String, Object> DEFAULTS = Collections.unmodifiableMap(new HashMap<String, Object>(){{ - put(TrustStore.TYPE, DEFAULT_KEYSTORE_TYPE); + put(TrustStore.TRUST_STORE_TYPE, DEFAULT_KEYSTORE_TYPE); put(TrustStore.PEERS_ONLY, Boolean.FALSE); put(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM, TrustManagerFactory.getDefaultAlgorithm()); }}); - private Broker _broker; + private Broker<?> _broker; - public TrustStoreAdapter(UUID id, Broker broker, Map<String, Object> attributes) + public TrustStoreAdapter(UUID id, Broker<?> broker, Map<String, Object> attributes) { super(id, broker, DEFAULTS, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES)); _broker = broker; String trustStorePath = (String) getAttribute(TrustStore.PATH); String trustStorePassword = getPassword(); - String trustStoreType = (String) getAttribute(TrustStore.TYPE); + String trustStoreType = (String) getAttribute(TrustStore.TRUST_STORE_TYPE); String trustManagerFactoryAlgorithm = (String) getAttribute(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM); validateTrustStoreAttributes(trustStoreType, trustStorePath, @@ -90,7 +90,7 @@ public class TrustStoreAdapter extends AbstractKeyStoreAdapter implements TrustS @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(TrustStore.class); } @Override @@ -101,7 +101,7 @@ public class TrustStoreAdapter extends AbstractKeyStoreAdapter implements TrustS // verify that it is not in use String storeName = getName(); - Collection<Port> ports = new ArrayList<Port>(_broker.getPorts()); + Collection<Port<?>> ports = new ArrayList<Port<?>>(_broker.getPorts()); for (Port port : ports) { Collection<TrustStore> trustStores = port.getTrustStores(); @@ -180,7 +180,7 @@ public class TrustStoreAdapter extends AbstractKeyStoreAdapter implements TrustS String trustStorePath = (String)merged.get(TrustStore.PATH); String trustStorePassword = (String) merged.get(TrustStore.PASSWORD); - String trustStoreType = (String)merged.get(TrustStore.TYPE); + String trustStoreType = (String)merged.get(TrustStore.TRUST_STORE_TYPE); String trustManagerFactoryAlgorithm = (String)merged.get(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM); validateTrustStoreAttributes(trustStoreType, trustStorePath, @@ -211,11 +211,35 @@ public class TrustStoreAdapter extends AbstractKeyStoreAdapter implements TrustS } } + @Override + public String getPath() + { + return (String) getAttribute(PATH); + } + + @Override + public String getTrustManagerFactoryAlgorithm() + { + return (String) getAttribute(TRUST_MANAGER_FACTORY_ALGORITHM); + } + + @Override + public String getTrustStoreType() + { + return (String) getAttribute(TRUST_STORE_TYPE); + } + + @Override + public boolean isPeersOnly() + { + return (Boolean) getAttribute(PEERS_ONLY); + } + public TrustManager[] getTrustManagers() throws GeneralSecurityException { String trustStorePath = (String)getAttribute(TrustStore.PATH); String trustStorePassword = getPassword(); - String trustStoreType = (String)getAttribute(TrustStore.TYPE); + String trustStoreType = (String)getAttribute(TrustStore.TRUST_STORE_TYPE); String trustManagerFactoryAlgorithm = (String)getAttribute(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM); try diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java index 4c694657a8..65b658b22a 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java @@ -45,20 +45,7 @@ import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.configuration.XmlConfigurationUtilities.MyConfiguration; import org.apache.qpid.server.message.MessageInstance; import org.apache.qpid.server.message.ServerMessage; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Connection; -import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.IntegrityViolationException; -import org.apache.qpid.server.model.LifetimePolicy; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.Protocol; -import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.QueueType; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Statistics; -import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.model.VirtualHostAlias; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.plugin.ExchangeType; import org.apache.qpid.server.protocol.AMQConnectionModel; @@ -73,7 +60,6 @@ import org.apache.qpid.server.txn.ServerTransaction; import org.apache.qpid.server.util.MapValueConverter; import org.apache.qpid.server.plugin.VirtualHostFactory; import org.apache.qpid.server.util.ServerScopedRuntimeException; -import org.apache.qpid.server.virtualhost.AbstractVirtualHost; import org.apache.qpid.server.virtualhost.ExchangeExistsException; import org.apache.qpid.server.virtualhost.ReservedExchangeNameException; import org.apache.qpid.server.virtualhost.UnknownExchangeException; @@ -81,7 +67,7 @@ import org.apache.qpid.server.virtualhost.VirtualHostListener; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; import org.apache.qpid.server.virtualhost.QueueExistsException; -public final class VirtualHostAdapter extends AbstractAdapter implements VirtualHost, VirtualHostListener +public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHostAdapter> implements VirtualHost<VirtualHostAdapter>, VirtualHostListener { private static final Logger LOGGER = Logger.getLogger(VirtualHostAdapter.class); @@ -106,11 +92,11 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual private final Map<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter> _exchangeAdapters = new HashMap<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter>(); private StatisticsAdapter _statistics; - private final Broker _broker; + private final Broker<?> _broker; private final List<VirtualHostAlias> _aliases = new ArrayList<VirtualHostAlias>(); private StatisticsGatherer _brokerStatisticsGatherer; - public VirtualHostAdapter(UUID id, Map<String, Object> attributes, Broker broker, StatisticsGatherer brokerStatisticsGatherer, TaskExecutor taskExecutor) + public VirtualHostAdapter(UUID id, Map<String, Object> attributes, Broker<?> broker, StatisticsGatherer brokerStatisticsGatherer, TaskExecutor taskExecutor) { super(id, null, MapValueConverter.convert(attributes, ATTRIBUTE_TYPES, false), taskExecutor, false); _broker = broker; @@ -460,7 +446,7 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual @Override - public State getActualState() + public State getState() { if (_virtualHost == null) { @@ -817,7 +803,7 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual } else if(STATE.equals(name)) { - return getActualState(); + return getState(); } else if(DURABLE.equals(name)) { @@ -931,7 +917,7 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(VirtualHost.class); } private void checkVHostStateIsActive() @@ -943,6 +929,137 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual } } + @Override + public Collection<String> getSupportedExchangeTypes() + { + List<String> types = new ArrayList<String>(); + for(@SuppressWarnings("rawtypes") ExchangeType type : _virtualHost.getExchangeTypes()) + { + types.add(type.getType()); + } + return Collections.unmodifiableCollection(types); + } + + @Override + public Collection<String> getSupportedQueueTypes() + { + // TODO + return null; + } + + @Override + public boolean isQueue_deadLetterQueueEnabled() + { + return _virtualHost.getConfiguration().isDeadLetterQueueEnabled(); + } + + @Override + public long getHousekeepingCheckPeriod() + { + return _virtualHost.getConfiguration().getHousekeepingCheckPeriod(); + } + + @Override + public int getQueue_maximumDeliveryAttempts() + { + return _virtualHost.getConfiguration().getMaxDeliveryCount(); + } + + @Override + public long getQueue_flowControlSizeBytes() + { + return _virtualHost.getConfiguration().getCapacity(); + } + + @Override + public long getQueue_flowResumeSizeBytes() + { + return _virtualHost.getConfiguration().getFlowResumeCapacity(); + } + + @Override + public String getConfigStoreType() + { + return (String) getAttribute(CONFIG_STORE_TYPE); + } + + @Override + public String getConfigStorePath() + { + return (String) getAttribute(CONFIG_PATH); + } + + @Override + public String getStoreType() + { + return _virtualHost.getMessageStore().getStoreType(); + } + + @Override + public String getStorePath() + { + return _virtualHost.getMessageStore().getStoreLocation(); + } + + @Override + public long getStoreTransactionIdleTimeoutClose() + { + return _virtualHost.getConfiguration().getTransactionTimeoutIdleClose(); + } + + @Override + public long getStoreTransactionIdleTimeoutWarn() + { + return _virtualHost.getConfiguration().getTransactionTimeoutIdleWarn(); + } + + @Override + public long getStoreTransactionOpenTimeoutClose() + { + return _virtualHost.getConfiguration().getTransactionTimeoutOpenClose(); + } + + @Override + public long getStoreTransactionOpenTimeoutWarn() + { + return _virtualHost.getConfiguration().getTransactionTimeoutOpenWarn(); + } + + @Override + public long getQueue_alertRepeatGap() + { + return _virtualHost.getConfiguration().getMinimumAlertRepeatGap(); + } + + @Override + public long getQueue_alertThresholdMessageAge() + { + return _virtualHost.getConfiguration().getMaximumMessageAge(); + } + + @Override + public long getQueue_alertThresholdMessageSize() + { + return _virtualHost.getConfiguration().getMaximumMessageSize(); + } + + @Override + public long getQueue_alertThresholdQueueDepthBytes() + { + return _virtualHost.getConfiguration().getMaximumQueueDepth(); + } + + @Override + public long getQueue_alertThresholdQueueDepthMessages() + { + return _virtualHost.getConfiguration().getMaximumMessageCount(); + } + + @Override + public String getConfigPath() + { + return (String) getAttribute(CONFIG_PATH); + } private static class VirtualHostStatisticsAdapter extends StatisticsAdapter { @@ -1058,7 +1175,7 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual _virtualHost = null; } - setAttribute(VirtualHost.STATE, getActualState(), State.DELETED); + setAttribute(VirtualHost.STATE, getState(), State.DELETED); return true; } return false; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java index 91b705b004..43ae1d0c44 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java @@ -36,7 +36,7 @@ import java.security.AccessControlException; import java.util.Collection; import java.util.Collections; -public class VirtualHostAliasAdapter extends AbstractAdapter implements VirtualHostAlias +public class VirtualHostAliasAdapter extends AbstractConfiguredObject<VirtualHostAliasAdapter> implements VirtualHostAlias<VirtualHostAliasAdapter> { private VirtualHostAdapter _vhost; private Port _port; @@ -79,7 +79,7 @@ public class VirtualHostAliasAdapter extends AbstractAdapter implements Virtual } @Override - public State getActualState() + public State getState() { return State.ACTIVE; // TODO - Implement } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java index 92135ab14a..05de1950f7 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java @@ -28,6 +28,6 @@ public interface PreferencesProviderFactory extends Pluggable { PluggableFactoryLoader<PreferencesProviderFactory> FACTORIES = new PluggableFactoryLoader<PreferencesProviderFactory>(PreferencesProviderFactory.class); - PreferencesProvider createInstance(UUID id, Map<String, Object> attributes, AuthenticationProvider authenticationProvider); + PreferencesProvider createInstance(UUID id, Map<String, Object> attributes, AuthenticationProvider<? extends AuthenticationProvider> authenticationProvider); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java index 3ce9383ee0..3742e6b3db 100755 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngineFactory.java @@ -48,7 +48,7 @@ public class MultiVersionProtocolEngineFactory implements ProtocolEngineFactory private final Transport _transport; private final ProtocolEngineCreator[] _creators; - public MultiVersionProtocolEngineFactory(Broker broker, + public MultiVersionProtocolEngineFactory(Broker<?> broker, SSLContext sslContext, boolean wantClientAuth, boolean needClientAuth, diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueArgumentsConverter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueArgumentsConverter.java index 49123f8412..43f0b4254c 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueArgumentsConverter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueArgumentsConverter.java @@ -88,8 +88,7 @@ public class QueueArgumentsConverter ATTRIBUTE_MAPPINGS.put(QPID_GROUP_HEADER_KEY, Queue.MESSAGE_GROUP_KEY); //ATTRIBUTE_MAPPINGS.put(QPID_SHARED_MSG_GROUP, Queue.MESSAGE_GROUP_SHARED_GROUPS); ATTRIBUTE_MAPPINGS.put(QPID_DEFAULT_MESSAGE_GROUP_ARG, Queue.MESSAGE_GROUP_DEFAULT_GROUP); - ATTRIBUTE_MAPPINGS.put(QPID_TRACE_EXCLUDE, Queue.FEDERATION_EXCLUDES); - ATTRIBUTE_MAPPINGS.put(QPID_TRACE_ID, Queue.FEDERATION_ID); + ATTRIBUTE_MAPPINGS.put(QPID_NO_LOCAL, Queue.NO_LOCAL); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java index cc1b22d8e1..429f1b3fa1 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java @@ -253,7 +253,7 @@ public class ApplicationRegistry implements IApplicationRegistry if (_broker != null) { - _broker.setDesiredState(_broker.getActualState(), State.STOPPED); + _broker.setDesiredState(_broker.getState(), State.STOPPED); } //Shutdown virtualhosts diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java index 8dd8dda220..5dc8bb9077 100755 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java @@ -587,7 +587,7 @@ public class SecurityManager implements ConfigurationChangeListener Collection<AccessControlProvider> providers = _broker.getAccessControlProviders(); for(AccessControlProvider p : providers) { - if(p == object || p.getActualState() != State.ACTIVE) + if(p == object || p.getState() != State.ACTIVE) { //we don't count ourself as another continue; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java index 9fbfba4872..ac9bfdcaae 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java @@ -71,6 +71,24 @@ public class JsonFileConfigStore implements DurableConfigurationStore { _name = virtualHost.getName(); + setup(virtualHost); + load(); + recoveryHandler.beginConfigurationRecovery(this,_configVersion); + List<ConfiguredObjectRecord> records = new ArrayList<ConfiguredObjectRecord>(_objectsById.values()); + for(ConfiguredObjectRecord record : records) + { + recoveryHandler.configuredObject(record.getId(), record.getType(), record.getAttributes()); + } + int oldConfigVersion = _configVersion; + _configVersion = recoveryHandler.completeConfigurationRecovery(); + if(oldConfigVersion != _configVersion) + { + save(); + } + } + + protected void setup(final VirtualHost virtualHost) + { Object storePathAttr = virtualHost.getAttribute(VirtualHost.CONFIG_STORE_PATH); if(!(storePathAttr instanceof String)) { @@ -101,21 +119,6 @@ public class JsonFileConfigStore implements DurableConfigurationStore renameFile(_backupFileName, _configFileName); } } - - - load(); - recoveryHandler.beginConfigurationRecovery(this,_configVersion); - List<ConfiguredObjectRecord> records = new ArrayList<ConfiguredObjectRecord>(_objectsById.values()); - for(ConfiguredObjectRecord record : records) - { - recoveryHandler.configuredObject(record.getId(), record.getType(), record.getAttributes()); - } - int oldConfigVersion = _configVersion; - _configVersion = recoveryHandler.completeConfigurationRecovery(); - if(oldConfigVersion != _configVersion) - { - save(); - } } private void renameFile(String fromFileName, String toFileName) @@ -194,39 +197,13 @@ public class JsonFileConfigStore implements DurableConfigurationStore } } - private void load() + protected void load() { final File configFile = new File(_directoryName, _configFileName); try { Map data = _objectMapper.readValue(configFile,Map.class); - Collection<Class<? extends ConfiguredObject>> childClasses = - MODEL.getChildTypes(VirtualHost.class); - data.remove("modelVersion"); - Object configVersion; - if((configVersion = data.remove("configVersion")) instanceof Integer) - { - _configVersion = (Integer) configVersion; - } - for(Class<? extends ConfiguredObject> childClass : childClasses) - { - final String type = childClass.getSimpleName(); - String attrName = type.toLowerCase() + "s"; - Object children = data.remove(attrName); - if(children != null) - { - if(children instanceof Collection) - { - for(Object child : (Collection)children) - { - if(child instanceof Map) - { - loadChild(childClass, (Map)child, VirtualHost.class, null); - } - } - } - } - } + loadFromMap(data); } catch (JsonMappingException e) { @@ -243,6 +220,37 @@ public class JsonFileConfigStore implements DurableConfigurationStore } + protected void loadFromMap(final Map data) + { + Collection<Class<? extends ConfiguredObject>> childClasses = + MODEL.getChildTypes(VirtualHost.class); + data.remove("modelVersion"); + Object configVersion; + if((configVersion = data.remove("configVersion")) instanceof Integer) + { + _configVersion = (Integer) configVersion; + } + for(Class<? extends ConfiguredObject> childClass : childClasses) + { + final String type = childClass.getSimpleName(); + String attrName = type.toLowerCase() + "s"; + Object children = data.remove(attrName); + if(children != null) + { + if(children instanceof Collection) + { + for(Object child : (Collection)children) + { + if(child instanceof Map) + { + loadChild(childClass, (Map)child, VirtualHost.class, null); + } + } + } + } + } + } + private void loadChild(final Class<? extends ConfiguredObject> clazz, final Map<String,Object> data, final Class<? extends ConfiguredObject> parentClass, diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java index a26f892483..377becf9ee 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java @@ -40,13 +40,13 @@ class TCPandSSLTransport implements AcceptingTransport private Set<Transport> _transports; private SSLContext _sslContext; private InetSocketAddress _bindingSocketAddress; - private Port _port; + private Port<?> _port; private Set<AmqpProtocolVersion> _supported; private AmqpProtocolVersion _defaultSupportedProtocolReply; TCPandSSLTransport(final Set<Transport> transports, final SSLContext sslContext, - final Port port, + final Port<?> port, final Set<AmqpProtocolVersion> supported, final AmqpProtocolVersion defaultSupportedProtocolReply) { diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/KeyStoreRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/KeyStoreRecovererTest.java index b372b44e42..1014f227a0 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/KeyStoreRecovererTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/KeyStoreRecovererTest.java @@ -109,7 +109,7 @@ public class KeyStoreRecovererTest extends TestCase attributes.put(KeyStore.NAME, getName()); attributes.put(KeyStore.PATH, TestSSLConstants.BROKER_KEYSTORE); attributes.put(KeyStore.PASSWORD, TestSSLConstants.BROKER_KEYSTORE_PASSWORD); - attributes.put(KeyStore.TYPE, "jks"); + attributes.put(KeyStore.KEY_STORE_TYPE, "jks"); attributes.put(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM, KeyManagerFactory.getDefaultAlgorithm()); attributes.put(KeyStore.CERTIFICATE_ALIAS, "java-broker"); return attributes; diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/TrustStoreRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/TrustStoreRecovererTest.java index 3ffa5e496f..f0637f3628 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/TrustStoreRecovererTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/TrustStoreRecovererTest.java @@ -108,7 +108,7 @@ public class TrustStoreRecovererTest extends QpidTestCase attributes.put(TrustStore.NAME, getName()); attributes.put(TrustStore.PATH, TestSSLConstants.BROKER_TRUSTSTORE); attributes.put(TrustStore.PASSWORD, TestSSLConstants.BROKER_TRUSTSTORE_PASSWORD); - attributes.put(TrustStore.TYPE, "jks"); + attributes.put(TrustStore.TRUST_STORE_TYPE, "jks"); attributes.put(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM, TrustManagerFactory.getDefaultAlgorithm()); attributes.put(TrustStore.PEERS_ONLY, Boolean.TRUE); return attributes; diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java index d419030c1d..18484999de 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java @@ -286,7 +286,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase attributes.put(TrustStore.NAME, getName()); attributes.put(TrustStore.PATH, "/path/to/truststore"); attributes.put(TrustStore.PASSWORD, "my-secret-password"); - attributes.put(TrustStore.TYPE, "NON-JKS"); + attributes.put(TrustStore.TRUST_STORE_TYPE, "NON-JKS"); attributes.put(TrustStore.TRUST_MANAGER_FACTORY_ALGORITHM, "NON-STANDARD"); attributes.put(TrustStore.DESCRIPTION, "Description"); @@ -309,7 +309,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase attributes.put(KeyStore.NAME, getName()); attributes.put(KeyStore.PATH, "/path/to/truststore"); attributes.put(KeyStore.PASSWORD, "my-secret-password"); - attributes.put(KeyStore.TYPE, "NON-JKS"); + attributes.put(KeyStore.KEY_STORE_TYPE, "NON-JKS"); attributes.put(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM, "NON-STANDARD"); attributes.put(KeyStore.DESCRIPTION, "Description"); attributes.put(KeyStore.CERTIFICATE_ALIAS, "Alias"); @@ -382,7 +382,7 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase attributes.put(KeyStore.NAME, getName()); attributes.put(KeyStore.PATH, "/path/to/truststore"); attributes.put(KeyStore.PASSWORD, "my-secret-password"); - attributes.put(KeyStore.TYPE, "NON-JKS"); + attributes.put(KeyStore.KEY_STORE_TYPE, "NON-JKS"); attributes.put(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM, "NON-STANDARD"); attributes.put(KeyStore.DESCRIPTION, "Description"); attributes.put(KeyStore.CERTIFICATE_ALIAS, "Alias"); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectStateTransitionTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectStateTransitionTest.java index 1b7ef39b89..cf7aa86320 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectStateTransitionTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/ConfiguredObjectStateTransitionTest.java @@ -180,7 +180,7 @@ public class ConfiguredObjectStateTransitionTest extends QpidTestCase private void assertInvalidStateTransition(ConfiguredObject object, State initialState, State... invalidStates) { - assertEquals("Unexpected state", initialState, object.getActualState()); + assertEquals("Unexpected state", initialState, object.getState()); for (State state : invalidStates) { try @@ -192,19 +192,19 @@ public class ConfiguredObjectStateTransitionTest extends QpidTestCase // expected } assertEquals("Transition from state " + initialState + " into state " + state + " did occur", initialState, - object.getActualState()); + object.getState()); } } private void assertValidStateTransition(ConfiguredObject object, State initialState, State... validStateSequence) { - assertEquals("Unexpected state", initialState, object.getActualState()); + assertEquals("Unexpected state", initialState, object.getState()); State currentState = initialState; for (State state : validStateSequence) { object.setDesiredState(currentState, state); assertEquals("Transition from state " + currentState + " into state " + state + " did not occur", state, - object.getActualState()); + object.getState()); currentState = state; } } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java index 05ac4a1ec3..46a5ab9a3c 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java @@ -139,7 +139,7 @@ public class VirtualHostTest extends QpidTestCase host.createChild(Queue.class, arguments); - Queue queue = ConfiguredObjectFinder.findConfiguredObjectByName(host.getQueues(), queueName); + Queue queue = (Queue) ConfiguredObjectFinder.findConfiguredObjectByName(host.getQueues(), queueName); Object messageGroupKey = queue.getAttribute(Queue.MESSAGE_GROUP_KEY); assertEquals("Unexpected message group key attribute", "mykey", messageGroupKey); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java index 11c16cd9aa..1d942705c7 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java @@ -71,7 +71,7 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase { if (_preferencesProvider != null) { - _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.DELETED); + _preferencesProvider.setDesiredState(_preferencesProvider.getState(), State.DELETED); } BrokerTestHelper.tearDown(); _preferencesFile.delete(); @@ -85,7 +85,7 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase public void testConstructionWithExistingFile() { _preferencesProvider = createPreferencesProvider(); - assertEquals(State.INITIALISING, _preferencesProvider.getActualState()); + assertEquals(State.INITIALISING, _preferencesProvider.getState()); } public void testConstructionWithNonExistingFile() @@ -98,7 +98,7 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase attributes.put(FileSystemPreferencesProvider.PATH, nonExistingFile.getAbsolutePath()); _preferencesProvider = new FileSystemPreferencesProvider(UUID.randomUUID(), attributes, _authenticationProvider, _broker.getTaskExecutor()); _preferencesProvider.createStoreIfNotExist(); - assertEquals(State.INITIALISING, _preferencesProvider.getActualState()); + assertEquals(State.INITIALISING, _preferencesProvider.getState()); assertTrue("Preferences file was not created", nonExistingFile.exists()); } finally @@ -117,7 +117,7 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put(FileSystemPreferencesProvider.PATH, emptyPrefsFile.getAbsolutePath()); _preferencesProvider = new FileSystemPreferencesProvider(UUID.randomUUID(), attributes, _authenticationProvider, _broker.getTaskExecutor()); - assertEquals(State.INITIALISING, _preferencesProvider.getActualState()); + assertEquals(State.INITIALISING, _preferencesProvider.getState()); } finally { @@ -130,7 +130,7 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase _preferencesProvider = createPreferencesProvider(); _preferencesProvider.setDesiredState(State.INITIALISING, State.ACTIVE); - assertEquals("Unexpected state", State.ACTIVE, _preferencesProvider.getActualState()); + assertEquals("Unexpected state", State.ACTIVE, _preferencesProvider.getState()); } public void testChangeAttributes() 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 7fe280649f..9a6dfa3b7e 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 @@ -33,6 +33,7 @@ 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.AmqpManagement; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.ConfigurationChangeListener; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Model; @@ -96,7 +97,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN new CopyOnWriteArrayList<ConsumerRegistrationListener<ManagementNode>>(); private final SystemNodeCreator.SystemNodeRegistry _registry; - private final ConfiguredObject _managedObject; + private final ConfiguredObject<?> _managedObject; private Map<String, ManagementNodeConsumer> _consumers = new ConcurrentHashMap<String, ManagementNodeConsumer>(); private Map<String,ManagedEntityType> _entityTypes = Collections.synchronizedMap(new LinkedHashMap<String, ManagedEntityType>()); @@ -105,7 +106,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN public ManagementNode(final SystemNodeCreator.SystemNodeRegistry registry, - final ConfiguredObject configuredObject) + final ConfiguredObject<?> configuredObject) { _virtualHost = registry.getVirtualHost(); _registry = registry; @@ -213,7 +214,9 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN } } - managedEntityType = new ManagedEntityType(clazz.getName(), parentSet.toArray(new ManagedEntityType[parentSet.size()]), entityType.attributes(), opsList.toArray(new String[opsList.size()])); + managedEntityType = new ManagedEntityType(clazz.getName(), parentSet.toArray(new ManagedEntityType[parentSet.size()]), + (String[])(Attribute.getAttributeNames(clazz).toArray(new String[0])), + opsList.toArray(new String[opsList.size()])); _entityTypes.put(clazz.getName(),managedEntityType); _entities.put(managedEntityType, Collections.synchronizedMap(new LinkedHashMap<String, ConfiguredObject>())); @@ -463,7 +466,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN responseHeader.setHeader(TYPE_ATTRIBUTE, type); try { - entity.setDesiredState(entity.getActualState(),State.DELETED); + entity.setDesiredState(entity.getState(),State.DELETED); responseHeader.setHeader(STATUS_CODE_HEADER, STATUS_CODE_NO_CONTENT); } catch(AccessControlException e) @@ -802,7 +805,6 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN count = Integer.MAX_VALUE; } - responseHeader.setHeader(ATTRIBUTES_HEADER, attributes); responseHeader.setHeader(STATUS_CODE_HEADER, STATUS_CODE_OK); List<List<? extends Object>> responseList = new ArrayList<List<? extends Object>>(); @@ -855,7 +857,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN break; } } - responseHeader.setHeader(COUNT_HEADER, count); + responseHeader.setHeader(COUNT_HEADER, responseList.size()-1); responseMessage = InternalMessage.createListMessage(_virtualHost.getMessageStore(), responseHeader, responseList); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java index 08b99a206d..14196310a5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java @@ -51,28 +51,8 @@ import org.apache.qpid.server.management.plugin.servlet.rest.UserPreferencesServ import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet; import org.apache.qpid.server.management.plugin.servlet.rest.SaslServlet; import org.apache.qpid.server.management.plugin.servlet.rest.StructureServlet; -import org.apache.qpid.server.model.AccessControlProvider; -import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Binding; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Connection; -import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.Group; -import org.apache.qpid.server.model.GroupMember; -import org.apache.qpid.server.model.GroupProvider; -import org.apache.qpid.server.model.KeyStore; -import org.apache.qpid.server.model.Plugin; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.PreferencesProvider; -import org.apache.qpid.server.model.Protocol; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.Session; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.Transport; -import org.apache.qpid.server.model.TrustStore; -import org.apache.qpid.server.model.User; -import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.adapter.AbstractPluginAdapter; import org.apache.qpid.server.plugin.PluginFactory; import org.apache.qpid.server.util.MapValueConverter; @@ -88,7 +68,7 @@ import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.ssl.SslContextFactory; -public class HttpManagement extends AbstractPluginAdapter implements HttpManagementConfiguration +public class HttpManagement extends AbstractPluginAdapter<HttpManagement> implements HttpManagementConfiguration<HttpManagement> { private final Logger _logger = Logger.getLogger(HttpManagement.class); @@ -108,17 +88,6 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem public static final String PLUGIN_TYPE = "MANAGEMENT-HTTP"; - @SuppressWarnings("serial") - private static final Collection<String> AVAILABLE_ATTRIBUTES = Collections.unmodifiableSet(new HashSet<String>(Plugin.AVAILABLE_ATTRIBUTES) - {{ - add(HTTP_BASIC_AUTHENTICATION_ENABLED); - add(HTTPS_BASIC_AUTHENTICATION_ENABLED); - add(HTTP_SASL_AUTHENTICATION_ENABLED); - add(HTTPS_SASL_AUTHENTICATION_ENABLED); - add(TIME_OUT); - add(PluginFactory.PLUGIN_TYPE); - }}); - private static final String OPERATIONAL_LOGGING_NAME = "Web"; @@ -206,8 +175,7 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem CurrentActor.get().message(ManagementConsoleMessages.STOPPED(OPERATIONAL_LOGGING_NAME)); } - /** Added for testing purposes */ - int getSessionTimeout() + public int getSessionTimeout() { return (Integer)getAttribute(TIME_OUT); } @@ -224,7 +192,7 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem int lastPort = -1; for (Port port : ports) { - if (State.QUIESCED.equals(port.getActualState())) + if (State.QUIESCED.equals(port.getState())) { continue; } @@ -462,7 +430,7 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem @Override public Collection<String> getAttributeNames() { - return Collections.unmodifiableCollection(AVAILABLE_ATTRIBUTES); + return Attribute.getAttributeNames(HttpManagement.class); } @Override @@ -524,4 +492,10 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem } } + + @Override + public String getPluginType() + { + return PLUGIN_TYPE; + } } diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java index 7d89daa427..3b159b1e5d 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java @@ -23,16 +23,26 @@ package org.apache.qpid.server.management.plugin; import java.net.SocketAddress; import org.apache.qpid.server.model.AuthenticationProvider; +import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ManagedAttribute; +import org.apache.qpid.server.model.Plugin; -public interface HttpManagementConfiguration +public interface HttpManagementConfiguration<X extends HttpManagementConfiguration<X>> extends Plugin<X> { + @ManagedAttribute boolean isHttpsSaslAuthenticationEnabled(); + @ManagedAttribute boolean isHttpSaslAuthenticationEnabled(); + @ManagedAttribute boolean isHttpsBasicAuthenticationEnabled(); + @ManagedAttribute boolean isHttpBasicAuthenticationEnabled(); + @ManagedAttribute + public int getSessionTimeout(); + AuthenticationProvider getAuthenticationProvider(SocketAddress localAddress); } 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 0efb76a241..ec6b91f829 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 @@ -75,9 +75,9 @@ public class HttpManagementUtil private static final String ATTR_SUBJECT = "Qpid.subject"; private static final String ATTR_LOG_ACTOR = "Qpid.logActor"; - public static Broker getBroker(ServletContext servletContext) + public static Broker<?> getBroker(ServletContext servletContext) { - return (Broker) servletContext.getAttribute(ATTR_BROKER); + return (Broker<?>) servletContext.getAttribute(ATTR_BROKER); } public static HttpManagementConfiguration getManagementConfiguration(ServletContext servletContext) diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java index 1a13733ff5..1133b6e091 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java @@ -50,7 +50,7 @@ public abstract class AbstractServlet extends HttpServlet { private static final Logger LOGGER = Logger.getLogger(AbstractServlet.class); - private Broker _broker; + private Broker<?> _broker; private HttpManagementConfiguration _managementConfiguration; protected AbstractServlet() @@ -240,7 +240,7 @@ public abstract class AbstractServlet extends HttpServlet return subject; } - protected Broker getBroker() + protected Broker<?> getBroker() { return _broker; } 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 03dd7c66a8..0d5d868af2 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 @@ -37,7 +37,7 @@ public class ConfiguredObjectToMapConverter private Model _model = Model.getInstance(); - public Map<String, Object> convertObjectToMap(final ConfiguredObject confObject, + public Map<String, Object> convertObjectToMap(final ConfiguredObject<?> confObject, Class<? extends ConfiguredObject> clazz, int depth) { @@ -62,7 +62,7 @@ public class ConfiguredObjectToMapConverter } private void incorporateAttributesIntoMap( - final ConfiguredObject confObject, Map<String, Object> object) + final ConfiguredObject<?> confObject, Map<String, Object> object) { for(String name : confObject.getAttributeNames()) { diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java index 80ce338d0a..db635e31ce 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java @@ -58,7 +58,7 @@ public class HelperServlet extends AbstractServlet new ListAuthenticationProviderAttributes(), new ListBrokerAttribute(Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES, "ListMessageStoreTypes"), new ListBrokerAttribute(Broker.SUPPORTED_VIRTUALHOST_TYPES, "ListVirtualHostTypes"), - new ListBrokerAttribute(Broker.SUPPORTED_PREFERENCES_PROVIDERS_TYPES, "ListPreferencesProvidersTypes"), + new ListBrokerAttribute(Broker.SUPPORTED_PREFERENCES_PROVIDER_TYPES, "ListPreferencesProvidersTypes"), new ListBrokerAttribute(Broker.PRODUCT_VERSION, "version"), new ListGroupProviderAttributes(), new ListAccessControlProviderAttributes(), diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageContentServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageContentServlet.java index 0329379713..d6d52f86ba 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageContentServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageContentServlet.java @@ -77,7 +77,7 @@ public class MessageContentServlet extends AbstractServlet String vhostName = pathInfoElements[0]; String queueName = pathInfoElements[1]; - VirtualHost vhost = null; + VirtualHost<?> vhost = null; for(VirtualHost vh : getBroker().getVirtualHosts()) { @@ -91,7 +91,7 @@ public class MessageContentServlet extends AbstractServlet return getQueueFromVirtualHost(queueName, vhost); } - private Queue getQueueFromVirtualHost(String queueName, VirtualHost vhost) + private Queue getQueueFromVirtualHost(String queueName, VirtualHost<?> vhost) { Queue queue = null; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java index 3eafa7c294..fa7fb06077 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java @@ -122,7 +122,7 @@ public class MessageServlet extends AbstractServlet mapper.writeValue(writer, messages); } - private Queue getQueueFromRequest(HttpServletRequest request) + private Queue<?> getQueueFromRequest(HttpServletRequest request) { // TODO - validation that there is a vhost and queue and only those in the path @@ -134,9 +134,9 @@ public class MessageServlet extends AbstractServlet String vhostName = pathInfoElements[0]; String queueName = pathInfoElements[1]; - VirtualHost vhost = null; + VirtualHost<?> vhost = null; - for(VirtualHost vh : getBroker().getVirtualHosts()) + for(VirtualHost<?> vh : getBroker().getVirtualHosts()) { if(vh.getName().equals(vhostName)) { @@ -148,7 +148,7 @@ public class MessageServlet extends AbstractServlet return getQueueFromVirtualHost(queueName, vhost); } - private Queue getQueueFromVirtualHost(String queueName, VirtualHost vhost) + private Queue getQueueFromVirtualHost(String queueName, VirtualHost<?> vhost) { Queue queue = null; @@ -410,7 +410,7 @@ public class MessageServlet extends AbstractServlet try { - final Queue sourceQueue = getQueueFromRequest(request); + final Queue<?> sourceQueue = getQueueFromRequest(request); ObjectMapper mapper = new ObjectMapper(); @@ -420,7 +420,7 @@ public class MessageServlet extends AbstractServlet String destQueueName = (String) providedObject.get("destinationQueue"); Boolean move = (Boolean) providedObject.get("move"); - final VirtualHost vhost = sourceQueue.getParent(VirtualHost.class); + final VirtualHost<?> vhost = sourceQueue.getParent(VirtualHost.class); boolean isMoveTransaction = move != null && Boolean.valueOf(move); @@ -459,9 +459,9 @@ public class MessageServlet extends AbstractServlet protected void doDeleteWithSubjectAndActor(HttpServletRequest request, HttpServletResponse response) { - final Queue sourceQueue = getQueueFromRequest(request); + final Queue<?> sourceQueue = getQueueFromRequest(request); - final VirtualHost vhost = sourceQueue.getParent(VirtualHost.class); + final VirtualHost<?> vhost = sourceQueue.getParent(VirtualHost.class); final List<Long> messageIds = new ArrayList<Long>(); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java index e6bc46aa77..005358faf4 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java @@ -112,7 +112,7 @@ public class RestServlet extends AbstractServlet } } - protected Collection<ConfiguredObject> getObjects(HttpServletRequest request) + protected Collection<ConfiguredObject<?>> getObjects(HttpServletRequest request) { String[] pathInfoElements = getPathInfoElements(request); List<String> names = new ArrayList<String>(); @@ -128,8 +128,9 @@ public class RestServlet extends AbstractServlet names.addAll(Arrays.asList(pathInfoElements)); } - Collection<ConfiguredObject> parents = Collections.singleton((ConfiguredObject) getBroker()); - Collection<ConfiguredObject> children = new ArrayList<ConfiguredObject>(); + Collection<ConfiguredObject<?>> parents = new ArrayList<ConfiguredObject<?>>(); + parents.add(getBroker()); + Collection<ConfiguredObject<?>> children = new ArrayList<ConfiguredObject<?>>(); Map<Class<? extends ConfiguredObject>, String> filters = new HashMap<Class<? extends ConfiguredObject>, String>(); @@ -139,14 +140,14 @@ public class RestServlet extends AbstractServlet if(i == 0 || Model.getInstance().getChildTypes(_hierarchy[i - 1]).contains(_hierarchy[i])) { - for(ConfiguredObject parent : parents) + for(ConfiguredObject<?> parent : parents) { if(names.size() > i && names.get(i) != null && !names.get(i).equals("*") && names.get(i).trim().length() != 0) { - for(ConfiguredObject child : parent.getChildren(_hierarchy[i])) + for(ConfiguredObject<?> child : parent.getChildren(_hierarchy[i])) { if(child.getName().equals(names.get(i))) { @@ -156,7 +157,7 @@ public class RestServlet extends AbstractServlet } else { - children.addAll(parent.getChildren(_hierarchy[i])); + children.addAll((Collection<? extends ConfiguredObject<?>>) parent.getChildren(_hierarchy[i])); } } } @@ -173,13 +174,13 @@ public class RestServlet extends AbstractServlet } parents = children; - children = new ArrayList<ConfiguredObject>(); + children = new ArrayList<ConfiguredObject<?>>(); } if(!filters.isEmpty()) { - Collection<ConfiguredObject> potentials = parents; - parents = new ArrayList<ConfiguredObject>(); + Collection<ConfiguredObject<?>> potentials = parents; + parents = new ArrayList<ConfiguredObject<?>>(); for(ConfiguredObject o : potentials) { @@ -215,7 +216,7 @@ public class RestServlet extends AbstractServlet return filter(parents, request); } - private Collection<ConfiguredObject> filter(Collection<ConfiguredObject> objects, HttpServletRequest request) + private Collection<ConfiguredObject<?>> filter(Collection<ConfiguredObject<?>> objects, HttpServletRequest request) { @@ -234,9 +235,9 @@ public class RestServlet extends AbstractServlet return objects; } - Collection<ConfiguredObject> filteredObj = new ArrayList<ConfiguredObject>(objects); + Collection<ConfiguredObject<?>> filteredObj = new ArrayList<ConfiguredObject<?>>(objects); - Iterator<ConfiguredObject> iter = filteredObj.iterator(); + Iterator<ConfiguredObject<?>> iter = filteredObj.iterator(); while(iter.hasNext()) { @@ -293,7 +294,7 @@ public class RestServlet extends AbstractServlet setCachingHeadersOnResponse(response); - Collection<ConfiguredObject> allObjects = getObjects(request); + Collection<ConfiguredObject<?>> allObjects = getObjects(request); // TODO - sort special params, everything else should act as a filter int depth = getDepthParameterFromRequest(request); @@ -392,9 +393,9 @@ public class RestServlet extends AbstractServlet { if(Model.getInstance().getChildTypes(_hierarchy[j]).contains(_hierarchy[i])) { - for(ConfiguredObject parent : objects[j]) + for(ConfiguredObject<?> parent : objects[j]) { - for(ConfiguredObject object : parent.getChildren(_hierarchy[i])) + for(ConfiguredObject<?> object : parent.getChildren(_hierarchy[i])) { if(object.getName().equals(names.get(i))) { @@ -523,10 +524,10 @@ public class RestServlet extends AbstractServlet setCachingHeadersOnResponse(response); try { - Collection<ConfiguredObject> allObjects = getObjects(request); + Collection<ConfiguredObject<?>> allObjects = getObjects(request); for(ConfiguredObject o : allObjects) { - o.setDesiredState(o.getActualState(), State.DELETED); + o.setDesiredState(o.getState(), State.DELETED); } response.setStatus(HttpServletResponse.SC_OK); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js index aebaa39564..41f43bdeaa 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Broker.js @@ -606,7 +606,7 @@ define(["dojo/_base/xhr", new UpdatableStore(that.brokerData.keystores, query(".broker-key-stores")[0], [ { name: "Name", field: "name", width: "20%"}, { name: "Path", field: "path", width: "40%"}, - { name: "Type", field: "type", width: "5%"}, + { name: "Type", field: "keyStoreType", width: "5%"}, { name: "Key Manager Algorithm", field: "keyManagerFactoryAlgorithm", width: "20%"}, { name: "Alias", field: "certificateAlias", width: "15%"} ], function(obj) { @@ -623,7 +623,7 @@ define(["dojo/_base/xhr", new UpdatableStore(that.brokerData.truststores, query(".broker-trust-stores")[0], [ { name: "Name", field: "name", width: "20%"}, { name: "Path", field: "path", width: "40%"}, - { name: "Type", field: "type", width: "5%"}, + { name: "Type", field: "trustStoreType", width: "5%"}, { name: "Trust Manager Algorithm", field: "trustManagerFactoryAlgorithm", width: "25%"}, { name: "Peers only", field: "peersOnly", width: "10%", formatter: function(val){ diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js index 36930be85a..4820e42ccf 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js @@ -101,7 +101,7 @@ define(["dojo/dom", storeNodes(["name", "path", - "type", + "keyStoreType", "keyManagerFactoryAlgorithm", "certificateAlias", "peersOnly" @@ -121,7 +121,7 @@ define(["dojo/dom", { this.name.innerHTML = entities.encode(String(this.keyStoreData[ "name" ])); this.path.innerHTML = entities.encode(String(this.keyStoreData[ "path" ])); - this.type.innerHTML = entities.encode(String(this.keyStoreData[ "type" ])); + this.keyStoreType.innerHTML = entities.encode(String(this.keyStoreData[ "keyStoreType" ])); this.keyManagerFactoryAlgorithm.innerHTML = entities.encode(String(this.keyStoreData[ "keyManagerFactoryAlgorithm" ])); this.certificateAlias.innerHTML = this.keyStoreData[ "certificateAlias" ] ? entities.encode(String( this.keyStoreData[ "certificateAlias" ])) : ""; }; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js index e3d880ce24..1d3c462d1e 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js @@ -101,7 +101,7 @@ define(["dojo/dom", storeNodes(["name", "path", - "type", + "trustStoreType", "trustManagerFactoryAlgorithm", "certificateAlias", "peersOnly" @@ -121,7 +121,7 @@ define(["dojo/dom", { this.name.innerHTML = entities.encode(String(this.keyStoreData[ "name" ])); this.path.innerHTML = entities.encode(String(this.keyStoreData[ "path" ])); - this.type.innerHTML = entities.encode(String(this.keyStoreData[ "type" ])); + this.trustStoreType.innerHTML = entities.encode(String(this.keyStoreData[ "trustStoreType" ])); this.trustManagerFactoryAlgorithm.innerHTML = entities.encode(String(this.keyStoreData[ "trustManagerFactoryAlgorithm" ])); this.peersOnly.innerHTML = "<input type='checkbox' disabled='disabled' "+(this.keyStoreData[ "peersOnly" ] ? "checked='checked'": "")+" />" ; }; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js index 4fdcffb7f1..ae54d19750 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js @@ -129,10 +129,10 @@ define(["dojo/_base/lang", } optionalFieldContainer.addChild(new dijit.form.ValidationTextBox({ required: false, - value: keystore.type, + value: isKeystore ? keystore.keyStoreType : keystore.trustStoreType, label: "Key store type:", placeHolder: "Use default", - name: "type"})); + name: isKeystore ? "keyStoreType" : "trustStoreType"})); var panel = new dijit.TitlePane({title: "Optional Attributes", content: optionalFieldContainer.domNode, open: false}); return panel; } diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showKeyStore.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showKeyStore.html index 5caee836d3..41b877c058 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showKeyStore.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showKeyStore.html @@ -25,7 +25,7 @@ <div class="nameValue" style="float:left;"></div><br/> <div class="formLabel-labelCell" style="float:left; width: 250px;">Type:</div> - <div class="typeValue" style="float:left;"></div><br/> + <div class="keyStoreTypeValue" style="float:left;"></div><br/> <div class="formLabel-labelCell" style="float:left; width: 250px;">Key Manager Factory Algorithm:</div> <div class="keyManagerFactoryAlgorithmValue" style="float:left;"></div><br/> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showTrustStore.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showTrustStore.html index 6f9146fdfe..09f5e2037a 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showTrustStore.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showTrustStore.html @@ -25,7 +25,7 @@ <div class="nameValue" style="float:left;"></div><br/> <div class="formLabel-labelCell" style="float:left; width: 250px;">Type:</div> - <div class="typeValue" style="float:left;"></div><br/> + <div class="trustStoreTypeValue" style="float:left;"></div><br/> <div class="formLabel-labelCell" style="float:left; width: 250px;">Trust Manager Factory Algorithm:</div> <div class="trustManagerFactoryAlgorithmValue" style="float:left;"></div><br/> diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java index e418275d7e..cb3cde8259 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java @@ -40,23 +40,14 @@ import org.apache.qpid.server.jmx.mbeans.ServerInformationMBean; import org.apache.qpid.server.jmx.mbeans.Shutdown; import org.apache.qpid.server.jmx.mbeans.VirtualHostMBean; import org.apache.qpid.server.logging.log4j.LoggingManagementFacade; -import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfigurationChangeListener; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider; -import org.apache.qpid.server.model.Plugin; -import org.apache.qpid.server.model.Port; -import org.apache.qpid.server.model.Protocol; -import org.apache.qpid.server.model.State; -import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.model.*; import org.apache.qpid.server.model.adapter.AbstractPluginAdapter; import org.apache.qpid.server.plugin.PluginFactory; import org.apache.qpid.server.plugin.QpidServiceLoader; import org.apache.qpid.server.util.MapValueConverter; import org.apache.qpid.server.util.ServerScopedRuntimeException; -public class JMXManagement extends AbstractPluginAdapter implements ConfigurationChangeListener +public class JMXManagement extends AbstractPluginAdapter<JMXManagement> implements ConfigurationChangeListener { private static final Logger LOGGER = Logger.getLogger(JMXManagement.class); @@ -71,13 +62,6 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio public static final boolean DEFAULT_USE_PLATFORM_MBEAN_SERVER = true; @SuppressWarnings("serial") - private static final Collection<String> AVAILABLE_ATTRIBUTES = Collections.unmodifiableCollection(new HashSet<String>(Plugin.AVAILABLE_ATTRIBUTES){{ - add(NAME); - add(USE_PLATFORM_MBEAN_SERVER); - add(PluginFactory.PLUGIN_TYPE); - }}); - - @SuppressWarnings("serial") private static final Map<String, Object> DEFAULTS = new HashMap<String, Object>(){{ put(USE_PLATFORM_MBEAN_SERVER, DEFAULT_USE_PLATFORM_MBEAN_SERVER); put(NAME, DEFAULT_NAME); @@ -125,13 +109,13 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio private void start() throws JMException, IOException { - Broker broker = getBroker(); + Broker<?> broker = getBroker(); Port connectorPort = null; Port registryPort = null; - Collection<Port> ports = broker.getPorts(); + Collection<Port<?>> ports = broker.getPorts(); for (Port port : ports) { - if (State.QUIESCED.equals(port.getActualState())) + if (State.QUIESCED.equals(port.getState())) { continue; } @@ -160,7 +144,7 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio synchronized (_children) { - for(VirtualHost virtualHost : broker.getVirtualHosts()) + for(VirtualHost<?> virtualHost : broker.getVirtualHosts()) { if(!_children.containsKey(virtualHost)) { @@ -177,8 +161,8 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio createAdditionalMBeansFromProviders(virtualHost, mbean); } } - Collection<AuthenticationProvider> authenticationProviders = broker.getAuthenticationProviders(); - for (AuthenticationProvider authenticationProvider : authenticationProviders) + Collection<AuthenticationProvider<?>> authenticationProviders = broker.getAuthenticationProviders(); + for (AuthenticationProvider<?> authenticationProvider : authenticationProviders) { if(authenticationProvider instanceof PasswordCredentialManagingAuthenticationProvider) { @@ -336,7 +320,7 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio @Override public Collection<String> getAttributeNames() { - return AVAILABLE_ATTRIBUTES; + return Attribute.getAttributeNames(JMXManagement.class); } @Override @@ -374,4 +358,16 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio } } } + + @Override + public String getPluginType() + { + return PLUGIN_TYPE; + } + + @ManagedAttribute + public boolean getUsePlatformMBeanServer() + { + return (Boolean)getAttribute(USE_PLATFORM_MBEAN_SERVER); + } } diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java index ed5e195043..27901bfbf7 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java @@ -112,7 +112,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange } - private final Exchange _exchange; + private final Exchange<?> _exchange; private final VirtualHostMBean _vhostMBean; protected ExchangeMBean(Exchange exchange, VirtualHostMBean virtualHostMBean) @@ -151,7 +151,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange public String getExchangeType() { - return _exchange.getExchangeType(); + return _exchange.getType(); } public Integer getTicketNo() @@ -171,7 +171,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange public TabularData bindings() throws IOException, JMException { - if(HEADERS_EXCHANGE_TYPE.equals(_exchange.getExchangeType())) + if(HEADERS_EXCHANGE_TYPE.equals(_exchange.getType())) { return getHeadersBindings(_exchange.getBindings()); } @@ -235,7 +235,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange for (Binding binding : bindings) { - String key = FANOUT_EXCHANGE_TYPE.equals(_exchange.getExchangeType()) ? "*" : binding.getName(); + String key = FANOUT_EXCHANGE_TYPE.equals(_exchange.getType()) ? "*" : binding.getName(); List<String> queueList = bindingMap.get(key); if(queueList == null) { @@ -268,7 +268,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange @Override public void createNewBinding(String queueName, String binding, Map<String, Object> arguments) throws JMException { - if(HEADERS_EXCHANGE_TYPE.equals(_exchange.getExchangeType())) + if(HEADERS_EXCHANGE_TYPE.equals(_exchange.getType())) { arguments = new HashMap<String, Object>(arguments); final String[] bindings = binding.split(","); diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/MBeanUtils.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/MBeanUtils.java index 97e84d4796..575fec58e9 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/MBeanUtils.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/MBeanUtils.java @@ -29,7 +29,7 @@ import org.apache.qpid.server.model.VirtualHost; public class MBeanUtils { - public static Queue findQueueFromQueueName(VirtualHost virtualHost, String queueName) throws OperationsException + public static Queue findQueueFromQueueName(VirtualHost<?> virtualHost, String queueName) throws OperationsException { Queue queue = ConfiguredObjectFinder.findConfiguredObjectByName(virtualHost.getQueues(), queueName); if (queue == null) @@ -42,7 +42,7 @@ public class MBeanUtils } } - public static Exchange findExchangeFromExchangeName(VirtualHost virtualHost, String exchangeName) throws OperationsException + public static Exchange findExchangeFromExchangeName(VirtualHost<?> virtualHost, String exchangeName) throws OperationsException { Exchange exchange = ConfiguredObjectFinder.findConfiguredObjectByName(virtualHost.getExchanges(), exchangeName); if (exchange == null) diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java index b44a752312..67abe77e1f 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java @@ -115,7 +115,7 @@ public class QueueMBean extends AMQManagedObject implements ManagedQueue, QueueN } } - private final Queue _queue; + private final Queue<?> _queue; private final VirtualHostMBean _vhostMBean; /** Date/time format used for message expiration and message timestamp formatting */ @@ -298,7 +298,7 @@ public class QueueMBean extends AMQManagedObject implements ManagedQueue, QueueN } else { - VirtualHost virtualHost = _queue.getParent(VirtualHost.class); + VirtualHost<?> virtualHost = _queue.getParent(VirtualHost.class); Exchange exchange = MBeanUtils.findExchangeFromExchangeName(virtualHost, exchangeName); _queue.setAttribute(Queue.ALTERNATE_EXCHANGE, getAlternateExchange(), exchange); diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java index e9e3e1df49..906f1a481d 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java @@ -45,7 +45,7 @@ public class VirtualHostMBean extends AMQManagedObject implements ManagedVirtual { private static final Logger LOGGER = Logger.getLogger(VirtualHostMBean.class); - private final VirtualHost _virtualHost; + private final VirtualHost<?> _virtualHost; private final Map<ConfiguredObject, AMQManagedObject> _children = new HashMap<ConfiguredObject, AMQManagedObject>(); diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBeanTest.java index e2b4567867..746dc0e63f 100644 --- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBeanTest.java +++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBeanTest.java @@ -64,7 +64,7 @@ public class ExchangeMBeanTest extends TestCase { _mockExchange = mock(Exchange.class); when(_mockExchange.getName()).thenReturn(EXCHANGE_NAME); - when(_mockExchange.getExchangeType()).thenReturn(EXCHANGE_TYPE); + when(_mockExchange.getType()).thenReturn(EXCHANGE_TYPE); _mockVirtualHostMBean = mock(VirtualHostMBean.class); _mockManagedObjectRegistry = mock(ManagedObjectRegistry.class); @@ -80,7 +80,7 @@ public class ExchangeMBeanTest extends TestCase _exchangeMBean = new ExchangeMBean(_mockExchange, _mockVirtualHostMBean); _mockHeadersExchange = mock(Exchange.class); - when(_mockHeadersExchange.getExchangeType()).thenReturn(ExchangeMBean.HEADERS_EXCHANGE_TYPE); + when(_mockHeadersExchange.getType()).thenReturn(ExchangeMBean.HEADERS_EXCHANGE_TYPE); when(_mockHeadersExchange.getParent(VirtualHost.class)).thenReturn(mockVirtualHost); } diff --git a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java b/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java index 81dcb05a41..83e7cff3bd 100644 --- a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java +++ b/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java @@ -58,7 +58,7 @@ class WebSocketProvider implements AcceptingTransport public static final String AMQP_WEBSOCKET_SUBPROTOCOL = "AMQPWSB10"; private final Transport _transport; private final SSLContext _sslContext; - private final Port _port; + private final Port<?> _port; private final Set<AmqpProtocolVersion> _supported; private final AmqpProtocolVersion _defaultSupportedProtocolReply; private final ProtocolEngineFactory _factory; @@ -66,7 +66,7 @@ class WebSocketProvider implements AcceptingTransport WebSocketProvider(final Transport transport, final SSLContext sslContext, - final Port port, + final Port<?> port, final Set<AmqpProtocolVersion> supported, final AmqpProtocolVersion defaultSupportedProtocolReply) { diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java index 1b27ee74f6..a5e30be1a3 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java @@ -41,33 +41,52 @@ public class Asserts public static void assertVirtualHost(String virtualHostName, Map<String, Object> virtualHost) { assertNotNull("Virtualhost " + virtualHostName + " data are not found", virtualHost); - assertAttributesPresent(virtualHost, VirtualHost.AVAILABLE_ATTRIBUTES, VirtualHost.TIME_TO_LIVE, - VirtualHost.CREATED, VirtualHost.UPDATED, VirtualHost.SUPPORTED_QUEUE_TYPES, VirtualHost.STORE_PATH, - VirtualHost.CONFIG_PATH, VirtualHost.TYPE, VirtualHost.CONFIG_STORE_PATH, VirtualHost.CONFIG_STORE_TYPE); - - assertEquals("Unexpected value of attribute " + VirtualHost.NAME, virtualHostName, virtualHost.get(VirtualHost.NAME)); + assertAttributesPresent(virtualHost, + Attribute.getAttributeNames(VirtualHost.class), + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION, + VirtualHost.TIME_TO_LIVE, + VirtualHost.SUPPORTED_QUEUE_TYPES, + VirtualHost.STORE_PATH, + VirtualHost.CONFIG_PATH, + VirtualHost.TYPE, + VirtualHost.CONFIG_STORE_PATH, + VirtualHost.CONFIG_STORE_TYPE); + + assertEquals("Unexpected value of attribute " + VirtualHost.NAME, + virtualHostName, + virtualHost.get(VirtualHost.NAME)); assertNotNull("Unexpected value of attribute " + VirtualHost.ID, virtualHost.get(VirtualHost.ID)); assertEquals("Unexpected value of attribute " + VirtualHost.STATE, State.ACTIVE.name(), - virtualHost.get(VirtualHost.STATE)); + virtualHost.get(VirtualHost.STATE)); assertEquals("Unexpected value of attribute " + VirtualHost.DURABLE, Boolean.TRUE, - virtualHost.get(VirtualHost.DURABLE)); + virtualHost.get(VirtualHost.DURABLE)); assertEquals("Unexpected value of attribute " + VirtualHost.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(), - virtualHost.get(VirtualHost.LIFETIME_POLICY)); + virtualHost.get(VirtualHost.LIFETIME_POLICY)); assertEquals("Unexpected value of attribute " + VirtualHost.QUEUE_DEAD_LETTER_QUEUE_ENABLED, Boolean.FALSE, - virtualHost.get(VirtualHost.QUEUE_DEAD_LETTER_QUEUE_ENABLED)); + virtualHost.get(VirtualHost.QUEUE_DEAD_LETTER_QUEUE_ENABLED)); @SuppressWarnings("unchecked") Collection<String> exchangeTypes = (Collection<String>) virtualHost.get(VirtualHost.SUPPORTED_EXCHANGE_TYPES); assertEquals("Unexpected value of attribute " + VirtualHost.SUPPORTED_EXCHANGE_TYPES, - new HashSet<String>(Arrays.asList("headers", "topic", "direct", "fanout")), - new HashSet<String>(exchangeTypes)); + new HashSet<String>(Arrays.asList("headers", "topic", "direct", "fanout")), + new HashSet<String>(exchangeTypes)); @SuppressWarnings("unchecked") Map<String, Object> statistics = (Map<String, Object>) virtualHost.get(STATISTICS_ATTRIBUTE); - Asserts.assertAttributesPresent(statistics, VirtualHost.AVAILABLE_STATISTICS, VirtualHost.BYTES_RETAINED, - VirtualHost.LOCAL_TRANSACTION_BEGINS, VirtualHost.LOCAL_TRANSACTION_ROLLBACKS, - VirtualHost.MESSAGES_RETAINED, VirtualHost.STATE_CHANGED, VirtualHost.XA_TRANSACTION_BRANCH_ENDS, - VirtualHost.XA_TRANSACTION_BRANCH_STARTS, VirtualHost.XA_TRANSACTION_BRANCH_SUSPENDS); + Asserts.assertAttributesPresent(statistics, + VirtualHost.AVAILABLE_STATISTICS, + VirtualHost.BYTES_RETAINED, + VirtualHost.LOCAL_TRANSACTION_BEGINS, + VirtualHost.LOCAL_TRANSACTION_ROLLBACKS, + VirtualHost.MESSAGES_RETAINED, + VirtualHost.STATE_CHANGED, + VirtualHost.XA_TRANSACTION_BRANCH_ENDS, + VirtualHost.XA_TRANSACTION_BRANCH_STARTS, + VirtualHost.XA_TRANSACTION_BRANCH_SUSPENDS); } @@ -76,38 +95,59 @@ public class Asserts assertQueue(queueName, queueType, queueData, null); } - public static void assertQueue(String queueName, String queueType, Map<String, Object> queueData, Map<String, Object> expectedAttributes) + public static void assertQueue(String queueName, + String queueType, + Map<String, Object> queueData, + Map<String, Object> expectedAttributes) { assertNotNull("Queue " + queueName + " is not found!", queueData); - Asserts.assertAttributesPresent(queueData, Queue.AVAILABLE_ATTRIBUTES, Queue.CREATED, Queue.UPDATED, - Queue.DESCRIPTION, Queue.TIME_TO_LIVE, Queue.ALTERNATE_EXCHANGE, Queue.OWNER, Queue.NO_LOCAL, Queue.LVQ_KEY, - Queue.SORT_KEY, Queue.MESSAGE_GROUP_KEY, Queue.MESSAGE_GROUP_SHARED_GROUPS, Queue.PRIORITIES); + Asserts.assertAttributesPresent(queueData, + Attribute.getAttributeNames(Queue.class), + Queue.CREATED_BY, + Queue.CREATED_TIME, + Queue.LAST_UPDATED_BY, + Queue.LAST_UPDATED_TIME, + Queue.TYPE, + Queue.DESCRIPTION, + Queue.TIME_TO_LIVE, + Queue.ALTERNATE_EXCHANGE, + Queue.OWNER, + Queue.NO_LOCAL, + Queue.LVQ_KEY, + Queue.SORT_KEY, + Queue.MESSAGE_GROUP_KEY, + Queue.MESSAGE_GROUP_SHARED_GROUPS, + Queue.PRIORITIES); assertEquals("Unexpected value of queue attribute " + Queue.NAME, queueName, queueData.get(Queue.NAME)); assertNotNull("Unexpected value of queue attribute " + Queue.ID, queueData.get(Queue.ID)); - assertEquals("Unexpected value of queue attribute " + Queue.STATE, State.ACTIVE.name(), queueData.get(Queue.STATE)); + assertEquals("Unexpected value of queue attribute " + Queue.STATE, + State.ACTIVE.name(), + queueData.get(Queue.STATE)); assertEquals("Unexpected value of queue attribute " + Queue.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(), - queueData.get(Queue.LIFETIME_POLICY)); - assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_TYPE, queueType, queueData.get(Queue.QUEUE_TYPE)); + queueData.get(Queue.LIFETIME_POLICY)); + assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_TYPE, + queueType, + queueData.get(Queue.QUEUE_TYPE)); if (expectedAttributes == null) { assertEquals("Unexpected value of queue attribute " + Queue.EXCLUSIVE, ExclusivityPolicy.NONE.name(), queueData.get(Queue.EXCLUSIVE)); assertEquals("Unexpected value of queue attribute " + Queue.MAXIMUM_DELIVERY_ATTEMPTS, 0, - queueData.get(Queue.MAXIMUM_DELIVERY_ATTEMPTS)); + queueData.get(Queue.MAXIMUM_DELIVERY_ATTEMPTS)); assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES, 0, - queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES)); + queueData.get(Queue.QUEUE_FLOW_CONTROL_SIZE_BYTES)); assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_FLOW_RESUME_SIZE_BYTES, 0, - queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES)); + queueData.get(Queue.QUEUE_FLOW_RESUME_SIZE_BYTES)); assertEquals("Unexpected value of queue attribute " + Queue.QUEUE_FLOW_STOPPED, Boolean.FALSE, - queueData.get(Queue.QUEUE_FLOW_STOPPED)); + queueData.get(Queue.QUEUE_FLOW_STOPPED)); } else { for (Map.Entry<String, Object> attribute : expectedAttributes.entrySet()) { assertEquals("Unexpected value of " + queueName + " queue attribute " + attribute.getKey(), - attribute.getValue(), queueData.get(attribute.getKey())); + attribute.getValue(), queueData.get(attribute.getKey())); } } @@ -115,7 +155,7 @@ public class Asserts @SuppressWarnings("unchecked") Map<String, Object> statistics = (Map<String, Object>) queueData.get(Asserts.STATISTICS_ATTRIBUTE); Asserts.assertAttributesPresent(statistics, Queue.AVAILABLE_STATISTICS, Queue.DISCARDS_TTL_BYTES, - Queue.DISCARDS_TTL_MESSAGES, Queue.STATE_CHANGED); + Queue.DISCARDS_TTL_MESSAGES, Queue.STATE_CHANGED); } public static void assertAttributesPresent(Map<String, Object> data, String... attributes) @@ -127,7 +167,7 @@ public class Asserts } public static void assertAttributesPresent(Map<String, Object> data, Collection<String> attributes, - String... unsupportedAttributes) + String... unsupportedAttributes) { for (String name : attributes) { @@ -148,30 +188,49 @@ public class Asserts } } - public static void assertConnection(Map<String, Object> connectionData, AMQConnection connection) throws JMSException + public static void assertConnection(Map<String, Object> connectionData, AMQConnection connection) + throws JMSException { assertNotNull("Unexpected connection data", connectionData); - assertAttributesPresent(connectionData, Connection.AVAILABLE_ATTRIBUTES, Connection.STATE, Connection.DURABLE, - Connection.LIFETIME_POLICY, Connection.TIME_TO_LIVE, Connection.CREATED, Connection.UPDATED, - Connection.INCOMING, Connection.REMOTE_PROCESS_NAME, Connection.REMOTE_PROCESS_PID, - Connection.LOCAL_ADDRESS, Connection.PROPERTIES); + assertAttributesPresent(connectionData, + Attribute.getAttributeNames(Connection.class), + Connection.STATE, + Connection.DURABLE, + Connection.LIFETIME_POLICY, + Connection.TIME_TO_LIVE, + Connection.INCOMING, + Connection.REMOTE_PROCESS_NAME, + Connection.REMOTE_PROCESS_PID, + Connection.LOCAL_ADDRESS, + Connection.PROPERTIES, + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); assertEquals("Unexpected value for connection attribute " + Connection.PORT, - TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT, connectionData.get(Connection.PORT)); + TestBrokerConfiguration.ENTRY_NAME_AMQP_PORT, connectionData.get(Connection.PORT)); assertEquals("Unexpected value of connection attribute " + Connection.SESSION_COUNT_LIMIT, - (int) connection.getMaximumChannelCount(), connectionData.get(Connection.SESSION_COUNT_LIMIT)); + (int) connection.getMaximumChannelCount(), connectionData.get(Connection.SESSION_COUNT_LIMIT)); assertEquals("Unexpected value of connection attribute " + Connection.CLIENT_ID, "clientid", - connectionData.get(Connection.CLIENT_ID)); + connectionData.get(Connection.CLIENT_ID)); assertEquals("Unexpected value of connection attribute " + Connection.PRINCIPAL, "guest", - connectionData.get(Connection.PRINCIPAL)); + connectionData.get(Connection.PRINCIPAL)); @SuppressWarnings("unchecked") Map<String, Object> statistics = (Map<String, Object>) connectionData.get(STATISTICS_ATTRIBUTE); - assertAttributesPresent(statistics, Connection.AVAILABLE_STATISTICS, Connection.LOCAL_TRANSACTION_BEGINS, - Connection.LOCAL_TRANSACTION_ROLLBACKS, Connection.STATE_CHANGED, Connection.XA_TRANSACTION_BRANCH_ENDS, - Connection.XA_TRANSACTION_BRANCH_STARTS, Connection.XA_TRANSACTION_BRANCH_SUSPENDS); + assertAttributesPresent(statistics, + Connection.AVAILABLE_STATISTICS, + Connection.LOCAL_TRANSACTION_BEGINS, + Connection.LOCAL_TRANSACTION_ROLLBACKS, + Connection.STATE_CHANGED, + Connection.XA_TRANSACTION_BRANCH_ENDS, + Connection.XA_TRANSACTION_BRANCH_STARTS, + Connection.XA_TRANSACTION_BRANCH_SUSPENDS); assertEquals("Unexpected value of connection statistics attribute " + Connection.SESSION_COUNT, 1, - statistics.get(Connection.SESSION_COUNT)); + statistics.get(Connection.SESSION_COUNT)); } public static void assertPortAttributes(Map<String, Object> port) @@ -184,7 +243,7 @@ public class Asserts assertNotNull("Unexpected value of attribute " + Port.ID, port.get(Port.ID)); assertEquals("Unexpected value of attribute " + Port.DURABLE, Boolean.FALSE, port.get(Port.DURABLE)); assertEquals("Unexpected value of attribute " + Port.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(), - port.get(Broker.LIFETIME_POLICY)); + port.get(Broker.LIFETIME_POLICY)); assertEquals("Unexpected value of attribute " + Port.STATE, state.name(), port.get(Port.STATE)); assertEquals("Unexpected value of attribute " + Port.TIME_TO_LIVE, 0, port.get(Port.TIME_TO_LIVE)); @@ -202,20 +261,44 @@ public class Asserts } if (isAMQPPort) { - assertAttributesPresent(port, Port.AVAILABLE_ATTRIBUTES, Port.CREATED, Port.UPDATED, Port.AUTHENTICATION_PROVIDER, Port.KEY_STORE, Port.TRUST_STORES); + assertAttributesPresent(port, + Attribute.getAttributeNames(Port.class), + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION, + Port.AUTHENTICATION_PROVIDER, + Port.KEY_STORE, + Port.TRUST_STORES); assertNotNull("Unexpected value of attribute " + Port.BINDING_ADDRESS, port.get(Port.BINDING_ADDRESS)); } else { - assertAttributesPresent(port, Port.AVAILABLE_ATTRIBUTES, Port.CREATED, Port.UPDATED, Port.AUTHENTICATION_PROVIDER, - Port.BINDING_ADDRESS, Port.TCP_NO_DELAY, Port.SEND_BUFFER_SIZE, Port.RECEIVE_BUFFER_SIZE, - Port.NEED_CLIENT_AUTH, Port.WANT_CLIENT_AUTH, Port.KEY_STORE, Port.TRUST_STORES); + assertAttributesPresent(port, + Attribute.getAttributeNames(Port.class), + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION, + Port.AUTHENTICATION_PROVIDER, + Port.BINDING_ADDRESS, + Port.TCP_NO_DELAY, + Port.SEND_BUFFER_SIZE, + Port.RECEIVE_BUFFER_SIZE, + Port.NEED_CLIENT_AUTH, + Port.WANT_CLIENT_AUTH, + Port.KEY_STORE, + Port.TRUST_STORES); } @SuppressWarnings("unchecked") Collection<String> transports = (Collection<String>) port.get(Port.TRANSPORTS); assertEquals("Unexpected value of attribute " + Port.TRANSPORTS, new HashSet<String>(Arrays.asList("TCP")), - new HashSet<String>(transports)); + new HashSet<String>(transports)); } public static void assertDurableExchange(String exchangeName, String type, Map<String, Object> exchangeData) @@ -223,42 +306,59 @@ public class Asserts assertExchange(exchangeName, type, exchangeData); assertEquals("Unexpected value of exchange attribute " + Exchange.DURABLE, Boolean.TRUE, - exchangeData.get(Exchange.DURABLE)); + exchangeData.get(Exchange.DURABLE)); } public static void assertExchange(String exchangeName, String type, Map<String, Object> exchangeData) { assertNotNull("Exchange " + exchangeName + " is not found!", exchangeData); - assertAttributesPresent(exchangeData, Exchange.AVAILABLE_ATTRIBUTES, Exchange.CREATED, Exchange.UPDATED, - Exchange.ALTERNATE_EXCHANGE, Exchange.TIME_TO_LIVE); + assertAttributesPresent(exchangeData, Attribute.getAttributeNames(Exchange.class), + Exchange.ALTERNATE_EXCHANGE, Exchange.TIME_TO_LIVE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); assertEquals("Unexpected value of exchange attribute " + Exchange.NAME, exchangeName, - exchangeData.get(Exchange.NAME)); + exchangeData.get(Exchange.NAME)); assertNotNull("Unexpected value of exchange attribute " + Exchange.ID, exchangeData.get(VirtualHost.ID)); assertEquals("Unexpected value of exchange attribute " + Exchange.STATE, State.ACTIVE.name(), - exchangeData.get(Exchange.STATE)); + exchangeData.get(Exchange.STATE)); - assertEquals("Unexpected value of exchange attribute " + Exchange.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(), - exchangeData.get(Exchange.LIFETIME_POLICY)); + assertEquals("Unexpected value of exchange attribute " + Exchange.LIFETIME_POLICY, + LifetimePolicy.PERMANENT.name(), + exchangeData.get(Exchange.LIFETIME_POLICY)); assertEquals("Unexpected value of exchange attribute " + Exchange.TYPE, type, exchangeData.get(Exchange.TYPE)); assertNotNull("Unexpected value of exchange attribute statistics", exchangeData.get(STATISTICS_ATTRIBUTE)); @SuppressWarnings("unchecked") Map<String, Object> statistics = (Map<String, Object>) exchangeData.get(STATISTICS_ATTRIBUTE); - assertAttributesPresent(statistics, Exchange.AVAILABLE_STATISTICS, Exchange.STATE_CHANGED, Exchange.PRODUCER_COUNT); + assertAttributesPresent(statistics, + Exchange.AVAILABLE_STATISTICS, + Exchange.STATE_CHANGED, + Exchange.PRODUCER_COUNT); } public static void assertBinding(String bindingName, String queueName, String exchange, Map<String, Object> binding) { assertNotNull("Binding map should not be null", binding); - assertAttributesPresent(binding, Binding.AVAILABLE_ATTRIBUTES, Binding.STATE, Binding.TIME_TO_LIVE, - Binding.CREATED, Binding.UPDATED); + assertAttributesPresent(binding, + Attribute.getAttributeNames(Binding.class), + Binding.STATE, + Binding.TIME_TO_LIVE, + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); assertEquals("Unexpected binding attribute " + Binding.NAME, bindingName, binding.get(Binding.NAME)); assertEquals("Unexpected binding attribute " + Binding.QUEUE, queueName, binding.get(Binding.QUEUE)); assertEquals("Unexpected binding attribute " + Binding.EXCHANGE, exchange, binding.get(Binding.EXCHANGE)); assertEquals("Unexpected binding attribute " + Binding.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(), - binding.get(Binding.LIFETIME_POLICY)); + binding.get(Binding.LIFETIME_POLICY)); } public static void assertBinding(String queueName, String exchange, Map<String, Object> binding) diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java index bb01d1facf..e73e8767ac 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java @@ -27,7 +27,9 @@ import java.util.Map; import java.util.UUID; import org.apache.qpid.server.BrokerOptions; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.AuthenticationProvider; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; @@ -302,9 +304,9 @@ public class AuthenticationProviderRestTest extends QpidRestTestCase private void assertProvider(boolean managesPrincipals, String type, Map<String, Object> provider) { - Asserts.assertAttributesPresent(provider, AuthenticationProvider.AVAILABLE_ATTRIBUTES, - AuthenticationProvider.CREATED, AuthenticationProvider.UPDATED, AuthenticationProvider.DESCRIPTION, - AuthenticationProvider.TIME_TO_LIVE); + Asserts.assertAttributesPresent(provider, Attribute.getAttributeNames(AuthenticationProvider.class), + AuthenticationProvider.DESCRIPTION, AuthenticationProvider.TIME_TO_LIVE, ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, ConfiguredObject.LAST_UPDATED_BY, ConfiguredObject.LAST_UPDATED_TIME); assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.STATE, State.ACTIVE.name(), provider.get(AuthenticationProvider.STATE)); assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.LIFETIME_POLICY, diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java index 18370185e5..07c1e7c8b8 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java @@ -29,7 +29,9 @@ import java.util.HashMap; import java.util.Map; import org.apache.commons.configuration.ConfigurationException; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.Transport; @@ -62,7 +64,13 @@ public class BrokerRestHttpsTest extends QpidRestTestCase { Map<String, Object> brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker"); - Asserts.assertAttributesPresent(brokerDetails, Broker.AVAILABLE_ATTRIBUTES, Broker.BYTES_RETAINED, - Broker.PROCESS_PID, Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES, Broker.CREATED, Broker.TIME_TO_LIVE, Broker.UPDATED); + Asserts.assertAttributesPresent(brokerDetails, Attribute.getAttributeNames(Broker.class), Broker.BYTES_RETAINED, + Broker.PROCESS_PID, Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES, Broker.CREATED, Broker.TIME_TO_LIVE, + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); } } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java index 30a9ea2f21..76b4e7eefb 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java @@ -34,7 +34,9 @@ import javax.jms.TextMessage; import org.apache.qpid.common.QpidProperties; import org.apache.qpid.server.configuration.BrokerConfigurationStoreCreator; +import org.apache.qpid.server.model.Attribute; 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.Port; import org.apache.qpid.server.model.State; @@ -232,9 +234,15 @@ public class BrokerRestTest extends QpidRestTestCase protected void assertBrokerAttributes(Map<String, Object> brokerDetails) { - Asserts.assertAttributesPresent(brokerDetails, Broker.AVAILABLE_ATTRIBUTES, + Asserts.assertAttributesPresent(brokerDetails, Attribute.getAttributeNames(Broker.class), Broker.BYTES_RETAINED, Broker.PROCESS_PID, - Broker.CREATED, Broker.TIME_TO_LIVE, Broker.UPDATED); + Broker.TIME_TO_LIVE, + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); assertEquals("Unexpected value of attribute " + Broker.BUILD_VERSION, QpidProperties.getBuildVersion(), brokerDetails.get(Broker.BUILD_VERSION)); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java index d558e07ed7..cecf4b2ab5 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java @@ -33,6 +33,8 @@ import javax.jms.MessageProducer; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQSession; +import org.apache.qpid.server.model.Attribute; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Connection; import org.apache.qpid.server.model.Session; @@ -172,7 +174,15 @@ public class ConnectionRestTest extends QpidRestTestCase private void assertSession(Map<String, Object> sessionData, AMQSession<?, ?> session) { assertNotNull("Session map cannot be null", sessionData); - Asserts.assertAttributesPresent(sessionData, Session.AVAILABLE_ATTRIBUTES, Session.STATE, Session.DURABLE, + Asserts.assertAttributesPresent(sessionData, Attribute.getAttributeNames(Session.class), + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION, + Session.STATE, + Session.DURABLE, Session.LIFETIME_POLICY, Session.TIME_TO_LIVE, Session.CREATED, Session.UPDATED); assertEquals("Unexpecte value of attribute " + Session.NAME, session.getChannelId() + "", sessionData.get(Session.NAME)); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java index d09d5a8d02..85d8d31758 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java @@ -29,6 +29,8 @@ import java.util.Properties; import java.util.UUID; import org.apache.qpid.server.BrokerOptions; +import org.apache.qpid.server.model.Attribute; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Group; import org.apache.qpid.server.model.GroupProvider; import org.apache.qpid.server.model.LifetimePolicy; @@ -320,9 +322,14 @@ public class GroupProviderRestTest extends QpidRestTestCase private void assertProvider(String name, String type, Map<String, Object> provider) { - Asserts.assertAttributesPresent(provider, GroupProvider.AVAILABLE_ATTRIBUTES, - GroupProvider.CREATED, GroupProvider.UPDATED, GroupProvider.DESCRIPTION, - GroupProvider.TIME_TO_LIVE); + Asserts.assertAttributesPresent(provider, Attribute.getAttributeNames(GroupProvider.class), + GroupProvider.TIME_TO_LIVE, + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); assertEquals("Unexpected value of provider attribute " + GroupProvider.STATE, State.ACTIVE.name(), provider.get(GroupProvider.STATE)); assertEquals("Unexpected value of provider attribute " + GroupProvider.LIFETIME_POLICY, diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java index c38d9bb396..f825ffbb0f 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java @@ -258,7 +258,7 @@ public class KeyStoreRestTest extends QpidRestTestCase assertEquals("unexpected (dummy) password of default systests key store", AbstractKeyStoreAdapter.DUMMY_PASSWORD_MASK, keystore.get(KeyStore.PASSWORD)); assertEquals("unexpected type of default systests key store", - java.security.KeyStore.getDefaultType(), keystore.get(KeyStore.TYPE)); + java.security.KeyStore.getDefaultType(), keystore.get(KeyStore.KEY_STORE_TYPE)); assertEquals("unexpected certificateAlias value", certAlias, keystore.get(KeyStore.CERTIFICATE_ALIAS)); if(certAlias == null) diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java index 7f604bada7..9a657b0019 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java @@ -28,7 +28,9 @@ import java.util.List; import java.util.Map; import org.apache.commons.configuration.ConfigurationException; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.AuthenticationProvider; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.State; @@ -161,8 +163,13 @@ public class PreferencesProviderRestTest extends QpidRestTestCase public void assertProviderCommonAttributes(Map<String, Object> provider) { - Asserts.assertAttributesPresent(provider, PreferencesProvider.AVAILABLE_ATTRIBUTES, PreferencesProvider.CREATED, - PreferencesProvider.UPDATED, PreferencesProvider.TIME_TO_LIVE); + Asserts.assertAttributesPresent(provider, + Attribute.getAttributeNames(PreferencesProvider.class), + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION, PreferencesProvider.TIME_TO_LIVE); assertEquals("Unexpected value of provider attribute " + PreferencesProvider.STATE, State.ACTIVE.name(), provider.get(PreferencesProvider.STATE)); assertEquals("Unexpected value of provider attribute " + PreferencesProvider.LIFETIME_POLICY, diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java index 3833af3ca5..a95c0a082f 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java @@ -34,7 +34,9 @@ import javax.jms.MessageConsumer; import javax.jms.MessageProducer; import javax.jms.Session; +import org.apache.qpid.server.model.Attribute; import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.Consumer; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Queue; @@ -209,9 +211,16 @@ public class QueueRestTest extends QpidRestTestCase private void assertConsumer(Map<String, Object> consumer) { assertNotNull("Consumer map should not be null", consumer); - Asserts.assertAttributesPresent(consumer, Consumer.AVAILABLE_ATTRIBUTES, Consumer.STATE, Consumer.TIME_TO_LIVE, - Consumer.CREATED, Consumer.UPDATED, Consumer.SETTLEMENT_MODE, Consumer.EXCLUSIVE, Consumer.SELECTOR, - Consumer.NO_LOCAL); + Asserts.assertAttributesPresent(consumer, + Attribute.getAttributeNames(Consumer.class), Consumer.STATE, Consumer.TIME_TO_LIVE, + Consumer.SETTLEMENT_MODE, Consumer.EXCLUSIVE, Consumer.SELECTOR, + Consumer.NO_LOCAL, + ConfiguredObject.TYPE, + ConfiguredObject.CREATED_BY, + ConfiguredObject.CREATED_TIME, + ConfiguredObject.LAST_UPDATED_BY, + ConfiguredObject.LAST_UPDATED_TIME, + ConfiguredObject.DESCRIPTION); assertEquals("Unexpected binding attribute " + Consumer.NAME, "1", consumer.get(Consumer.NAME)); assertEquals("Unexpected binding attribute " + Consumer.DURABLE, Boolean.FALSE, consumer.get(Consumer.DURABLE)); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/TrustStoreRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/TrustStoreRestTest.java index 8b788780d6..7927bff07f 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/TrustStoreRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/TrustStoreRestTest.java @@ -26,7 +26,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.qpid.server.model.KeyStore; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Transport; import org.apache.qpid.server.model.TrustStore; @@ -255,7 +254,7 @@ public class TrustStoreRestTest extends QpidRestTestCase assertEquals("unexpected (dummy) password of default systests trust store", AbstractKeyStoreAdapter.DUMMY_PASSWORD_MASK, truststore.get(TrustStore.PASSWORD)); assertEquals("unexpected type of default systests trust store", - java.security.KeyStore.getDefaultType(), truststore.get(TrustStore.TYPE)); + java.security.KeyStore.getDefaultType(), truststore.get(TrustStore.TRUST_STORE_TYPE)); assertEquals("unexpected peersOnly value", peersOnly, truststore.get(TrustStore.PEERS_ONLY)); } |