diff --git a/zanata-war/src/test/java/org/zanata/jdbc/ConnectionWrapper.java b/zanata-war/src/main/java/org/zanata/database/ConnectionWrapper.java
similarity index 99%
rename from zanata-war/src/test/java/org/zanata/jdbc/ConnectionWrapper.java
rename to zanata-war/src/main/java/org/zanata/database/ConnectionWrapper.java
index f4f9909195..fb7dc47159 100644
--- a/zanata-war/src/test/java/org/zanata/jdbc/ConnectionWrapper.java
+++ b/zanata-war/src/main/java/org/zanata/database/ConnectionWrapper.java
@@ -19,7 +19,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
-package org.zanata.jdbc;
+package org.zanata.database;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
diff --git a/zanata-war/src/test/java/org/zanata/jdbc/ResultSetWrapper.java b/zanata-war/src/main/java/org/zanata/database/ResultSetWrapper.java
similarity index 99%
rename from zanata-war/src/test/java/org/zanata/jdbc/ResultSetWrapper.java
rename to zanata-war/src/main/java/org/zanata/database/ResultSetWrapper.java
index 5122b0f3d7..34f94dbad5 100644
--- a/zanata-war/src/test/java/org/zanata/jdbc/ResultSetWrapper.java
+++ b/zanata-war/src/main/java/org/zanata/database/ResultSetWrapper.java
@@ -19,7 +19,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
-package org.zanata.jdbc;
+package org.zanata.database;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
diff --git a/zanata-war/src/test/java/org/zanata/jdbc/StatementWrapper.java b/zanata-war/src/main/java/org/zanata/database/StatementWrapper.java
similarity index 99%
rename from zanata-war/src/test/java/org/zanata/jdbc/StatementWrapper.java
rename to zanata-war/src/main/java/org/zanata/database/StatementWrapper.java
index 34e1b08f31..a258a52f37 100644
--- a/zanata-war/src/test/java/org/zanata/jdbc/StatementWrapper.java
+++ b/zanata-war/src/main/java/org/zanata/database/StatementWrapper.java
@@ -19,7 +19,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
-package org.zanata.jdbc;
+package org.zanata.database;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
diff --git a/zanata-war/src/test/java/org/zanata/jdbc/StreamingResultSetSQLException.java b/zanata-war/src/main/java/org/zanata/database/StreamingResultSetSQLException.java
similarity index 98%
rename from zanata-war/src/test/java/org/zanata/jdbc/StreamingResultSetSQLException.java
rename to zanata-war/src/main/java/org/zanata/database/StreamingResultSetSQLException.java
index 79cd2215be..534b884b46 100644
--- a/zanata-war/src/test/java/org/zanata/jdbc/StreamingResultSetSQLException.java
+++ b/zanata-war/src/main/java/org/zanata/database/StreamingResultSetSQLException.java
@@ -19,7 +19,7 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
-package org.zanata.jdbc;
+package org.zanata.database;
import java.sql.SQLException;
diff --git a/zanata-war/src/test/java/org/zanata/dao/WrappedConnectionProvider.java b/zanata-war/src/main/java/org/zanata/database/WrappedConnectionProvider.java
similarity index 81%
rename from zanata-war/src/test/java/org/zanata/dao/WrappedConnectionProvider.java
rename to zanata-war/src/main/java/org/zanata/database/WrappedConnectionProvider.java
index 600d56f248..eeca3a02d4 100644
--- a/zanata-war/src/test/java/org/zanata/dao/WrappedConnectionProvider.java
+++ b/zanata-war/src/main/java/org/zanata/database/WrappedConnectionProvider.java
@@ -19,13 +19,13 @@
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
-package org.zanata.dao;
+package org.zanata.database;
import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
-import org.zanata.jdbc.ConnectionWrapper;
/**
* This class wraps JDBC Connections/Statements/ResultSets to detect
@@ -38,11 +38,22 @@
*/
public class WrappedConnectionProvider extends DriverManagerConnectionProviderImpl
{
+ private static final long serialVersionUID = 1L;
+
@Override
public Connection getConnection() throws SQLException
{
Connection connection = super.getConnection();
- return ConnectionWrapper.wrap(connection);
+ DatabaseMetaData metaData = connection.getMetaData();
+ String databaseName = metaData.getDatabaseProductName();
+ if ("MySQL".equals(databaseName))
+ {
+ return connection;
+ }
+ else
+ {
+ return ConnectionWrapper.wrap(connection);
+ }
}
}
diff --git a/zanata-war/src/main/webapp-jboss/WEB-INF/classes/META-INF/persistence.xml b/zanata-war/src/main/webapp-jboss/WEB-INF/classes/META-INF/persistence.xml
index 0f1d2d31c9..40b00951e2 100644
--- a/zanata-war/src/main/webapp-jboss/WEB-INF/classes/META-INF/persistence.xml
+++ b/zanata-war/src/main/webapp-jboss/WEB-INF/classes/META-INF/persistence.xml
@@ -57,7 +57,9 @@
-
+
+
+
diff --git a/zanata-war/src/test/java/org/zanata/dao/TextFlowStreamDAOTest.java b/zanata-war/src/test/java/org/zanata/dao/TextFlowStreamDAOTest.java
index 3b4aae6fee..3f6e0a55bd 100644
--- a/zanata-war/src/test/java/org/zanata/dao/TextFlowStreamDAOTest.java
+++ b/zanata-war/src/test/java/org/zanata/dao/TextFlowStreamDAOTest.java
@@ -2,36 +2,21 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Iterator;
-
import lombok.Cleanup;
-import lombok.extern.slf4j.Slf4j;
import org.dbunit.operation.DatabaseOperation;
import org.hamcrest.Matchers;
-import org.hibernate.JDBCException;
-import org.hibernate.Query;
-import org.hibernate.ScrollMode;
-import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.ejb.HibernateEntityManagerFactory;
-import org.hibernate.jdbc.Work;
-import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.ZanataDbunitJpaTest;
-import org.zanata.jdbc.StreamingResultSetSQLException;
import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.model.HTextFlow;
import org.zanata.util.CloseableIterator;
@Test(groups = { "jpa-tests" })
-@Slf4j
public class TextFlowStreamDAOTest extends ZanataDbunitJpaTest
{
@@ -58,88 +43,6 @@ public void setup()
projectIterDao = new ProjectIterationDAO(session);
}
- @Test
- public void testWrapperWithNestedExecute() throws Exception
- {
- @Cleanup
- ScrollableResults scroll1 = streamQuery("from HTextFlow");
- try
- {
- session.doWork(new Work()
- {
- @Override
- public void execute(Connection connection) throws SQLException
- {
- Statement statement = connection.createStatement();
- statement.executeUpdate("delete from HTextFlow where 0=1");
- }
- });
- Assert.fail("Failed to detect concurrent ResultSet - is WrappedConnectionProvider enabled?");
- }
- catch (JDBCException e)
- {
- if (!(e.getSQLException() instanceof StreamingResultSetSQLException))
- {
- throw e;
- }
- }
- }
-
- @Test
- public void testWrapperWithNestedStreaming() throws Exception
- {
- @Cleanup
- ScrollableResults scroll1 = streamQuery("from HTextFlow");
- try
- {
- @Cleanup
- ScrollableResults scroll2 = streamQuery("from HTextFlowTarget");
- Assert.fail("Failed to detect concurrent ResultSet - is WrappedConnectionProvider enabled?");
- }
- catch (JDBCException e)
- {
- if (!(e.getSQLException() instanceof StreamingResultSetSQLException))
- {
- throw e;
- }
- }
- }
-
- @Test
- public void testWrapperWithNestedResults() throws Exception
- {
- @Cleanup
- ScrollableResults scroll1 = streamQuery("from HTextFlow");
- try
- {
- @Cleanup
- ScrollableResults scroll2 = scrollQuery("from HTextFlowTarget");
- Assert.fail("Failed to detect concurrent ResultSet - is WrappedConnectionProvider enabled?");
- }
- catch (JDBCException e)
- {
- if (!(e.getSQLException() instanceof StreamingResultSetSQLException))
- {
- throw e;
- }
- }
- }
-
- private ScrollableResults streamQuery(String queryString)
- {
- Query q = session.createQuery(queryString);
- q.setFetchSize(Integer.MIN_VALUE);
- ScrollableResults scroll = q.scroll(ScrollMode.FORWARD_ONLY);
- return scroll;
- }
-
- private ScrollableResults scrollQuery(String queryString)
- {
- Query q = session.createQuery(queryString);
- ScrollableResults scroll = q.scroll();
- return scroll;
- }
-
@Test
public void findAllTextFlows() throws Exception
{
diff --git a/zanata-war/src/test/java/org/zanata/database/WrappedConnectionProviderTest.java b/zanata-war/src/test/java/org/zanata/database/WrappedConnectionProviderTest.java
new file mode 100644
index 0000000000..68ad7363d1
--- /dev/null
+++ b/zanata-war/src/test/java/org/zanata/database/WrappedConnectionProviderTest.java
@@ -0,0 +1,128 @@
+package org.zanata.database;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import lombok.Cleanup;
+
+import org.dbunit.operation.DatabaseOperation;
+import org.hibernate.JDBCException;
+import org.hibernate.Query;
+import org.hibernate.ScrollMode;
+import org.hibernate.ScrollableResults;
+import org.hibernate.Session;
+import org.hibernate.jdbc.Work;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import org.zanata.ZanataDbunitJpaTest;
+
+@Test(groups = { "jpa-tests" })
+public class WrappedConnectionProviderTest extends ZanataDbunitJpaTest
+{
+
+ private Session session;
+
+ @Override
+ protected void prepareDBUnitOperations()
+ {
+ beforeTestOperations.add(new DataSetOperation("org/zanata/test/model/ProjectsData.dbunit.xml", DatabaseOperation.CLEAN_INSERT));
+ beforeTestOperations.add(new DataSetOperation("org/zanata/test/model/TextFlowTestData.dbunit.xml", DatabaseOperation.CLEAN_INSERT));
+ beforeTestOperations.add(new DataSetOperation("org/zanata/test/model/LocalesData.dbunit.xml", DatabaseOperation.CLEAN_INSERT));
+ beforeTestOperations.add(new DataSetOperation("org/zanata/test/model/AccountData.dbunit.xml", DatabaseOperation.CLEAN_INSERT));
+ }
+
+ @BeforeMethod(firstTimeOnly = true)
+ public void setup()
+ {
+ session = getSession();
+ }
+
+ @Test
+ public void testWrapperWithNestedExecute() throws Exception
+ {
+ @Cleanup
+ ScrollableResults scroll1 = streamQuery("from HTextFlow");
+ try
+ {
+ session.doWork(new Work()
+ {
+ @Override
+ public void execute(Connection connection) throws SQLException
+ {
+ Statement statement = connection.createStatement();
+ statement.executeUpdate("delete from HTextFlow where 0=1");
+ }
+ });
+ concurrentResultSetNotDetected();
+ }
+ catch (JDBCException e)
+ {
+ checkExceptionType(e);
+ }
+ }
+
+ @Test
+ public void testWrapperWithNestedStreaming() throws Exception
+ {
+ @Cleanup
+ ScrollableResults scroll1 = streamQuery("from HTextFlow");
+ try
+ {
+ @Cleanup
+ ScrollableResults scroll2 = streamQuery("from HTextFlowTarget");
+ concurrentResultSetNotDetected();
+ }
+ catch (JDBCException e)
+ {
+ checkExceptionType(e);
+ }
+ }
+
+ @Test
+ public void testWrapperWithNestedResults() throws Exception
+ {
+ @Cleanup
+ ScrollableResults scroll1 = streamQuery("from HTextFlow");
+ try
+ {
+ @Cleanup
+ ScrollableResults scroll2 = scrollQuery("from HTextFlowTarget");
+ concurrentResultSetNotDetected();
+ }
+ catch (JDBCException e)
+ {
+ checkExceptionType(e);
+ }
+ }
+
+ private void concurrentResultSetNotDetected()
+ {
+ Assert.fail("Failed to detect concurrent ResultSet - is WrappedConnectionProvider enabled in persistence.xml?");
+ }
+
+ private void checkExceptionType(JDBCException e)
+ {
+ if (!(e.getSQLException() instanceof StreamingResultSetSQLException))
+ {
+ throw e;
+ }
+ }
+
+ private ScrollableResults streamQuery(String queryString)
+ {
+ Query q = session.createQuery(queryString);
+ q.setFetchSize(Integer.MIN_VALUE);
+ ScrollableResults scroll = q.scroll(ScrollMode.FORWARD_ONLY);
+ return scroll;
+ }
+
+ private ScrollableResults scrollQuery(String queryString)
+ {
+ Query q = session.createQuery(queryString);
+ ScrollableResults scroll = q.scroll();
+ return scroll;
+ }
+
+}
diff --git a/zanata-war/src/test/resources/META-INF/persistence.xml b/zanata-war/src/test/resources/META-INF/persistence.xml
index f9205ff03b..c57cff0c2c 100755
--- a/zanata-war/src/test/resources/META-INF/persistence.xml
+++ b/zanata-war/src/test/resources/META-INF/persistence.xml
@@ -60,7 +60,7 @@
-
+