diff options
Diffstat (limited to 'qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java')
-rw-r--r-- | qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java index 05f980baca..0056f37b9a 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java @@ -120,8 +120,11 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im private final TaskExecutor _taskExecutor; private final Class<? extends ConfiguredObject> _category; + private final Class<? extends ConfiguredObject> _typeClass; private final Class<? extends ConfiguredObject> _bestFitInterface; private final Model _model; + private final boolean _managesChildStorage; + @ManagedAttributeField private long _createdTime; @@ -204,6 +207,8 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im _model = model; _category = ConfiguredObjectTypeRegistry.getCategory(getClass()); + Class<? extends ConfiguredObject> typeClass = model.getTypeRegistry().getTypeClass(getClass()); + _typeClass = typeClass == null ? _category : typeClass; _attributeTypes = model.getTypeRegistry().getAttributeTypes(getClass()); _automatedFields = model.getTypeRegistry().getAutomatedFields(getClass()); @@ -240,6 +245,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im } _type = ConfiguredObjectTypeRegistry.getType(getClass()); + _managesChildStorage = managesChildren(_category) || managesChildren(_typeClass); _bestFitInterface = calculateBestFitInterface(); if(attributes.get(TYPE) != null && !_type.equals(attributes.get(TYPE))) @@ -313,6 +319,11 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im } } + private boolean managesChildren(final Class<? extends ConfiguredObject> clazz) + { + return clazz.getAnnotation(ManagedObject.class).managesChildren(); + } + private Class<? extends ConfiguredObject> calculateBestFitInterface() { Set<Class<? extends ConfiguredObject>> candidates = new HashSet<Class<? extends ConfiguredObject>>(); @@ -973,11 +984,24 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im return _model; } + @Override public Class<? extends ConfiguredObject> getCategoryClass() { return _category; } + @Override + public Class<? extends ConfiguredObject> getTypeClass() + { + return _typeClass; + } + + @Override + public boolean managesChildStorage() + { + return _managesChildStorage; + } + public Map<String,String> getContext() { return _context == null ? Collections.<String,String>emptyMap() : Collections.unmodifiableMap(_context); |