Author: rgodfrey
Date: Tue Dec 15 21:05:45 2015
New Revision: 1720249
URL: http://svn.apache.org/viewvc?rev=1720249&view=rev
Log:
QPID-6954 : Refactor to remove code duplication
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1720249&r1=1720248&r2=1720249&view=diff
==============================================================================
---
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
(original)
+++
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
Tue Dec 15 21:05:45 2015
@@ -779,62 +779,30 @@ public abstract class AbstractVirtualHos
private MessageSource autoCreateSource(final String name)
{
- for(NodeAutoCreationPolicy policy : getNodeAutoCreationPolicies())
- {
- String pattern = policy.getPattern();
- if(name.matches(pattern) && policy.isCreatedOnConsume())
- {
- String nodeType = policy.getNodeType();
- Class<? extends ConfiguredObject> sourceClass = null;
- for(Class<? extends ConfiguredObject> childClass :
getModel().getChildTypes(getCategoryClass()))
- {
-
if(childClass.getSimpleName().equalsIgnoreCase(nodeType.trim()) &&
MessageSource.class.isAssignableFrom(childClass))
- {
- sourceClass = childClass;
- }
- }
- if(sourceClass != null)
- {
- Map<String, Object> attributes = new
HashMap<>(policy.getAttributes());
- attributes.remove(ConfiguredObject.ID);
- attributes.put(ConfiguredObject.NAME, name);
-
- try
- {
+ return autoCreateNode(name, MessageSource.class, false);
+ }
- final MessageSource messageSource =
- (MessageSource)
doSync(addChildAsync(sourceClass, attributes));
- if (messageSource != null)
- {
- return messageSource;
- }
- }
- catch (RuntimeException e)
- {
- _logger.info("Unable to auto create a node named {}
due to exception", name, e);
- }
- }
- }
+ private MessageDestination autoCreateDestination(final String name)
+ {
+ return autoCreateNode(name, MessageDestination.class, true);
- }
- return null;
}
-
- private MessageDestination autoCreateDestination(final String name)
+ private <T> T autoCreateNode(final String name, final Class<T> clazz,
boolean publish)
{
for (NodeAutoCreationPolicy policy : getNodeAutoCreationPolicies())
{
String pattern = policy.getPattern();
- if (name.matches(pattern) && policy.isCreatedOnPublish())
+ if (name.matches(pattern) &&
+ ((publish && policy.isCreatedOnPublish()) || (!publish &&
policy.isCreatedOnConsume())))
{
String nodeType = policy.getNodeType();
Class<? extends ConfiguredObject> sourceClass = null;
for (Class<? extends ConfiguredObject> childClass :
getModel().getChildTypes(getCategoryClass()))
{
if
(childClass.getSimpleName().equalsIgnoreCase(nodeType.trim())
- &&
MessageDestination.class.isAssignableFrom(childClass))
+ && clazz.isAssignableFrom(childClass))
{
sourceClass = childClass;
}
@@ -848,11 +816,11 @@ public abstract class AbstractVirtualHos
try
{
- final MessageDestination messageDestination =
- (MessageDestination)
doSync(addChildAsync(sourceClass, attributes));
- if (messageDestination != null)
+ final T node =
+ (T) doSync(addChildAsync(sourceClass,
attributes));
+ if (node != null)
{
- return messageDestination;
+ return node;
}
}
catch (RuntimeException e)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]