Skip to content

Commit f8d1a1c

Browse files
committed
HHH-18961 Add test for issue
1 parent 199648a commit f8d1a1c

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.jpa.txn;
6+
7+
import jakarta.transaction.HeuristicMixedException;
8+
import jakarta.transaction.HeuristicRollbackException;
9+
import jakarta.transaction.InvalidTransactionException;
10+
import jakarta.transaction.NotSupportedException;
11+
import jakarta.transaction.RollbackException;
12+
import jakarta.transaction.SystemException;
13+
import jakarta.transaction.Transaction;
14+
import jakarta.transaction.TransactionManager;
15+
import org.hibernate.HibernateException;
16+
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
17+
import org.hibernate.jdbc.AbstractReturningWork;
18+
import org.hibernate.resource.transaction.backend.jta.internal.JtaIsolationDelegate;
19+
import org.hibernate.testing.orm.junit.JiraKey;
20+
import org.junit.jupiter.api.Test;
21+
22+
import java.sql.Connection;
23+
import java.sql.SQLException;
24+
25+
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
26+
27+
@JiraKey("HHH-18961")
28+
public class JtaObtainConnectionExceptionTest {
29+
30+
@Test
31+
public void testIt() {
32+
final JtaIsolationDelegate isolationDelegate = new JtaIsolationDelegate(
33+
new ObtainConnectionSqlExceptionConnectionAccess(),
34+
null,
35+
new TransactionManagerImpl() );
36+
37+
assertThrowsExactly( HibernateException.class, () ->
38+
isolationDelegate.delegateWork(
39+
new AbstractReturningWork<>() {
40+
@Override
41+
public Object execute(Connection connection) {
42+
return null;
43+
}
44+
},
45+
false
46+
)
47+
);
48+
}
49+
50+
public static class ObtainConnectionSqlExceptionConnectionAccess implements JdbcConnectionAccess {
51+
@Override
52+
public Connection obtainConnection() throws SQLException {
53+
throw new SQLException( "No connection" );
54+
}
55+
56+
@Override
57+
public void releaseConnection(Connection connection) throws SQLException {
58+
59+
}
60+
61+
@Override
62+
public boolean supportsAggressiveRelease() {
63+
return false;
64+
}
65+
}
66+
67+
public static class TransactionManagerImpl implements TransactionManager {
68+
@Override
69+
public void begin() throws NotSupportedException, SystemException {
70+
71+
}
72+
73+
@Override
74+
public void commit()
75+
throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException {
76+
}
77+
78+
@Override
79+
public int getStatus() throws SystemException {
80+
return 0;
81+
}
82+
83+
@Override
84+
public Transaction getTransaction() throws SystemException {
85+
return null;
86+
}
87+
88+
@Override
89+
public void resume(Transaction transaction)
90+
throws InvalidTransactionException, IllegalStateException, SystemException {
91+
}
92+
93+
@Override
94+
public void rollback() throws IllegalStateException, SecurityException, SystemException {
95+
96+
}
97+
98+
@Override
99+
public void setRollbackOnly() throws IllegalStateException, SystemException {
100+
101+
}
102+
103+
@Override
104+
public void setTransactionTimeout(int i) throws SystemException {
105+
106+
}
107+
108+
@Override
109+
public Transaction suspend() throws SystemException {
110+
return null;
111+
}
112+
}
113+
}

0 commit comments

Comments
 (0)