You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/04/07 17:19:28 UTC
svn commit: r931583 - in /geronimo/server/trunk/plugins:
client/client/src/main/history/ connector-1_6/
connector-1_6/connector-deployer-1_6/src/main/history/
connector-1_6/connector-deployer-1_6/src/main/plan/
connector-1_6/geronimo-connector-1_6/ con...
Author: gawor
Date: Wed Apr 7 15:19:18 2010
New Revision: 931583
URL: http://svn.apache.org/viewvc?rev=931583&view=rev
Log:
GERONIMO-5113: Mostly complete support for @DataSourceDefinition(s) annotations
Added:
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java (with props)
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java (with props)
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java (with props)
Modified:
geronimo/server/trunk/plugins/client/client/src/main/history/dependencies.xml
geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/history/dependencies.xml
geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/plan/plan.xml
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/pom.xml
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/GenericConnectionManagerGBean.java
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/pom.xml
geronimo/server/trunk/plugins/connector-1_6/pom.xml
geronimo/server/trunk/plugins/connector-1_6/transaction-1_6/src/main/history/dependencies.xml
Modified: geronimo/server/trunk/plugins/client/client/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/client/client/src/main/history/dependencies.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/client/client/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/client/client/src/main/history/dependencies.xml Wed Apr 7 15:19:18 2010
@@ -257,6 +257,11 @@
<type>jar</type>
</dependency>
<dependency>
+ <groupId>org.tranql</groupId>
+ <artifactId>tranql-connector</artifactId>
+ <type>jar</type>
+ </dependency>
+ <dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<type>jar</type>
Modified: geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/history/dependencies.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/history/dependencies.xml Wed Apr 7 15:19:18 2010
@@ -101,4 +101,9 @@
<artifactId>xbean-reflect</artifactId>
<type>jar</type>
</dependency>
+ <dependency>
+ <groupId>org.tranql</groupId>
+ <artifactId>tranql-connector</artifactId>
+ <type>jar</type>
+ </dependency>
</plugin-artifact>
Modified: geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/plan/plan.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/connector-1_6/connector-deployer-1_6/src/main/plan/plan.xml Wed Apr 7 15:19:18 2010
@@ -101,4 +101,15 @@
</gbean>
<gbean name="RARConfigurer" class="org.apache.geronimo.connector.deployment.RARConfigurer"/>
+
+ <gbean name="DataSourceBuilder" class="org.apache.geronimo.datasource.deployment.DataSourceBuilder">
+ <attribute name="eeNamespaces">http://java.sun.com/xml/ns/j2ee,http://java.sun.com/xml/ns/javaee</attribute>
+ <attribute name="defaultMaxSize">10</attribute>
+ <attribute name="defaultMinSize">0</attribute>
+ <attribute name="defaultBlockingTimeoutMilliseconds">5000</attribute>
+ <attribute name="defaultIdleTimeoutMinutes">15</attribute>
+ <attribute name="defaultXATransactionCaching">true</attribute>
+ <attribute name="defaultXAThreadCaching">false</attribute>
+ </gbean>
+
</module>
Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/pom.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/pom.xml (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/pom.xml Wed Apr 7 15:19:18 2010
@@ -84,6 +84,11 @@
<!--</dependency>-->
<dependency>
+ <groupId>org.tranql</groupId>
+ <artifactId>tranql-connector</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.geronimo.framework</groupId>
<artifactId>geronimo-kernel</artifactId>
<version>${version}</version>
Added: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java?rev=931583&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java (added)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java Wed Apr 7 15:19:18 2010
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.connector.wrapper.outbound;
+
+import java.util.Hashtable;
+
+import javax.resource.ResourceException;
+
+import org.apache.geronimo.connector.outbound.GenericConnectionManager;
+import org.apache.geronimo.gbean.AbstractName;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceException;
+import org.osgi.framework.ServiceFactory;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * @version $Revision$
+ */
+public class ConnectionFactoryRegistration {
+
+ public static final String OSGI_JNDI_SERVICE_NAME = "osgi.jndi.service.name";
+
+ private final GenericConnectionManager connectionManager;
+ private final BundleContext bundleContext;
+ private final String jndiName;
+ private final String[] connectionInterfaces;
+ private ServiceRegistration serviceRegistration;
+
+ public ConnectionFactoryRegistration(GenericConnectionManager connectionManager,
+ BundleContext bundleContext,
+ AbstractName abstractName,
+ String jndiName,
+ String [] connectionInterfaces) {
+ this.connectionManager = connectionManager;
+ this.bundleContext = bundleContext;
+ this.connectionInterfaces = connectionInterfaces;
+
+ if (jndiName == null && abstractName != null) {
+ this.jndiName = abstractName.getArtifact().getGroupId() + "/" +
+ abstractName.getArtifact().getArtifactId() + "/" +
+ abstractName.getNameProperty("j2eeType") + "/" +
+ abstractName.getNameProperty("name");
+ } else {
+ this.jndiName = jndiName;
+ }
+ }
+
+ public void register() {
+ Hashtable properties = new Hashtable();
+ if (jndiName != null) {
+ properties.put(OSGI_JNDI_SERVICE_NAME, jndiName);
+ }
+ // register ServiceFactory so that each bundle gets its own instance of the connection factory
+ serviceRegistration = bundleContext.registerService(connectionInterfaces, new ConnectionFactoryService(), properties);
+ }
+
+ private class ConnectionFactoryService implements ServiceFactory {
+
+ public Object getService(Bundle bundle, ServiceRegistration registration) {
+ try {
+ return connectionManager.createConnectionFactory();
+ } catch (ResourceException e) {
+ throw new ServiceException("Error creating connection factory", e);
+ }
+ }
+
+ public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
+ }
+
+ }
+
+ public void unregister() throws Exception {
+ if (serviceRegistration != null) {
+ serviceRegistration.unregister();
+ }
+ }
+
+}
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/ConnectionFactoryRegistration.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/GenericConnectionManagerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/GenericConnectionManagerGBean.java?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/GenericConnectionManagerGBean.java (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/connector/wrapper/outbound/GenericConnectionManagerGBean.java Wed Apr 7 15:19:18 2010
@@ -23,11 +23,10 @@ import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.ObjectStreamException;
import java.io.Serializable;
-import java.util.Hashtable;
-import javax.resource.ResourceException;
import javax.resource.spi.ConnectionManager;
import javax.security.auth.Subject;
+
import org.apache.geronimo.connector.outbound.GenericConnectionManager;
import org.apache.geronimo.connector.outbound.SubjectSource;
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
@@ -47,10 +46,7 @@ import org.apache.geronimo.kernel.Kernel
import org.apache.geronimo.kernel.proxy.ProxyManager;
import org.apache.geronimo.security.ContextManager;
import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
-import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceException;
-import org.osgi.framework.ServiceFactory;
import org.osgi.framework.ServiceRegistration;
/**
@@ -60,9 +56,7 @@ import org.osgi.framework.ServiceRegistr
public class GenericConnectionManagerGBean extends GenericConnectionManager implements GBeanLifecycle, Serializable, Externalizable {
private Kernel kernel;
private AbstractName abstractName;
- private BundleContext bundleContext;
- private ManagedConnectionFactoryWrapper managedConnectionFactoryWrapper;
- private ServiceRegistration serviceRegistration;
+ private transient ConnectionFactoryRegistration connectionRegistration;
//externalizable format version
private static final int VERSION = 1;
@@ -80,9 +74,14 @@ public class GenericConnectionManagerGBe
super(transactionSupport, pooling, getSubjectSource(containerManagedSecurity), connectionTracker, transactionManager, managedConnectionFactoryWrapper.getManagedConnectionFactory(), objectName, classLoader);
this.kernel = kernel;
this.abstractName = abstractName;
- this.bundleContext = bundleContext;
- this.managedConnectionFactoryWrapper = managedConnectionFactoryWrapper;
+
doRecovery();
+
+ connectionRegistration = new ConnectionFactoryRegistration(this,
+ bundleContext,
+ abstractName,
+ managedConnectionFactoryWrapper.getJndiName(),
+ new String [] { managedConnectionFactoryWrapper.getConnectionFactoryInterface() });
}
public GenericConnectionManagerGBean() {
@@ -103,40 +102,11 @@ public class GenericConnectionManagerGBe
}
public void doStart() throws Exception {
- String connectionInterface = managedConnectionFactoryWrapper.getConnectionFactoryInterface();
- String jndiName = managedConnectionFactoryWrapper.getJndiName();
- if (jndiName == null) {
- jndiName = abstractName.getArtifact().getGroupId() + "/" +
- abstractName.getArtifact().getArtifactId() + "/" +
- abstractName.getNameProperty("j2eeType") + "/" +
- abstractName.getNameProperty("name");
- }
-
- Hashtable properties = new Hashtable();
- properties.put("osgi.jndi.service.name", jndiName);
- // register ServiceFactory so that each bundle gets its own instance of the connection factory
- serviceRegistration = bundleContext.registerService(connectionInterface, new ConnectionFactoryService(), properties);
- }
-
- private class ConnectionFactoryService implements ServiceFactory {
-
- public Object getService(Bundle bundle, ServiceRegistration registration) {
- try {
- return createConnectionFactory();
- } catch (ResourceException e) {
- throw new ServiceException("Error creating connection factory", e);
- }
- }
-
- public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
- }
-
+ connectionRegistration.register();
}
-
+
public void doStop() throws Exception {
- if (serviceRegistration != null) {
- serviceRegistration.unregister();
- }
+ connectionRegistration.unregister();
}
private static SubjectSource getSubjectSource(boolean containerManagedSecurity) {
Added: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java?rev=931583&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java (added)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java Wed Apr 7 15:19:18 2010
@@ -0,0 +1,275 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.datasource;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.resource.ResourceException;
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.sql.ConnectionPoolDataSource;
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+
+import org.apache.geronimo.connector.outbound.GenericConnectionManager;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoPool;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoTransactions;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.XATransactions;
+import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
+import org.apache.geronimo.connector.wrapper.outbound.ConnectionFactoryRegistration;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+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;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.naming.ResourceSource;
+import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
+import org.apache.xbean.recipe.ObjectRecipe;
+import org.apache.xbean.recipe.Option;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tranql.connector.NoExceptionsAreFatalSorter;
+import org.tranql.connector.jdbc.AbstractLocalDataSourceMCF;
+import org.tranql.connector.jdbc.AbstractPooledConnectionDataSourceMCF;
+import org.tranql.connector.jdbc.AbstractXADataSourceMCF;
+
+/**
+ * @version $Revision$
+ */
+@GBean
+public class DataSourceGBean implements GBeanLifecycle, ResourceSource<ResourceException> {
+
+ private static final Logger log = LoggerFactory.getLogger(DataSourceGBean.class);
+
+ private final DataSourceDescription dataSourceDescription;
+ private final transient ClassLoader classLoader;
+ private final transient GenericConnectionManager connectionManager;
+ private final transient ConnectionFactoryRegistration connectionRegistration;
+
+ public DataSourceGBean(@ParamAttribute(name="dataSourceDescription") DataSourceDescription dataSourceDescription,
+ @ParamAttribute(name="defaultMaxSize") int defaultMaxSize,
+ @ParamAttribute(name="defaultMinSize") int defaultMinSize,
+ @ParamAttribute(name="defaultBlockingTimeoutMilliseconds") int defaultBlockingTimeoutMilliseconds,
+ @ParamAttribute(name="defaultIdleTimeoutMinutes") int defaultIdleTimeoutMinutes,
+ @ParamAttribute(name="defaultXATransactionCaching") boolean defaultXATransactionCaching,
+ @ParamAttribute(name="defaultXAThreadCaching") boolean defaultXAThreadCaching,
+ @ParamReference(name="ConnectionTracker", namingType = NameFactory.JCA_CONNECTION_TRACKER) ConnectionTracker connectionTracker,
+ @ParamReference(name="TransactionManager", namingType = NameFactory.JTA_RESOURCE) RecoverableTransactionManager transactionManager,
+ @ParamSpecial(type=SpecialAttributeType.objectName) String objectName,
+ @ParamSpecial(type=SpecialAttributeType.abstractName) AbstractName abstractName,
+ @ParamSpecial(type=SpecialAttributeType.classLoader) ClassLoader classLoader,
+ @ParamSpecial(type=SpecialAttributeType.bundleContext) BundleContext bundleContext)
+ throws Exception {
+ this.dataSourceDescription = dataSourceDescription;
+ this.classLoader = classLoader;
+
+ String dsName = dataSourceDescription.getName();
+ String dsClass = dataSourceDescription.getClassName();
+
+ TransactionSupport transactionSupport;
+ PoolingSupport pooling;
+ ManagedConnectionFactory mcf;
+
+ Object instance = createDataSource();
+
+ if (instance instanceof XADataSource) {
+ mcf = new XADataSourceMCF((XADataSource) instance);
+ if (dataSourceDescription.isTransactional()) {
+ transactionSupport = new XATransactions(defaultXATransactionCaching, defaultXAThreadCaching);
+ } else {
+ transactionSupport = NoTransactions.INSTANCE;
+ }
+ pooling = createPool(defaultMinSize,
+ defaultMaxSize,
+ defaultBlockingTimeoutMilliseconds,
+ defaultIdleTimeoutMinutes);
+ } else if (instance instanceof ConnectionPoolDataSource) {
+ mcf = new PooledConnectionDataSourceMCF((ConnectionPoolDataSource) instance);
+ if (dataSourceDescription.isTransactional()) {
+ log.warn("[{}] Transactional property is true but DataSource does not support transactions", dsName);
+ }
+ transactionSupport = NoTransactions.INSTANCE;
+ pooling = createPool(defaultMinSize,
+ defaultMaxSize,
+ defaultBlockingTimeoutMilliseconds,
+ defaultIdleTimeoutMinutes);
+ } else if (instance instanceof DataSource) {
+ mcf = new LocalDataSourceMCF((DataSource) instance, true);
+ if (dataSourceDescription.isTransactional()) {
+ log.warn("[{}] Transactional property is true but DataSource does not support transactions", dsName);
+ }
+ transactionSupport = NoTransactions.INSTANCE;
+ if (dataSourceDescription.hasPoolingProperties()) {
+ log.warn("[{}] Some pooling properties are set but DataSource does not support pooling", dsName);
+ }
+ pooling = new NoPool();
+ } else {
+ throw new Exception("[" + dsName + "] Invalid DataSource type: " + dsClass);
+ }
+
+ this.connectionManager =
+ new GenericConnectionManager(transactionSupport, pooling, null, connectionTracker, transactionManager, mcf, objectName, classLoader);
+
+ connectionManager.doRecovery();
+
+ connectionRegistration = new ConnectionFactoryRegistration(connectionManager,
+ bundleContext,
+ abstractName,
+ getOsgiJndiName(),
+ new String [] { DataSource.class.getName() });
+ }
+
+ private Object createDataSource() throws Exception {
+ String className = dataSourceDescription.getClassName();
+ Class clazz = classLoader.loadClass(className);
+
+ Map<String, Object> properties = new HashMap<String, Object>();
+
+ // TODO: handle "url" property somehow
+ // TODO: handle "isolationType" property somehow
+
+ // standard settings
+ setProperty(properties, "description", dataSourceDescription.getDescription());
+ setProperty(properties, "user", dataSourceDescription.getUser());
+ setProperty(properties, "password", dataSourceDescription.getPassword());
+ setProperty(properties, "databaseName", dataSourceDescription.getDatabaseName());
+ if (dataSourceDescription.getPortNumber() != -1) {
+ setProperty(properties, "portNumber", dataSourceDescription.getPortNumber());
+ }
+ setProperty(properties, "serverName", dataSourceDescription.getServerName());
+ setProperty(properties, "loginTimeout", dataSourceDescription.getLoginTimeout());
+ // other properties
+ if (dataSourceDescription.getProperties() != null) {
+ properties.putAll(dataSourceDescription.getProperties());
+ }
+
+ ObjectRecipe recipe = new ObjectRecipe(clazz, properties);
+ recipe.allow(Option.IGNORE_MISSING_PROPERTIES);
+
+ Object instance = recipe.create();
+
+ Map<String, Object> unset = recipe.getUnsetProperties();
+ if (unset != null && !unset.isEmpty()) {
+ log.warn("Some DataSource properties were not set {}", unset);
+ }
+
+ return instance;
+ }
+
+ private void setProperty(Map<String, Object> properties, String name, Object value) {
+ if (value != null) {
+ properties.put(name, value);
+ }
+ }
+
+ private String getOsgiJndiName() {
+ if (dataSourceDescription.getProperties() != null) {
+ return dataSourceDescription.getProperties().get(ConnectionFactoryRegistration.OSGI_JNDI_SERVICE_NAME);
+ } else {
+ return null;
+ }
+ }
+
+ private PoolingSupport createPool(int defaultMinSize,
+ int defaultMaxSize,
+ int defaultBlockingTimeoutMilliseconds,
+ int defaultIdleTimeoutMinutes) {
+ return new SinglePool(
+ dataSourceDescription.getMaxPoolSize() != -1 ? dataSourceDescription.getMaxPoolSize() : defaultMaxSize,
+ dataSourceDescription.getMinPoolSize() != -1 ? dataSourceDescription.getMinPoolSize() : defaultMinSize,
+ defaultBlockingTimeoutMilliseconds,
+ dataSourceDescription.getMaxIdleTime() != -1 ? dataSourceDescription.getMaxIdleTime() : defaultIdleTimeoutMinutes,
+ false,
+ false,
+ true);
+ }
+
+ public Object $getResource() throws ResourceException {
+ return connectionManager.createConnectionFactory();
+ }
+
+ public void doFail() {
+ }
+
+ public void doStart() throws Exception {
+ connectionRegistration.register();
+ }
+
+ public void doStop() throws Exception {
+ connectionRegistration.unregister();
+ }
+
+ private class PooledConnectionDataSourceMCF extends AbstractPooledConnectionDataSourceMCF {
+
+ public PooledConnectionDataSourceMCF(ConnectionPoolDataSource ds) {
+ super(ds, new NoExceptionsAreFatalSorter());
+ }
+
+ @Override
+ public String getPassword() {
+ return dataSourceDescription.getPassword();
+ }
+
+ @Override
+ public String getUserName() {
+ return dataSourceDescription.getUser();
+ }
+ }
+
+ private class XADataSourceMCF extends AbstractXADataSourceMCF {
+
+ public XADataSourceMCF(XADataSource ds) {
+ super(ds, new NoExceptionsAreFatalSorter());
+ }
+
+ @Override
+ public String getPassword() {
+ return dataSourceDescription.getPassword();
+ }
+
+ @Override
+ public String getUserName() {
+ return dataSourceDescription.getUser();
+ }
+ }
+
+ private class LocalDataSourceMCF extends AbstractLocalDataSourceMCF {
+
+ public LocalDataSourceMCF(DataSource ds, boolean commitBeforeAutocommit) {
+ super(ds, new NoExceptionsAreFatalSorter(), commitBeforeAutocommit);
+ }
+
+ @Override
+ public String getPassword() {
+ return dataSourceDescription.getPassword();
+ }
+
+ @Override
+ public String getUserName() {
+ return dataSourceDescription.getUser();
+ }
+ }
+
+}
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-1_6/src/main/java/org/apache/geronimo/datasource/DataSourceGBean.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/pom.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/pom.xml (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/pom.xml Wed Apr 7 15:19:18 2010
@@ -96,11 +96,7 @@
<artifactId>geronimo-system</artifactId>
<version>${version}</version>
</dependency>
-
- <!--<dependency>-->
- <!--<groupId>org.apache.geronimo.schema</groupId>-->
- <!--<artifactId>geronimo-schema-j2ee_1.4</artifactId>-->
- <!--</dependency>-->
+
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-jee</artifactId>
@@ -127,6 +123,7 @@
<artifactId>geronimo-transaction-1_6</artifactId>
<version>${version}</version>
</dependency>
+
<dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-test-ddbean</artifactId>
@@ -188,6 +185,7 @@
org.apache.geronimo.connector.deployment,
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>
Added: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java?rev=931583&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java (added)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java Wed Apr 7 15:19:18 2010
@@ -0,0 +1,377 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.datasource.deployment;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.sql.DataSourceDefinition;
+import javax.annotation.sql.DataSourceDefinitions;
+import javax.resource.ResourceException;
+import javax.sql.DataSource;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.datasource.DataSourceDescription;
+import org.apache.geronimo.datasource.DataSourceGBean;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.deployment.annotation.AnnotatedApp;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
+import org.apache.geronimo.kernel.osgi.BundleAnnotationFinder;
+import org.apache.geronimo.naming.deployment.AbstractNamingBuilder;
+import org.apache.geronimo.naming.reference.ResourceReferenceFactory;
+import org.apache.geronimo.xbeans.javaee6.DataSourceType;
+import org.apache.geronimo.xbeans.javaee6.IsolationLevelType;
+import org.apache.geronimo.xbeans.javaee6.PropertyType;
+import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.XmlObject;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.packageadmin.PackageAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean(j2eeType = NameFactory.MODULE_BUILDER)
+public class DataSourceBuilder extends AbstractNamingBuilder {
+
+ private static final Logger log = LoggerFactory.getLogger(DataSourceBuilder.class);
+
+ private final int defaultMaxSize;
+ private final int defaultMinSize;
+ private final int defaultBlockingTimeoutMilliseconds;
+ private final int defaultIdleTimeoutMinutes;
+ private final boolean defaultXATransactionCaching;
+ private final boolean defaultXAThreadCaching;
+
+ private final PackageAdmin packageAdmin;
+ private final QNameSet dataSourceQNameSet;
+
+ public DataSourceBuilder(@ParamAttribute(name = "eeNamespaces") String[] eeNamespaces,
+ @ParamAttribute(name = "defaultMaxSize") int defaultMaxSize,
+ @ParamAttribute(name = "defaultMinSize") int defaultMinSize,
+ @ParamAttribute(name = "defaultBlockingTimeoutMilliseconds") int defaultBlockingTimeoutMilliseconds,
+ @ParamAttribute(name = "defaultIdleTimeoutMinutes") int defaultIdleTimeoutMinutes,
+ @ParamAttribute(name = "defaultXATransactionCaching") boolean defaultXATransactionCaching,
+ @ParamAttribute(name = "defaultXAThreadCaching") boolean defaultXAThreadCaching,
+ @ParamSpecial(type = SpecialAttributeType.bundle) Bundle bundle) {
+ this.defaultMaxSize = defaultMaxSize;
+ this.defaultMinSize = defaultMinSize;
+ this.defaultBlockingTimeoutMilliseconds = defaultBlockingTimeoutMilliseconds;
+ this.defaultIdleTimeoutMinutes = defaultIdleTimeoutMinutes;
+ this.defaultXATransactionCaching = defaultXATransactionCaching;
+ this.defaultXAThreadCaching = defaultXAThreadCaching;
+
+ ServiceReference sr = bundle.getBundleContext().getServiceReference(PackageAdmin.class.getName());
+ this.packageAdmin = (PackageAdmin) bundle.getBundleContext().getService(sr);
+
+ this.dataSourceQNameSet = buildQNameSet(eeNamespaces, "data-source");
+ }
+
+ public void buildNaming(XmlObject specDD, XmlObject plan, Module module, Map componentContext) throws DeploymentException {
+
+ Bundle bundle = module.getEarContext().getDeploymentBundle();
+
+ BundleAnnotationFinder classFinder;
+ try {
+ classFinder = new BundleAnnotationFinder(packageAdmin, bundle);
+ } catch (Exception e) {
+ throw new DeploymentException("could not create class finder " + bundle, e);
+ }
+
+ AnnotatedApp app = module.getAnnotatedApp();
+
+ // step 1: process annotations and update deployment descriptor
+ List<Class> classes;
+ classes = classFinder.findAnnotatedClasses(DataSourceDefinitions.class);
+ if (classes != null) {
+ for (Class clazz : classes) {
+ DataSourceDefinitions dsDefinitions = (DataSourceDefinitions) clazz.getAnnotation(DataSourceDefinitions.class);
+ for (DataSourceDefinition dsDefinition : dsDefinitions.value()) {
+ processDefinition(dsDefinition, app);
+ }
+
+ }
+ }
+ classes = classFinder.findAnnotatedClasses(DataSourceDefinition.class);
+ if (classes != null) {
+ for (Class clazz : classes) {
+ DataSourceDefinition dsDefinition = (DataSourceDefinition) clazz.getAnnotation(DataSourceDefinition.class);
+ processDefinition(dsDefinition, app);
+ }
+ }
+
+ // step 2: bind all defined data sources into jndi
+ DataSourceType[] dataSources = app.getDataSourceArray();
+ if (dataSources != null) {
+ for (int i = 0; i < dataSources.length; i++) {
+ try {
+ addDataSourceGBean(module, componentContext, dataSources[i], "DataSource-" + i);
+ } catch (GBeanAlreadyExistsException e) {
+ throw new DeploymentException("Error creating DataSource gbean", e);
+ }
+ }
+ }
+ }
+
+ private void addDataSourceGBean(Module module, Map componentContext, DataSourceType ds, String name)
+ throws GBeanAlreadyExistsException {
+
+ String jndiName = ds.getName().getStringValue();
+
+ if (lookupJndiContextMap(componentContext, jndiName) != null) {
+ return;
+ }
+
+ EARContext earContext = module.getEarContext();
+
+ AbstractName dataSourceAbstractName = earContext.getNaming().createChildName(module.getModuleName(), name, "GBean");
+
+ GBeanData dataSourceGBean = new GBeanData(dataSourceAbstractName, DataSourceGBean.class);
+
+ DataSourceDescription dsDescription = createDataSourceDescription(ds);
+ dataSourceGBean.setAttribute("dataSourceDescription", dsDescription);
+
+ dataSourceGBean.setAttribute("defaultMaxSize", defaultMaxSize);
+ dataSourceGBean.setAttribute("defaultMinSize", defaultMinSize);
+ dataSourceGBean.setAttribute("defaultBlockingTimeoutMilliseconds", defaultBlockingTimeoutMilliseconds);
+ dataSourceGBean.setAttribute("defaultIdleTimeoutMinutes", defaultIdleTimeoutMinutes);
+
+ dataSourceGBean.setAttribute("defaultXATransactionCaching", defaultXATransactionCaching);
+ dataSourceGBean.setAttribute("defaultXAThreadCaching", defaultXAThreadCaching);
+
+ dataSourceGBean.setReferencePattern("ConnectionTracker", earContext.getConnectionTrackerName());
+ dataSourceGBean.setReferencePattern("TransactionManager", earContext.getTransactionManagerName());
+
+ earContext.addGBean(dataSourceGBean);
+
+ Object ref = new ResourceReferenceFactory<ResourceException>(module.getConfigId(), new AbstractNameQuery(dataSourceAbstractName), DataSource.class);
+ put(jndiName, ref, getJndiContextMap(componentContext));
+ }
+
+ private DataSourceType processDefinition(DataSourceDefinition dsDefinition, AnnotatedApp annotatedApp) {
+ DataSourceType dataSource = findDataSource(dsDefinition, annotatedApp);
+ if (dataSource == null) {
+ dataSource = annotatedApp.addNewDataSource();
+ dataSource.addNewName().setStringValue(dsDefinition.name());
+ }
+
+ if (!dataSource.isSetClassName()) {
+ dataSource.addNewClassName().setStringValue(dsDefinition.className());
+ }
+
+ if (!dataSource.isSetDescription() && dsDefinition.description().trim().length() > 0) {
+ dataSource.addNewDescription().setStringValue(dsDefinition.description().trim());
+ }
+
+ if (!dataSource.isSetUrl() && dsDefinition.url().trim().length() > 0) {
+ dataSource.addNewUrl().setStringValue(dsDefinition.description().trim());
+ }
+
+ if (!dataSource.isSetUser() && dsDefinition.user().trim().length() > 0) {
+ dataSource.addNewUser().setStringValue(dsDefinition.user().trim());
+ }
+
+ if (!dataSource.isSetPassword() && dsDefinition.password().trim().length() > 0) {
+ dataSource.addNewPassword().setStringValue(dsDefinition.password().trim());
+ }
+
+ if (!dataSource.isSetDatabaseName() && dsDefinition.databaseName().trim().length() > 0) {
+ dataSource.addNewDatabaseName().setStringValue(dsDefinition.databaseName().trim());
+ }
+
+ if (!dataSource.isSetPortNumber() && dsDefinition.portNumber() != -1) {
+ dataSource.addNewPortNumber().setStringValue(String.valueOf(dsDefinition.portNumber()));
+ }
+
+ if (!dataSource.isSetServerName() && dsDefinition.serverName().trim().length() > 0) {
+ dataSource.addNewServerName().setStringValue(dsDefinition.serverName().trim());
+ }
+
+ if (!dataSource.isSetUrl() && dsDefinition.url().trim().length() > 0) {
+ dataSource.addNewUrl().setStringValue(dsDefinition.url().trim());
+ }
+
+ if (!dataSource.isSetInitialPoolSize() && dsDefinition.initialPoolSize() != -1) {
+ dataSource.addNewInitialPoolSize().setStringValue(String.valueOf(dsDefinition.initialPoolSize()));
+ }
+
+ if (!dataSource.isSetMaxPoolSize() && dsDefinition.maxPoolSize() != -1) {
+ dataSource.addNewMaxPoolSize().setStringValue(String.valueOf(dsDefinition.maxPoolSize()));
+ }
+
+ if (!dataSource.isSetMinPoolSize() && dsDefinition.minPoolSize() != -1) {
+ dataSource.addNewMinPoolSize().setStringValue(String.valueOf(dsDefinition.minPoolSize()));
+ }
+
+ if (!dataSource.isSetMaxIdleTime() && dsDefinition.maxIdleTime() != -1) {
+ dataSource.addNewMaxIdleTime().setStringValue(String.valueOf(dsDefinition.maxIdleTime()));
+ }
+
+ if (!dataSource.isSetMaxStatements() && dsDefinition.maxStatements() != -1) {
+ dataSource.addNewMaxStatements().setStringValue(String.valueOf(dsDefinition.maxStatements()));
+ }
+
+ if (!dataSource.isSetLoginTimeout() && dsDefinition.loginTimeout() != 0) {
+ dataSource.addNewLoginTimeout().setStringValue(String.valueOf(dsDefinition.loginTimeout()));
+ }
+
+ if (!dataSource.isSetIsolationLevel() && dsDefinition.isolationLevel() != -1) {
+ dataSource.setIsolationLevel(IsolationLevelType.Enum.forInt(dsDefinition.isolationLevel()));
+ }
+
+ if (!dataSource.isSetTransactional()) {
+ dataSource.addNewTransactional().setBooleanValue(dsDefinition.transactional());
+ }
+
+ if (dataSource.getPropertyArray() == null || dataSource.getPropertyArray().length == 0) {
+ String[] properties = dsDefinition.properties();
+ if (properties != null) {
+ for (String property : properties) {
+ String[] tokens = property.split("=");
+ PropertyType propertyType = dataSource.addNewProperty();
+ propertyType.addNewName().setStringValue(tokens[0]);
+ propertyType.addNewValue().setStringValue(tokens[1]);
+ }
+ }
+ }
+
+ return dataSource;
+ }
+
+ private DataSourceType findDataSource(DataSourceDefinition dsDefinition, AnnotatedApp annotatedApp) {
+ String dsDefinitionName = getJndiName(dsDefinition.name().trim());
+ DataSourceType[] dataSources = annotatedApp.getDataSourceArray();
+ for (DataSourceType ds : dataSources) {
+ String dsName = getJndiName(ds.getName().getStringValue().trim());
+ if (dsDefinitionName.equals(dsName)) {
+ return ds;
+ }
+ }
+ return null;
+ }
+
+ private DataSourceDescription createDataSourceDescription(DataSourceType ds) {
+ DataSourceDescription dsDescription = new DataSourceDescription();
+
+ dsDescription.setName(ds.getName().getStringValue());
+ dsDescription.setClassName(ds.getClassName().getStringValue());
+
+ if (ds.isSetDescription()) {
+ dsDescription.setDescription(ds.getDescription().getStringValue());
+ }
+
+ if (ds.isSetUrl()) {
+ dsDescription.setUrl(ds.getUrl().getStringValue());
+ }
+
+ if (ds.isSetUser()) {
+ dsDescription.setUser(ds.getUser().getStringValue());
+ }
+
+ if (ds.isSetPassword()) {
+ dsDescription.setPassword(ds.getPassword().getStringValue());
+ }
+
+ if (ds.isSetDatabaseName()) {
+ dsDescription.setDatabaseName(ds.getDatabaseName().getStringValue());
+ }
+
+ if (ds.isSetServerName()) {
+ dsDescription.setServerName(ds.getServerName().getStringValue());
+ }
+
+ if (ds.isSetPortNumber()) {
+ dsDescription.setPortNumber(ds.getPortNumber().getBigIntegerValue().intValue());
+ }
+
+ if (ds.isSetLoginTimeout()) {
+ dsDescription.setLoginTimeout(ds.getLoginTimeout().getBigIntegerValue().intValue());
+ }
+
+ PropertyType[] props = ds.getPropertyArray();
+ if (props != null) {
+ Map<String, String> properties = new HashMap<String, String>();
+ for (PropertyType prop : props) {
+ properties.put(prop.getName().getStringValue(), prop.getValue().getStringValue());
+ }
+ dsDescription.setProperties(properties);
+ }
+
+ // transaction properties
+
+ if (ds.isSetTransactional()) {
+ dsDescription.setTransactional(ds.getTransactional().getBooleanValue());
+ }
+
+ if (ds.isSetIsolationLevel()) {
+ // dsDefinition.setIsolationLevel(ds.getIsolationLevel().intValue());
+ }
+
+ // pool properties
+
+ if (ds.isSetInitialPoolSize()) {
+ dsDescription.setInitialPoolSize(ds.getInitialPoolSize().getBigIntegerValue().intValue());
+ }
+
+ if (ds.isSetMaxPoolSize()) {
+ dsDescription.setMaxPoolSize(ds.getMaxPoolSize().getBigIntegerValue().intValue());
+ }
+
+ if (ds.isSetMinPoolSize()) {
+ dsDescription.setMinPoolSize(ds.getMinPoolSize().getBigIntegerValue().intValue());
+ }
+
+ if (ds.isSetMaxStatements()) {
+ dsDescription.setMaxStatements(ds.getMaxStatements().getBigIntegerValue().intValue());
+ }
+
+ if (ds.isSetMaxIdleTime()) {
+ dsDescription.setMaxIdleTime(ds.getMaxIdleTime().getBigIntegerValue().intValue());
+ }
+
+ return dsDescription;
+ }
+
+ private static String getJndiName(String name) {
+ if (name.startsWith("java:")) {
+ return name;
+ } else {
+ return "java:comp/env/" + name;
+ }
+ }
+
+ public QNameSet getPlanQNameSet() {
+ return QNameSet.EMPTY;
+ }
+
+ public QNameSet getSpecQNameSet() {
+ return dataSourceQNameSet;
+ }
+}
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/datasource/deployment/DataSourceBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/plugins/connector-1_6/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/pom.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/pom.xml (original)
+++ geronimo/server/trunk/plugins/connector-1_6/pom.xml Wed Apr 7 15:19:18 2010
@@ -55,6 +55,12 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>org.tranql</groupId>
+ <artifactId>tranql-connector</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.aries.transaction</groupId>
<artifactId>org.apache.aries.transaction.blueprint</artifactId>
<version>0.1-incubating-SNAPSHOT</version>
Modified: geronimo/server/trunk/plugins/connector-1_6/transaction-1_6/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/transaction-1_6/src/main/history/dependencies.xml?rev=931583&r1=931582&r2=931583&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/transaction-1_6/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/connector-1_6/transaction-1_6/src/main/history/dependencies.xml Wed Apr 7 15:19:18 2010
@@ -51,4 +51,9 @@
<artifactId>geronimo-jpa_2.0_spec</artifactId>
<type>jar</type>
</dependency>
+ <dependency>
+ <groupId>org.tranql</groupId>
+ <artifactId>tranql-connector</artifactId>
+ <type>jar</type>
+ </dependency>
</plugin-artifact>