Skip to content
This repository was archived by the owner on Dec 17, 2024. It is now read-only.

Commit 82687bd

Browse files
committed
testcase for issue #1
1 parent 706fdff commit 82687bd

File tree

3 files changed

+172
-0
lines changed

3 files changed

+172
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.davidkarlsen.commonstransaction.spring.issue1;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.stereotype.Service;
5+
import org.springframework.transaction.annotation.Transactional;
6+
7+
/**
8+
* @author et2448
9+
* @since 7/7/15
10+
*/
11+
@Service
12+
@Transactional("fileTransactionManager")
13+
public class FileService
14+
{
15+
@Autowired
16+
private FileServiceTwo fileServiceTwo;
17+
18+
public void test() throws Exception {
19+
fileServiceTwo.test1();
20+
fileServiceTwo.test();
21+
}
22+
23+
24+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.davidkarlsen.commonstransaction.spring.issue1;
2+
3+
import com.davidkarlsen.commonstransaction.spring.TransactionAwareFileResourceManager;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.stereotype.Service;
6+
import org.springframework.transaction.annotation.Transactional;
7+
8+
/**
9+
* @author et2448
10+
* @since 7/7/15
11+
*/
12+
@Service
13+
@Transactional("fileTransactionManager")
14+
public class FileServiceTwo
15+
{
16+
@Autowired
17+
protected TransactionAwareFileResourceManager transactionAwareFileResourceManager;
18+
19+
public void test() throws Exception {
20+
transactionAwareFileResourceManager.createResource("1");
21+
throw new RuntimeException();
22+
23+
}
24+
25+
public void test1() throws Exception {
26+
transactionAwareFileResourceManager.createResource("2");
27+
}
28+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package com.davidkarlsen.commonstransaction.spring.issue1;
2+
3+
import com.davidkarlsen.commonstransaction.spring.CommonsTransactionPlatformTransactionManager;
4+
import com.davidkarlsen.commonstransaction.spring.FileResourceManagerFactory;
5+
import com.davidkarlsen.commonstransaction.spring.TransactionAwareFileResourceManager;
6+
import org.apache.commons.transaction.file.FileResourceManager;
7+
import org.junit.Assert;
8+
import org.junit.BeforeClass;
9+
import org.junit.ClassRule;
10+
import org.junit.Test;
11+
import org.junit.rules.TemporaryFolder;
12+
import org.junit.runner.RunWith;
13+
import org.springframework.beans.factory.annotation.Autowired;
14+
import org.springframework.context.annotation.Bean;
15+
import org.springframework.context.annotation.Configuration;
16+
import org.springframework.test.context.ContextConfiguration;
17+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
18+
import org.springframework.transaction.annotation.EnableTransactionManagement;
19+
20+
import java.io.File;
21+
import java.io.IOException;
22+
23+
/**
24+
* @author et2448
25+
* @since 7/7/15
26+
*/
27+
@RunWith( SpringJUnit4ClassRunner.class )
28+
@ContextConfiguration( classes = Issue1Test.TestConfig.class )
29+
public class Issue1Test
30+
extends Assert
31+
{
32+
@ClassRule
33+
public static TemporaryFolder temporaryFolder = new TemporaryFolder( new File( "target" ) );
34+
static File workDir;
35+
static File storeDir;
36+
37+
//@Autowired
38+
//private FileServiceTwo fileServiceTwo;
39+
40+
@Autowired
41+
private FileService fileService;
42+
43+
@BeforeClass
44+
public static void before() throws IOException {
45+
workDir = temporaryFolder.newFolder( "workDir" );
46+
storeDir = temporaryFolder.newFolder( "storeDir" );
47+
}
48+
49+
@Configuration
50+
@EnableTransactionManagement( proxyTargetClass = true )
51+
public static class TestConfig
52+
{
53+
@Bean
54+
public FileService fileService()
55+
{
56+
return new FileService();
57+
}
58+
59+
@Bean
60+
public FileServiceTwo fileServiceTwo()
61+
{
62+
return new FileServiceTwo();
63+
}
64+
65+
@Bean
66+
public FileResourceManagerFactory fileResourceManagerFactory()
67+
throws IOException
68+
{
69+
FileResourceManagerFactory fileResourceManagerFactory = new FileResourceManagerFactory();
70+
fileResourceManagerFactory.setStoreDir( storeDir );
71+
fileResourceManagerFactory.setWorkDir( workDir );
72+
73+
return fileResourceManagerFactory;
74+
}
75+
76+
@Bean
77+
public TransactionAwareFileResourceManager transactionAwareFileResourceManager(
78+
FileResourceManager fileResourceManager )
79+
{
80+
TransactionAwareFileResourceManager transactionAwareFileResourceManager =
81+
new TransactionAwareFileResourceManager();
82+
transactionAwareFileResourceManager.setFileResourceManager( fileResourceManager );
83+
84+
return transactionAwareFileResourceManager;
85+
}
86+
87+
@Bean
88+
public CommonsTransactionPlatformTransactionManager fileTransactionManager(
89+
FileResourceManager fileResourceManager )
90+
throws Exception
91+
{
92+
CommonsTransactionPlatformTransactionManager commonsTransactionPlatformTransactionManager =
93+
new CommonsTransactionPlatformTransactionManager();
94+
commonsTransactionPlatformTransactionManager.setFileResourceManager( fileResourceManager );
95+
96+
return commonsTransactionPlatformTransactionManager;
97+
}
98+
}
99+
100+
@Test
101+
public void testIssue1()
102+
throws Exception
103+
{
104+
try
105+
{
106+
fileService.test();
107+
fail();
108+
}
109+
catch ( RuntimeException e ) {
110+
assertEmptyDirectory( workDir );
111+
assertEmptyDirectory( storeDir );
112+
}
113+
}
114+
115+
116+
117+
private void assertEmptyDirectory( File file ) {
118+
assertTrue( file.isDirectory() && file.list().length == 0 );
119+
}
120+
}

0 commit comments

Comments
 (0)