[jboss-cvs] JBossAS SVN: r86636 - in projects/jboss-man/branches/Branch_2_1/managed/src: test/java/org/jboss/test/managed/factory/support and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Apr 2 02:32:25 EDT 2009
Author: scott.stark at jboss.org
Date: 2009-04-02 02:32:25 -0400 (Thu, 02 Apr 2009)
New Revision: 86636
Modified:
projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/factory/DeploymentTemplateInfoFactory.java
projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java
projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
Log:
JBMAN-70, DeploymentTemplateInfoFactory needs to honor @MetaMapping
Modified: projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/factory/DeploymentTemplateInfoFactory.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/factory/DeploymentTemplateInfoFactory.java 2009-04-02 06:31:06 UTC (rev 86635)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/main/java/org/jboss/managed/plugins/factory/DeploymentTemplateInfoFactory.java 2009-04-02 06:32:25 UTC (rev 86636)
@@ -46,11 +46,15 @@
import org.jboss.managed.plugins.WritethroughManagedPropertyImpl;
import org.jboss.managed.spi.factory.ManagedPropertyConstraintsPopulator;
import org.jboss.managed.spi.factory.ManagedPropertyConstraintsPopulatorFactory;
+import org.jboss.metatype.api.annotations.MetaMapping;
+import org.jboss.metatype.api.annotations.MetaMappingFactory;
import org.jboss.metatype.api.types.ArrayMetaType;
import org.jboss.metatype.api.types.CollectionMetaType;
import org.jboss.metatype.api.types.MetaType;
import org.jboss.metatype.api.types.MetaTypeFactory;
import org.jboss.metatype.api.values.MetaValueFactory;
+import org.jboss.metatype.spi.values.MetaMapper;
+import org.jboss.metatype.spi.values.MetaMapperFactory;
import org.jboss.reflect.spi.TypeInfo;
/**
@@ -252,21 +256,63 @@
if (managementProperty != null)
managed = managementProperty.managed();
- MetaType metaType;
- if (managed)
+ // The managed property type
+ MetaType metaType = null;
+ MetaMapper<?> metaMapper = null;
+ MetaMapping metaMapping = propertyInfo.getUnderlyingAnnotation(MetaMapping.class);
+ MetaMappingFactory metaMappingFactory = propertyInfo.getUnderlyingAnnotation(MetaMappingFactory.class);
+ if(metaMappingFactory != null)
{
- TypeInfo typeInfo = propertyInfo.getType();
- if(typeInfo.isArray())
- metaType = new ArrayMetaType(1, AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
- else if (typeInfo.isCollection())
- metaType = new CollectionMetaType(typeInfo.getName(), AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
- else
- metaType = AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE;
+ Class<? extends MetaMapperFactory<?>> mmfClass = metaMappingFactory.value();
+ try
+ {
+ MetaMapperFactory<?> mmf = mmfClass.newInstance();
+ String[] args = metaMappingFactory.args();
+ if(args.length > 0)
+ metaMapper = mmf.newInstance(args);
+ else
+ metaMapper = mmf.newInstance();
+ }
+ catch(Exception e)
+ {
+ log.debug("Failed to create MetaMapperFactory: "+metaMappingFactory, e);
+ }
}
- else
+ if(metaMapping != null)
{
- metaType = metaTypeFactory.resolve(propertyInfo.getType());
+ // Use the mapping for the type
+ Class<? extends MetaMapper<?>> mapperClass = metaMapping.value();
+ try
+ {
+ metaMapper = mapperClass.newInstance();
+ }
+ catch(Exception e)
+ {
+ log.debug("Failed to create MetaMapper: "+metaMapping, e);
+ }
}
+ if(metaMapper != null)
+ metaType = metaMapper.getMetaType();
+
+ // Determine meta type based on property type
+ if(metaType == null)
+ {
+ if (managed)
+ {
+ TypeInfo typeInfo = propertyInfo.getType();
+ if(typeInfo.isArray())
+ metaType = new ArrayMetaType(1, AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
+ else if (typeInfo.isCollection())
+ metaType = new CollectionMetaType(typeInfo.getName(), AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
+ else
+ metaType = AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE;
+ }
+ else
+ {
+ metaType = metaTypeFactory.resolve(propertyInfo.getType());
+ }
+ }
+
fields.setField(Fields.META_TYPE, metaType);
if (propAnnotations.isEmpty() == false)
fields.setField(Fields.ANNOTATIONS, propAnnotations);
Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java 2009-04-02 06:31:06 UTC (rev 86635)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java 2009-04-02 06:32:25 UTC (rev 86636)
@@ -46,7 +46,7 @@
private ObjectName nameAsProperties;
private ObjectName nameAsDefault;
- @ManagementProperty()
+ @ManagementProperty(includeInTemplate=true)
@MetaMapping(StringObjectNameMetaMapper.class)
public ObjectName getNameAsString()
{
Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java 2009-04-02 06:31:06 UTC (rev 86635)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/DeploymentTemplateInfoUnitTestCase.java 2009-04-02 06:32:25 UTC (rev 86636)
@@ -29,10 +29,12 @@
import org.jboss.managed.api.ManagedObject;
import org.jboss.managed.api.ManagedProperty;
import org.jboss.managed.plugins.factory.DeploymentTemplateInfoFactory;
+import org.jboss.metatype.api.types.SimpleMetaType;
import org.jboss.metatype.api.values.MetaValue;
import org.jboss.metatype.api.values.SimpleValueSupport;
import org.jboss.test.managed.factory.AbstractManagedObjectFactoryTest;
import org.jboss.test.managed.factory.support.JmsDestinationTemplateInfo;
+import org.jboss.test.managed.factory.support.ObjectNameBean;
import org.jboss.test.managed.factory.support.template.ManagementObjectExplicit;
@@ -89,6 +91,22 @@
assertEquals("testReflectionOfExplicit", info.getDescription());
assertTrue("property1 is in template info", info.getProperties().containsKey("property1"));
}
+ /**
+ * Validate that the template factory honors the MetaMappings for ObjectName
+ */
+ public void testReflectionOfObjectName()
+ throws Exception
+ {
+ DeploymentTemplateInfoFactory factory = new DeploymentTemplateInfoFactory();
+ DeploymentTemplateInfo info = factory.createTemplateInfo(ObjectNameBean.class, "testReflectionOfObjectName", "testReflectionOfObjectName");
+ log.info(info);
+ assertEquals("testReflectionOfObjectName", info.getName());
+ assertEquals("testReflectionOfObjectName", info.getDescription());
+ Map<String, ManagedProperty> props = info.getProperties();
+ ManagedProperty nameAsString = props.get("nameAsString");
+ assertNotNull(nameAsString);
+ assertEquals(SimpleMetaType.STRING, nameAsString.getMetaType());
+ }
public void testCopy()
{
More information about the jboss-cvs-commits
mailing list