This is an automated email from the git hooks/post-receive script. eugene-guest pushed a commit to annotated tag OpenBSD in repository testng.
commit 50f705422b30e9fe018f4973e64a084d544f0a5b Author: Julien Herr <[email protected]> Date: Thu May 21 18:57:31 2015 +0200 Remove old projects --- gigaspaces/.classpath | 12 - gigaspaces/.project | 17 -- gigaspaces/3rdparty/JSpaces.jar | Bin 5446503 -> 0 bytes .../3rdparty/common/backport-util-concurrent.jar | Bin 327810 -> 0 bytes gigaspaces/3rdparty/jini/jsk-lib.jar | Bin 291877 -> 0 bytes gigaspaces/3rdparty/jini/jsk-platform.jar | Bin 995179 -> 0 bytes gigaspaces/build.xml | 101 ------- .../src/org/testng/gigaspaces/ResultEntry.java | 44 --- .../org/testng/gigaspaces/SpaceMasterAdapter.java | 153 ---------- .../org/testng/gigaspaces/SpaceWorkerAdapter.java | 113 ------- .../src/org/testng/gigaspaces/SuiteEntry.java | 59 ---- .../test/src/test/gigaspaces/DistributedTest.java | 171 ----------- gigaspaces/test/src/test/gigaspaces/Test1.java | 15 - gigaspaces/test/src/test/gigaspaces/Test2.java | 14 - spring/.classpath | 15 - spring/.cvsignore | 3 - spring/.project | 17 -- spring/3rdparty/commons-logging-1.0.4.jar | Bin 38015 -> 0 bytes spring/3rdparty/spring-mock.jar | Bin 99358 -> 0 bytes spring/3rdparty/spring.jar | Bin 2593850 -> 0 bytes spring/LICENSE.txt | 201 ------------- spring/README.TXT | 23 -- spring/build.xml | 94 ------ ...tractDependencyInjectionSpringContextTests.java | 259 ---------------- .../spring/test/AbstractSpringContextTests.java | 140 --------- ...tTransactionalDataSourceSpringContextTests.java | 175 ----------- .../AbstractTransactionalSpringContextTests.java | 328 --------------------- .../src/common/org/testng/spring/test/package.html | 14 - .../test/AbstractSingleSpringContextTests.java | 192 ------------ .../AbstractAnnotationAwareTransactionalTests.java | 67 ----- .../test/AbstractSingleSpringContextTests.java | 194 ------------ 31 files changed, 2421 deletions(-) diff --git a/gigaspaces/.classpath b/gigaspaces/.classpath deleted file mode 100644 index 40194be..0000000 --- a/gigaspaces/.classpath +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="test/src"/> - <classpathentry kind="lib" path="3rdparty/JSpaces.jar"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry combineaccessrules="false" kind="src" path="/TestNG"/> - <classpathentry kind="lib" path="3rdparty/jini/jsk-lib.jar"/> - <classpathentry kind="lib" path="3rdparty/jini/jsk-platform.jar"/> - <classpathentry kind="lib" path="3rdparty/common/backport-util-concurrent.jar"/> - <classpathentry kind="output" path="z_build"/> -</classpath> diff --git a/gigaspaces/.project b/gigaspaces/.project deleted file mode 100644 index f89ddc5..0000000 --- a/gigaspaces/.project +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>testng-gigaspaces</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/gigaspaces/3rdparty/JSpaces.jar b/gigaspaces/3rdparty/JSpaces.jar deleted file mode 100644 index 5f113fb..0000000 Binary files a/gigaspaces/3rdparty/JSpaces.jar and /dev/null differ diff --git a/gigaspaces/3rdparty/common/backport-util-concurrent.jar b/gigaspaces/3rdparty/common/backport-util-concurrent.jar deleted file mode 100644 index 99f9b9c..0000000 Binary files a/gigaspaces/3rdparty/common/backport-util-concurrent.jar and /dev/null differ diff --git a/gigaspaces/3rdparty/jini/jsk-lib.jar b/gigaspaces/3rdparty/jini/jsk-lib.jar deleted file mode 100644 index 7a65cae..0000000 Binary files a/gigaspaces/3rdparty/jini/jsk-lib.jar and /dev/null differ diff --git a/gigaspaces/3rdparty/jini/jsk-platform.jar b/gigaspaces/3rdparty/jini/jsk-platform.jar deleted file mode 100644 index 647658d..0000000 Binary files a/gigaspaces/3rdparty/jini/jsk-platform.jar and /dev/null differ diff --git a/gigaspaces/build.xml b/gigaspaces/build.xml deleted file mode 100644 index be3d929..0000000 --- a/gigaspaces/build.xml +++ /dev/null @@ -1,101 +0,0 @@ -<project name="testng-gigaspaces" default="both" basedir="."> - - <target name="init"> - <tstamp /> - <property file="../build.properties" /> - <property file="build.properties" /> - <!-- Settings --> - <property name="jdk" value="jdk15" /> - <property name="optimize" value="false" /> - <property name="debug" value="true" /> - - <!-- Directories --> - <property name="src.dir" location="src" /> - <property name="topbuild.dir" location="build" /> - <property name="build.dir" location="${topbuild.dir}/${jdk}" /> - <property name="classes.dir" location="${build.dir}/classes" /> - <property name="dependencies.dir" location="3rdparty" /> - <property name="topjavadocs.dir" location="javadocs" /> - <property name="javadocs.dir" location="${topjavadocs.dir}/${jdk}" /> - - <property name="testng.gigaspaces.jar" location="testng-gigaspaces-${jdk}.jar" /> - - <condition property="source.version" value="1.4"> - <equals arg1="${jdk}" arg2="jdk14"/> - </condition> - <condition property="source.version" value="1.5"> - <equals arg1="${jdk}" arg2="jdk15"/> - </condition> - </target> - - <target name="paths" depends="init"> - <path id="src.path"> - <pathelement path="${src.dir}" /> - </path> - <path id="compile.path"> - <fileset dir="${dependencies.dir}"> - <include name="*.jar" /> - </fileset> - <pathelement path="../testng-${testng.version}-${jdk}.jar" /> - </path> - </target> - - <target name="compile" depends="paths" description="compile sources"> - <echo message=" -- Compiling ${jdk} sources --" /> - <mkdir dir="${classes.dir}"/> - <javac target="jsr14" - debug="${debug}" optimize="${optimize}" - destdir="${classes.dir}"> - <src refid="src.path" /> - <classpath refid="compile.path" /> - </javac> - </target> - - <target name="jar" depends="compile"> - <echo message=" -- Creating ${jdk} jar --" /> - <jar destfile="${testng.gigaspaces.jar}"> - <fileset dir="${classes.dir}" /> - </jar> - </target> - - <target name="javadoc" depends="paths" description="generate api documentation"> - <echo message=" -- Generating javadocs for ${jdk} --" /> - <mkdir dir="${javadocs.dir}" /> - <javadoc destdir="${javadocs.dir}" source="${source.version}" windowtitle="TestNG GigaSpaces Support" classpathref="compile.path"> - <fileset dir="${src.dir}/common" defaultexcludes="yes" includes="**/*.java" /> - <fileset dir="${src.dir}/${jdk}" defaultexcludes="yes" includes="**/*.java" /> - </javadoc> - </target> - - <target name="both"> - <property name="target" value="jar"/> - <antcall target="${target}"> - <param name="jdk" value="jdk14"/> - </antcall> - <antcall target="${target}"> - <param name="jdk" value="jdk15"/> - </antcall> - </target> - - <target name="dist" description="builds both jdk14 and jdk15 variants"> - <antcall target="both"> - <param name="target" value="jar"/> - </antcall> - </target> - - <target name="javadocs" description="builds both jdk14 and jdk15 javadocs"> - <antcall target="both"> - <param name="target" value="javadoc"/> - </antcall> - </target> - - <target name="all" depends="dist,javadocs" description="build jar files and javadocs" /> - - <target name="clean" depends="paths" description="cleans all"> - <delete dir="${topbuild.dir}" /> - <delete dir="${topjavadocs.dir}" /> - <delete file="testng-gigaspaces-jdk14.jar" /> - <delete file="testng-gigaspaces-jdk15.jar" /> - </target> - -</project> diff --git a/gigaspaces/src/org/testng/gigaspaces/ResultEntry.java b/gigaspaces/src/org/testng/gigaspaces/ResultEntry.java deleted file mode 100644 index 8e75638..0000000 --- a/gigaspaces/src/org/testng/gigaspaces/ResultEntry.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.testng.gigaspaces; - -import java.util.UUID; - -import org.testng.ISuite; - -/** - * @author Guy Korland - * - * @date April 20, 2007 - */ -public class ResultEntry -{ - private ISuite _suite; - private UUID m_testID; - - public ResultEntry() {} - - public ResultEntry( ISuite suite, UUID testID) - { - _suite = suite; - m_testID = testID; - } - - public ISuite getSuite() - { - return _suite; - } - - public void setSuite( ISuite suite) - { - _suite = suite; - } - - public UUID getTestID() - { - return m_testID; - } - - public void setTestID(UUID testid) - { - m_testID = testid; - } -} \ No newline at end of file diff --git a/gigaspaces/src/org/testng/gigaspaces/SpaceMasterAdapter.java b/gigaspaces/src/org/testng/gigaspaces/SpaceMasterAdapter.java deleted file mode 100644 index 93183c9..0000000 --- a/gigaspaces/src/org/testng/gigaspaces/SpaceMasterAdapter.java +++ /dev/null @@ -1,153 +0,0 @@ -package org.testng.gigaspaces; - -import java.io.IOException; -import java.util.Properties; -import java.util.UUID; - -import net.jini.core.lease.Lease; - -import org.testng.remote.adapter.IMasterAdapter; -import org.testng.remote.adapter.RemoteResultListener; -import org.testng.xml.XmlSuite; - -import com.j_spaces.core.IJSpace; -import com.j_spaces.core.client.SpaceFinder; - -import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap; -import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger; - -/** - * Provides a Master adapter based on Gigaspaces space implementation. - * - * @author Guy Korland - * - * @date April 20, 2007 - */ -public class SpaceMasterAdapter implements IMasterAdapter -{ - public static final String SPACE_URL = "gigaspaces.url"; - - private IJSpace m_space; - - final private ConcurrentHashMap m_listeners = new ConcurrentHashMap(); - - final private SuitesCounter m_counter = new SuitesCounter(); - private ResultCollector m_collector; - - /* - * @see org.testng.remote.adapter.IWorkerApadter#init(java.util.Properties) - */ - public void init(Properties prop) throws Exception - { - String url = prop.getProperty(SPACE_URL, "/./TestNGSpace?groups=TestNG"); - m_space = (IJSpace) SpaceFinder.find(url); - m_collector = new ResultCollector(); - m_collector.start(); - } - - /* - * @see org.testng.remote.adapter.IMasterAdapter#awaitTermination(long) - */ - public void awaitTermination(long timeout) throws InterruptedException - { - try - { - m_counter.waitFor( timeout); - } - finally - { - m_collector.shutDown(); - } - } - - /* - * @see org.testng.remote.adapter.IMasterAdapter#runSuitesRemotely(org.testng.xml.XmlSuite, org.testng.remote.adapter.RemoteResultListener) - */ - public void runSuitesRemotely(XmlSuite suite, RemoteResultListener listener) - throws IOException - { - UUID testID = UUID.randomUUID(); - SuiteEntry suiteEntry = new SuiteEntry( suite, testID); - try - { - m_listeners.putIfAbsent(testID, listener); - m_space.write(suiteEntry, null, Lease.FOREVER); - m_counter.inc(); - } - catch (Exception e) - { - m_listeners.remove( testID); - e.printStackTrace(); - } - } - - private class ResultCollector extends Thread - { - final private ResultEntry resultTemplate = new ResultEntry(); - volatile private boolean m_shutdown = false; - - public ResultCollector() - { - this.setDaemon(true); - this.setName("ResultCollector"); - } - - public void run() - { - while( !m_shutdown) - { - try - { - ResultEntry rs = (ResultEntry) m_space.take(resultTemplate, null, - Long.MAX_VALUE); - RemoteResultListener listener = (RemoteResultListener)m_listeners.remove(rs.getTestID()); - listener.onResult(rs.getSuite()); - m_counter.dec(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - } - - public void shutDown() - { - m_shutdown = true; - this.interrupt(); - } - } - - - private static class SuitesCounter - { - private AtomicInteger m_count = new AtomicInteger(1); - - public void dec() - { - int c = m_count.decrementAndGet(); - if( c == 0) - { - synchronized (this) - { - notifyAll(); - } - } - } - - public void inc() - { - m_count.incrementAndGet(); - } - - public void waitFor( long timeout) throws InterruptedException - { - m_count.decrementAndGet(); - synchronized (this) - { - wait( timeout); - } - - } - } -} diff --git a/gigaspaces/src/org/testng/gigaspaces/SpaceWorkerAdapter.java b/gigaspaces/src/org/testng/gigaspaces/SpaceWorkerAdapter.java deleted file mode 100644 index 647c992..0000000 --- a/gigaspaces/src/org/testng/gigaspaces/SpaceWorkerAdapter.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.testng.gigaspaces; - -import java.io.IOException; -import java.util.Properties; - -import net.jini.core.entry.UnusableEntryException; -import net.jini.core.lease.Lease; -import net.jini.core.lease.LeaseException; -import net.jini.core.transaction.Transaction; -import net.jini.core.transaction.TransactionException; -import net.jini.core.transaction.TransactionFactory; -import net.jini.core.transaction.Transaction.Created; -import net.jini.core.transaction.server.TransactionManager; - -import org.testng.ISuite; -import org.testng.internal.Utils; -import org.testng.remote.adapter.IWorkerApadter; -import org.testng.xml.XmlSuite; - -import com.j_spaces.core.IJSpace; -import com.j_spaces.core.client.LocalTransactionManager; -import com.j_spaces.core.client.SpaceFinder; - - -/** - * Provides a Worker adapter based on Gigaspaces space implementation. - * - * @author Guy Korland - * - * @date April 20, 2007 - */ -public class SpaceWorkerAdapter implements IWorkerApadter -{ - public static final String SPACE_URL = "gigaspaces.url"; - public static final String SLAVE_TIMEOUT = "gigaspaces.slave.timeout"; - - final private SuiteEntry _suiteTemplate = new SuiteEntry(); - - private long m_transactionTimeout; - private TransactionManager m_tm; - private IJSpace m_space; - private Transaction m_currentTransaction; - private SuiteEntry m_currentSuite; - - public SpaceWorkerAdapter() - { - } - - /* - * @see org.testng.remote.adapter.IWorkerApadter#init(java.util.Properties) - */ - public void init(Properties prop) throws Exception - { - String url = prop.getProperty(SPACE_URL, "jini://*/*/TestNGSpace?groups=TestNG"); - m_space = (IJSpace) SpaceFinder.find(url); - m_tm = LocalTransactionManager.getInstance(m_space); - //default 5 min - m_transactionTimeout = Integer.parseInt( prop.getProperty(SLAVE_TIMEOUT, "300000")); - } - - /* - * @see org.testng.remote.adapter.IWorkerApadter#getSuite(long) - */ - public XmlSuite getSuite(long timeout) throws InterruptedException, - IOException - { - try - { - Created created = TransactionFactory.create(m_tm, m_transactionTimeout); - m_currentTransaction = created.transaction; - - m_currentSuite = (SuiteEntry) m_space.take( _suiteTemplate, m_currentTransaction, m_transactionTimeout); - created.lease.renew(m_transactionTimeout); - return m_currentSuite.getSuite(); - } - catch (TransactionException e) - { - Utils.log( "Transaction error", 1, e.toString()); - } - catch (LeaseException e) - { - Utils.log( "Lease error", 1, e.toString()); - } - catch (UnusableEntryException e) - { - IOException ex = new IOException(); - ex.initCause(e); - throw ex; - } - return null; - } - - /* - * @see org.testng.remote.adapter.IWorkerApadter#returnResult(org.testng.ISuite) - */ - public void returnResult(ISuite result) throws IOException - { - try - { - m_space.write(new ResultEntry(result, m_currentSuite.getTestID()), m_currentTransaction, Lease.FOREVER); - m_currentTransaction.commit(); - } - catch (TransactionException e) - { - Utils.log( "Transaction error", 0, e.toString()); - } - finally - { - m_currentTransaction = null; - m_currentSuite = null; - } - } -} diff --git a/gigaspaces/src/org/testng/gigaspaces/SuiteEntry.java b/gigaspaces/src/org/testng/gigaspaces/SuiteEntry.java deleted file mode 100644 index b9fc373..0000000 --- a/gigaspaces/src/org/testng/gigaspaces/SuiteEntry.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.testng.gigaspaces; - -import java.util.UUID; - -import org.testng.xml.XmlSuite; - -/** - * @author Guy Korland - * - * @date April 20, 2007 - */ -public class SuiteEntry -{ - private XmlSuite m_suite; - private UUID m_testID; - - public SuiteEntry() {} - - public SuiteEntry( XmlSuite suite, UUID testID) - { - m_suite = suite; - m_testID = testID; - } - - public XmlSuite getSuite() - { - return m_suite; - } - - public void setSuite( XmlSuite suite) - { - m_suite = suite; - } - - public String getSuiteName() - { - return m_suite.getName(); - } - - public String getTestName() - { - return m_suite.getTest(); - } - - public boolean isJUnit() - { - return m_suite.isJUnit(); - } - - public UUID getTestID() - { - return m_testID; - } - - public void setTestID(UUID testid) - { - m_testID = testid; - } -} diff --git a/gigaspaces/test/src/test/gigaspaces/DistributedTest.java b/gigaspaces/test/src/test/gigaspaces/DistributedTest.java deleted file mode 100644 index 3bbb060..0000000 --- a/gigaspaces/test/src/test/gigaspaces/DistributedTest.java +++ /dev/null @@ -1,171 +0,0 @@ -package test.gigaspaces; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Random; - -import org.testng.Assert; -import org.testng.ITestResult; -import org.testng.TestListenerAdapter; -import org.testng.TestNG; -import org.testng.annotations.Configuration; -import org.testng.annotations.Test; -import org.testng.remote.SuiteDispatcher; -import org.testng.xml.XmlClass; -import org.testng.xml.XmlSuite; -import org.testng.xml.XmlTest; - -import test.BaseDistributedTest; - -import testhelper.OutputDirectoryPatch; - -public class DistributedTest extends BaseDistributedTest { - - private List<Thread> m_hostThreads = new ArrayList<Thread>(); - - protected Thread startSlave(final String filename) { - Thread result = new Thread(new Runnable() { - public void run() { - TestNG.main(new String[] { "-slave", filename, "-d", OutputDirectoryPatch.getOutputDirectory() }); - } - }); - result.setName("Slave-" + filename); - result.start(); - m_hostThreads.add(result); - return result; - } - - private File createMasterProperties(String strategy) - throws IOException - { - String fileName = "remote"; - - File result = File.createTempFile(fileName, ".properties"); - result.deleteOnExit(); - Properties p = new Properties(); - p.setProperty("testng.master.strategy", strategy); - p.setProperty("testng.verbose", "0"); - p.setProperty("testng.master.adpter", "org.testng.gigaspaces.SpaceMasterAdapter"); - p.setProperty("gigaspaces.url", "/./TestNGSpace?groups=TestNG"); - FileOutputStream fos = new FileOutputStream(result); - p.store(fos, "Automatically generated by tests"); - fos.close(); - - return result; - } - - private File createSlaveProperties() - throws IOException - { - String fileName = "remote"; - - File result = File.createTempFile(fileName, ".properties"); - result.deleteOnExit(); - Properties p = new Properties(); - p.setProperty("testng.verbose", "0"); - p.setProperty("testng.slave.adpter", "org.testng.gigaspaces.SpaceWorkerAdapter"); - p.setProperty("gigaspaces.url", "jini://*/*/TestNGSpace?groups=TestNG&timeout=10000"); - FileOutputStream fos = new FileOutputStream(result); - p.store(fos, "Automatically generated by tests"); - fos.close(); - - return result; - } - - private XmlSuite createSuite(String name, Class[] classes) { - XmlSuite result = new XmlSuite(); - result.setName(name); - - for (Class c : classes) { - XmlTest test1 = new XmlTest(result); - test1.setName(c.getName()); - XmlClass class1 = new XmlClass(c); - test1.getXmlClasses().add(class1); - } - - return result; - } - -// @ Configuration(beforeTestClass = true) - private void startSlaves() throws IOException{ - int port = new Random().nextInt(50000) + 2000; - m_ports = new String[] { Integer.toString(port), Integer.toString(port+1)}; - - File slaveFile = createSlaveProperties(); - startSlave( slaveFile.getCanonicalPath()); - - slaveFile = createSlaveProperties(); - startSlave( slaveFile.getCanonicalPath()); - } - - private String[] m_ports = new String[2]; - - public TestListenerAdapter twoHosts(String strategy) throws IOException { - TestNG tng = new TestNG(); - tng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory()); - - File masterFile = createMasterProperties(strategy); - tng.setMaster(masterFile.getAbsolutePath()); - - XmlSuite suite = createSuite("DistributedSuite1", new Class[] { Test1.class, Test2.class }); - tng.setXmlSuites(Arrays.asList(new XmlSuite[] { suite })); - - TestListenerAdapter result = new TestListenerAdapter(); - tng.addListener(result); - tng.run(); - - String[] passed = { - "f1", "f2" - }; - String[] failed = {}; - String[] skipped = {}; - - verifyTests("Passed", passed, toMap(result.getPassedTests())); - verifyTests("Failed", failed, toMap(result.getFailedTests())); - verifyTests("Skipped", skipped, toMap(result.getSkippedTests())); - - return result; - } - - @Test - public void twoHostsWithTestStrategy() throws IOException { - startSlaves(); - TestListenerAdapter listener = twoHosts(SuiteDispatcher.STRATEGY_TEST); - - boolean found1 = false; - boolean found2 = false; - for (ITestResult tr : listener.getPassedTests()) { - String host = tr.getHost(); - if (! found1) found1 = host.contains(m_ports[0]); - if (! found2) found2 = host.contains(m_ports[1]); - } - Assert.assertTrue(found1, "No tests ran on port " + m_ports[0]); - Assert.assertTrue(found2, "No tests ran on port " + m_ports[1]); - } - - @Test - public void twoHostsWithSuiteStrategy() throws IOException { - startSlaves(); - TestListenerAdapter listener = twoHosts( SuiteDispatcher.STRATEGY_SUITE); - } - - private Map<String, ITestResult> toMap(List<ITestResult> results) { - Map<String, ITestResult> result = new HashMap<String, ITestResult>(); - for (ITestResult tr : results) { - result.put(tr.getName(), tr); - } - - return result; - } - private void ppp(String string) { - System.out.println("[DistributedTest] " + string); - } -} - diff --git a/gigaspaces/test/src/test/gigaspaces/Test1.java b/gigaspaces/test/src/test/gigaspaces/Test1.java deleted file mode 100644 index cf320f0..0000000 --- a/gigaspaces/test/src/test/gigaspaces/Test1.java +++ /dev/null @@ -1,15 +0,0 @@ -package test.gigaspaces; - -import org.testng.annotations.Test; - -public class Test1 { - @Test - public void f1() { -// ppp("f1"); - } - - private void ppp(String s) { - System.out.println("[Test1] " + s); - } -} - diff --git a/gigaspaces/test/src/test/gigaspaces/Test2.java b/gigaspaces/test/src/test/gigaspaces/Test2.java deleted file mode 100644 index 83bd3eb..0000000 --- a/gigaspaces/test/src/test/gigaspaces/Test2.java +++ /dev/null @@ -1,14 +0,0 @@ -package test.gigaspaces; - -import org.testng.annotations.Test; - -public class Test2 { - @Test - public void f2() { -// ppp("f2"); - } - - private void ppp(String s) { - System.out.println("[Test2] " + s); - } -} diff --git a/spring/.classpath b/spring/.classpath deleted file mode 100644 index d401428..0000000 --- a/spring/.classpath +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src/common"/> - <classpathentry kind="src" path="src/jdk15"/> - <classpathentry kind="src" path="sandbox/src"/> - <classpathentry kind="lib" path="3rdparty/commons-logging-1.0.4.jar"/> - <classpathentry kind="lib" path="3rdparty/spring-beans-1.2.3.jar"/> - <classpathentry kind="lib" path="3rdparty/spring-context-1.2.3.jar"/> - <classpathentry kind="lib" path="3rdparty/spring-core-1.2.3.jar"/> - <classpathentry kind="lib" path="3rdparty/spring-dao-1.2.3.jar"/> - <classpathentry kind="lib" path="3rdparty/spring-jdbc-1.2.3.jar"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry combineaccessrules="false" kind="src" path="/TestNG"/> - <classpathentry kind="output" path="z_build"/> -</classpath> diff --git a/spring/.cvsignore b/spring/.cvsignore deleted file mode 100644 index 05344d4..0000000 --- a/spring/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -build -javadocs -testng-spring-jdk* diff --git a/spring/.project b/spring/.project deleted file mode 100644 index 3b43e1b..0000000 --- a/spring/.project +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>testng-spring</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/spring/3rdparty/commons-logging-1.0.4.jar b/spring/3rdparty/commons-logging-1.0.4.jar deleted file mode 100644 index b73a80f..0000000 Binary files a/spring/3rdparty/commons-logging-1.0.4.jar and /dev/null differ diff --git a/spring/3rdparty/spring-mock.jar b/spring/3rdparty/spring-mock.jar deleted file mode 100644 index 66ffd93..0000000 Binary files a/spring/3rdparty/spring-mock.jar and /dev/null differ diff --git a/spring/3rdparty/spring.jar b/spring/3rdparty/spring.jar deleted file mode 100644 index 3ebefd8..0000000 Binary files a/spring/3rdparty/spring.jar and /dev/null differ diff --git a/spring/LICENSE.txt b/spring/LICENSE.txt deleted file mode 100644 index 261eeb9..0000000 --- a/spring/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed 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. diff --git a/spring/README.TXT b/spring/README.TXT deleted file mode 100644 index 7fd4e05..0000000 --- a/spring/README.TXT +++ /dev/null @@ -1,23 +0,0 @@ -This area provides spring support classes for testng. - -They provide the following services: - - Context caching - - Dependency Injection for test classes - - Inherited instance variables useful for testing. - - Transaction management appropriate to tests. - -Please refer to http://static.springframework.org/spring/docs/1.2.x/reference/testing.html for more details. - -The code here is based on spring's test support classes found in the org.springframework.test package. - -Here is a list of the modifications that were performed: - - 1- Renamed package name from org.springframework.test to org.testng.spring.test to avoid conflicts. - 2- Removed dependency on JUnit from AbstractSpringContextTests class - Removed import org.junit stuff - Removed extends TestCase - 3- Added javadoc tags in setup and teardown methods of AbstractDependencyInjectionSpringContextTests (jdk14 src tree) - to make it compatible with testng. - 4- Added annotations in setup and teardown methods of AbstractDependencyInjectionSpringContextTests (jdk15 src tree) - to make it compatible with testng. - diff --git a/spring/build.xml b/spring/build.xml deleted file mode 100644 index 366892e..0000000 --- a/spring/build.xml +++ /dev/null @@ -1,94 +0,0 @@ -<project name="testng-spring" default="both" basedir="."> - - <target name="init"> - <tstamp /> - <property file="../build.properties" /> - <property file="build.properties" /> - <!-- Settings --> - <property name="jdk" value="jdk14" /> - <property name="optimize" value="false" /> - <property name="debug" value="true" /> - - <!-- Directories --> - <property name="src.dir" location="src" /> - <property name="topbuild.dir" location="build" /> - <property name="build.dir" location="${topbuild.dir}/${jdk}" /> - <property name="classes.dir" location="${build.dir}/classes" /> - <property name="dependencies.dir" location="lib" /> - <property name="topjavadocs.dir" location="javadocs" /> - <property name="javadocs.dir" location="${topjavadocs.dir}/${jdk}" /> - - <property name="testng.spring.jar" location="testng-spring-${jdk}.jar" /> - - <condition property="source.version" value="1.4"><equals arg1="${jdk}" arg2="jdk14"/></condition> - <condition property="source.version" value="1.5"><equals arg1="${jdk}" arg2="jdk15"/></condition> - </target> - - <target name="paths" depends="init"> - <path id="src.path"> - <pathelement path="${src.dir}/common" /> - <pathelement path="${src.dir}/${jdk}" /> - </path> - <path id="compile.path"> - <fileset dir="${dependencies.dir}"> - <include name="*.jar" /> - </fileset> - <pathelement path="../testng-${testng.version}-${jdk}.jar" /> - </path> - </target> - - <target name="compile" depends="paths" description="compile sources"> - <echo message=" -- Compiling ${jdk} sources --" /> - <mkdir dir="${classes.dir}"/> - <javac source="${source.version}" target="${source.version}" - debug="${debug}" optimize="${optimize}" - destdir="${classes.dir}"> - <src refid="src.path" /> - <classpath refid="compile.path" /> - </javac> - </target> - - <target name="jar" depends="compile"> - <echo message=" -- Creating ${jdk} jar --" /> - <jar destfile="${testng.spring.jar}"> - <fileset dir="${classes.dir}" /> - </jar> - </target> - - <target name="javadoc" depends="paths" description="generate api documentation"> - <echo message=" -- Generating javadocs for ${jdk} --" /> - <mkdir dir="${javadocs.dir}" /> - <javadoc destdir="${javadocs.dir}" source="${source.version}" windowtitle="TestNG Spring Support" classpathref="compile.path"> - <fileset dir="${src.dir}/common" defaultexcludes="yes" includes="**/*.java" /> - <fileset dir="${src.dir}/${jdk}" defaultexcludes="yes" includes="**/*.java" /> - </javadoc> - </target> - - <target name="both"> - <property name="target" value="jar"/> - <antcall target="${target}"> - <param name="jdk" value="jdk14"/> - </antcall> - <antcall target="${target}"> - <param name="jdk" value="jdk15"/> - </antcall> - </target> - - <target name="dist" description="builds both jdk14 and jdk15 variants"> - <antcall target="both"><param name="target" value="jar"/></antcall> - </target> - - <target name="javadocs" description="builds both jdk14 and jdk15 javadocs"> - <antcall target="both"><param name="target" value="javadoc"/></antcall> - </target> - - <target name="all" depends="dist,javadocs" description="build jar files and javadocs" /> - - <target name="clean" depends="paths" description="cleans all"> - <delete dir="${topbuild.dir}" /> - <delete dir="${topjavadocs.dir}" /> - <delete file="testng-spring-jdk14.jar" /> - <delete file="testng-spring-jdk15.jar" /> - </target> - -</project> diff --git a/spring/src/common/org/testng/spring/test/AbstractDependencyInjectionSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractDependencyInjectionSpringContextTests.java deleted file mode 100644 index dc006e3..0000000 --- a/spring/src/common/org/testng/spring/test/AbstractDependencyInjectionSpringContextTests.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright 2002-2007 the original author or authors. - * - * Licensed 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.testng.spring.test; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.LinkedList; - -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.config.AutowireCapableBeanFactory; - -/** - * Convenient superclass for tests depending on a Spring context. - * The test instance itself is populated by Dependency Injection. - * - * <p>Really for integration testing, not unit testing. - * You should <i>not</i> normally use the Spring container - * for unit tests: simply populate your POJOs in plain JUnit tests! - * - * <p>This supports two modes of populating the test: - * <ul> - * <li>Via Setter Dependency Injection. Simply express dependencies on objects - * in the test fixture, and they will be satisfied by autowiring by type. - * <li>Via Field Injection. Declare protected variables of the required type - * which match named beans in the context. This is autowire by name, - * rather than type. This approach is based on an approach originated by - * Ara Abrahmian. Setter Dependency Injection is the default: set the - * "populateProtectedVariables" property to true in the constructor to switch - * on Field Injection. - * </ul> - * - * @author Rod Johnson - * @author Rob Harrop - * @author Rick Evans - * @since 1.1.1 - * @see #setDirty - * @see #contextKey - * @see #getContext - * @see #getConfigLocations - */ -public abstract class AbstractDependencyInjectionSpringContextTests extends AbstractSingleSpringContextTests { - - /** - * Constant that indicates no autowiring at all. - * @see #setAutowireMode - */ - public static final int AUTOWIRE_NO = 0; - - /** - * Constant that indicates autowiring bean properties by name. - * @see #setAutowireMode - */ - public static final int AUTOWIRE_BY_NAME = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME; - - /** - * Constant that indicates autowiring bean properties by type. - * @see #setAutowireMode - */ - public static final int AUTOWIRE_BY_TYPE = AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE; - - - private boolean populateProtectedVariables = false; - - private int autowireMode = AUTOWIRE_BY_TYPE; - - private boolean dependencyCheck = true; - - private String[] managedVariableNames; - - - /** - * Default constructor for AbstractDependencyInjectionSpringContextTests. - */ - public AbstractDependencyInjectionSpringContextTests() { - } - - /** - * Set whether to populate protected variables of this test case. - * Default is "false". - */ - public final void setPopulateProtectedVariables(boolean populateFields) { - this.populateProtectedVariables = populateFields; - } - - /** - * Return whether to populate protected variables of this test case. - */ - public final boolean isPopulateProtectedVariables() { - return populateProtectedVariables; - } - - /** - * Set the autowire mode for test properties set by Dependency Injection. - * <p>The default is "AUTOWIRE_BY_TYPE". Can be set to "AUTOWIRE_BY_NAME" - * or "AUTOWIRE_NO" instead. - * @see #AUTOWIRE_BY_TYPE - * @see #AUTOWIRE_BY_NAME - * @see #AUTOWIRE_NO - */ - public final void setAutowireMode(int autowireMode) { - this.autowireMode = autowireMode; - } - - /** - * Return the autowire mode for test properties set by Dependency Injection. - */ - public final int getAutowireMode() { - return autowireMode; - } - - /** - * Set whether or not dependency checking should be performed - * for test properties set by Dependency Injection. - * <p>The default is "true", meaning that tests cannot be run - * unless all properties are populated. - */ - public final void setDependencyCheck(boolean dependencyCheck) { - this.dependencyCheck = dependencyCheck; - } - - /** - * Return whether or not dependency checking should be performed - * for test properties set by Dependency Injection. - */ - public final boolean isDependencyCheck() { - return dependencyCheck; - } - - - /** - * Prepare this test instance, injecting dependencies into its - * protected fields and its bean properties. - */ - protected void prepareTestInstance() throws Exception { - injectDependencies(); - } - - /** - * Inject dependencies into 'this' instance (that is, this test instance). - * <p>The default implementation populates protected variables if the - * {@link #populateProtectedVariables() appropriate flag is set}, else - * uses autowiring if autowiring is switched on (which it is by default). - * <p>You can certainly override this method if you want to totally control - * how dependencies are injected into 'this' instance. - * @throws Exception in the case of any errors - * @see #populateProtectedVariables() - */ - private void injectDependencies() throws Exception { - if (isPopulateProtectedVariables()) { - if (this.managedVariableNames == null) { - initManagedVariableNames(); - } - populateProtectedVariables(); - } - else if (getAutowireMode() != AUTOWIRE_NO) { - getApplicationContext().getBeanFactory().autowireBeanProperties( - this, getAutowireMode(), isDependencyCheck()); - } - } - - private void initManagedVariableNames() throws IllegalAccessException { - LinkedList managedVarNames = new LinkedList(); - Class clazz = getClass(); - - do { - Field[] fields = clazz.getDeclaredFields(); - if (logger.isDebugEnabled()) { - logger.debug("Found " + fields.length + " fields on " + clazz); - } - - for (int i = 0; i < fields.length; i++) { - Field field = fields[i]; - field.setAccessible(true); - if (logger.isDebugEnabled()) { - logger.debug("Candidate field: " + field); - } - if (isProtectedInstanceField(field)) { - Object oldValue = field.get(this); - if (oldValue == null) { - managedVarNames.add(field.getName()); - if (logger.isDebugEnabled()) { - logger.debug("Added managed variable '" + field.getName() + "'"); - } - } - else { - if (logger.isDebugEnabled()) { - logger.debug("Rejected managed variable '" + field.getName() + "'"); - } - } - } - } - clazz = clazz.getSuperclass(); - } - while (!clazz.equals(AbstractDependencyInjectionSpringContextTests.class)); - - this.managedVariableNames = (String[]) managedVarNames.toArray(new String[managedVarNames.size()]); - } - - private boolean isProtectedInstanceField(Field field) { - int modifiers = field.getModifiers(); - return !Modifier.isStatic(modifiers) && Modifier.isProtected(modifiers); - } - - private void populateProtectedVariables() throws IllegalAccessException { - for (int i = 0; i < this.managedVariableNames.length; i++) { - String varName = this.managedVariableNames[i]; - Object bean = null; - try { - Field field = findField(getClass(), varName); - bean = getApplicationContext().getBean(varName, field.getType()); - field.setAccessible(true); - field.set(this, bean); - if (logger.isDebugEnabled()) { - logger.debug("Populated field: " + field); - } - } - catch (NoSuchFieldException ex) { - if (logger.isWarnEnabled()) { - logger.warn("No field with name '" + varName + "'"); - } - } - catch (NoSuchBeanDefinitionException ex) { - if (logger.isWarnEnabled()) { - logger.warn("No bean with name '" + varName + "'"); - } - } - } - } - - private Field findField(Class clazz, String name) throws NoSuchFieldException { - try { - return clazz.getDeclaredField(name); - } - catch (NoSuchFieldException ex) { - Class superclass = clazz.getSuperclass(); - if (superclass != AbstractSpringContextTests.class) { - return findField(superclass, name); - } - else { - throw ex; - } - } - } - -} diff --git a/spring/src/common/org/testng/spring/test/AbstractSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractSpringContextTests.java deleted file mode 100644 index b46a964..0000000 --- a/spring/src/common/org/testng/spring/test/AbstractSpringContextTests.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed 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.testng.spring.test; - -import java.util.HashMap; -import java.util.Map; - -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.util.ObjectUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Superclass for TestNG test cases using a Spring context. - * - * <p>Maintains a static cache of contexts by key. This has significant performance - * benefit if initializing the context would take time. While initializing a - * Spring context itself is very quick, some beans in a context, such as - * a LocalSessionFactoryBean for working with Hibernate, may take some time - * to initialize. Hence it often makes sense to do that initializing once. - * - * <p>Any ApplicationContext created by this class will be asked to register a JVM - * shutdown hook for itself. Unless the context gets closed early, all context - * instances will be automatically closed on JVM shutdown. This allows for freeing - * external resources held by beans within the context, e.g. temporary files. - * - * <p>Normally you won't extend this class directly but rather extend one of - * its subclasses. - * - * @author Rod Johnson - * @author Juergen Hoeller - * @since 1.1.1 - * @see AbstractDependencyInjectionSpringContextTests - * @see AbstractTransactionalSpringContextTests - * @see AbstractTransactionalDataSourceSpringContextTests - */ -public abstract class AbstractSpringContextTests { - - /** Logger available to subclasses */ - protected final Log logger = LogFactory.getLog(getClass()); - - /** - * Map of context keys returned by subclasses of this class, to - * Spring contexts. This needs to be static, as JUnit tests are - * destroyed and recreated between running individual test methods. - */ - private static Map contextKeyToContextMap = new HashMap(); - - - /** - * Default constructor for AbstractSpringContextTests. - */ - public AbstractSpringContextTests() { - } - - /** - * Explicitly add an ApplicationContext instance under a given key. - * <p>This is not meant to be used by subclasses. It is rather exposed - * for special test suite environments. - * @param key the context key - * @param context the ApplicationContext instance - */ - public final void addContext(Object key, ConfigurableApplicationContext context) { - assert context != null : "ApplicationContext must not be null"; - contextKeyToContextMap.put(contextKeyString(key), context); - } - - /** - * Return whether there is a cached context for the given key. - * @param contextKey the context key - */ - protected final boolean hasCachedContext(Object contextKey) { - return contextKeyToContextMap.containsKey(contextKey); - } - - /** - * Obtain an ApplicationContext for the given key, potentially cached. - * @param key the context key - * @return the corresponding ApplicationContext instance (potentially cached) - */ - protected final ConfigurableApplicationContext getContext(Object key) throws Exception { - String keyString = contextKeyString(key); - ConfigurableApplicationContext ctx = - (ConfigurableApplicationContext) contextKeyToContextMap.get(keyString); - if (ctx == null) { - ctx = loadContext(key); - ctx.registerShutdownHook(); - contextKeyToContextMap.put(keyString, ctx); - } - return ctx; - } - - /** - * Mark the context with the given key as dirty. This will cause the - * cached context to be reloaded before the next test case is executed. - * <p>Call this method only if you change the state of a singleton - * bean, potentially affecting future tests. - */ - protected final void setDirty(Object contextKey) { - String keyString = contextKeyString(contextKey); - ConfigurableApplicationContext ctx = - (ConfigurableApplicationContext) contextKeyToContextMap.remove(keyString); - if (ctx != null) { - ctx.close(); - } - } - - - /** - * Subclasses can override this to return a String representation of - * their context key for use in logging. - * @param contextKey the context key - */ - protected String contextKeyString(Object contextKey) { - return ObjectUtils.nullSafeToString(contextKey); - } - - /** - * Load a new ApplicationContext for the given key. - * <p>To be implemented by subclasses. - * @param key the context key - * @return the corresponding ApplicationContext instance (new) - */ - protected abstract ConfigurableApplicationContext loadContext(Object key) throws Exception; - -} diff --git a/spring/src/common/org/testng/spring/test/AbstractTransactionalDataSourceSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractTransactionalDataSourceSpringContextTests.java deleted file mode 100644 index e48614b..0000000 --- a/spring/src/common/org/testng/spring/test/AbstractTransactionalDataSourceSpringContextTests.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2002-2007 the original author or authors. - * - * Licensed 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.testng.spring.test; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import javax.sql.DataSource; - -import org.springframework.core.io.Resource; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.DataAccessResourceFailureException; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.util.StringUtils; - -/** - * Subclass of AbstractTransactionalSpringContextTests that adds some convenience - * functionality for JDBC access. Expects a {@link javax.sql.DataSource} bean - * to be defined in the Spring application context. - * - * <p>This class exposes a {@link org.springframework.jdbc.core.JdbcTemplate} - * and provides an easy way to delete from the database in a new transaction. - * - * @author Rod Johnson - * @author Juergen Hoeller - * @since 1.1.1 - * @see #setDataSource(javax.sql.DataSource) - * @see #getJdbcTemplate() - */ -public abstract class AbstractTransactionalDataSourceSpringContextTests - extends AbstractTransactionalSpringContextTests { - - protected JdbcTemplate jdbcTemplate; - - /** - * Did this test delete any tables? If so, we forbid transaction completion, - * and only allow rollback. - */ - private boolean zappedTables; - - - /** - * Default constructor for AbstractTransactionalDataSourceSpringContextTests. - */ - public AbstractTransactionalDataSourceSpringContextTests() { - } - - /** - * Setter: DataSource is provided by Dependency Injection. - */ - public void setDataSource(DataSource dataSource) { - this.jdbcTemplate = new JdbcTemplate(dataSource); - } - - /** - * Return the JdbcTemplate that this base class manages. - */ - public final JdbcTemplate getJdbcTemplate() { - return this.jdbcTemplate; - } - - - /** - * Convenient method to delete all rows from these tables. - * Calling this method will make avoidance of rollback by calling - * <code>setComplete()</code> impossible. - * @see #setComplete - */ - protected void deleteFromTables(String[] names) { - for (int i = 0; i < names.length; i++) { - int rowCount = this.jdbcTemplate.update("DELETE FROM " + names[i]); - if (logger.isInfoEnabled()) { - logger.info("Deleted " + rowCount + " rows from table " + names[i]); - } - } - this.zappedTables = true; - } - - /** - * Overridden to prevent the transaction committing if a number of tables have been - * cleared, as a defensive measure against accidental <i>permanent</i> wiping of a database. - * @see org.springframework.test.AbstractTransactionalSpringContextTests#setComplete() - */ - protected final void setComplete() { - if (this.zappedTables) { - throw new IllegalStateException("Cannot set complete after deleting tables"); - } - super.setComplete(); - } - - /** - * Count the rows in the given table - * @param tableName table name to count rows in - * @return the number of rows in the table - */ - protected int countRowsInTable(String tableName) { - return this.jdbcTemplate.queryForInt("SELECT COUNT(0) FROM " + tableName); - } - - - /** - * Execute the given SQL script. Will be rolled back by default, - * according to the fate of the current transaction. - * @param sqlResourcePath Spring resource path for the SQL script. - * Should normally be loaded by classpath. There should be one statement - * per line. Any semicolons will be removed. - * <b>Do not use this method to execute DDL if you expect rollback.</b> - * @param continueOnError whether or not to continue without throwing - * an exception in the event of an error - * @throws DataAccessException if there is an error executing a statement - * and continueOnError was false - */ - protected void executeSqlScript(String sqlResourcePath, boolean continueOnError) throws DataAccessException { - if (logger.isInfoEnabled()) { - logger.info("Executing SQL script '" + sqlResourcePath + "'"); - } - - long startTime = System.currentTimeMillis(); - List statements = new LinkedList(); - Resource res = getApplicationContext().getResource(sqlResourcePath); - try { - LineNumberReader lnr = new LineNumberReader(new InputStreamReader(res.getInputStream())); - String currentStatement = lnr.readLine(); - while (currentStatement != null) { - currentStatement = StringUtils.replace(currentStatement, ";", ""); - statements.add(currentStatement); - currentStatement = lnr.readLine(); - } - - for (Iterator itr = statements.iterator(); itr.hasNext(); ) { - String statement = (String) itr.next(); - try { - int rowsAffected = this.jdbcTemplate.update(statement); - if (logger.isDebugEnabled()) { - logger.debug(rowsAffected + " rows affected by SQL: " + statement); - } - } - catch (DataAccessException ex) { - if (continueOnError) { - if (logger.isWarnEnabled()) { - logger.warn("SQL: " + statement + " failed", ex); - } - } - else { - throw ex; - } - } - } - long elapsedTime = System.currentTimeMillis() - startTime; - logger.info("Done executing SQL script '" + sqlResourcePath + "' in " + elapsedTime + " ms"); - } - catch (IOException ex) { - throw new DataAccessResourceFailureException("Failed to open SQL script '" + sqlResourcePath + "'", ex); - } - } - -} diff --git a/spring/src/common/org/testng/spring/test/AbstractTransactionalSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractTransactionalSpringContextTests.java deleted file mode 100644 index 1331e77..0000000 --- a/spring/src/common/org/testng/spring/test/AbstractTransactionalSpringContextTests.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed 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.testng.spring.test; - -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.TransactionDefinition; -import org.springframework.transaction.TransactionException; -import org.springframework.transaction.TransactionStatus; -import org.springframework.transaction.support.DefaultTransactionDefinition; - -/** - * Convenient superclass for tests that should occur in a transaction, but normally - * will roll the transaction back on the completion of each test. - * - * <p>This is useful in a range of circumstances, allowing the following benefits: - * <ul> - * <li>Ability to delete or insert any data in the database, without affecting other tests - * <li>Providing a transactional context for any code requiring a transaction - * <li>Ability to write anything to the database without any need to clean up. - * </ul> - * - * <p>This class is typically very fast, compared to traditional setup/teardown scripts. - * - * <p>If data should be left in the database, call the <code>setComplete()</code> - * method in each test. The "defaultRollback" property, which defaults to "true", - * determines whether transactions will complete by default. - * - * <p>It is even possible to end the transaction early; for example, to verify lazy - * loading behavior of an O/R mapping tool. (This is a valuable away to avoid - * unexpected errors when testing a web UI, for example.) Simply call the - * <code>endTransaction()</code> method. Execution will then occur without a - * transactional context. - * - * <p>The <code>startNewTransaction()</code> method may be called after a call to - * <code>endTransaction()</code> if you wish to create a new transaction, quite - * independent of the old transaction. The new transaction's default fate will be to - * roll back, unless <code>setComplete()</code> is called again during the scope of the - * new transaction. Any number of transactions may be created and ended in this way. - * The final transaction will automatically be rolled back when the test case is - * torn down. - * - * <p>Transactional behavior requires a single bean in the context implementing the - * PlatformTransactionManager interface. This will be set by the superclass's - * Dependency Injection mechanism. If using the superclass's Field Injection mechanism, - * the implementation should be named "transactionManager". This mechanism allows the - * use of this superclass even when there's more than one transaction manager in the context. - * - * <p><i>This superclass can also be used without transaction management, if no - * PlatformTransactionManager bean is found in the context provided. Be careful about - * using this mode, as it allows the potential to permanently modify data. - * This mode is available only if dependency checking is turned off in - * the AbstractDependencyInjectionSpringContextTests superclass. The non-transactional - * capability is provided to enable use of the same subclass in different environments.</i> - * - * @author Rod Johnson - * @author Juergen Hoeller - * @since 1.1.1 - */ -public abstract class AbstractTransactionalSpringContextTests extends AbstractDependencyInjectionSpringContextTests { - - /** The transaction manager to use */ - protected PlatformTransactionManager transactionManager; - - /** Should we roll back by default? */ - private boolean defaultRollback = true; - - /** Should we commit the current transaction? */ - private boolean complete = false; - - /** Number of transactions started */ - private int transactionsStarted = 0; - - /** - * Default transaction definition is used. - * Subclasses can change this to cause different behaviour. - */ - private TransactionDefinition transactionDefinition = new DefaultTransactionDefinition(); - - /** - * TransactionStatus for this test. Typical subclasses won't need to use it. - */ - protected TransactionStatus transactionStatus; - - - /** - * Default constructor for AbstractTransactionalSpringContextTests. - */ - public AbstractTransactionalSpringContextTests() { - } - - /** - * Specify the transaction manager to use. No transaction management will be available - * if this is not set. (This mode works only if dependency checking is turned off in - * the AbstractDependencyInjectionSpringContextTests superclass.) - * <p>Populated through dependency injection by the superclass. - */ - public void setTransactionManager(PlatformTransactionManager ptm) { - this.transactionManager = ptm; - } - - /** - * Subclasses can set this value in their constructor to change - * default, which is always to roll the transaction back. - */ - public void setDefaultRollback(boolean defaultRollback) { - this.defaultRollback = defaultRollback; - } - - - /** - * Call in an overridden <code>runBare()</code> method to prevent transactional execution. - */ - protected void preventTransaction() { - this.transactionDefinition = null; - } - - /** - * Override the transaction attributes that will be used. - * Call in an overridden <code>runBare()</code> method so that - * <code>setUp()</code> and <code>tearDown()</code> behavior is modified. - * @param customDefinition custom definition to override with - */ - protected void setTransactionDefinition(TransactionDefinition customDefinition) { - this.transactionDefinition = customDefinition; - } - - - /** - * This implementation creates a transaction before test execution. - * Override <code>onSetUpBeforeTransaction()</code> and/or - * <code>onSetUpInTransaction()</code> to add custom set-up behavior. - * @see #onSetUpBeforeTransaction() - * @see #onSetUpInTransaction() - */ - protected final void onSetUp() throws Exception { - this.complete = !this.defaultRollback; - - if (this.transactionManager == null) { - logger.info("No transaction manager set: test will NOT run within a transaction"); - } - else if (this.transactionDefinition == null) { - logger.info("No transaction definition set: test will NOT run within a transaction"); - } - else { - onSetUpBeforeTransaction(); - startNewTransaction(); - try { - onSetUpInTransaction(); - } - catch (Exception ex) { - endTransaction(); - throw ex; - } - } - } - - /** - * Subclasses can override this method to perform any setup operations, - * such as populating a database table, <i>before</i> the transaction - * created by this class. Only invoked if there <i>is</i> a transaction: - * that is, if <code>preventTransaction()</code> has not been invoked in - * an overridden <code>runTest()</code> method. - * @throws Exception simply let any exception propagate - * @see #preventTransaction() - */ - protected void onSetUpBeforeTransaction() throws Exception { - } - - /** - * Subclasses can override this method to perform any setup operations, - * such as populating a database table, <i>within</i> the transaction - * created by this class. - * <p><b>NB:</b> Not called if there is no transaction management, due to no - * transaction manager being provided in the context. - * <p>If any {@link Throwable} is thrown, the transaction that has been started - * prior to the execution of this method will be {@link #endTransaction() ended} - * (or rather an attempt will be made to {@link #endTransaction() end it gracefully}); - * The offending {@link Throwable} will then be rethrown. - * @throws Exception simply let any exception propagate - */ - protected void onSetUpInTransaction() throws Exception { - } - - - /** - * This implementation ends the transaction after test execution. - * Override <code>onTearDownInTransaction()</code> and/or - * <code>onTearDownAfterTransaction()</code> to add custom tear-down behavior. - * <p>Note that <code>onTearDownInTransaction()</code> will only be called - * if a transaction is still active at the time of the test shutdown. - * In particular, it will <code>not</code> be called if the transaction has - * been completed with an explicit <code>endTransaction()</code> call before. - * @throws Exception simply let any exception propagate - * @see #onTearDownInTransaction() - * @see #onTearDownAfterTransaction() - * @see #endTransaction() - */ - protected final void onTearDown() throws Exception { - // Call onTearDownInTransaction and end transaction if the transaction is still active. - if (this.transactionStatus != null && !this.transactionStatus.isCompleted()) { - try { - onTearDownInTransaction(); - } - finally { - endTransaction(); - } - } - // Call onTearDownAfterTransaction if there was at least one transaction, - // even if it has been completed early through an endTransaction() call. - if (this.transactionsStarted > 0) { - onTearDownAfterTransaction(); - } - } - - /** - * Subclasses can override this method to run invariant tests here. - * The transaction is <i>still active</i> at this point, so any changes - * made in the transaction will still be visible. However, there is no need - * to clean up the database, as a rollback will follow automatically. - * <p><b>NB:</b> Not called if there is no actual transaction, for example - * due to no transaction manager being provided in the application context. - * @throws Exception simply let any exception propagate - */ - protected void onTearDownInTransaction() throws Exception { - } - - /** - * Subclasses can override this method to perform cleanup after a transaction - * here. At this point, the transaction is <i>not active anymore</i>. - * @throws Exception simply let any exception propagate - */ - protected void onTearDownAfterTransaction() throws Exception { - } - - - /** - * Cause the transaction to commit for this test method, - * even if default is set to rollback. - * @throws IllegalStateException if the operation cannot be set to - * complete as no transaction manager was provided - */ - protected void setComplete() throws UnsupportedOperationException { - if (this.transactionManager == null) { - throw new IllegalStateException("No transaction manager set"); - } - this.complete = true; - } - - /** - * Cause the transaction to rollback for this test method, - * even if default is set to complete. - * @throws IllegalStateException if the operation cannot be set to - * complete as no transaction manager was provided - */ - protected void setRollback() throws UnsupportedOperationException { - if (this.transactionManager == null) { - throw new IllegalStateException("No transaction manager set"); - } - this.complete = false; - } - - /** - * Immediately force a commit or rollback of the transaction, - * according to the complete flag. - * <p>Can be used to explicitly let the transaction end early, - * for example to check whether lazy associations of persistent objects - * work outside of a transaction (that is, have been initialized properly). - * @see #setComplete() - */ - protected void endTransaction() { - if (this.transactionStatus != null) { - try { - if (!this.complete) { - this.transactionManager.rollback(this.transactionStatus); - logger.info("Rolled back transaction after test execution"); - } - else { - this.transactionManager.commit(this.transactionStatus); - logger.info("Committed transaction after test execution"); - } - } - finally { - this.transactionStatus = null; - } - } - } - - /** - * Start a new transaction. Only call this method if <code>endTransaction()</code> - * has been called. <code>setComplete()</code> can be used again in the new transaction. - * The fate of the new transaction, by default, will be the usual rollback. - * @see #endTransaction() - * @see #setComplete() - */ - protected void startNewTransaction() throws TransactionException { - if (this.transactionStatus != null) { - throw new IllegalStateException("Cannot start new transaction without ending existing transaction: " + - "Invoke endTransaction() before startNewTransaction()"); - } - if (this.transactionManager == null) { - throw new IllegalStateException("No transaction manager set"); - } - - this.transactionStatus = this.transactionManager.getTransaction(this.transactionDefinition); - ++this.transactionsStarted; - this.complete = !this.defaultRollback; - - if (logger.isInfoEnabled()) { - logger.info("Began transaction (" + this.transactionsStarted + "): transaction manager [" + - this.transactionManager + "]; default rollback = " + this.defaultRollback); - } - } - -} diff --git a/spring/src/common/org/testng/spring/test/package.html b/spring/src/common/org/testng/spring/test/package.html deleted file mode 100644 index 3958135..0000000 --- a/spring/src/common/org/testng/spring/test/package.html +++ /dev/null @@ -1,14 +0,0 @@ -<html> -<body> - -Superclasses for tests requiring Spring application contexts, -including support for transactional execution of test cases, -with automatic rollback on completion. -Useful as base classes for application-specific tests. -<br/> -The superclasses in this package are ideal for integration testing. -<i>Unit</i> testing should not normally involve the Spring container, -but should test classes in isolation. - -</body> -</html> diff --git a/spring/src/jdk14/org/testng/spring/test/AbstractSingleSpringContextTests.java b/spring/src/jdk14/org/testng/spring/test/AbstractSingleSpringContextTests.java deleted file mode 100644 index d79d16e..0000000 --- a/spring/src/jdk14/org/testng/spring/test/AbstractSingleSpringContextTests.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright 2002-2007 the original author or authors. - * - * Licensed 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.testng.spring.test; - -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.util.StringUtils; - -/** - * Abstract JUnit test class that holds and exposes a single Spring - * {@link org.springframework.context.ApplicationContext ApplicationContext}. - * - * <p>This class will cache contexts based on a <i>context key</i>: normally the - * config locations String array describing the Spring resource descriptors making - * up the context. Unless the {@link #setDirty()} method is called by a test, the - * context will not be reloaded, even across different subclasses of this test. - * This is particularly beneficial if your context is slow to construct, for example - * if you are using Hibernate and the time taken to load the mappings is an issue. - * - * <p>For such standard usage, simply override the {@link #getConfigLocations()} - * method and provide the desired config files. - * - * <p>If you don't want to load a standard context from an array of config locations, - * you can override the {@link #contextKey()} method. In conjunction with this you - * typically need to override the {@link #loadContext(Object)} method, which by - * default loads the locations specified in the {@link #getConfigLocations()} method. - * - * <p><b>WARNING:</b> When doing integration tests from within Eclipse, only use - * classpath resource URLs. Else, you may see misleading failures when changing - * context locations. - * - * @author Juergen Hoeller - * @author Rod Johnson - * @since 2.0 - * @see #getConfigLocations() - * @see #contextKey() - * @see #loadContext(Object) - * @see #getApplicationContext() - */ -public abstract class AbstractSingleSpringContextTests extends AbstractSpringContextTests { - - /** Application context this test will run against */ - protected ConfigurableApplicationContext applicationContext; - - private int loadCount = 0; - - - /** - * Default constructor for AbstractDependencyInjectionSpringContextTests. - */ - public AbstractSingleSpringContextTests() { - } - - /** - * @testng.configuration beforeTestMethod = "true" - * This implementation is final. - * Override <code>onSetUp</code> for custom behavior. - * @see #onSetUp() - */ - protected final void setUp() throws Exception { - this.applicationContext = getContext(contextKey()); - prepareTestInstance(); - onSetUp(); - } - - /** - * Prepare this test instance, for example populating its fields. - * The context has already been loaded at the time of this callback. - * <p>This implementation does nothing. - */ - protected void prepareTestInstance() throws Exception { - } - - /** - * Subclasses can override this method in place of the - * <code>setUp()</code> method, which is final in this class. - * This implementation does nothing. - * @throws Exception simply let any exception propagate - */ - protected void onSetUp() throws Exception { - } - - /** - * Called to say that the "applicationContext" instance variable is dirty and - * should be reloaded. We need to do this if a test has modified the context - * (for example, by replacing a bean definition). - */ - protected void setDirty() { - setDirty(contextKey()); - } - - /** - * This implementation is final. - * Override <code>onTearDown</code> for custom behavior. - * @see #onTearDown() - * @testng.configuration beforeTestMethod = "true" - */ - protected final void tearDown() throws Exception { - onTearDown(); - } - - /** - * Subclasses can override this to add custom behavior on teardown. - * @throws Exception simply let any exception propagate - */ - protected void onTearDown() throws Exception { - } - - - /** - * Return a key for this context. Default is the config location array - * as determined by {@link #getConfigLocations()}. - * <p>If you override this method, you will typically have to override - * {@link #loadContext(Object)} as well, being able to handle the key type - * that this method returns. - * @see #getConfigLocations() - */ - protected Object contextKey() { - return getConfigLocations(); - } - - /** - * This implementation assumes a key of type String array and loads - * a context from the given locations. - * <p>If you override {@link #contextKey()}, you will typically have to - * override this method as well, being able to handle the key type - * that <code>contextKey()</code> returns. - * @see #getConfigLocations() - */ - protected ConfigurableApplicationContext loadContext(Object key) throws Exception { - return loadContextLocations((String[]) key); - } - - /** - * Subclasses must implement this method to return the locations of their - * config files, unless they override {@link #contextKey()} and - * {@link #loadContext(Object)} instead. - * <p>A plain path will be treated as class path location, e.g.: - * "org/springframework/whatever/foo.xml". Note however that you may prefix path - * locations with standard Spring resource prefixes. Therefore, a config location - * path prefixed with "classpath:" with behave the same as a plain path, but a - * config location such as "file:/some/path/path/location/appContext.xml" will - * be treated as a filesystem location. - * <p>The default implementation returns an empty array. - * @return an array of config locations - */ - protected String[] getConfigLocations() { - return new String[0]; - } - - /** - * Load an ApplicationContext from the given config locations. - * @param locations the config locations - * @return the corresponding ApplicationContext instance (potentially cached) - */ - protected ConfigurableApplicationContext loadContextLocations(String[] locations) throws Exception { - ++this.loadCount; - if (logger.isInfoEnabled()) { - logger.info("Loading context for: " + StringUtils.arrayToCommaDelimitedString(locations)); - } - return new ClassPathXmlApplicationContext(locations); - } - - /** - * Return the ApplicationContext that this base class manages. - */ - public final ConfigurableApplicationContext getApplicationContext() { - return this.applicationContext; - } - - /** - * Return the current number of context load attempts. - */ - public final int getLoadCount() { - return this.loadCount; - } - -} diff --git a/spring/src/jdk15/org/testng/spring/test/AbstractAnnotationAwareTransactionalTests.java b/spring/src/jdk15/org/testng/spring/test/AbstractAnnotationAwareTransactionalTests.java deleted file mode 100644 index ed4d407..0000000 --- a/spring/src/jdk15/org/testng/spring/test/AbstractAnnotationAwareTransactionalTests.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.testng.spring.test; - -import java.util.Map; -import java.lang.reflect.Method; -import javax.sql.DataSource; - -import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource; -import org.springframework.transaction.interceptor.TransactionAttributeSource; -import org.springframework.transaction.TransactionDefinition; -import org.springframework.test.annotation.*; -import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; -import org.springframework.context.ApplicationContext; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; - -/** - * @author Hani Suleiman - * Date: Jan 26, 2007 - * Time: 8:17:20 AM - */ -public abstract class AbstractAnnotationAwareTransactionalTests - extends AbstractTransactionalDataSourceSpringContextTests { - - protected SimpleJdbcTemplate simpleJdbcTemplate; - - private TransactionAttributeSource transactionAttributeSource = new AnnotationTransactionAttributeSource(); - - protected ProfileValueSource profileValueSource = SystemProfileValueSource.getInstance(); - - - @Override - public void setDataSource(DataSource dataSource) { - super.setDataSource(dataSource); - // JdbcTemplate will be identically configured - this.simpleJdbcTemplate = new SimpleJdbcTemplate(this.jdbcTemplate); - } - - // TODO code to try to load (and cache!) ProfileValueSource - // from a given URL? It's easy enough to do, of course. - protected void findUniqueProfileValueSourceFromContext(ApplicationContext ac) { - Map beans = ac.getBeansOfType(ProfileValueSource.class); - if (beans.size() == 1) { - this.profileValueSource = (ProfileValueSource) beans.values().iterator().next(); - } - } - - @BeforeMethod - protected void checkTransaction(Method testMethod) throws Throwable { - TransactionDefinition explicitTransactionDefinition = - this.transactionAttributeSource.getTransactionAttribute(testMethod, getClass()); - if (explicitTransactionDefinition != null) { - logger.info("Custom transaction definition [" + explicitTransactionDefinition + " for test method " + testMethod.getName()); - setTransactionDefinition(explicitTransactionDefinition); - } - else if (testMethod.isAnnotationPresent(NotTransactional.class)) { - // Don't have any transaction... - preventTransaction(); - } - } - - @AfterMethod - protected void checkDirtiesContext(Method testMethod) { - if (testMethod.isAnnotationPresent(DirtiesContext.class)) { - AbstractAnnotationAwareTransactionalTests.this.setDirty(); - } - } -} diff --git a/spring/src/jdk15/org/testng/spring/test/AbstractSingleSpringContextTests.java b/spring/src/jdk15/org/testng/spring/test/AbstractSingleSpringContextTests.java deleted file mode 100644 index 8b66352..0000000 --- a/spring/src/jdk15/org/testng/spring/test/AbstractSingleSpringContextTests.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright 2002-2007 the original author or authors. - * - * Licensed 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.testng.spring.test; - -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.util.StringUtils; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.AfterMethod; - -/** - * Abstract JUnit test class that holds and exposes a single Spring - * {@link org.springframework.context.ApplicationContext ApplicationContext}. - * - * <p>This class will cache contexts based on a <i>context key</i>: normally the - * config locations String array describing the Spring resource descriptors making - * up the context. Unless the {@link #setDirty()} method is called by a test, the - * context will not be reloaded, even across different subclasses of this test. - * This is particularly beneficial if your context is slow to construct, for example - * if you are using Hibernate and the time taken to load the mappings is an issue. - * - * <p>For such standard usage, simply override the {@link #getConfigLocations()} - * method and provide the desired config files. - * - * <p>If you don't want to load a standard context from an array of config locations, - * you can override the {@link #contextKey()} method. In conjunction with this you - * typically need to override the {@link #loadContext(Object)} method, which by - * default loads the locations specified in the {@link #getConfigLocations()} method. - * - * <p><b>WARNING:</b> When doing integration tests from within Eclipse, only use - * classpath resource URLs. Else, you may see misleading failures when changing - * context locations. - * - * @author Juergen Hoeller - * @author Rod Johnson - * @since 2.0 - * @see #getConfigLocations() - * @see #contextKey() - * @see #loadContext(Object) - * @see #getApplicationContext() - */ -public abstract class AbstractSingleSpringContextTests extends AbstractSpringContextTests { - - /** Application context this test will run against */ - protected ConfigurableApplicationContext applicationContext; - - private int loadCount = 0; - - - /** - * Default constructor for AbstractDependencyInjectionSpringContextTests. - */ - public AbstractSingleSpringContextTests() { - } - - /** - * This implementation is final. - * Override <code>onSetUp</code> for custom behavior. - * @see #onSetUp() - */ - @BeforeMethod(groups="spring-init") - protected final void setUp() throws Exception { - this.applicationContext = getContext(contextKey()); - prepareTestInstance(); - onSetUp(); - } - - /** - * Prepare this test instance, for example populating its fields. - * The context has already been loaded at the time of this callback. - * <p>This implementation does nothing. - */ - protected void prepareTestInstance() throws Exception { - } - - /** - * Subclasses can override this method in place of the - * <code>setUp()</code> method, which is final in this class. - * This implementation does nothing. - * @throws Exception simply let any exception propagate - */ - protected void onSetUp() throws Exception { - } - - /** - * Called to say that the "applicationContext" instance variable is dirty and - * should be reloaded. We need to do this if a test has modified the context - * (for example, by replacing a bean definition). - */ - protected void setDirty() { - setDirty(contextKey()); - } - - /** - * This implementation is final. - * Override <code>onTearDown</code> for custom behavior. - * @see #onTearDown() - */ - @AfterMethod(groups="spring-init") - protected final void tearDown() throws Exception { - onTearDown(); - } - - /** - * Subclasses can override this to add custom behavior on teardown. - * @throws Exception simply let any exception propagate - */ - protected void onTearDown() throws Exception { - } - - - /** - * Return a key for this context. Default is the config location array - * as determined by {@link #getConfigLocations()}. - * <p>If you override this method, you will typically have to override - * {@link #loadContext(Object)} as well, being able to handle the key type - * that this method returns. - * @see #getConfigLocations() - */ - protected Object contextKey() { - return getConfigLocations(); - } - - /** - * This implementation assumes a key of type String array and loads - * a context from the given locations. - * <p>If you override {@link #contextKey()}, you will typically have to - * override this method as well, being able to handle the key type - * that <code>contextKey()</code> returns. - * @see #getConfigLocations() - */ - protected ConfigurableApplicationContext loadContext(Object key) throws Exception { - return loadContextLocations((String[]) key); - } - - /** - * Subclasses must implement this method to return the locations of their - * config files, unless they override {@link #contextKey()} and - * {@link #loadContext(Object)} instead. - * <p>A plain path will be treated as class path location, e.g.: - * "org/springframework/whatever/foo.xml". Note however that you may prefix path - * locations with standard Spring resource prefixes. Therefore, a config location - * path prefixed with "classpath:" with behave the same as a plain path, but a - * config location such as "file:/some/path/path/location/appContext.xml" will - * be treated as a filesystem location. - * <p>The default implementation returns an empty array. - * @return an array of config locations - */ - protected String[] getConfigLocations() { - return new String[0]; - } - - /** - * Load an ApplicationContext from the given config locations. - * @param locations the config locations - * @return the corresponding ApplicationContext instance (potentially cached) - */ - protected ConfigurableApplicationContext loadContextLocations(String[] locations) throws Exception { - ++this.loadCount; - if (logger.isInfoEnabled()) { - logger.info("Loading context for: " + StringUtils.arrayToCommaDelimitedString(locations)); - } - return new ClassPathXmlApplicationContext(locations); - } - - /** - * Return the ApplicationContext that this base class manages. - */ - public final ConfigurableApplicationContext getApplicationContext() { - return this.applicationContext; - } - - /** - * Return the current number of context load attempts. - */ - public final int getLoadCount() { - return this.loadCount; - } - -} -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/testng.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

