/*
* IronJacamar, a Java EE Connector Architecture implementation
* Copyright 2015, Red Hat Inc, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the Eclipse Public License 1.0 as
* published by the Free Software Foundation.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse
* Public License for more details.
*
* You should have received a copy of the Eclipse Public License
* along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.ironjacamar.rars;
import org.ironjacamar.embedded.dsl.resourceadapters20.api.CapacityType;
import org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionsType;
import org.ironjacamar.embedded.dsl.resourceadapters20.api.ResourceAdapterType;
import org.ironjacamar.embedded.dsl.resourceadapters20.api.ResourceAdaptersDescriptor;
import org.ironjacamar.rars.lazy.LazyConnection;
import org.ironjacamar.rars.lazy.LazyConnectionFactory;
import org.ironjacamar.rars.lazy.LazyConnectionFactoryImpl;
import org.ironjacamar.rars.lazy.LazyConnectionImpl;
import org.ironjacamar.rars.lazy.LazyManagedConnectionFactory;
import org.ironjacamar.rars.lazy.LazyResourceAdapter;
import org.ironjacamar.rars.perf.PerfConnection;
import org.ironjacamar.rars.perf.PerfConnectionFactory;
import org.ironjacamar.rars.perf.PerfConnectionFactoryImpl;
import org.ironjacamar.rars.perf.PerfConnectionImpl;
import org.ironjacamar.rars.perf.PerfManagedConnectionFactory;
import org.ironjacamar.rars.security.UnifiedSecurityConnection;
import org.ironjacamar.rars.security.UnifiedSecurityConnectionFactory;
import org.ironjacamar.rars.security.UnifiedSecurityConnectionFactoryImpl;
import org.ironjacamar.rars.security.UnifiedSecurityConnectionImpl;
import org.ironjacamar.rars.security.UnifiedSecurityManagedConnectionFactory;
import org.ironjacamar.rars.security.UnifiedSecurityResourceAdapter;
import org.ironjacamar.rars.test.TestAdminObject;
import org.ironjacamar.rars.test.TestAdminObjectImpl;
import org.ironjacamar.rars.test.TestConnection;
import org.ironjacamar.rars.test.TestConnectionFactory;
import org.ironjacamar.rars.test.TestConnectionFactoryImpl;
import org.ironjacamar.rars.test.TestConnectionImpl;
import org.ironjacamar.rars.test.TestManagedConnectionFactory;
import org.ironjacamar.rars.test.TestResourceAdapter;
import org.ironjacamar.rars.test.inflow.TestActivationSpec;
import org.ironjacamar.rars.test.inflow.TestMessageListener;
import org.ironjacamar.rars.txlog.TxLogConnection;
import org.ironjacamar.rars.txlog.TxLogConnectionFactory;
import org.ironjacamar.rars.txlog.TxLogConnectionFactoryImpl;
import org.ironjacamar.rars.txlog.TxLogConnectionImpl;
import org.ironjacamar.rars.txlog.TxLogManagedConnectionFactory;
import org.ironjacamar.rars.wm.WorkConnection;
import org.ironjacamar.rars.wm.WorkConnectionFactory;
import org.ironjacamar.rars.wm.WorkConnectionFactoryImpl;
import org.ironjacamar.rars.wm.WorkConnectionImpl;
import org.ironjacamar.rars.wm.WorkManagedConnectionFactory;
import org.ironjacamar.rars.wm.WorkManagedConnectionFactoryNoHashCode;
import org.ironjacamar.rars.wm.WorkResourceAdapter;
import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.ResourceAdapterArchive;
import org.jboss.shrinkwrap.descriptor.api.Descriptors;
/**
* A factory for resource adapter used in testing
*
* @author <a href="jesper.pedersen@ironjacamar.org">Jesper Pedersen</a>
*/
public class ResourceAdapterFactory
{
/**
* Constructor
*/
private ResourceAdapterFactory()
{
}
/**
* Create the lazy.rar
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createLazyRar()
{
org.jboss.shrinkwrap.descriptor.api.connector15.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector15.ConnectorDescriptor.class, "ra.xml").version("1.5");
org.jboss.shrinkwrap.descriptor.api.connector15.ResourceadapterType rt = raXml.getOrCreateResourceadapter()
.resourceadapterClass(LazyResourceAdapter.class.getName());
rt.createConfigProperty().configPropertyName("Enable")
.configPropertyType(Boolean.class.getName()).configPropertyValue(Boolean.TRUE.toString());
rt.createConfigProperty().configPropertyName("LocalTransaction")
.configPropertyType(Boolean.class.getName()).configPropertyValue(Boolean.FALSE.toString());
rt.createConfigProperty().configPropertyName("XATransaction")
.configPropertyType(Boolean.class.getName()).configPropertyValue(Boolean.FALSE.toString());
org.jboss.shrinkwrap.descriptor.api.connector15.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("XATransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector15.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(LazyManagedConnectionFactory.class.getName())
.connectionfactoryInterface(LazyConnectionFactory.class.getName())
.connectionfactoryImplClass(LazyConnectionFactoryImpl.class.getName())
.connectionInterface(LazyConnection.class.getName())
.connectionImplClass(LazyConnectionImpl.class.getName());
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "lazy.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "lazy.jar");
ja.addPackages(true, LazyConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the lazy.rar deployment
*
* @param tsl The transaction support level
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createLazyDeployment(TransactionSupportLevel tsl)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors.create(ResourceAdaptersDescriptor.class, "lazy-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("lazy.rar");
if (tsl == null || tsl == TransactionSupportLevel.NoTransaction)
{
dashRaXmlRt.transactionSupport("NoTransaction");
}
else if (tsl == TransactionSupportLevel.LocalTransaction)
{
dashRaXmlRt.transactionSupport("LocalTransaction");
dashRaXmlRt.createConfigProperty().name("LocalTransaction").text(Boolean.TRUE.toString());
}
else
{
dashRaXmlRt.transactionSupport("XATransaction");
dashRaXmlRt.createConfigProperty().name("XATransaction").text(Boolean.TRUE.toString());
}
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(LazyManagedConnectionFactory.class.getName())
.jndiName("java:/eis/LazyConnectionFactory").id("LazyConnectionFactory").sharable(true).enlistment(true);
org.ironjacamar.embedded.dsl.resourceadapters20.api.TimeoutType dashRaXmlTt = dashRaXmlCdt.getOrCreateTimeout()
.blockingTimeoutMillis(100).idleTimeoutMinutes(Integer.valueOf(0));
if (tsl == TransactionSupportLevel.XATransaction)
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.XaPoolType dashRaXmlPt = dashRaXmlCdt.getOrCreateXaPool()
.minPoolSize(0).initialPoolSize(0).maxPoolSize(1);
org.ironjacamar.embedded.dsl.resourceadapters20.api.RecoverType dashRaXmlRyt = dashRaXmlCdt
.getOrCreateRecovery().noRecovery(Boolean.TRUE);
}
else
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.PoolType dashRaXmlPt = dashRaXmlCdt.getOrCreatePool()
.minPoolSize(0).initialPoolSize(0).maxPoolSize(1);
}
return dashRaXml;
}
/**
* Create the perf.rar
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createPerfRar()
{
org.jboss.shrinkwrap.descriptor.api.connector15.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector15.ConnectorDescriptor.class, "ra.xml").version("1.5");
org.jboss.shrinkwrap.descriptor.api.connector15.ResourceadapterType rt = raXml.getOrCreateResourceadapter();
org.jboss.shrinkwrap.descriptor.api.connector15.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("XATransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector15.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(PerfManagedConnectionFactory.class.getName())
.connectionfactoryInterface(PerfConnectionFactory.class.getName())
.connectionfactoryImplClass(PerfConnectionFactoryImpl.class.getName())
.connectionInterface(PerfConnection.class.getName())
.connectionImplClass(PerfConnectionImpl.class.getName());
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "perf.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "perf.jar");
ja.addPackages(true, PerfConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the perf.rar deployment
*
* @param tsl The transaction support level
* @param ccm Use CCM
* @param txBeginDuration The begin duration for the transaction
* @param txCommitDuration The commit duration for the transaction
* @param poolSize The pool size
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createPerfDeployment(TransactionSupportLevel tsl, boolean ccm,
long txBeginDuration, long txCommitDuration, int poolSize)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors.create(ResourceAdaptersDescriptor.class, "perf-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("perf.rar");
if (tsl == null || tsl == TransactionSupportLevel.NoTransaction)
{
dashRaXmlRt.transactionSupport("NoTransaction");
}
else if (tsl == TransactionSupportLevel.LocalTransaction)
{
dashRaXmlRt.transactionSupport("LocalTransaction");
}
else
{
dashRaXmlRt.transactionSupport("XATransaction");
}
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(PerfManagedConnectionFactory.class.getName())
.jndiName("java:/eis/PerfConnectionFactory").id("PerfConnectionFactory").useCcm(ccm);
dashRaXmlCdt.createConfigProperty().name("TxBeginDuration").text(Long.toString(txBeginDuration));
dashRaXmlCdt.createConfigProperty().name("TxCommitDuration").text(Long.toString(txCommitDuration));
org.ironjacamar.embedded.dsl.resourceadapters20.api.TimeoutType dashRaXmlTt = dashRaXmlCdt.getOrCreateTimeout()
.idleTimeoutMinutes(Integer.valueOf(0));
if (tsl == TransactionSupportLevel.XATransaction)
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.XaPoolType dashRaXmlPt = dashRaXmlCdt.getOrCreateXaPool()
.minPoolSize(poolSize).initialPoolSize(poolSize).maxPoolSize(poolSize).prefill(Boolean.TRUE)
.wrapXaResource(Boolean.FALSE);
org.ironjacamar.embedded.dsl.resourceadapters20.api.RecoverType dashRaXmlRyt = dashRaXmlCdt
.getOrCreateRecovery().noRecovery(Boolean.TRUE);
}
else
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.PoolType dashRaXmlPt = dashRaXmlCdt.getOrCreatePool()
.minPoolSize(poolSize).initialPoolSize(poolSize).maxPoolSize(poolSize).prefill(Boolean.TRUE);
}
return dashRaXml;
}
/**
* Create the txlog.rar
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createTxLogRar()
{
org.jboss.shrinkwrap.descriptor.api.connector15.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector15.ConnectorDescriptor.class, "ra.xml").version("1.5");
org.jboss.shrinkwrap.descriptor.api.connector15.ResourceadapterType rt = raXml.getOrCreateResourceadapter();
org.jboss.shrinkwrap.descriptor.api.connector15.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("XATransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector15.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(TxLogManagedConnectionFactory.class.getName())
.connectionfactoryInterface(TxLogConnectionFactory.class.getName())
.connectionfactoryImplClass(TxLogConnectionFactoryImpl.class.getName())
.connectionInterface(TxLogConnection.class.getName())
.connectionImplClass(TxLogConnectionImpl.class.getName());
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "txlog.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "txlog.jar");
ja.addPackages(true, TxLogConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the txlog.rar deployment
*
* @param tsl The transaction support level
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createTxLogDeployment(TransactionSupportLevel tsl)
{
return createTxLogDeployment(tsl, "");
}
/**
* Create the txlog.rar deployment
*
* @param tsl The transaction support level
* @param postfix The JNDI postfix
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createTxLogDeployment(TransactionSupportLevel tsl, String postfix)
{
return createTxLogDeployment(tsl, postfix, null);
}
/**
* Create the txlog.rar deployment
*
* @param tsl The transaction support level
* @param postfix The JNDI postfix
* @param tracking Do tracking
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createTxLogDeployment(TransactionSupportLevel tsl,
String postfix,
Boolean tracking)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors
.create(ResourceAdaptersDescriptor.class, "txlog" + postfix + "-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("txlog.rar");
if (tsl == null || tsl == TransactionSupportLevel.NoTransaction)
{
dashRaXmlRt.transactionSupport("NoTransaction");
}
else if (tsl == TransactionSupportLevel.LocalTransaction)
{
dashRaXmlRt.transactionSupport("LocalTransaction");
}
else
{
dashRaXmlRt.transactionSupport("XATransaction");
}
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(TxLogManagedConnectionFactory.class.getName())
.jndiName("java:/eis/TxLogConnectionFactory" + postfix).id("TxLogConnectionFactory" + postfix);
if (tracking != null)
dashRaXmlCdt.tracking(tracking);
if (tsl == null ||
tsl == TransactionSupportLevel.NoTransaction ||
tsl == TransactionSupportLevel.LocalTransaction)
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.PoolType dashRaXmlPt = dashRaXmlCdt.getOrCreatePool()
.minPoolSize(0).initialPoolSize(0).maxPoolSize(10);
}
else
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.TimeoutType dashRaXmlTt = dashRaXmlCdt.getOrCreateTimeout()
.xaResourceTimeout(200);
org.ironjacamar.embedded.dsl.resourceadapters20.api.XaPoolType dashRaXmlPt = dashRaXmlCdt.getOrCreateXaPool()
.minPoolSize(0).initialPoolSize(0).maxPoolSize(10);
dashRaXmlCdt.getOrCreateRecovery().getOrCreateRecoveryCredential().securityDomain("DefaultSecurityDomain");
}
return dashRaXml;
}
/**
* Create the work.rar
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createWorkRar()
{
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor.class, "ra.xml").version("1.6");
org.jboss.shrinkwrap.descriptor.api.connector16.ResourceadapterType rt = raXml.getOrCreateResourceadapter()
.resourceadapterClass(WorkResourceAdapter.class.getName());
org.jboss.shrinkwrap.descriptor.api.connector16.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("NoTransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(WorkManagedConnectionFactory.class.getName())
.connectionfactoryInterface(WorkConnectionFactory.class.getName())
.connectionfactoryImplClass(WorkConnectionFactoryImpl.class.getName())
.connectionInterface(WorkConnection.class.getName())
.connectionImplClass(WorkConnectionImpl.class.getName());
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "work.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "work.jar");
ja.addPackages(true, WorkConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the work.rar
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createWorkRarMCFNoHashCode()
{
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor.class, "ra.xml").version("1.6");
org.jboss.shrinkwrap.descriptor.api.connector16.ResourceadapterType rt = raXml.getOrCreateResourceadapter()
.resourceadapterClass(WorkResourceAdapter.class.getName());
org.jboss.shrinkwrap.descriptor.api.connector16.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("NoTransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(WorkManagedConnectionFactoryNoHashCode.class.getName())
.connectionfactoryInterface(WorkConnectionFactory.class.getName())
.connectionfactoryImplClass(WorkConnectionFactoryImpl.class.getName())
.connectionInterface(WorkConnection.class.getName())
.connectionImplClass(WorkConnectionImpl.class.getName());
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "work.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "work.jar");
ja.addPackages(true, WorkConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the work.rar deployment
*
* @param bc The BootstrapContext name; <code>null</code> if default
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createWorkDeployment(String bc)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors.create(ResourceAdaptersDescriptor.class, "work-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("work.rar");
if (bc != null)
dashRaXmlRt.bootstrapContext(bc);
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(WorkManagedConnectionFactory.class.getName())
.jndiName("java:/eis/WorkConnectionFactory").id("WorkConnectionFactory");
org.ironjacamar.embedded.dsl.resourceadapters20.api.PoolType dashRaXmlPt = dashRaXmlCdt.getOrCreatePool()
.minPoolSize(0).initialPoolSize(0).maxPoolSize(10);
return dashRaXml;
}
/**
* Create the work.rar deployment
*
* @param bc The BootstrapContext name; <code>null</code> if default
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createWorkDeploymentMCFNoHashCode(String bc)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors.create(ResourceAdaptersDescriptor.class, "work-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("work.rar");
if (bc != null)
dashRaXmlRt.bootstrapContext(bc);
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(WorkManagedConnectionFactoryNoHashCode.class.getName())
.jndiName("java:/eis/WorkConnectionFactory").id("WorkConnectionFactory");
org.ironjacamar.embedded.dsl.resourceadapters20.api.PoolType dashRaXmlPt = dashRaXmlCdt.getOrCreatePool()
.minPoolSize(0).initialPoolSize(0).maxPoolSize(10);
return dashRaXml;
}
/**
* Create the unified-security.rar
*
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createUnifiedSecurityRar()
{
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor.class, "ra.xml").version("1.6");
org.jboss.shrinkwrap.descriptor.api.connector16.ResourceadapterType rt = raXml.getOrCreateResourceadapter()
.resourceadapterClass(UnifiedSecurityResourceAdapter.class.getName());
org.jboss.shrinkwrap.descriptor.api.connector16.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("XATransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(UnifiedSecurityManagedConnectionFactory.class.getName())
.connectionfactoryInterface(UnifiedSecurityConnectionFactory.class.getName())
.connectionfactoryImplClass(UnifiedSecurityConnectionFactoryImpl.class.getName())
.connectionInterface(UnifiedSecurityConnection.class.getName())
.connectionImplClass(UnifiedSecurityConnectionImpl.class.getName());
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "unified-security.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "unified-security.jar");
ja.addPackages(true, UnifiedSecurityConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the work.rar deployment
*
* @param bc The BootstrapContext name; <code>null</code> if default
* @param securityDomain The SecurityDomain name; <code>null</code> if default
* @param tsl The transaction support level
* @param id The JNDI postfix and id
* @param prefill boolean to prefill or not
* @param initialPoolSize The initial pool size value
*
*
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createUnifiedSecurityDeployment(String bc, String securityDomain,
TransactionSupportLevel tsl, String id, boolean prefill, int initialPoolSize)
{
return createUnifiedSecurityDeployment(bc, securityDomain, tsl, id, prefill, initialPoolSize,
"FailingConnectionOnly");
}
/**
* Create the work.rar deployment
*
* @param bc The BootstrapContext name; <code>null</code> if default
* @param securityDomain The SecurityDomain name; <code>null</code> if default
* @param tsl The transaction support level
* @param id The JNDI postfix and id
* @param prefill boolean to prefill or not
* @param initialPoolSize The initial pool size value
* @param flushStrategy the flush strategy
*
*
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createUnifiedSecurityDeployment(String bc, String securityDomain,
TransactionSupportLevel tsl, String id, boolean prefill, int initialPoolSize, String flushStrategy)
{
return createUnifiedSecurityDeployment(bc, securityDomain, tsl, id, prefill, initialPoolSize,
flushStrategy, false, null, null);
}
/**
* Create the work.rar deployment
*
* @param bc The BootstrapContext name; <code>null</code> if default
* @param securityDomain The SecurityDomain name; <code>null</code> if default
* @param tsl The transaction support level
* @param id The JNDI postfix and id
* @param prefill boolean to prefill or not
* @param initialPoolSize The initial pool size value
* @param flushStrategy the flush strategy
* @param validateOnMatch if true validate On match is enabled
* @param incrementerClass the incrementer class name for capacity settings
* @param decrementerClass the decrementer class name for capacity settings
* @return The resource adapter descriptor
*
*
*/
public static ResourceAdaptersDescriptor createUnifiedSecurityDeployment(String bc, String securityDomain,
TransactionSupportLevel tsl, String id, boolean prefill, int initialPoolSize, String flushStrategy,
boolean validateOnMatch, String incrementerClass, String decrementerClass)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors
.create(ResourceAdaptersDescriptor.class, "unified-security-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("unified-security.rar");
if (bc != null)
dashRaXmlRt.bootstrapContext(bc);
if (tsl == null || tsl == TransactionSupportLevel.NoTransaction)
{
dashRaXmlRt.transactionSupport("NoTransaction");
}
else if (tsl == TransactionSupportLevel.LocalTransaction)
{
dashRaXmlRt.transactionSupport("LocalTransaction");
}
else
{
dashRaXmlRt.transactionSupport("XATransaction");
}
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(UnifiedSecurityManagedConnectionFactory.class.getName())
.jndiName("java:/eis/" + id).id(id);
if (validateOnMatch)
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.ValidationType dashRaXmlVt = dashRaXmlCdt
.getOrCreateValidation();
dashRaXmlVt.validateOnMatch(Boolean.TRUE);
}
if (securityDomain != null)
{
dashRaXmlCdt.getOrCreateSecurity().securityDomain(securityDomain);
}
if (tsl != TransactionSupportLevel.XATransaction)
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.PoolType dashRaXmlPt = dashRaXmlCdt.getOrCreatePool()
.minPoolSize(initialPoolSize).initialPoolSize(initialPoolSize).maxPoolSize(20).prefill(prefill)
.flushStrategy(flushStrategy);
if (incrementerClass != null || decrementerClass != null)
{
CapacityType capacityType = dashRaXmlPt.getOrCreateCapacity();
capacityType.getOrCreateDecrementer().className(decrementerClass);
capacityType.getOrCreateIncrementer().className(incrementerClass);
}
}
else
{
org.ironjacamar.embedded.dsl.resourceadapters20.api.XaPoolType dashRaXmlPt = dashRaXmlCdt.getOrCreateXaPool()
.minPoolSize(initialPoolSize).initialPoolSize(initialPoolSize).maxPoolSize(20).prefill(prefill)
.flushStrategy(flushStrategy);
if (incrementerClass != null || decrementerClass != null)
{
CapacityType capacityType = dashRaXmlPt.getOrCreateCapacity();
capacityType.getOrCreateDecrementer().className(decrementerClass);
capacityType.getOrCreateIncrementer().className(incrementerClass);
}
}
return dashRaXml;
}
/**
* Create the work.rar deployment
* @param bc The BootstrapContext name; <code>null</code> if default
* @param securityDomain The SecurityDomain name; <code>null</code> if default
* @param tsl The transaction support level
* @param id The JNDI postfix and id
* @param decrementerClass the decrementer calss name
* @param incrementerClass the incrementer className
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createCapacityActivation(String bc, String securityDomain,
TransactionSupportLevel tsl, String id, String incrementerClass, String decrementerClass)
{
return createUnifiedSecurityDeployment(bc, securityDomain, tsl, id, true, 1, "FailingConnectionOnly", false,
incrementerClass, decrementerClass);
}
/**
* Create the test.rar
*
* @return The resource adapter archive
*/
public static ResourceAdapterArchive createTestRar()
{
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor raXml = Descriptors
.create(org.jboss.shrinkwrap.descriptor.api.connector16.ConnectorDescriptor.class, "ra.xml").version("1.6");
org.jboss.shrinkwrap.descriptor.api.connector16.ResourceadapterType rt = raXml.getOrCreateResourceadapter()
.resourceadapterClass(TestResourceAdapter.class.getName());
org.jboss.shrinkwrap.descriptor.api.connector16.OutboundResourceadapterType ort = rt
.getOrCreateOutboundResourceadapter().transactionSupport("NoTransaction").reauthenticationSupport(false);
org.jboss.shrinkwrap.descriptor.api.connector16.ConnectionDefinitionType cdt = ort.createConnectionDefinition()
.managedconnectionfactoryClass(TestManagedConnectionFactory.class.getName())
.connectionfactoryInterface(TestConnectionFactory.class.getName())
.connectionfactoryImplClass(TestConnectionFactoryImpl.class.getName())
.connectionInterface(TestConnection.class.getName())
.connectionImplClass(TestConnectionImpl.class.getName());
cdt.createConfigProperty().configPropertyName("CreateFailureCount")
.configPropertyType(Integer.class.getName()).configPropertyValue("0");
cdt.createConfigProperty().configPropertyName("InvalidConnectionFailureCount")
.configPropertyType(Integer.class.getName()).configPropertyValue("0");
rt.createAdminobject().adminobjectInterface(TestAdminObject.class.getName())
.adminobjectClass(TestAdminObjectImpl.class.getName());
rt.getOrCreateInboundResourceadapter().getOrCreateMessageadapter().getOrCreateMessagelistener()
.messagelistenerType(TestMessageListener.class.getName())
.getOrCreateActivationspec().activationspecClass(TestActivationSpec.class.getName())
.getOrCreateRequiredConfigProperty().configPropertyName("Name");
ResourceAdapterArchive raa = ShrinkWrap.create(ResourceAdapterArchive.class, "test.rar");
JavaArchive ja = ShrinkWrap.create(JavaArchive.class, "test.jar");
ja.addPackages(true, PerfConnection.class.getPackage());
raa.addAsLibrary(ja);
raa.addAsManifestResource(new StringAsset(raXml.exportAsString()), "ra.xml");
return raa;
}
/**
* Create the test.rar deployment
*
* @param allocationRetry The number of allocation retries
* @param validation True is foreground, false is background, null is none
* @param invalidConnectionFailureCount The invalid connection failure count
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createTestDeployment(int allocationRetry,
Boolean validation, int invalidConnectionFailureCount)
{
return createTestDeployment(allocationRetry, validation, invalidConnectionFailureCount,
"TestConnectionFactory", "TestAdminObject", null);
}
/**
* Create the test.rar deployment
*
* @param allocationRetry The number of allocation retries
* @param validation True is foreground, false is background, null is none
* @param invalidConnectionFailureCount The invalid connection failure count
* @param connectionDefID the id of ConnectionDefinition
* @param adminObjectID the id of AdminObject
* @param bc the BootstrapContext
* @return The resource adapter descriptor
*/
public static ResourceAdaptersDescriptor createTestDeployment(int allocationRetry, Boolean validation,
int invalidConnectionFailureCount, String connectionDefID, String adminObjectID, String bc)
{
ResourceAdaptersDescriptor dashRaXml = Descriptors.create(ResourceAdaptersDescriptor.class, "test-ra.xml");
ResourceAdapterType dashRaXmlRt = dashRaXml.createResourceAdapter().archive("test.rar");
if (bc != null)
dashRaXmlRt.bootstrapContext(bc);
ConnectionDefinitionsType dashRaXmlCdst = dashRaXmlRt.getOrCreateConnectionDefinitions();
org.ironjacamar.embedded.dsl.resourceadapters20.api.ConnectionDefinitionType dashRaXmlCdt = dashRaXmlCdst
.createConnectionDefinition().className(TestManagedConnectionFactory.class.getName())
.jndiName("java:/eis/" + connectionDefID).id(connectionDefID);
if (allocationRetry > 0)
{
dashRaXmlCdt.createConfigProperty().name("CreateFailureCount")
.text(Integer.toString(allocationRetry));
dashRaXmlCdt.getOrCreateTimeout().allocationRetry(Integer.valueOf(allocationRetry))
.allocationRetryWaitMillis(100);
}
if (validation != null)
{
dashRaXmlCdt.createConfigProperty().name("InvalidConnectionFailureCount")
.text(Integer.toString(invalidConnectionFailureCount));
org.ironjacamar.embedded.dsl.resourceadapters20.api.ValidationType dashRaXmlVt =
dashRaXmlCdt.getOrCreateValidation();
if (validation)
{
dashRaXmlVt.validateOnMatch(Boolean.TRUE);
}
else
{
dashRaXmlVt.backgroundValidation(Boolean.TRUE).backgroundValidationMillis(0);
}
}
dashRaXmlRt.getOrCreateAdminObjects().createAdminObject().className(TestAdminObjectImpl.class.getName())
.jndiName("java:/eis/" + adminObjectID);
return dashRaXml;
}
}