[jboss-cvs] JBossAS SVN: r93637 - in projects/jboss-man/trunk: managed/src/main/java/org/jboss/managed/plugins and 7 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 17 07:40:17 EDT 2009
Author: emuckenhuber
Date: 2009-09-17 07:40:17 -0400 (Thu, 17 Sep 2009)
New Revision: 93637
Modified:
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedOperation.java
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/JmsDestination.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/QueueDestination.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementObjectUnitTestCase.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementPropertyUnitTestCase.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValue.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValueSupport.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/MetaValueFactory.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/CompositeValueInvocationHandler.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/mappers/ObjectNameMetaMapper.java
projects/jboss-man/trunk/metatype/src/test/java/org/jboss/test/metatype/values/factory/test/CompositeValueFactoryUnitTestCase.java
Log:
merge with 2_1 branch
Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedOperation.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedOperation.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/api/ManagedOperation.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -44,6 +44,8 @@
ReadWrite,
/** The impact is to modify the ManagedObject */
WriteOnly,
+ /** The operation affects the component life-cycle/runtime state */
+ Lifecycle,
/** The impact is not known */
Unknown
};
Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/ManagedObjectImpl.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -97,6 +97,12 @@
* @param operations the operations
*/
public ManagedObjectImpl(String name, Set<ManagedProperty> properties,
+ Set<ManagedOperation> operations)
+ {
+ this(name, name, null, properties, operations, null);
+ }
+ @Deprecated
+ public ManagedObjectImpl(String name, Set<ManagedProperty> properties,
HashSet<ManagedOperation> operations)
{
this(name, name, null, properties, operations, null);
@@ -117,6 +123,18 @@
String nameType,
String attachmentName,
Set<ManagedProperty> properties,
+ Set<ManagedOperation> operations,
+ Object attachment
+ )
+ {
+ this(name, nameType, attachmentName, toMap(properties), operations, attachment);
+ }
+ @Deprecated
+ public ManagedObjectImpl(
+ String name,
+ String nameType,
+ String attachmentName,
+ Set<ManagedProperty> properties,
HashSet<ManagedOperation> operations,
Serializable attachment
)
@@ -139,15 +157,15 @@
String nameType,
String attachmentName,
Map<String, ManagedProperty> properties,
- HashSet<ManagedOperation> operations,
- Serializable attachment
+ Set<ManagedOperation> operations,
+ Object attachment
)
{
if (name == null)
throw new IllegalArgumentException("Null name");
if (properties == null)
throw new IllegalArgumentException("Null properties");
-
+
this.name = name;
// todo - check for null?
this.nameType = nameType;
@@ -156,6 +174,18 @@
this.operations = operations;
setAttachment(attachment);
}
+ @Deprecated
+ public ManagedObjectImpl(
+ String name,
+ String nameType,
+ String attachmentName,
+ Map<String, ManagedProperty> properties,
+ HashSet<ManagedOperation> operations,
+ Serializable attachment
+ )
+ {
+ this(name, name, attachmentName, properties, (Set<ManagedOperation>)operations, attachment);
+ }
public String getName()
{
Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/JmsDestination.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/JmsDestination.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/JmsDestination.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -25,7 +25,9 @@
import javax.management.ObjectName;
+import org.jboss.managed.api.ManagedOperation.Impact;
import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementOperation;
import org.jboss.managed.api.annotation.ManagementProperty;
import org.jboss.managed.api.annotation.RunStateProperty;
import org.jboss.managed.api.annotation.ViewUse;
@@ -99,4 +101,15 @@
{
this.domain = domain;
}
+
+ @ManagementOperation(description="start the destination", impact=Impact.Lifecycle)
+ public void start()
+ {
+
+ }
+ @ManagementOperation(description="stop the destination", impact=Impact.Lifecycle)
+ public void stop()
+ {
+
+ }
}
Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/QueueDestination.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/QueueDestination.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/support/deployment/QueueDestination.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -27,6 +27,7 @@
import javax.management.ObjectName;
+import org.jboss.managed.api.ManagedOperation.Impact;
import org.jboss.managed.api.annotation.ManagementComponent;
import org.jboss.managed.api.annotation.ManagementObject;
import org.jboss.managed.api.annotation.ManagementOperation;
@@ -43,7 +44,7 @@
{
private static final long serialVersionUID = 1;
- @ManagementOperation(description="List all undelivered msgs")
+ @ManagementOperation(description="List all undelivered msgs", impact=Impact.ReadOnly)
@MetaMapping(MessageListMapper.class)
public List listAllMessages()
{
@@ -52,7 +53,7 @@
return msgs;
}
- @ManagementOperation(description="List all undelivered msgs")
+ @ManagementOperation(description="List all undelivered msgs", impact=Impact.ReadOnly)
@MetaMapping(MessageListMapper.class)
public List listAllMessages(@MetaMapping(StringObjectNameMetaMapper.class) ObjectName x)
{
Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/AbstractManagedObjectFactoryUnitTestCase.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -39,6 +39,7 @@
import org.jboss.managed.api.ManagedOperation;
import org.jboss.managed.api.ManagedParameter;
import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.api.ManagedOperation.Impact;
import org.jboss.managed.api.annotation.ManagementComponent;
import org.jboss.managed.api.annotation.ManagementObject;
import org.jboss.managed.api.factory.ManagedObjectFactory;
@@ -271,7 +272,7 @@
assertEquals("java:/jaas/JMS2", q1.getDomain().getDomain());
}
- public void testManagedObjectReturnType()
+ public void testManagedOperationReturnType()
{
QueueDestination q1 = new QueueDestination();
q1.setJndiName("queues/Q1");
@@ -288,7 +289,7 @@
assertTrue(returnTypeMapper instanceof MessageListMapper);
}
- public void testManagedObjectParamsType()
+ public void testManagedOperationParamsType()
{
QueueDestination q1 = new QueueDestination();
q1.setJndiName("queues/Q1");
@@ -308,6 +309,25 @@
assertTrue(mapper instanceof StringObjectNameMetaMapper);
}
+ public void testManagedOperationImpact()
+ {
+ QueueDestination q1 = new QueueDestination();
+ q1.setJndiName("queues/Q1");
+ q1.setDomain(new SecurityDomain("java:/jaas/JMS"));
+
+ ManagedObject q1MO = initManagedObject(q1);
+ Set<ManagedOperation> ops = q1MO.getOperations();
+ ManagedOperation listAllMessages = ManagedOperationMatcher.findOperation(ops, "listAllMessages", SimpleMetaType.STRING);
+ assertNotNull(listAllMessages);
+ Impact lamImpact = listAllMessages.getImpact();
+ assertEquals(Impact.ReadOnly, lamImpact);
+
+ ManagedOperation start = ManagedOperationMatcher.findOperation(ops, "start");
+ assertNotNull(start);
+ Impact startImpact = start.getImpact();
+ assertEquals(Impact.Lifecycle, startImpact);
+ }
+
/**
* Test the transformer value of the ManagementRuntimeRef annotation when
* there is a custom ICF
Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementObjectUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementObjectUnitTestCase.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementObjectUnitTestCase.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -21,9 +21,16 @@
*/
package org.jboss.test.managed.factory.test;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
import junit.framework.Test;
import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.ManagedOperation;
+import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.plugins.ManagedObjectImpl;
import org.jboss.test.managed.factory.AbstractManagedObjectFactoryTest;
import org.jboss.test.managed.factory.support.ManagementObjectChangedName;
@@ -63,4 +70,22 @@
ManagedObject managedObject = createManagedObject(ManagementObjectChangedName.class);
checkManagedObject(ManagementObjectChangedName.class, managedObject, "changed", null);
}
-}
\ No newline at end of file
+
+ /**
+ * JBMAN-79
+ */
+ public void testDeprecatedCtor()
+ {
+ String name = "testDeprecatedCtor";
+ String nameType = null;
+ String attachmentName = "testDeprecatedCtor.attachment";
+ Set<ManagedProperty> props = null;
+ HashSet<ManagedOperation> ops = null;
+ Serializable attachment = null;
+ ManagedObjectImpl mo = new ManagedObjectImpl(name, nameType, attachmentName, props, ops, attachment);
+
+ Set<ManagedOperation> ops2 = ops;
+ Object attachment2 = attachment;
+ ManagedObjectImpl mo2 = new ManagedObjectImpl(name, nameType, attachmentName, props, ops2, attachment2);
+ }
+}
Modified: projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementPropertyUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementPropertyUnitTestCase.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/ManagementPropertyUnitTestCase.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -22,11 +22,9 @@
package org.jboss.test.managed.factory.test;
import java.lang.annotation.Annotation;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Set;
Modified: projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -71,37 +71,38 @@
* {@link CompositeValue}<br>
* {@link TableValue}
*/
- List<String> ALLOWED_CLASSNAMES = Collections.unmodifiableList(Arrays.asList(
- Void.class.getName(),
- Boolean.class.getName(),
- Character.class.getName(),
- Byte.class.getName(),
- Short.class.getName(),
- Integer.class.getName(),
- Long.class.getName(),
- Float.class.getName(),
- Double.class.getName(),
- boolean.class.getName(),
- char.class.getName(),
- byte.class.getName(),
- short.class.getName(),
- int.class.getName(),
- long.class.getName(),
- float.class.getName(),
- double.class.getName(),
- String.class.getName(),
- Date.class.getName(),
- BigDecimal.class.getName(),
- BigInteger.class.getName(),
- Properties.class.getName(),
- Name.class.getName(),
- SimpleValue.class.getName(),
- EnumValue.class.getName(),
- GenericValue.class.getName(),
- ArrayValue.class.getName(),
- CompositeValue.class.getName(),
- TableValue.class.getName()
- ));
+ List<String> ALLOWED_CLASSNAMES = Collections.unmodifiableList(Arrays.asList(new String[]
+ {
+ Void.class.getName(),
+ Boolean.class.getName(),
+ Character.class.getName(),
+ Byte.class.getName(),
+ Short.class.getName(),
+ Integer.class.getName(),
+ Long.class.getName(),
+ Float.class.getName(),
+ Double.class.getName(),
+ boolean.class.getName(),
+ char.class.getName(),
+ byte.class.getName(),
+ short.class.getName(),
+ int.class.getName(),
+ long.class.getName(),
+ float.class.getName(),
+ double.class.getName(),
+ String.class.getName(),
+ Date.class.getName(),
+ BigDecimal.class.getName(),
+ BigInteger.class.getName(),
+ Properties.class.getName(),
+ Name.class.getName(),
+ SimpleValue.class.getName(),
+ EnumValue.class.getName(),
+ GenericValue.class.getName(),
+ ArrayValue.class.getName(),
+ CompositeValue.class.getName(),
+ TableValue.class.getName()
+ }));
/**
* Retrieve the class name of the values of this meta
Modified: projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValue.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValue.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValue.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -26,7 +26,11 @@
import org.jboss.metatype.api.types.CompositeMetaType;
/**
- * CompositeValue.
+ * A {@link MetaValue} representing a <code>Map<String,MetaValue></code>, where the set of allowed keys and
+ * their corresponding values' MetaTypes are specified by the associated {@link CompositeMetaType}.
+ *
+ * @see MapCompositeValueSupport
+ * @see CompositeValueSupport
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
Modified: projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValueSupport.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValueSupport.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/CompositeValueSupport.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -37,9 +37,16 @@
import org.jboss.metatype.api.types.CompositeMetaType;
import org.jboss.metatype.api.types.MetaType;
+import org.jboss.metatype.api.types.ImmutableCompositeMetaType;
+import org.jboss.metatype.plugins.types.MutableCompositeMetaType;
/**
- * CompositeValueSupport.
+ * A {@link CompositeValue} representing a <code>Map<String,MetaValue></code>, where the set of allowed keys and
+ * their corresponding values' MetaTypes are specified by the associated {@link ImmutableCompositeMetaType} or
+ * {@link MutableCompositeMetaType}.
+ *
+ * To represent a <code>Map<String,MetaValue></code> where values must all have the same MetaType, use
+ * {@link MapCompositeValueSupport} instead.
*
* @author <a href="adrian at jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
@@ -144,6 +151,11 @@
init(compositeMetaType, items);
}
+ /**
+ * Get the value's type - either a {@link ImmutableCompositeMetaType} or a {@link MutableCompositeMetaType}.
+ *
+ * @return the value's type - either a {@link ImmutableCompositeMetaType} or a {@link MutableCompositeMetaType}
+ */
public CompositeMetaType getMetaType()
{
return metaType;
Modified: projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/MetaValueFactory.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/MetaValueFactory.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/api/values/MetaValueFactory.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -66,16 +66,8 @@
* @return the meta value
*/
public abstract MetaValue create(Object value, Type type);
-
+
/**
- * Create a meta value given its MetaType
- * @param value
- * @param type the meta type
- * @return the meta value
- */
- public abstract MetaValue create(Object value, MetaType type);
-
- /**
* Create a meta value
*
* @param value the value
@@ -85,6 +77,14 @@
public abstract MetaValue create(Object value, TypeInfo type);
/**
+ * Create a meta value given its MetaType
+ * @param value
+ * @param type the meta type
+ * @return the meta value
+ */
+ public abstract MetaValue create(Object value, MetaType type);
+
+ /**
* Set a meta value builder.
*
* @param clazz the class
Modified: projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/CompositeValueInvocationHandler.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/CompositeValueInvocationHandler.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/CompositeValueInvocationHandler.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -26,11 +26,17 @@
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.lang.reflect.Type;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.WeakHashMap;
+import java.util.Map.Entry;
+import org.jboss.metatype.api.types.MapCompositeMetaType;
import org.jboss.metatype.api.values.CompositeValue;
+import org.jboss.metatype.api.values.MapCompositeValueSupport;
import org.jboss.metatype.api.values.MetaValue;
import org.jboss.metatype.api.values.MetaValueFactory;
import org.jboss.util.UnreachableStatementException;
@@ -80,15 +86,16 @@
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
- if (Object.class.equals(method.getDeclaringClass()))
+ Class<?> declaringClass = method.getDeclaringClass();
+ if (Object.class.equals(declaringClass))
return handleObjectInvocation(method.getName(), args);
- // Map size
+ Type returnType = method.getGenericReturnType();
+ // size
if(method.getName().equals("size"))
return compositeValue.values().size();
MetaValue value = compositeValue.get(getCompositeDataKey(method));
- Type returnType = method.getGenericReturnType();
return factory.unwrap(value, returnType);
}
@@ -161,8 +168,136 @@
return result;
}
- public String toString()
+ /*
+ static class MapCVProxy implements Map<String, Object>
{
- return compositeValue.getMetaType().getTypeName() + "InvocationHandler";
+ private CompositeValue delegate;
+
+ MapCVProxy(CompositeValue delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public void clear()
+ {
+ }
+
+ public boolean containsKey(Object key)
+ {
+ return delegate.containsKey(key.toString());
+ }
+
+ public boolean containsValue(Object value)
+ {
+ if ((value instanceof MetaValue) == false)
+ {
+ value = factory.create(value);
+ }
+ MetaValue mv = MetaValue.class.cast(value);
+ return delegate.containsValue(mv);
+ }
+
+ public Set<Entry<String, Object>> entrySet()
+ {
+ HashSet<Entry<String, MetaValue>> entrySet = new HashSet<Entry<String, MetaValue>>();
+ for(String key : delegate.getMetaType().itemSet())
+ {
+ MetaValue value = delegate.get(key);
+ Map.Entry<String, Object> entry = new MapCVProxyEntry(key, value);
+ entrySet.add(entry);
+ }
+ return entrySet;
+ }
+
+ public MetaValue get(Object key)
+ {
+ return delegate.get(key.toString());
+ }
+
+ public boolean isEmpty()
+ {
+ return delegate.values().size() == 0;
+ }
+
+ public Set<String> keySet()
+ {
+ return delegate.getMetaType().itemSet();
+ }
+
+ public MetaValue put(String key, MetaValue value)
+ {
+ MetaValue old = null;
+ if (delegate instanceof MapCompositeValueSupport)
+ {
+ MapCompositeValueSupport mcvs = (MapCompositeValueSupport) delegate;
+ old = mcvs.get(key);
+ if ((value instanceof MetaValue) == false)
+
+ mcvs.put(key, value);
+ }
+ return old;
+ }
+
+ public void putAll(Map<? extends String, ? extends Object> map)
+ {
+ if (delegate instanceof MapCompositeValueSupport)
+ {
+ MapCompositeValueSupport mcvs = (MapCompositeValueSupport) delegate;
+ for(String key : map.keySet())
+ {
+ Object mv = map.get(key);
+ if ((mv instanceof MetaValue) == false)
+ mv = factory.create(mv);
+ mcvs.put(key, (MetaValue) mv);
+ }
+ }
+ }
+
+ public Object remove(Object key)
+ {
+ if (delegate instanceof MapCompositeValueSupport)
+ {
+ MapCompositeValueSupport mcvs = (MapCompositeValueSupport) delegate;
+ return mcvs.remove(key.toString());
+ }
+ return null;
+ }
+
+ public int size()
+ {
+ return delegate.values().size();
+ }
+
+ public Collection<Object> values()
+ {
+ return delegate.values();
+ }
+
}
+ static class MapCVProxyEntry implements Entry<String, Object>
+ {
+ private String key;
+ private Object value;
+ MapCVProxyEntry(String key, Object value)
+ {
+ this.key = key;
+ this.value = value;
+ }
+ public String getKey()
+ {
+ return key;
+ }
+ public Object getValue()
+ {
+ return value;
+ }
+
+ public Object setValue(Object value)
+ {
+ Object old = value;
+ this.value = value;
+ return old;
+ }
+ }
+ */
}
Modified: projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/mappers/ObjectNameMetaMapper.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/mappers/ObjectNameMetaMapper.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/mappers/ObjectNameMetaMapper.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -104,8 +104,6 @@
for(String key : cv.getMetaType().itemSet())
{
SimpleValue svalue = (SimpleValue) cv.get(key);
- if(svalue == null)
- continue;
String value = (String) svalue.getValue();
if(key.equalsIgnoreCase("domain"))
domain = value;
Modified: projects/jboss-man/trunk/metatype/src/test/java/org/jboss/test/metatype/values/factory/test/CompositeValueFactoryUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/test/java/org/jboss/test/metatype/values/factory/test/CompositeValueFactoryUnitTestCase.java 2009-09-17 10:36:36 UTC (rev 93636)
+++ projects/jboss-man/trunk/metatype/src/test/java/org/jboss/test/metatype/values/factory/test/CompositeValueFactoryUnitTestCase.java 2009-09-17 11:40:17 UTC (rev 93637)
@@ -249,4 +249,30 @@
assertTrue("CV contains propertyReplace", cmv.containsKey("propertyReplace"));
assertTrue("CV contains type", cmv.containsKey("type"));
}
+
+ /**
+ * JBMAN-61, validate proxy for MapCompositeValue unwrapping intercepts the
+ * Map.get(key) calls.
+ */
+ public void testMapCompositeValueProxy()
+ {
+ Properties props = System.getProperties();
+ log.debug(props);
+ // Convert to MetaValue
+ MetaValue propsMV = createMetaValue(props);
+ assertNotNull(propsMV);
+ assertTrue(propsMV instanceof CompositeValue);
+ // Unwrap to excercise the proxy via a Map interface
+ Map map = (Map) unwrapMetaValue(propsMV);
+ assertEquals(props.size(), map.size());
+ assertEquals(props.getProperty("java.runtime.name"), map.get("java.runtime.name"));
+ assertEquals(props.getProperty("java.library.path"), map.get("java.library.path"));
+ assertTrue("java.runtime.name", map.containsKey("java.runtime.name"));
+ assertTrue("java.runtime.name", map.containsValue(props.getProperty("java.runtime.name")));
+ assertFalse(map.isEmpty());
+ assertEquals(map.keySet(), props.keySet());
+ map.put("testMapCompositeValueProxy", "testMapCompositeValueProxy-value");
+ assertTrue("testMapCompositeValueProxy", map.containsKey("java.runtime.name"));
+ assertEquals("testMapCompositeValueProxy-value", map.get("testMapCompositeValueProxy"));
+ }
}
More information about the jboss-cvs-commits
mailing list