Author: rgodfrey
Date: Mon Apr 23 15:41:59 2012
New Revision: 1329291
URL: http://svn.apache.org/viewvc?rev=1329291&view=rev
Log:
NO-JIRA : [Java Config] Initial work on allowing generic creation of children
based on maps
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/ExchangeImpl.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/QueueImpl.java
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/VirtualHostImpl.java
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/model/impl/AbstractConfiguredObjectImplTest.java
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
Mon Apr 23 15:41:59 2012
@@ -22,6 +22,7 @@ package org.apache.qpid.server.model;
import java.security.AccessControlException;
import java.util.Collection;
+import java.util.Map;
import java.util.UUID;
public interface ConfiguredObject
@@ -237,4 +238,9 @@ public interface ConfiguredObject
*
*/
<C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz);
+
+
+ <C extends ConfiguredObject> C createChild(Class<C> childClass,
+ Map<String, Object> attributes,
+ ConfiguredObject...
otherParents);
}
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
Mon Apr 23 15:41:59 2012
@@ -20,19 +20,16 @@
*/
package org.apache.qpid.server.model.adapter;
-import org.apache.commons.lang.CharSet;
-
-import org.apache.qpid.server.model.ConfigurationChangeListener;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.IllegalStateTransitionException;
-import org.apache.qpid.server.model.State;
-
import java.security.AccessControlException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
+import org.apache.qpid.server.model.ConfigurationChangeListener;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.IllegalStateTransitionException;
+import org.apache.qpid.server.model.State;
abstract class AbstractAdapter implements ConfiguredObject
{
@@ -59,6 +56,114 @@ abstract class AbstractAdapter implement
_id = UUID.randomUUID();
}
+ static String getStringAttribute(String name, Map<String,Object>
attributes, String defaultVal)
+ {
+ final Object value = attributes.get(name);
+ return value == null ? defaultVal : String.valueOf(value);
+ }
+
+ static Map getMapAttribute(String name, Map<String,Object> attributes, Map
defaultVal)
+ {
+ final Object value = attributes.get(name);
+ if(value == null)
+ {
+ return defaultVal;
+ }
+ else if(value instanceof Map)
+ {
+ return (Map) value;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Value for attribute " + name +
" is not of required type Map");
+ }
+ }
+
+
+ static <E extends Enum> E getEnumAttribute(Class<E> clazz, String name,
Map<String,Object> attributes, E defaultVal)
+ {
+ Object obj = attributes.get(name);
+ if(obj == null)
+ {
+ return defaultVal;
+ }
+ else if(clazz.isInstance(obj))
+ {
+ return (E) obj;
+ }
+ else if(obj instanceof String)
+ {
+ return (E) Enum.valueOf(clazz, (String)obj);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Value for attribute " + name +
" is not of required type " + clazz.getSimpleName());
+ }
+ }
+
+ static Boolean getBooleanAttribute(String name, Map<String,Object>
attributes, Boolean defaultValue)
+ {
+ Object obj = attributes.get(name);
+ if(obj == null)
+ {
+ return defaultValue;
+ }
+ else if(obj instanceof Boolean)
+ {
+ return (Boolean) obj;
+ }
+ else if(obj instanceof String)
+ {
+ return Boolean.parseBoolean((String) obj);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Value for attribute " + name +
" is not of required type Boolean");
+ }
+ }
+
+ static Integer getIntegerAttribute(String name, Map<String,Object>
attributes, Integer defaultValue)
+ {
+ Object obj = attributes.get(name);
+ if(obj == null)
+ {
+ return defaultValue;
+ }
+ else if(obj instanceof Number)
+ {
+ return ((Number) obj).intValue();
+ }
+ else if(obj instanceof String)
+ {
+ return Integer.valueOf((String) obj);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Value for attribute " + name +
" is not of required type Integer");
+ }
+ }
+
+ static Long getLongAttribute(String name, Map<String,Object> attributes,
Long defaultValue)
+ {
+ Object obj = attributes.get(name);
+ if(obj == null)
+ {
+ return defaultValue;
+ }
+ else if(obj instanceof Number)
+ {
+ return ((Number) obj).longValue();
+ }
+ else if(obj instanceof String)
+ {
+ return Long.valueOf((String) obj);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Value for attribute " + name +
" is not of required type Long");
+ }
+ }
+
public final UUID getId()
{
return _id;
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
Mon Apr 23 15:41:59 2012
@@ -129,6 +129,12 @@ final class BindingAdapter extends Abstr
return Collections.emptySet();
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new IllegalArgumentException("Cannot add children to a binding");
+ }
+
public Map<String, Object> getArguments()
{
return new HashMap<String, Object> (_binding.getArguments());
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
Mon Apr 23 15:41:59 2012
@@ -130,6 +130,12 @@ public class BrokerAdapter extends Abstr
return null; //TODO
}
+ public VirtualHost createVirtualHost(final Map<String, Object> attributes)
+ throws AccessControlException, IllegalArgumentException
+ {
+ return null; //TODO
+ }
+
public void deleteVirtualHost(final VirtualHost vhost)
throws AccessControlException, IllegalStateException
{
@@ -212,6 +218,39 @@ public class BrokerAdapter extends Abstr
return Collections.emptySet();
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ if(childClass == VirtualHost.class)
+ {
+ return (C) createVirtualHost(attributes);
+ }
+ else if(childClass == Port.class)
+ {
+ return (C) createPort(attributes);
+ }
+ else if(childClass == AuthenticationProvider.class)
+ {
+ return (C) createAuthenticationProvider(attributes);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot create child of class "
+ childClass.getSimpleName());
+ }
+ }
+
+ private Port createPort(Map<String, Object> attributes)
+ {
+ // TODO
+ return null;
+ }
+
+ private AuthenticationProvider
createAuthenticationProvider(Map<String,Object> attributes)
+ {
+ // TODO
+ return null;
+ }
+
public void
virtualHostRegistered(org.apache.qpid.server.virtualhost.VirtualHost
virtualHost)
{
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConnectionAdapter.java
Mon Apr 23 15:41:59 2012
@@ -271,6 +271,19 @@ final class ConnectionAdapter extends Ab
}
}
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ if(childClass == Session.class)
+ {
+ throw new IllegalStateException();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot create a child of class
" + childClass.getSimpleName());
+ }
+
+ }
+
private class ConnectionStatisticsAdapter extends StatisticsAdapter
{
public ConnectionStatisticsAdapter(StatisticsGatherer
applicationRegistry)
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
Mon Apr 23 15:41:59 2012
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.model.adapter;
+import java.util.Map;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Consumer;
import org.apache.qpid.server.model.LifetimePolicy;
@@ -182,6 +183,12 @@ public class ConsumerAdapter extends Abs
return Collections.emptySet();
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new IllegalArgumentException();
+ }
+
private class ConsumerStatistics implements Statistics
{
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
Mon Apr 23 15:41:59 2012
@@ -25,9 +25,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
-
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQInternalException;
import org.apache.qpid.AMQSecurityException;
@@ -106,6 +104,22 @@ final class ExchangeAdapter extends Abst
return Collections.emptyList();
}
+
+ public org.apache.qpid.server.model.Binding createBinding(Queue queue,
+ Map<String,
Object> attributes)
+ throws AccessControlException, IllegalStateException
+ {
+ attributes = new HashMap<String, Object>(attributes);
+ String bindingKey =
getStringAttribute(org.apache.qpid.server.model.Binding.NAME, attributes, "");
+ Map<String, Object> bindingArgs =
getMapAttribute(org.apache.qpid.server.model.Binding.ARGUMENTS, attributes,
Collections.EMPTY_MAP);
+
+ attributes.remove(org.apache.qpid.server.model.Binding.NAME);
+ attributes.remove(org.apache.qpid.server.model.Binding.ARGUMENTS);
+
+ return createBinding(bindingKey, queue, bindingArgs, attributes);
+
+ }
+
public org.apache.qpid.server.model.Binding createBinding(String
bindingKey, Queue queue,
Map<String,
Object> bindingArguments,
Map<String,
Object> attributes)
@@ -226,6 +240,34 @@ final class ExchangeAdapter extends Abst
}
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ if(childClass == org.apache.qpid.server.model.Binding.class)
+ {
+ if(otherParents != null && otherParents.length == 1 &&
otherParents[0] instanceof Queue)
+ {
+ Queue queue = (Queue) otherParents[0];
+
if(queue.getParent(org.apache.qpid.server.model.VirtualHost.class) ==
getParent(org.apache.qpid.server.model.VirtualHost.class))
+ {
+ return (C) createBinding(queue, attributes);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Queue and Exchange
parents of a binding must be on same virtual host");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("Other parent must be a
queue");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+
public void bindingAdded(org.apache.qpid.server.exchange.Exchange
exchange, Binding binding)
{
BindingAdapter adapter = null;
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
Mon Apr 23 15:41:59 2012
@@ -21,6 +21,7 @@
package org.apache.qpid.server.model.adapter;
+import java.util.Map;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Connection;
import org.apache.qpid.server.model.LifetimePolicy;
@@ -242,6 +243,12 @@ public class PortAdapter extends Abstrac
}
@Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public Object getAttribute(String name)
{
if(ID.equals(name))
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
Mon Apr 23 15:41:59 2012
@@ -27,15 +27,15 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-
import org.apache.qpid.AMQException;
import org.apache.qpid.server.binding.Binding;
import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Consumer;
+import org.apache.qpid.server.model.Exchange;
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;
-import org.apache.qpid.server.model.Consumer;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.QueueEntryVisitor;
import org.apache.qpid.server.subscription.Subscription;
@@ -406,6 +406,50 @@ final class QueueAdapter extends Abstrac
}
}
+ public org.apache.qpid.server.model.Binding createBinding(Exchange
exchange, Map<String, Object> attributes)
+ throws AccessControlException, IllegalStateException
+ {
+ attributes = new HashMap<String, Object>(attributes);
+ String bindingKey =
getStringAttribute(org.apache.qpid.server.model.Binding.NAME, attributes, "");
+ Map<String, Object> bindingArgs =
getMapAttribute(org.apache.qpid.server.model.Binding.ARGUMENTS, attributes,
Collections.EMPTY_MAP);
+
+ attributes.remove(org.apache.qpid.server.model.Binding.NAME);
+ attributes.remove(org.apache.qpid.server.model.Binding.ARGUMENTS);
+
+ return exchange.createBinding(bindingKey, this, bindingArgs,
attributes);
+
+ }
+
+
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ if(childClass == org.apache.qpid.server.model.Binding.class)
+ {
+ if(otherParents != null && otherParents.length == 1 &&
otherParents[0] instanceof Exchange)
+ {
+ Exchange exchange = (Exchange) otherParents[0];
+
if(exchange.getParent(org.apache.qpid.server.model.VirtualHost.class) ==
getParent(org.apache.qpid.server.model.VirtualHost.class))
+ {
+ return (C) createBinding(exchange, attributes);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Queue and Exchange
parents of a binding must be on same virtual host");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException("Other parent must be an
exchange");
+ }
+ }
+ else
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+
void bindingRegistered(Binding binding, BindingAdapter adapter)
{
synchronized (_bindingAdapters)
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
Mon Apr 23 15:41:59 2012
@@ -25,6 +25,7 @@ import java.util.Collection;
import java.util.Collections;
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;
@@ -163,6 +164,12 @@ final class SessionAdapter extends Abstr
}
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException();
+ }
+
private class SessionStatistics implements Statistics
{
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
Mon Apr 23 15:41:59 2012
@@ -26,12 +26,9 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.WeakHashMap;
-
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.server.connection.IConnectionRegistry;
@@ -192,6 +189,30 @@ final class VirtualHostAdapter extends A
}
}
+
+ public Exchange createExchange(Map<String, Object> attributes)
+ throws AccessControlException, IllegalArgumentException
+ {
+ attributes = new HashMap<String, Object>(attributes);
+
+ String name = getStringAttribute(Exchange.NAME,
attributes, null);
+ State state = getEnumAttribute(State.class,
Exchange.STATE, attributes, State.ACTIVE);
+ boolean durable = getBooleanAttribute(Exchange.DURABLE,
attributes, false);
+ LifetimePolicy lifetime = getEnumAttribute(LifetimePolicy.class,
Exchange.LIFETIME_POLICY, attributes, LifetimePolicy.PERMANENT);
+ String type = getStringAttribute(Exchange.TYPE,
attributes, null);
+ long ttl = getLongAttribute(Exchange.TIME_TO_LIVE,
attributes, 0l);
+
+ attributes.remove(Exchange.NAME);
+ attributes.remove(Exchange.STATE);
+ attributes.remove(Exchange.DURABLE);
+ attributes.remove(Exchange.LIFETIME_POLICY);
+ attributes.remove(Exchange.TYPE);
+ attributes.remove(Exchange.TIME_TO_LIVE);
+
+ return createExchange(name, state, durable, lifetime, ttl, type,
attributes);
+ }
+
+
public Exchange createExchange(final String name,
final State initialState,
final boolean durable,
@@ -223,6 +244,27 @@ final class VirtualHostAdapter extends A
}
}
+ public Queue createQueue(Map<String, Object> attributes)
+ throws AccessControlException, IllegalArgumentException
+ {
+ attributes = new HashMap<String, Object>(attributes);
+
+ String name = getStringAttribute(Queue.NAME, attributes,
null);
+ State state = getEnumAttribute(State.class, Queue.STATE,
attributes, State.ACTIVE);
+ boolean durable = getBooleanAttribute(Queue.DURABLE,
attributes, false);
+ LifetimePolicy lifetime = getEnumAttribute(LifetimePolicy.class,
Queue.LIFETIME_POLICY, attributes, LifetimePolicy.PERMANENT);
+ long ttl = getLongAttribute(Queue.TIME_TO_LIVE,
attributes, 0l);
+ boolean exclusive= getBooleanAttribute(Queue.EXCLUSIVE,
attributes, false);
+
+ attributes.remove(Queue.NAME);
+ attributes.remove(Queue.STATE);
+ attributes.remove(Queue.DURABLE);
+ attributes.remove(Queue.LIFETIME_POLICY);
+ attributes.remove(Queue.TIME_TO_LIVE);
+
+ return createQueue(name, state, durable, exclusive, lifetime, ttl,
attributes);
+ }
+
public Queue createQueue(final String name,
final State initialState,
final boolean durable,
@@ -346,6 +388,28 @@ final class VirtualHostAdapter extends A
}
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ if(childClass == Exchange.class)
+ {
+ return (C) createExchange(attributes);
+ }
+ else if(childClass == Queue.class)
+ {
+ return (C) createQueue(attributes);
+ }
+ else if(childClass == VirtualHostAlias.class)
+ {
+ throw new UnsupportedOperationException();
+ }
+ else if(childClass == Connection.class)
+ {
+ throw new UnsupportedOperationException();
+ }
+ throw new IllegalArgumentException("Cannot create a child of class " +
childClass.getSimpleName());
+ }
+
public void exchangeRegistered(org.apache.qpid.server.exchange.Exchange
exchange)
{
ExchangeAdapter adapter = null;
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
Mon Apr 23 15:41:59 2012
@@ -21,6 +21,7 @@
package org.apache.qpid.server.model.adapter;
+import java.util.Map;
import org.apache.qpid.server.model.AuthenticationMethod;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
@@ -132,4 +133,10 @@ public class VirtualHostAliasAdapter ex
{
return Collections.emptySet();
}
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException();
+ }
}
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/BrokerImpl.java
Mon Apr 23 15:41:59 2012
@@ -20,24 +20,21 @@
*/
package org.apache.qpid.server.model.impl;
+import java.security.AccessControlException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.UUID;
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.Exchange;
import org.apache.qpid.server.model.LifetimePolicy;
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.VirtualHost;
-import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
public class BrokerImpl extends AbstractConfiguredObject implements Broker
{
private final Collection<VirtualHost> _virtualHosts = new
ArrayList<VirtualHost>();
@@ -96,6 +93,12 @@ public class BrokerImpl extends Abstract
return null;
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException();
+ }
+
public VirtualHost createVirtualHost(String name, State
initialState,boolean durable,
LifetimePolicy lifetime, long ttl,
Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/ExchangeImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/ExchangeImpl.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/ExchangeImpl.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/ExchangeImpl.java
Mon Apr 23 15:41:59 2012
@@ -21,6 +21,7 @@
package org.apache.qpid.server.model.impl;
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.LifetimePolicy;
import org.apache.qpid.server.model.Publisher;
@@ -105,4 +106,10 @@ class ExchangeImpl extends AbstractConfi
{
return null; // TODO
}
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException(); //TODO
+ }
}
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/QueueImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/QueueImpl.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/QueueImpl.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/QueueImpl.java
Mon Apr 23 15:41:59 2012
@@ -25,6 +25,7 @@ import java.util.Collections;
import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.State;
@@ -90,4 +91,10 @@ class QueueImpl extends AbstractConfigur
{
return null; //TODO
}
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException(); // TODO
+ }
}
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/VirtualHostImpl.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/VirtualHostImpl.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/VirtualHostImpl.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/impl/VirtualHostImpl.java
Mon Apr 23 15:41:59 2012
@@ -107,6 +107,12 @@ class VirtualHostImpl extends AbstractCo
return null; //TODO
}
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ throw new UnsupportedOperationException(); // TODO
+ }
+
public Collection<VirtualHostAlias> getAliases()
{
synchronized(getLock())
Modified:
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/model/impl/AbstractConfiguredObjectImplTest.java
URL:
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/model/impl/AbstractConfiguredObjectImplTest.java?rev=1329291&r1=1329290&r2=1329291&view=diff
==============================================================================
---
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/model/impl/AbstractConfiguredObjectImplTest.java
(original)
+++
qpid/branches/java-config-and-management/qpid/java/broker/src/test/java/org/apache/qpid/server/model/impl/AbstractConfiguredObjectImplTest.java
Mon Apr 23 15:41:59 2012
@@ -143,6 +143,12 @@ public class AbstractConfiguredObjectImp
{
return null;
}
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ return null;
+ }
}
private final class TestChildCO extends AbstractConfiguredObject
@@ -171,6 +177,12 @@ public class AbstractConfiguredObjectImp
{
return null;
}
+
+ @Override
+ public <C extends ConfiguredObject> C createChild(Class<C> childClass,
Map<String, Object> attributes, ConfiguredObject... otherParents)
+ {
+ return null;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]