You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2011/02/28 00:56:23 UTC
svn commit: r1075183 [1/3] - in /geronimo/sandbox/djencks/txmanager: ./
connector-itests/ geronimo-connector-builder-1_6/
geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/
geronimo-connector-builder-1_6/src/main/jav...
Author: djencks
Date: Sun Feb 27 23:56:21 2011
New Revision: 1075183
URL: http://svn.apache.org/viewvc?rev=1075183&view=rev
Log:
only compile the working classes in builder. Separate out the xml to info tree code and pax-exam-test it
Added:
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/InfoBuilder.java
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/AdminobjectInstanceType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/AdminobjectType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ConfigPropertySettingType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ConnectionDefinitionType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ConnectiondefinitionInstanceType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ConnectionmanagerType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ConnectorType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/DescriptionType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/EmptyType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/JaxbUtil.java
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ObjectFactory.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/OutboundResourceadapterType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/PartitionedpoolType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ResourceadapterInstanceType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/ResourceadapterType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/SinglepoolType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/XatransactionType.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/plan/package-info.java (with props)
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/test/java/org/apache/geronimo/connector/deployment/InfoBuilderTest.java
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/test/script/copy-main.xml
- copied, changed from r1074356, geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/test/script/test-setup.xml
Modified:
geronimo/sandbox/djencks/txmanager/connector-itests/pom.xml
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/pom.xml
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/xsd/geronimo-connector-1.2.xsd
geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/test/resources/connector_1_6/geronimo-ra.xml
geronimo/sandbox/djencks/txmanager/geronimo-connector/src/main/java/org/apache/geronimo/connector/model/ManagedConnectionFactoryInfo.java
geronimo/sandbox/djencks/txmanager/geronimo-connector/src/main/java/org/apache/geronimo/connector/model/ResourceAdapterInfo.java
geronimo/sandbox/djencks/txmanager/pom.xml
Modified: geronimo/sandbox/djencks/txmanager/connector-itests/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/txmanager/connector-itests/pom.xml?rev=1075183&r1=1075182&r2=1075183&view=diff
==============================================================================
--- geronimo/sandbox/djencks/txmanager/connector-itests/pom.xml (original)
+++ geronimo/sandbox/djencks/txmanager/connector-itests/pom.xml Sun Feb 27 23:56:21 2011
@@ -117,7 +117,6 @@
<dependency>
<groupId>org.ops4j.pax.swissbox</groupId>
<artifactId>pax-swissbox-tinybundles</artifactId>
- <version>1.3.1</version>
<scope>test</scope>
</dependency>
Modified: geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/pom.xml?rev=1075183&r1=1075182&r2=1075183&view=diff
==============================================================================
--- geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/pom.xml (original)
+++ geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/pom.xml Sun Feb 27 23:56:21 2011
@@ -23,9 +23,9 @@
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.geronimo.plugins</groupId>
- <artifactId>connector-1_6</artifactId>
- <version>3.0-SNAPSHOT</version>
+ <groupId>org.apache.geronimo.components</groupId>
+ <artifactId>geronimo-txmanager-parent</artifactId>
+ <version>3.1.1-SNAPSHOT</version>
</parent>
<groupId>org.apache.geronimo.modules</groupId>
@@ -35,127 +35,238 @@
<dependencies>
<dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-connector-1_6</artifactId>
- <version>${project.version}</version>
+ <groupId>org.apache.geronimo.components</groupId>
+ <artifactId>geronimo-connector</artifactId>
</dependency>
- <!--<dependency>-->
- <!--<groupId>org.apache.geronimo.framework</groupId>-->
- <!--<artifactId>geronimo-deploy-config</artifactId>-->
- <!--<version>${project.version}</version>-->
- <!--</dependency>-->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-j2ee-connector_1.6_spec</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-naming-builder</artifactId>
- <version>${project.version}</version>
- </dependency>
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.modules</groupId>-->
+ <!--<artifactId>geronimo-naming-builder</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
<dependency>
<groupId>org.apache.geronimo.framework</groupId>
<artifactId>geronimo-common</artifactId>
- <version>${project.version}</version>
+ <version>3.0-SNAPSHOT</version>
</dependency>
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.framework</groupId>-->
+ <!--<artifactId>geronimo-management</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
<dependency>
<groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-deployment</artifactId>
- <version>${project.version}</version>
+ <artifactId>geronimo-naming</artifactId>
+ <version>3.0-SNAPSHOT</version>
</dependency>
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.framework</groupId>-->
+ <!--<artifactId>geronimo-service-builder</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.framework</groupId>-->
+ <!--<artifactId>geronimo-system</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
+
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-deploy-config</artifactId>
- <version>${project.version}</version>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-jee</artifactId>
+ <version>3.2-SNAPSHOT</version>
</dependency>
+
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.modules</groupId>-->
+ <!--<artifactId>geronimo-j2ee</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.modules</groupId>-->
+ <!--<artifactId>geronimo-j2ee-builder</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.modules</groupId>-->
+ <!--<artifactId>geronimo-j2ee-schema</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--</dependency>-->
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-kernel</artifactId>
- <version>${project.version}</version>
+ <groupId>org.apache.geronimo.components</groupId>
+ <artifactId>geronimo-transaction</artifactId>
</dependency>
+
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.modules</groupId>-->
+ <!--<artifactId>geronimo-test-ddbean</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--<scope>test</scope>-->
+ <!--</dependency>-->
+
+ <!--<dependency>-->
+ <!--<groupId>org.apache.geronimo.framework</groupId>-->
+ <!--<artifactId>geronimo-kernel</artifactId>-->
+ <!--<version>${project.version}</version>-->
+ <!--<classifier>tests</classifier>-->
+ <!--<scope>test</scope>-->
+ <!--</dependency>-->
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-management</artifactId>
- <version>${project.version}</version>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <version>1.1.1</version>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-naming</artifactId>
- <version>${project.version}</version>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-finder</artifactId>
+ <version>3.8-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-service-builder</artifactId>
- <version>${project.version}</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-system</artifactId>
- <version>${project.version}</version>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.openejb</groupId>
- <artifactId>openejb-jee</artifactId>
- <version>${openejbVersion}</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-j2ee</artifactId>
- <version>${project.version}</version>
+ <groupId>org.apache.geronimo.components</groupId>
+ <artifactId>geronimo-mock-ra</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-j2ee-builder</artifactId>
- <version>${project.version}</version>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-j2ee-schema</artifactId>
- <version>${project.version}</version>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-container-default</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-transaction-1_6</artifactId>
- <version>${project.version}</version>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-junit-extender-impl</artifactId>
+ <scope>test</scope>
</dependency>
-
<dependency>
- <groupId>org.apache.geronimo.modules</groupId>
- <artifactId>geronimo-test-ddbean</artifactId>
- <version>${project.version}</version>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-api</artifactId>
<scope>test</scope>
</dependency>
-
<dependency>
- <groupId>org.apache.geronimo.framework</groupId>
- <artifactId>geronimo-kernel</artifactId>
- <version>${project.version}</version>
- <classifier>tests</classifier>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-service</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.url</groupId>
+ <artifactId>pax-url-mvn</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <artifactId>geronimo-validation_1.0_spec</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.xbean</groupId>
- <artifactId>xbean-finder</artifactId>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jta_1.1_spec</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.swissbox</groupId>
+ <artifactId>pax-swissbox-tinybundles</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>xmlbeans-maven-plugin</artifactId>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>maven-paxexam-plugin</artifactId>
+ <version>1.2.3</version>
+ <executions>
+ <execution>
+ <id>generate-config</id>
+ <goals>
+ <goal>generate-depends-file</goal>
+ </goals>
+ <configuration>
+ <outputFile>${project.build.directory}/test-classes/META-INF/maven/dependencies.properties</outputFile>
+ </configuration>
+ </execution>
+ </executions>
</plugin>
-
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <includes>
+ <include>org/apache/geronimo/connector/deployment/plan/*</include>
+ <include>org/apache/geronimo/connector/deployment/InfoBuilder.java</include>
+ </includes>
+ <!--<excludes>-->
+ <!--<exclude>**/*/java</exclude>-->
+ <!--</excludes>-->
+ <testIncludes>
+ <include>org/apache/geronimo/connector/deployment/InfoBuilderTest.java</include>
+ </testIncludes>
+ <!--<testExcludes>-->
+ <!--<exclude>*</exclude>-->
+ <!--</testExcludes>-->
+ </configuration>
+ </plugin>
+ <!--<plugin>-->
+ <!--<groupId>org.codehaus.mojo</groupId>-->
+ <!--<artifactId>jaxb2-maven-plugin</artifactId>-->
+ <!--<version>1.3</version>-->
+ <!--<executions>-->
+ <!--<execution>-->
+ <!--<goals>-->
+ <!--<goal>xjc</goal>-->
+ <!--</goals>-->
+ <!--</execution>-->
+ <!--</executions>-->
+ <!--<configuration>-->
+ <!--<schemaDirectory>src/main/xsd</schemaDirectory>-->
+ <!--<packageName>org.apache.geronimo.connector.deployment.plan</packageName>-->
+ <!--<!–<schemaListFileName>src/main/xsdlist/xsdlist.txt</schemaListFileName>–>-->
+ <!--<extension>true</extension>-->
+ <!--</configuration>-->
+ <!--</plugin>-->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
@@ -163,19 +274,6 @@
<instructions>
<!--packages containing "impl" or "internal" are excluded by default -->
<Import-Package>
- org.apache.xmlbeans.impl.schema;version="2.4",
- org.apache.geronimo.deployment.xbeans.impl,
- org.apache.geronimo.deployment.javabean.xbeans.impl,
- org.apache.geronimo.deployment.xbeans,
- org.apache.geronimo.deployment.javabean.xbeans,
- org.apache.geronimo.deployment.dconfigbean,
- org.apache.geronimo.deployment.service,
- org.apache.geronimo.deployment.service.jsr88,
- org.apache.geronimo.xbeans.geronimo.naming,
- org.apache.geronimo.xbeans.geronimo.naming.impl,
- org.apache.geronimo.naming.deployment,
- org.apache.geronimo.naming.deployment.jsr88,
- !org.omg.CORBA,
*
</Import-Package>
<Export-Package>
@@ -183,15 +281,31 @@
org.apache.geronimo.connector.deployment.dconfigbean,
org.apache.geronimo.connector.deployment.jsr88,
org.apache.geronimo.datasource.deployment,
- org.apache.geronimo.xbeans.connector,
- org.apache.geronimo.xbeans.connector.impl
</Export-Package>
<DynamicImport-Package>schemaorg_apache_xmlbeans.*,
- org.omg.CORBA</DynamicImport-Package>
+ org.omg.CORBA
+ </DynamicImport-Package>
<!--<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>-->
</instructions>
</configuration>
</plugin>
+ <!--<plugin>-->
+ <!--<groupId>org.apache.maven.plugins</groupId>-->
+ <!--<artifactId>maven-antrun-plugin</artifactId>-->
+ <!--<executions>-->
+ <!--<execution>-->
+ <!--<phase>process-test-resources</phase>-->
+ <!--<configuration>-->
+ <!--<tasks>-->
+ <!--<ant antfile="${pom.basedir}/src/test/script/test-setup.xml"/>-->
+ <!--</tasks>-->
+ <!--</configuration>-->
+ <!--<goals>-->
+ <!--<goal>run</goal>-->
+ <!--</goals>-->
+ <!--</execution>-->
+ <!--</executions>-->
+ <!--</plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
@@ -200,7 +314,7 @@
<phase>process-test-resources</phase>
<configuration>
<tasks>
- <ant antfile="${pom.basedir}/src/test/script/test-setup.xml" />
+ <ant antfile="${pom.basedir}/src/test/script/copy-main.xml"/>
</tasks>
</configuration>
<goals>
Modified: geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java?rev=1075183&r1=1075182&r2=1075183&view=diff
==============================================================================
--- geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java (original)
+++ geronimo/sandbox/djencks/txmanager/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java Sun Feb 27 23:56:21 2011
@@ -20,6 +20,7 @@ import java.beans.Introspector;
import java.beans.PropertyEditor;
import java.io.Externalizable;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
@@ -49,28 +50,25 @@ import javax.resource.spi.ConnectionDefi
import javax.resource.spi.ManagedConnectionFactory;
import javax.resource.spi.ResourceAdapter;
import javax.xml.bind.JAXBException;
-import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.common.propertyeditor.PropertyEditors;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoPool;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoTransactions;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PartitionedPool;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionLog;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
-import org.apache.geronimo.connector.outbound.connectionmanagerconfig.XATransactions;
-import org.apache.geronimo.connector.wrapper.ActivationSpecWrapperGBean;
-import org.apache.geronimo.connector.wrapper.AdminObjectWrapperGBean;
-import org.apache.geronimo.connector.wrapper.JCAResourceImplGBean;
-import org.apache.geronimo.connector.wrapper.ResourceAdapterImplGBean;
-import org.apache.geronimo.connector.wrapper.ResourceAdapterModuleImplGBean;
-import org.apache.geronimo.connector.wrapper.ResourceAdapterWrapperGBean;
-import org.apache.geronimo.connector.wrapper.outbound.GenericConnectionManagerGBean;
-import org.apache.geronimo.connector.wrapper.outbound.JCAConnectionFactoryImpl;
-import org.apache.geronimo.connector.wrapper.outbound.ManagedConnectionFactoryWrapper;
-import org.apache.geronimo.connector.wrapper.outbound.ManagedConnectionFactoryWrapperGBean;
+import org.apache.geronimo.connector.deployment.plan.AdminobjectInstanceType;
+import org.apache.geronimo.connector.deployment.plan.AdminobjectType;
+import org.apache.geronimo.connector.deployment.plan.ConfigPropertySettingType;
+import org.apache.geronimo.connector.deployment.plan.ConnectionDefinitionType;
+import org.apache.geronimo.connector.deployment.plan.ConnectiondefinitionInstanceType;
+import org.apache.geronimo.connector.deployment.plan.ConnectionmanagerType;
+import org.apache.geronimo.connector.deployment.plan.ConnectorType;
+import org.apache.geronimo.connector.deployment.plan.OutboundResourceadapterType;
+import org.apache.geronimo.connector.deployment.plan.PartitionedpoolType;
+import org.apache.geronimo.connector.deployment.plan.ResourceadapterInstanceType;
+import org.apache.geronimo.connector.deployment.plan.ResourceadapterType;
+import org.apache.geronimo.connector.deployment.plan.SinglepoolType;
+import org.apache.geronimo.connector.model.AdminObjectInfo;
+import org.apache.geronimo.connector.model.ManagedConnectionFactoryInfo;
+import org.apache.geronimo.connector.model.ResourceAdapterInfo;
+import org.apache.geronimo.connector.model.ResourceAdapterModuleInfo;
import org.apache.geronimo.deployment.ModuleIDBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
@@ -84,10 +82,7 @@ import org.apache.geronimo.gbean.GAttrib
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
-import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.MultiGBeanInfoFactory;
-import org.apache.geronimo.gbean.annotation.AnnotationGBeanInfoBuilder;
-import org.apache.geronimo.gbean.annotation.GBean;
import org.apache.geronimo.gbean.annotation.ParamAttribute;
import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.gbean.annotation.ParamSpecial;
@@ -100,31 +95,15 @@ import org.apache.geronimo.j2ee.deployme
import org.apache.geronimo.j2ee.deployment.ModuleBuilderExtension;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
-import org.apache.geronimo.kernel.GBeanNotFoundException;
import org.apache.geronimo.kernel.Naming;
-import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.config.ConfigurationStore;
import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.kernel.util.FileUtils;
import org.apache.geronimo.kernel.util.JarUtils;
import org.apache.geronimo.management.JCAConnectionFactory;
import org.apache.geronimo.management.geronimo.JCAAdminObject;
import org.apache.geronimo.management.geronimo.JCAResourceAdapter;
import org.apache.geronimo.management.geronimo.ResourceAdapterModule;
import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
-import org.apache.geronimo.schema.SchemaConversionUtils;
-import org.apache.geronimo.xbeans.connector.GerAdminobjectInstanceType;
-import org.apache.geronimo.xbeans.connector.GerAdminobjectType;
-import org.apache.geronimo.xbeans.connector.GerConfigPropertySettingType;
-import org.apache.geronimo.xbeans.connector.GerConnectionDefinitionType;
-import org.apache.geronimo.xbeans.connector.GerConnectiondefinitionInstanceType;
-import org.apache.geronimo.xbeans.connector.GerConnectionmanagerType;
-import org.apache.geronimo.xbeans.connector.GerConnectorDocument;
-import org.apache.geronimo.xbeans.connector.GerConnectorType;
-import org.apache.geronimo.xbeans.connector.GerPartitionedpoolType;
-import org.apache.geronimo.xbeans.connector.GerResourceadapterInstanceType;
-import org.apache.geronimo.xbeans.connector.GerResourceadapterType;
-import org.apache.geronimo.xbeans.connector.GerSinglepoolType;
import org.apache.openejb.jee.ActivationSpec;
import org.apache.openejb.jee.AdminObject;
import org.apache.openejb.jee.ConfigProperty;
@@ -153,12 +132,11 @@ import org.xml.sax.SAXException;
* @version $Rev:385659 $ $Date$
*/
-@GBean(j2eeType = NameFactory.MODULE_BUILDER)
-public class ConnectorModuleBuilder implements ModuleBuilder, ActivationSpecInfoLocator, GBeanLifecycle {
+public class ConnectorModuleBuilder// implements ModuleBuilder
+{
private static final Logger log = LoggerFactory.getLogger(ConnectorModuleBuilder.class);
- private static QName CONNECTOR_QNAME = GerConnectorDocument.type.getDocumentElementName();
- static final String GERCONNECTOR_NAMESPACE = CONNECTOR_QNAME.getNamespaceURI();
+// static final String GERCONNECTOR_NAMESPACE = CONNECTOR_QNAME.getNamespaceURI();
private static final Map<String, String> NAMESPACE_UPDATES = new HashMap<String, String>();
public static final String OSGI_JNDI_SERVICE_NAME = "osgi.jndi.service.name";
@@ -168,27 +146,6 @@ public class ConnectorModuleBuilder impl
// NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/j2ee/connector-1.2", "http://geronimo.apache.org/xml/ns/j2ee/connector-1.3");
}
- private static final Map<String, Class> TYPE_LOOKUP = new HashMap<String, Class>();
-
- static {
- TYPE_LOOKUP.put("byte", Byte.class);
- TYPE_LOOKUP.put(Byte.class.getName(), Byte.class);
- TYPE_LOOKUP.put("int", Integer.class);
- TYPE_LOOKUP.put(Integer.class.getName(), Integer.class);
- TYPE_LOOKUP.put("short", Short.class);
- TYPE_LOOKUP.put(Short.class.getName(), Short.class);
- TYPE_LOOKUP.put("long", Long.class);
- TYPE_LOOKUP.put(Long.class.getName(), Long.class);
- TYPE_LOOKUP.put("float", Float.class);
- TYPE_LOOKUP.put(Float.class.getName(), Float.class);
- TYPE_LOOKUP.put("double", Double.class);
- TYPE_LOOKUP.put(Double.class.getName(), Double.class);
- TYPE_LOOKUP.put("boolean", Boolean.class);
- TYPE_LOOKUP.put(Boolean.class.getName(), Boolean.class);
- TYPE_LOOKUP.put("char", Character.class);
- TYPE_LOOKUP.put(Character.class.getName(), Character.class);
- TYPE_LOOKUP.put(String.class.getName(), String.class);
- }
private final int defaultMaxSize;
private final int defaultMinSize;
@@ -197,11 +154,10 @@ public class ConnectorModuleBuilder impl
private final boolean defaultXATransactionCaching;
private final boolean defaultXAThreadCaching;
private final Environment defaultEnvironment;
- private final NamespaceDrivenBuilderCollection serviceBuilders;
private final String defaultWorkManagerName;
private final PackageAdmin packageAdmin;
- private final Collection<ModuleBuilderExtension> moduleBuilderExtensions;
+// private final Collection<ModuleBuilderExtension> moduleBuilderExtensions;
public ConnectorModuleBuilder(@ParamAttribute(name = "defaultEnvironment") Environment defaultEnvironment,
@ParamAttribute(name = "defaultMaxSize") int defaultMaxSize,
@@ -223,25 +179,11 @@ public class ConnectorModuleBuilder impl
this.defaultXATransactionCaching = defaultXATransactionCaching;
this.defaultXAThreadCaching = defaultXAThreadCaching;
this.defaultWorkManagerName = defaultWorkManagerName;
- this.moduleBuilderExtensions = moduleBuilderExtensions == null ? new ArrayList<ModuleBuilderExtension>() : moduleBuilderExtensions;
- this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders);
+// this.moduleBuilderExtensions = moduleBuilderExtensions == null ? new ArrayList<ModuleBuilderExtension>() : moduleBuilderExtensions;
+// this.serviceBuilders = new NamespaceDrivenBuilderCollection(serviceBuilders);
ServiceReference sr = bundleContext.getServiceReference(PackageAdmin.class.getName());
packageAdmin = (PackageAdmin) bundleContext.getService(sr);
}
- public void doStart() throws Exception {
- XmlBeansUtil.registerNamespaceUpdates(NAMESPACE_UPDATES);
- }
-
- @Override
- public void doStop() {
- XmlBeansUtil.unregisterNamespaceUpdates(NAMESPACE_UPDATES);
- }
-
- @Override
- public void doFail() {
- doStop();
- }
-
@Override
public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
return null;
@@ -301,30 +243,34 @@ public class ConnectorModuleBuilder impl
throw new DeploymentException("Encountered unknown error parsing the ra.xml file: " + specDDUrl.toExternalForm(), e);
}
}
- GerConnectorType gerConnector = null;
- try {
+ ConnectorType gerConnector = null;
+// try {
// load the geronimo connector plan from either the supplied plan or from the earFile
try {
- if (plan instanceof XmlObject) {
- gerConnector = (GerConnectorType) SchemaConversionUtils.getNestedObjectAsType((XmlObject) plan,
- CONNECTOR_QNAME,
- GerConnectorType.type);
- } else {
- GerConnectorDocument gerConnectorDoc;
- ArrayList errors = new ArrayList();
+// if (plan instanceof XmlObject) {
+// gerConnector = (GerConnectorType) SchemaConversionUtils.getNestedObjectAsType((XmlObject) plan,
+// CONNECTOR_QNAME,
+// GerConnectorType.type);
+// } else {
+ InputStream in;
if (plan != null) {
- gerConnectorDoc = GerConnectorDocument.Factory.parse((File) plan, XmlBeansUtil.createXmlOptions(errors));
+ in = new FileInputStream((File) plan);
} else {
URL path = JarUtils.createJarURL(moduleFile, "META-INF/geronimo-ra.xml");
- gerConnectorDoc = GerConnectorDocument.Factory.parse(path, XmlBeansUtil.createXmlOptions(errors));
- }
- if (errors.size() > 0) {
- throw new DeploymentException("Could not parse connector doc: " + errors);
- }
- if (gerConnectorDoc != null) {
- gerConnector = gerConnectorDoc.getConnector();
+ in = path.openStream();
}
+ try {
+ gerConnector = (ConnectorType) JaxbJavaee.unmarshal(ConnectorType.class, in, false);
+ } finally {
+ in.close();
}
+// }
+ } catch (ParserConfigurationException e) {
+
+ } catch (SAXException e) {
+
+ } catch (JAXBException e) {
+
} catch (IOException e) {
//do nothing
}
@@ -334,49 +280,40 @@ public class ConnectorModuleBuilder impl
throw new DeploymentException("A connector module must be deployed using a Geronimo deployment plan" +
" (either META-INF/geronimo-ra.xml in the RAR file or a standalone deployment plan passed to the deployer).");
}
- ConnectorPlanRectifier.rectifyPlan(gerConnector);
- XmlCursor cursor = gerConnector.newCursor();
- try {
- SchemaConversionUtils.convertToGeronimoSubSchemas(cursor);
- } finally {
- cursor.dispose();
- }
-
- XmlBeansUtil.validateDD(gerConnector);
- } catch (XmlException e) {
- throw new DeploymentException("Could not parse module descriptor", e);
- }
-
- EnvironmentType environmentType = gerConnector.getEnvironment();
- Environment environment = EnvironmentBuilder.buildEnvironment(environmentType, defaultEnvironment);
- if (earEnvironment != null) {
- EnvironmentBuilder.mergeEnvironments(earEnvironment, environment);
- environment = earEnvironment;
- if (!environment.getConfigId().isResolved()) {
- throw new IllegalStateException("Connector module ID should be fully resolved (not " + environment.getConfigId() + ")");
- }
- } else {
- idBuilder.resolve(environment, new File(moduleFile.getName()).getName(), "car");
- }
-
- AbstractName moduleName;
- if (parentModule == null) {
- AbstractName earName = naming.createRootName(environment.getConfigId(), NameFactory.NULL, NameFactory.J2EE_APPLICATION);
- moduleName = naming.createChildName(earName, environment.getConfigId().toString(), NameFactory.RESOURCE_ADAPTER_MODULE);
- } else {
- moduleName = naming.createChildName(parentModule.getModuleName(), targetPath, NameFactory.RESOURCE_ADAPTER_MODULE);
- }
-
- boolean standAlone = earEnvironment == null;
+// } catch (XmlException e) {
+// throw new DeploymentException("Could not parse module descriptor", e);
+// }
- String name;
- if (connector != null && connector.getModuleName() != null) {
- name = connector.getModuleName();
- } else if (standAlone) {
- name = FileUtils.removeExtension(new File(moduleFile.getName()).getName(), ".rar");
- } else {
- name = FileUtils.removeExtension(targetPath, ".rar");
- }
+// EnvironmentType environmentType = gerConnector.getEnvironment();
+// Environment environment = EnvironmentBuilder.buildEnvironment(environmentType, defaultEnvironment);
+// if (earEnvironment != null) {
+// EnvironmentBuilder.mergeEnvironments(earEnvironment, environment);
+// environment = earEnvironment;
+// if (!environment.getConfigId().isResolved()) {
+// throw new IllegalStateException("Connector module ID should be fully resolved (not " + environment.getConfigId() + ")");
+// }
+// } else {
+// idBuilder.resolve(environment, new File(moduleFile.getName()).getName(), "car");
+// }
+//
+// AbstractName moduleName;
+// if (parentModule == null) {
+// AbstractName earName = naming.createRootName(environment.getConfigId(), NameFactory.NULL, NameFactory.J2EE_APPLICATION);
+// moduleName = naming.createChildName(earName, environment.getConfigId().toString(), NameFactory.RESOURCE_ADAPTER_MODULE);
+// } else {
+// moduleName = naming.createChildName(parentModule.getModuleName(), targetPath, NameFactory.RESOURCE_ADAPTER_MODULE);
+// }
+//
+// boolean standAlone = earEnvironment == null;
+//
+// String name;
+// if (connector != null && connector.getModuleName() != null) {
+// name = connector.getModuleName();
+// } else if (standAlone) {
+// name = FileUtils.removeExtension(new File(moduleFile.getName()).getName(), ".rar");
+// } else {
+// name = FileUtils.removeExtension(targetPath, ".rar");
+// }
Module module = new ConnectorModule<Connector, XmlObject>(standAlone, moduleName, name, environment, moduleFile, targetPath, connector, gerConnector, specDD, parentModule == null? null: parentModule.getJndiContext(), parentModule);
@@ -552,7 +489,7 @@ public class ConnectorModuleBuilder impl
serviceBuilders.build(geronimoConnector, earContext, earContext);
- addConnectorGBeans(earContext, jcaResourcejsr77Name, resourceAdapterModuleData, connector, geronimoConnector, bundle);
+ configureConnector(connector, geronimoConnector, bundle);
// also give the extensions a crack at this
for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
@@ -561,6 +498,19 @@ public class ConnectorModuleBuilder impl
}
+ public void addGBeans(EARContext earContext, Module module, Bundle bundle, Collection repository) throws DeploymentException {
+ //all our gbeans are added in the initContext step
+ //in case we decide connectors should be separate bundles
+ module.addAsChildConfiguration();
+// for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
+// mbe.addGBeans(earContext, module, bundle, repository);
+// }
+ }
+
+// public String getSchemaNamespace() {
+// return GERCONNECTOR_NAMESPACE;
+// }
+
private Connector mergeMetadata(Bundle bundle, BundleAnnotationFinder classFinder, Connector connector) throws DeploymentException {
Class<? extends ResourceAdapter> raClass = null;
if (connector == null) {
@@ -847,249 +797,8 @@ public class ConnectorModuleBuilder impl
}
- public void addGBeans(EARContext earContext, Module module, Bundle bundle, Collection repository) throws DeploymentException {
- //all our gbeans are added in the initContext step
- //in case we decide connectors should be separate bundles
- module.addAsChildConfiguration();
- for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
- mbe.addGBeans(earContext, module, bundle, repository);
- }
- }
-
- public String getSchemaNamespace() {
- return GERCONNECTOR_NAMESPACE;
- }
-
- private void addConnectorGBeans(EARContext earContext, AbstractName jcaResourceName, GBeanData resourceAdapterModuleData, Connector connector, GerConnectorType geronimoConnector, Bundle bundle) throws DeploymentException {
- List<GBeanData> raBeans = new ArrayList<GBeanData>();
-
- org.apache.openejb.jee.ResourceAdapter resourceAdapter = connector.getResourceAdapter();
-
- GerResourceadapterType[] geronimoResourceAdapters = geronimoConnector.getResourceadapterArray();
- for (GerResourceadapterType geronimoResourceAdapter : geronimoResourceAdapters) {
- // Resource Adapter
- AbstractName resourceAdapterAbstractName = null;
- if (resourceAdapter.getResourceAdapterClass() != null) {
- GBeanData resourceAdapterGBeanData = locateResourceAdapterGBeanData(resourceAdapterModuleData);
- GBeanData resourceAdapterInstanceGBeanData = new GBeanData(resourceAdapterGBeanData);
-
- String resourceAdapterName;
- AbstractNameQuery workManagerName;
- if (geronimoResourceAdapter.isSetResourceadapterInstance()) {
- GerResourceadapterInstanceType resourceAdapterInstance = geronimoResourceAdapter.getResourceadapterInstance();
- setDynamicGBeanDataAttributes(resourceAdapterInstanceGBeanData, resourceAdapterInstance.getConfigPropertySettingArray(), bundle);
- workManagerName = ENCConfigBuilder.getGBeanQuery(NameFactory.JCA_WORK_MANAGER, resourceAdapterInstance.getWorkmanager());
- resourceAdapterName = resourceAdapterInstance.getResourceadapterName();
- } else {
- workManagerName = ENCConfigBuilder.buildAbstractNameQuery(null, null, defaultWorkManagerName, NameFactory.JCA_WORK_MANAGER, null);
- resourceAdapterName = "ResourceAdapterInstance-" + System.currentTimeMillis();
- log.warn("Resource adapter instance information was not specified in Geronimo plan. Using defaults.");
- }
-
- // set the work manager name
- resourceAdapterInstanceGBeanData.setReferencePattern("WorkManager", workManagerName);
-
- // set the xa terminator name which is the same as our transaction manager
- resourceAdapterInstanceGBeanData.setReferencePattern("XATerminator", earContext.getTransactionManagerName());
-
- resourceAdapterAbstractName = earContext.getNaming().createChildName(jcaResourceName, resourceAdapterName, NameFactory.JCA_RESOURCE_ADAPTER);
- resourceAdapterInstanceGBeanData.setAbstractName(resourceAdapterAbstractName);
- raBeans.add(resourceAdapterInstanceGBeanData);
- }
-
- // Outbound Managed Connection Factories (think JDBC data source or JMS connection factory)
-
- // ManagedConnectionFactory setup
- if (geronimoResourceAdapter.isSetOutboundResourceadapter()) {
- if (resourceAdapter.getOutboundResourceAdapter() == null) {
- throw new DeploymentException("Geronimo plan configures an outbound resource adapter but ra.xml does not describe any");
- }
- String transactionSupport = resourceAdapter.getOutboundResourceAdapter().getTransactionSupport().value();
- for (GerConnectionDefinitionType geronimoConnectionDefinition : geronimoResourceAdapter.getOutboundResourceadapter().getConnectionDefinitionArray()) {
- assert geronimoConnectionDefinition != null : "Null GeronimoConnectionDefinition";
-
- String connectionFactoryInterfaceName = geronimoConnectionDefinition.getConnectionfactoryInterface().trim();
- GBeanData connectionFactoryGBeanData = locateConnectionFactoryInfo(resourceAdapterModuleData, connectionFactoryInterfaceName);
-
- if (connectionFactoryGBeanData == null) {
- throw new DeploymentException("No connection definition for ConnectionFactory class: " + connectionFactoryInterfaceName);
- }
-
- for (int j = 0; j < geronimoConnectionDefinition.getConnectiondefinitionInstanceArray().length; j++) {
- GerConnectiondefinitionInstanceType connectionfactoryInstance = geronimoConnectionDefinition.getConnectiondefinitionInstanceArray()[j];
-
- addOutboundGBeans(raBeans, earContext.getNaming(), jcaResourceName, resourceAdapterAbstractName, connectionFactoryGBeanData, connectionfactoryInstance, transactionSupport, bundle, earContext.getConnectionTrackerName(), earContext.getTransactionManagerName());
- }
- }
- }
- addAdminObjectGBeans(raBeans, earContext.getNaming(), jcaResourceName, resourceAdapterModuleData, bundle, resourceAdapterAbstractName, geronimoResourceAdapter.getAdminobjectArray());
- }
- // admin objects (think message queues and topics)
-
- // add configured admin objects
- addAdminObjectGBeans(raBeans, earContext.getNaming(), jcaResourceName, resourceAdapterModuleData, bundle, null, geronimoConnector.getAdminobjectArray());
- List<Exception> problems = new ArrayList<Exception>();
- for (GBeanData data: raBeans) {
- try {
- earContext.addGBean(data);
- } catch (GBeanAlreadyExistsException e) {
- problems.add(e);
- }
- }
- if (!problems.isEmpty()) {
- throw new DeploymentException("Could not add gbeans to configuration: ", problems);
- }
- }
-
- private void addAdminObjectGBeans(List<GBeanData> raBeans, Naming naming, AbstractName jcaResourceName, GBeanData resourceAdapterModuleData, Bundle bundle, AbstractName resourceAdapterAbstractName, GerAdminobjectType[] adminObjects) throws DeploymentException {
- for (GerAdminobjectType gerAdminObject : adminObjects) {
- String adminObjectInterface = gerAdminObject.getAdminobjectInterface().trim();
- GBeanData adminObjectGBeanData = locateAdminObjectInfo(resourceAdapterModuleData, adminObjectInterface);
-
- if (adminObjectGBeanData == null) {
- throw new DeploymentException("No admin object declared for interface: " + adminObjectInterface);
- }
-
- for (GerAdminobjectInstanceType gerAdminObjectInstance : gerAdminObject.getAdminobjectInstanceArray()) {
- GBeanData adminObjectInstanceGBeanData = new GBeanData(adminObjectGBeanData);
- setDynamicGBeanDataAttributes(adminObjectInstanceGBeanData, gerAdminObjectInstance.getConfigPropertySettingArray(), bundle);
- // add it
- AbstractName adminObjectAbstractName = naming.createChildName(jcaResourceName, gerAdminObjectInstance.getMessageDestinationName().trim(), NameFactory.JCA_ADMIN_OBJECT);
- adminObjectInstanceGBeanData.setAbstractName(adminObjectAbstractName);
- if (resourceAdapterAbstractName != null) {
- adminObjectInstanceGBeanData.setReferencePattern("ResourceAdapterWrapper", resourceAdapterAbstractName);
- }
- Set<String> implementedInterfaces = new HashSet<String>();
- implementedInterfaces.add(checkClass(bundle, (String) adminObjectInstanceGBeanData.getAttribute("adminObjectInterface")));
- implementedInterfaces.add(checkClass(bundle, (String) adminObjectInstanceGBeanData.getAttribute("adminObjectClass")));
- adminObjectInstanceGBeanData.setServiceInterfaces(implementedInterfaces.toArray(new String[implementedInterfaces.size()]));
- String jndiName = naming.toOsgiJndiName(adminObjectAbstractName);
- //TODO allow specifying osig jndi name directly, like for connection factories
- adminObjectInstanceGBeanData.getServiceProperties().put(OSGI_JNDI_SERVICE_NAME, jndiName);
- raBeans.add(adminObjectInstanceGBeanData);
- }
- }
- }
-
- private Map<String, GBeanData> getActivationSpecInfoMap(AbstractName validatorName, List<MessageListener> messageListeners, Bundle bundle) throws DeploymentException {
- Map<String, GBeanData> activationSpecInfos = new HashMap<String, GBeanData>();
- for (MessageListener messageListener : messageListeners) {
- String messageListenerInterface = messageListener.getMessageListenerType();
- ActivationSpec activationSpec = messageListener.getActivationSpec();
- String activationSpecClassName = activationSpec.getActivationSpecClass();
- GBeanInfoBuilder infoBuilder = new GBeanInfoBuilder(ActivationSpecWrapperGBean.class, new AnnotationGBeanInfoBuilder(ActivationSpecWrapperGBean.class).buildGBeanInfo());
- Set<String> ignore = Collections.singleton("resourceAdapter");
- setUpDynamicGBean(activationSpecClassName, infoBuilder, ignore, bundle, true);
-
-
- GBeanInfo gbeanInfo = infoBuilder.getBeanInfo();
-
- GBeanData activationSpecInfo = new GBeanData(gbeanInfo);
- activationSpecInfo.setAttribute("activationSpecClass", activationSpecClassName);
- activationSpecInfo.setReferencePattern("ValidatorFactory", validatorName);
- activationSpecInfos.put(messageListenerInterface, activationSpecInfo);
- }
- return activationSpecInfos;
- }
-
- private void setUpDynamicGBean(String adapterClassName, GBeanInfoBuilder infoBuilder, Set<String> ignore, Bundle bundle, boolean decapitalize) throws DeploymentException {
- //add all javabean properties that have both getter and setter. Ignore the "required" flag from the dd.
- Map<String, String> getters = new HashMap<String, String>();
- Set<String> setters = new HashSet<String>();
- Method[] methods;
- try {
- Class activationSpecClass = bundle.loadClass(adapterClassName);
- methods = activationSpecClass.getMethods();
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Can not load adapter class in classloader " + bundle, e);
- } catch (NoClassDefFoundError e) {
- throw new DeploymentException("Can not load adapter class in classloader " + bundle, e);
- }
- for (Method method : methods) {
- String methodName = method.getName();
- if ((methodName.startsWith("get") || methodName.startsWith("is")) && method.getParameterTypes().length == 0) {
- String attributeName = (methodName.startsWith("get")) ? methodName.substring(3) : methodName.substring(2);
- getters.put(setCase(attributeName, decapitalize), method.getReturnType().getName());
- } else if (methodName.startsWith("set") && method.getParameterTypes().length == 1) {
- setters.add(setCase(methodName.substring(3), decapitalize));
- }
- }
- getters.keySet().retainAll(setters);
- getters.keySet().removeAll(ignore);
-
- for (Map.Entry<String, String> entry : getters.entrySet()) {
- infoBuilder.addAttribute(new DynamicGAttributeInfo(entry.getKey(), entry.getValue(), true, true, true, true));
- }
- }
-
- private String setCase(String attributeName, boolean decapitalize) {
- if (decapitalize) {
- return Introspector.decapitalize(attributeName);
- } else {
- return attributeName;
- }
- }
-
- private static String switchCase(String name) {
- if (name == null || name.length() == 0) {
- return name;
- }
- if (Character.isUpperCase(name.charAt(0))) {
- char chars[] = name.toCharArray();
- chars[0] = Character.toLowerCase(chars[0]);
- return new String(chars);
- } else if (Character.isLowerCase(name.charAt(0))) {
- char chars[] = name.toCharArray();
- chars[0] = Character.toUpperCase(chars[0]);
- return new String(chars);
- } else {
- return name;
- }
- }
-
- private Map getManagedConnectionFactoryInfoMap(AbstractName validatorName, List<ConnectionDefinition> connectionDefinitions, Bundle bundle) throws DeploymentException {
- Map<String, GBeanData> managedConnectionFactoryInfos = new HashMap<String, GBeanData>();
- for (ConnectionDefinition connectionDefinition : connectionDefinitions) {
- GBeanInfoBuilder managedConnectionFactoryInfoBuilder = new GBeanInfoBuilder(ManagedConnectionFactoryWrapper.class, ManagedConnectionFactoryWrapperGBean.GBEAN_INFO);
- String managedConnectionfactoryClassName = connectionDefinition.getManagedConnectionFactoryClass();
- Set<String> ignore = new HashSet<String>();
- ignore.add("ResourceAdapter");
- ignore.add("LogWriter");
- GBeanData managedConnectionFactoryGBeanData = setUpDynamicGBeanWithProperties(managedConnectionfactoryClassName, managedConnectionFactoryInfoBuilder, connectionDefinition.getConfigProperty(), bundle, ignore);
-
- // set the standard properties
- String connectionfactoryInterface = connectionDefinition.getConnectionFactoryInterface();
- managedConnectionFactoryGBeanData.setAttribute("managedConnectionFactoryClass", managedConnectionfactoryClassName);
- managedConnectionFactoryGBeanData.setAttribute("connectionFactoryInterface", connectionfactoryInterface);
- managedConnectionFactoryGBeanData.setAttribute("connectionFactoryImplClass", connectionDefinition.getConnectionFactoryImplClass());
- managedConnectionFactoryGBeanData.setAttribute("connectionInterface", connectionDefinition.getConnectionInterface());
- managedConnectionFactoryGBeanData.setAttribute("connectionImplClass", connectionDefinition.getConnectionImplClass());
- managedConnectionFactoryGBeanData.setReferencePattern("ValidatorFactory", validatorName);
- managedConnectionFactoryInfos.put(connectionfactoryInterface, managedConnectionFactoryGBeanData);
- }
- return managedConnectionFactoryInfos;
- }
-
- private Map getAdminObjectInfoMap(AbstractName validatorName, List<AdminObject> adminObjects, Bundle bundle) throws DeploymentException {
- Map<String, GBeanData> adminObjectInfos = new HashMap<String, GBeanData>();
- for (AdminObject adminObject : adminObjects) {
- GBeanInfoBuilder adminObjectInfoBuilder = new GBeanInfoBuilder(AdminObjectWrapperGBean.class, new AnnotationGBeanInfoBuilder(AdminObjectWrapperGBean.class).buildGBeanInfo());
- String adminObjectClassName = adminObject.getAdminObjectClass();
- GBeanData adminObjectGBeanData = setUpDynamicGBeanWithProperties(adminObjectClassName, adminObjectInfoBuilder, adminObject.getConfigProperty(), bundle, Collections.<String>emptySet());
-
- // set the standard properties
- String adminObjectInterface = adminObject.getAdminObjectInterface();
- adminObjectGBeanData.setAttribute("adminObjectInterface", adminObjectInterface);
- adminObjectGBeanData.setAttribute("adminObjectClass", adminObjectClassName);
- adminObjectGBeanData.setReferencePattern("ValidatorFactory", validatorName);
- adminObjectInfos.put(adminObjectInterface, adminObjectGBeanData);
- }
- return adminObjectInfos;
- }
-
-
private GBeanData setUpDynamicGBeanWithProperties(String className, GBeanInfoBuilder infoBuilder, List<ConfigProperty> configProperties, Bundle bundle, Set<String> ignore) throws DeploymentException {
- setUpDynamicGBean(className, infoBuilder, ignore, bundle, false);
+ findConfigProperties(className, ignore, bundle, false);
GBeanInfo gbeanInfo = infoBuilder.getBeanInfo();
GBeanData gbeanData = new GBeanData(gbeanInfo);
@@ -1112,280 +821,4 @@ public class ConnectorModuleBuilder impl
return gbeanData;
}
- private void setDynamicGBeanDataAttributes(GBeanData gbeanData, GerConfigPropertySettingType[] configProperties, Bundle bundle) throws DeploymentException {
- List<String> unknownNames = new ArrayList<String>();
- for (GerConfigPropertySettingType configProperty : configProperties) {
- String name = configProperty.getName();
- GAttributeInfo attributeInfo = gbeanData.getGBeanInfo().getAttribute(name);
- if (attributeInfo == null) {
- String originalName = name;
- name = switchCase(name);
- attributeInfo = gbeanData.getGBeanInfo().getAttribute(name);
- if (attributeInfo == null) {
- unknownNames.add(originalName);
- continue;
- }
- }
-
- String type = attributeInfo.getType();
- gbeanData.setAttribute(name, getValue(type, configProperty.getStringValue().trim(), bundle));
- }
- if (unknownNames.size() > 0) {
- StringBuffer buf = new StringBuffer("The plan is trying to set attributes: ").append(unknownNames).append("\n");
- buf.append("Known attributes: \n");
- for (GAttributeInfo attributeInfo : gbeanData.getGBeanInfo().getAttributes()) {
- buf.append(attributeInfo).append("\n");
- }
- throw new DeploymentException(buf.toString());
- }
- }
-
- private Object getValue(String type, String value, Bundle bundle) throws DeploymentException {
- if (value == null) {
- return null;
- }
-
- Class clazz = TYPE_LOOKUP.get(type);
- if (clazz == null) {
- try {
- clazz = bundle.loadClass(type);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Could not load attribute class: type: " + type, e);
- }
- }
-
- // Handle numeric fields with no value set
- if (value.equals("")) {
- if (Number.class.isAssignableFrom(clazz) || Date.class.isAssignableFrom(clazz)) {
- return null;
- }
- }
-
- PropertyEditor editor = PropertyEditors.getEditor(clazz);
- editor.setAsText(value);
- return editor.getValue();
- }
-
- private AbstractName configureConnectionManager(List<GBeanData> raBeans, Naming naming, AbstractName managedConnectionFactoryName, String ddTransactionSupport, GerConnectiondefinitionInstanceType connectionfactoryInstance, AbstractNameQuery connectionTrackerName, AbstractNameQuery transactionManagerName) throws DeploymentException {
-// if (connectionfactoryInstance.getConnectionmanagerRef() != null) {
- //we don't configure anything, just use the supplied gbean
-// try {
-// return AbstractName.getInstance(connectionfactoryInstance.getConnectionmanagerRef());
-// } catch (MalformedAbstractNameException e) {
-// throw new DeploymentException("Invalid AbstractName string supplied for ConnectionManager reference", e);
-// }
-// }
-
- // create the object name for our connection manager
- AbstractName connectionManagerAbstractName = naming.createChildName(managedConnectionFactoryName, connectionfactoryInstance.getName().trim(), NameFactory.JCA_CONNECTION_MANAGER);
-
- // create the data holder for our connection manager
- GBeanData connectionManagerGBean = new GBeanData(connectionManagerAbstractName, GenericConnectionManagerGBean.class);
-
- //we configure our connection manager
- GerConnectionmanagerType connectionManager = connectionfactoryInstance.getConnectionmanager();
- TransactionSupport transactionSupport;
- if (connectionManager.isSetNoTransaction()) {
- transactionSupport = NoTransactions.INSTANCE;
- } else if (connectionManager.isSetLocalTransaction()) {
- if ("NoTransaction".equals(ddTransactionSupport)) {
- throw new DeploymentException("You are requesting local transaction support for a connector that does not support transactions: named: " + connectionfactoryInstance.getName().trim());
- }
- transactionSupport = LocalTransactions.INSTANCE;
- } else if (connectionManager.isSetTransactionLog()) {
- if ("NoTransaction".equals(ddTransactionSupport)) {
- throw new DeploymentException("You are requesting local transaction support for a connector that does not support transactions: named: " + connectionfactoryInstance.getName().trim());
- }
- transactionSupport = TransactionLog.INSTANCE;
- } else if (connectionManager.isSetXaTransaction()) {
- if ("NoTransaction".equals(ddTransactionSupport)) {
- throw new DeploymentException("You are requesting xa transaction support for a connector that does not support transactions: named: " + connectionfactoryInstance.getName().trim());
- }
- if ("LocalTransaction".equals(ddTransactionSupport)) {
- throw new DeploymentException("You are requesting xa transaction support for a connector that supports only local transactions: named: " + connectionfactoryInstance.getName().trim());
- }
- transactionSupport = new XATransactions(connectionManager.getXaTransaction().isSetTransactionCaching(),
- connectionManager.getXaTransaction().isSetThreadCaching());
- } else if ("NoTransaction".equals(ddTransactionSupport)) {
- transactionSupport = NoTransactions.INSTANCE;
- } else if ("LocalTransaction".equals(ddTransactionSupport)) {
- transactionSupport = LocalTransactions.INSTANCE;
- } else if ("XATransaction".equals(ddTransactionSupport)) {
- transactionSupport = new XATransactions(defaultXATransactionCaching, defaultXAThreadCaching);
- } else {
- //this should not happen
- throw new DeploymentException("Unexpected transaction support element in connector named: " + connectionfactoryInstance.getName().trim());
- }
- PoolingSupport pooling;
- if (connectionManager.getSinglePool() != null) {
- GerSinglepoolType pool = connectionManager.getSinglePool();
-
- pooling = new SinglePool(pool.isSetMaxSize() ? pool.getMaxSize() : defaultMaxSize,
- pool.isSetMinSize() ? pool.getMinSize() : defaultMinSize,
- pool.isSetBlockingTimeoutMilliseconds() ? pool.getBlockingTimeoutMilliseconds() : defaultBlockingTimeoutMilliseconds,
- pool.isSetIdleTimeoutMinutes() ? pool.getIdleTimeoutMinutes() : defaultIdleTimeoutMinutes,
- pool.getMatchOne() != null,
- pool.getMatchAll() != null,
- pool.getSelectOneAssumeMatch() != null);
- } else if (connectionManager.getPartitionedPool() != null) {
- GerPartitionedpoolType pool = connectionManager.getPartitionedPool();
- pooling = new PartitionedPool(pool.isSetMaxSize() ? pool.getMaxSize() : defaultMaxSize,
- pool.isSetMinSize() ? pool.getMinSize() : defaultMinSize,
- pool.isSetBlockingTimeoutMilliseconds() ? pool.getBlockingTimeoutMilliseconds() : defaultBlockingTimeoutMilliseconds,
- pool.isSetIdleTimeoutMinutes() ? pool.getIdleTimeoutMinutes() : defaultIdleTimeoutMinutes,
- pool.getMatchOne() != null,
- pool.getMatchAll() != null,
- pool.getSelectOneAssumeMatch() != null,
- pool.isSetPartitionByConnectionrequestinfo(),
- pool.isSetPartitionBySubject());
- } else if (connectionManager.getNoPool() != null) {
- pooling = new NoPool();
- } else {
- throw new DeploymentException("Unexpected pooling support element in connector named " + connectionfactoryInstance.getName().trim());
- }
- try {
- String jndiName = naming.toOsgiJndiName(connectionManagerAbstractName);
- connectionManagerGBean.getServiceProperties().put(OSGI_JNDI_SERVICE_NAME, jndiName);
- connectionManagerGBean.setAttribute("transactionSupport", transactionSupport);
- connectionManagerGBean.setAttribute("pooling", pooling);
- connectionManagerGBean.setReferencePattern("ConnectionTracker", connectionTrackerName);
- connectionManagerGBean.setAttribute("containerManagedSecurity", connectionManager.isSetContainerManagedSecurity());
- connectionManagerGBean.setReferencePattern("TransactionManager", transactionManagerName);
- connectionManagerGBean.setReferencePattern("ManagedConnectionFactory", managedConnectionFactoryName);
- } catch (Exception e) {
- throw new DeploymentException("Problem setting up ConnectionManager named " + connectionfactoryInstance.getName().trim(), e);
- }
-
- raBeans.add(connectionManagerGBean);
- return connectionManagerAbstractName;
- }
-
- private void addOutboundGBeans(List<GBeanData> raBeans, Naming naming, AbstractName jcaResourceName, AbstractName resourceAdapterAbstractName, GBeanData managedConnectionFactoryPrototypeGBeanData, GerConnectiondefinitionInstanceType connectiondefinitionInstance, String transactionSupport, Bundle bundle, AbstractNameQuery connectionTrackerName, AbstractNameQuery transactionManagerName) throws DeploymentException {
- GBeanData managedConnectionFactoryInstanceGBeanData = new GBeanData(managedConnectionFactoryPrototypeGBeanData);
- AbstractName connectionFactoryAbstractName = naming.createChildName(jcaResourceName, connectiondefinitionInstance.getName().trim(), NameFactory.JCA_CONNECTION_FACTORY);
- AbstractName managedConnectionFactoryAbstractName = naming.createChildName(connectionFactoryAbstractName, connectiondefinitionInstance.getName().trim(), NameFactory.JCA_MANAGED_CONNECTION_FACTORY);
-
- // ManagedConnectionFactory
- setDynamicGBeanDataAttributes(managedConnectionFactoryInstanceGBeanData, connectiondefinitionInstance.getConfigPropertySettingArray(), bundle);
-
- //Check if Driver class is available here. This should be available in cl. If not log a warning as
- //the plan gets deployed and while starting GBean an error is thrown
-
- Object driver = managedConnectionFactoryInstanceGBeanData.getAttribute("Driver");
- if (driver != null && driver instanceof String) {
- checkClass(bundle, (String)driver);
- }
-
- Set<String> implementedInterfaces = new HashSet<String>();
- implementedInterfaces.add(checkClass(bundle, (String) managedConnectionFactoryInstanceGBeanData.getAttribute("connectionFactoryInterface")));
- implementedInterfaces.add(checkClass(bundle, (String) managedConnectionFactoryInstanceGBeanData.getAttribute("connectionFactoryImplClass")));
- try {
- if (resourceAdapterAbstractName != null) {
- managedConnectionFactoryInstanceGBeanData.setReferencePattern("ResourceAdapterWrapper", resourceAdapterAbstractName);
- }
- //additional interfaces implemented by connection factory
- String[] additionalInterfaces = connectiondefinitionInstance.getImplementedInterfaceArray();
- if (additionalInterfaces != null) {
- for (String additionalInterface : additionalInterfaces) {
- implementedInterfaces.add(checkClass(bundle, additionalInterface.trim()));
- }
- }
- //in case some class was not loadable
- implementedInterfaces.remove(null);
- managedConnectionFactoryInstanceGBeanData.setAttribute("implementedInterfaces", implementedInterfaces.toArray(new String[implementedInterfaces.size()]));
-
- } catch (Exception e) {
- throw new DeploymentException(e);
- }
-
- managedConnectionFactoryInstanceGBeanData.setAbstractName(managedConnectionFactoryAbstractName);
- raBeans.add(managedConnectionFactoryInstanceGBeanData);
- // ConnectionManager
- AbstractName connectionManagerName = configureConnectionManager(raBeans, naming, managedConnectionFactoryAbstractName, transactionSupport, connectiondefinitionInstance, connectionTrackerName, transactionManagerName);
-
- // ConnectionFactory
- GBeanData connectionFactoryGBeanData = new GBeanData(connectionFactoryAbstractName, JCAConnectionFactoryImpl.class);
- connectionFactoryGBeanData.setReferencePattern("ConnectionManager", connectionManagerName);
- connectionFactoryGBeanData.setServiceInterfaces(implementedInterfaces.toArray(new String[implementedInterfaces.size()]));
- String jndiName = connectiondefinitionInstance.getJndiName();
- if (jndiName == null) {
- jndiName = naming.toOsgiJndiName(connectionFactoryAbstractName);
- } else {
- jndiName = jndiName.trim();
- }
- connectionFactoryGBeanData.getServiceProperties().put(OSGI_JNDI_SERVICE_NAME, jndiName);
-
- raBeans.add(connectionFactoryGBeanData);
- }
-
- /**
- * check class is loadable: return null and log warning if not.
- * @param bundle to use to load the class
- * @param clazz name of class to try to load
- * @return clazz if loadable, null otherwise.
- */
- private String checkClass(Bundle bundle, String clazz) {
- try {
- bundle.loadClass(clazz);
- return clazz;
- } catch (ClassNotFoundException e1) {
- log.warn("Problem loading class: " + clazz, e1);
- }
- return null;
- }
-
- public GBeanData locateActivationSpecInfo(AbstractNameQuery resourceAdapterInstanceQuery, String messageListenerInterface, Configuration configuration) throws DeploymentException {
- //First, locate the module gbean from the JCAResourceAdapter instance
- AbstractName instanceName;
- try {
- instanceName = configuration.findGBean(resourceAdapterInstanceQuery);
- } catch (GBeanNotFoundException e) {
- throw new DeploymentException("No resource adapter instance gbean found matching " + resourceAdapterInstanceQuery + " from configuration " + configuration.getId(), e);
- }
- String moduleName = (String) instanceName.getName().get(NameFactory.RESOURCE_ADAPTER_MODULE);
- Map<String, String> moduleNameMap = new HashMap<String, String>(instanceName.getName());
- moduleNameMap.remove(NameFactory.JCA_RESOURCE);
- moduleNameMap.remove(NameFactory.RESOURCE_ADAPTER);
- moduleNameMap.remove(NameFactory.RESOURCE_ADAPTER_MODULE);
- moduleNameMap.put(NameFactory.J2EE_TYPE, NameFactory.RESOURCE_ADAPTER_MODULE);
- moduleNameMap.put(NameFactory.J2EE_NAME, moduleName);
- AbstractNameQuery nameQuery = new AbstractNameQuery(instanceName.getArtifact(), moduleNameMap, ResourceAdapterModule.class.getName());
- //now find the gbeandata and extract the activation spec info.
- GBeanData resourceModuleData;
- try {
- resourceModuleData = configuration.findGBeanData(nameQuery);
- } catch (GBeanNotFoundException e) {
- throw new DeploymentException("No resource module gbean found matching " + nameQuery + " from configuration " + configuration.getId(), e);
- }
- Map activationSpecInfos = (Map) resourceModuleData.getAttribute("activationSpecInfoMap");
- if (activationSpecInfos == null) {
- throw new DeploymentException("No activation spec info map found in resource adapter module: " + resourceModuleData.getAbstractName());
- }
- return (GBeanData) activationSpecInfos.get(messageListenerInterface);
- }
-
- private GBeanData locateResourceAdapterGBeanData(GBeanData resourceAdapterModuleData) throws DeploymentException {
- GBeanData data = (GBeanData) resourceAdapterModuleData.getAttribute("resourceAdapterGBeanData");
- if (data == null) {
- throw new DeploymentException("No resource adapter info found for resource adapter module: " + resourceAdapterModuleData.getAbstractName());
- }
- return data;
- }
-
- private GBeanData locateAdminObjectInfo(GBeanData resourceAdapterModuleData, String adminObjectInterfaceName) throws DeploymentException {
- Map adminObjectInfos = (Map) resourceAdapterModuleData.getAttribute("adminObjectInfoMap");
- if (adminObjectInfos == null) {
- throw new DeploymentException("No admin object infos found for resource adapter module: " + resourceAdapterModuleData.getAbstractName());
- }
- return (GBeanData) adminObjectInfos.get(adminObjectInterfaceName);
- }
-
- private GBeanData locateConnectionFactoryInfo(GBeanData resourceAdapterModuleData, String connectionFactoryInterfaceName) throws DeploymentException {
- Map managedConnectionFactoryInfos = (Map) resourceAdapterModuleData.getAttribute("managedConnectionFactoryInfoMap");
- if (managedConnectionFactoryInfos == null) {
- throw new DeploymentException("No managed connection factory infos found for resource adapter module: " + resourceAdapterModuleData.getAbstractName());
- }
- return (GBeanData) managedConnectionFactoryInfos.get(connectionFactoryInterfaceName);
- }
-
}