[jboss-cvs] JBossAS SVN: r68446 - in trunk/connector/src/main/org/jboss/resource/deployers: management and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Dec 20 00:27:42 EST 2007
Author: alex.loubyansky at jboss.com
Date: 2007-12-20 00:27:42 -0500 (Thu, 20 Dec 2007)
New Revision: 68446
Added:
trunk/connector/src/main/org/jboss/resource/deployers/management/XADataSourceDeploymentMetaDataBuilder.java
Modified:
trunk/connector/src/main/org/jboss/resource/deployers/ManagedConnectionFactoryParserDeployer.java
trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplate.java
trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplateInfo.java
Log:
JBAS-4671 represent xa-connection-properties as a Map<String, String> in management interface
Modified: trunk/connector/src/main/org/jboss/resource/deployers/ManagedConnectionFactoryParserDeployer.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/deployers/ManagedConnectionFactoryParserDeployer.java 2007-12-20 04:10:17 UTC (rev 68445)
+++ trunk/connector/src/main/org/jboss/resource/deployers/ManagedConnectionFactoryParserDeployer.java 2007-12-20 05:27:42 UTC (rev 68446)
@@ -35,7 +35,9 @@
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup;
import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.XADataSourceDeploymentMetaData;
import org.jboss.resource.metadata.repository.JCAMetaDataRepository;
+import org.jboss.resource.deployers.management.XADataSourceDeploymentMetaDataBuilder;
import org.jboss.virtual.VirtualFile;
import org.jboss.managed.api.ManagedObject;
import org.jboss.managed.api.factory.ManagedObjectFactory;
@@ -58,6 +60,7 @@
/** The repository */
private JCAMetaDataRepository repository;
+ private ManagedObjectFactory moFactory;
/**
* Create a new ManagedConnectionFactoryParserDeployer.
@@ -67,6 +70,9 @@
super(ManagedConnectionFactoryDeploymentGroup.class);
setIncludeDeploymentFile(true);
setBuildManagedObject(true);
+
+ moFactory = ManagedObjectFactoryBuilder.create();
+ moFactory.setBuilder(XADataSourceDeploymentMetaData.class, new XADataSourceDeploymentMetaDataBuilder());
}
/**
@@ -139,16 +145,17 @@
ManagedConnectionFactoryDeploymentGroup deployment = unit.getAttachment(getOutput());
if (deployment != null)
{
- ManagedObjectFactory factory = ManagedObjectFactoryBuilder.create();
if(deployment.getDeployments() != null)
{
for(ManagedConnectionFactoryDeploymentMetaData mcf : deployment.getDeployments())
{
- ManagedObject mo = factory.initManagedObject(mcf, null, null);
+ ManagedObject mo = moFactory.initManagedObject(mcf, null, null);
if (mo != null)
+ {
// mcf.getClass().getName(), mo.getName() returns JndiName
// which won't work in the DsDataSourceTemplateInfo
managedObjects.put(mcf.getClass().getName(), mo);
+ }
}
}
}
Modified: trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplate.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplate.java 2007-12-20 04:10:17 UTC (rev 68445)
+++ trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplate.java 2007-12-20 05:27:42 UTC (rev 68446)
@@ -91,6 +91,7 @@
ManagedConnectionFactoryDeploymentMetaData mcf;
ManagedObjectFactory mof = ManagedObjectFactoryBuilder.create();
+ mof.setBuilder(XADataSourceDeploymentMetaData.class, new XADataSourceDeploymentMetaDataBuilder());
ManagedObject cfMO;
String rootElementName = "datasources";
Modified: trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplateInfo.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplateInfo.java 2007-12-20 04:10:17 UTC (rev 68445)
+++ trunk/connector/src/main/org/jboss/resource/deployers/management/DsDataSourceTemplateInfo.java 2007-12-20 05:27:42 UTC (rev 68446)
@@ -23,6 +23,7 @@
import java.util.Map;
import java.util.List;
+import java.lang.reflect.Type;
import org.jboss.managed.api.Fields;
import org.jboss.managed.plugins.DefaultFieldsImpl;
@@ -124,11 +125,27 @@
ManagedObjectImpl mo = new ManagedObjectImpl(XADataSourceDeploymentMetaData.class.getName());
addDsProperties(mo);
addManagedProperty("xa-datasource-class", "The xa datasource class name", true, SimpleMetaType.STRING, mo);
- addManagedProperty("xa-datasource-properties", "The xa datasource properties", false, MetaTypeFactory.getInstance().resolve(List.class), mo);
+
+ Type mapType;
+ try
+ {
+ mapType = getClass().getMethod("compositeValueMap").getGenericReturnType();
+ }
+ catch(NoSuchMethodException e)
+ {
+ throw new IllegalStateException("Failed to find compoditeValueMap method.");
+ }
+ addManagedProperty("xa-datasource-properties", "The xa datasource properties", false, MetaTypeFactory.getInstance().resolve(mapType), mo);
+
addManagedProperty("url-property", "The URL property", true, SimpleMetaType.STRING, mo);
addManagedProperty("xa-resource-timeout", "The XA resource timeout", true, SimpleMetaType.INTEGER, new Integer(0), mo);
}
+ public Map<String, String> compositeValueMap()
+ {
+ return null;
+ }
+
private void createLocalTxDsTemplate()
{
ManagedObjectImpl mo = new ManagedObjectImpl(LocalDataSourceDeploymentMetaData.class.getName());
Added: trunk/connector/src/main/org/jboss/resource/deployers/management/XADataSourceDeploymentMetaDataBuilder.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/deployers/management/XADataSourceDeploymentMetaDataBuilder.java (rev 0)
+++ trunk/connector/src/main/org/jboss/resource/deployers/management/XADataSourceDeploymentMetaDataBuilder.java 2007-12-20 05:27:42 UTC (rev 68446)
@@ -0,0 +1,127 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.resource.deployers.management;
+
+import java.io.Serializable;
+import java.util.Map;
+import java.util.List;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.lang.reflect.Type;
+import java.lang.reflect.UndeclaredThrowableException;
+import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.managed.api.ManagedProperty;
+import org.jboss.managed.plugins.factory.AbstractManagedObjectFactory;
+import org.jboss.managed.plugins.ManagedObjectImpl;
+import org.jboss.metatype.api.values.MetaValue;
+import org.jboss.metatype.api.values.MetaValueFactory;
+import org.jboss.resource.metadata.mcf.XADataSourceDeploymentMetaData;
+import org.jboss.resource.metadata.mcf.XAConnectionPropertyMetaData;
+
+/**
+ * @author <a href="mailto:alex at jboss.org">Alexey Loubyansky</a>
+ * @version <tt>$Revision: $</tt>
+ */
+public class XADataSourceDeploymentMetaDataBuilder
+ extends AbstractManagedObjectFactory
+{
+ private final Type mapType;
+ private MetaValueFactory metaValueFactory;
+
+ public XADataSourceDeploymentMetaDataBuilder()
+ {
+ metaValueFactory = MetaValueFactory.getInstance();
+
+ try
+ {
+ mapType = getClass().getMethod("compositeValueMap").getGenericReturnType();
+ }
+ catch(NoSuchMethodException e)
+ {
+ throw new IllegalStateException("Failed to find compoditeValueMap method.");
+ }
+ }
+
+ public MetaValue getValue(BeanInfo beanInfo, ManagedProperty property, Serializable object)
+ {
+ if("xa-datasource-properties".equals(property.getName()))
+ {
+ MetaValue metaValue = null;
+ XADataSourceDeploymentMetaData ds = (XADataSourceDeploymentMetaData)object;
+ List<XAConnectionPropertyMetaData> list = ds.getXADataSourceProperties();
+ Map<String, String> map = new HashMap<String, String>();
+ if(list != null)
+ {
+ for(XAConnectionPropertyMetaData prop : list)
+ {
+ map.put(prop.getName(), prop.getValue());
+ }
+ metaValue = metaValueFactory.create(map, mapType);
+ }
+ return metaValue;
+ }
+ return super.getValue(beanInfo, property, object);
+ }
+
+ public void setValue(BeanInfo beanInfo, ManagedProperty property, Serializable object, MetaValue value)
+ {
+ if("xa-datasource-properties".equals(property.getName()))
+ {
+ String propName = getPropertyName(property);
+ PropertyInfo propertyInfo = beanInfo.getProperty(propName);
+ Map<String, String> map = (Map<String, String>)metaValueFactory.unwrap(value, mapType);
+
+ List<XAConnectionPropertyMetaData> list = null;
+ if(map != null)
+ {
+ list = new ArrayList<XAConnectionPropertyMetaData>();
+ for(String name : map.keySet())
+ {
+ XAConnectionPropertyMetaData xaProp = new XAConnectionPropertyMetaData();
+ xaProp.setName(name);
+ xaProp.setValue(map.get(name));
+ list.add(xaProp);
+ }
+ }
+ else
+ new Exception("setValue> " + property.getName() + "=" + value).printStackTrace();
+
+ try
+ {
+ propertyInfo.set(object, list);
+ }
+ catch (Throwable t)
+ {
+ throw new UndeclaredThrowableException(t);
+ }
+ System.out.println("setValue> " + property.getName() + "=" + list);
+ }
+ else
+ super.setValue(beanInfo, property, object, value);
+ }
+
+ public Map<String, String> compositeValueMap()
+ {
+ return null;
+ }
+}
More information about the jboss-cvs-commits
mailing list