Merge branch 'master' of https://github.com/jOOQ/jOOQ
This commit is contained in:
commit
a5576cb7c2
@ -1,66 +0,0 @@
|
||||
package org.jooq.example.spring.config;
|
||||
|
||||
import org.jooq.ConnectionProvider;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.ExecuteListenerProvider;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.TransactionProvider;
|
||||
import org.jooq.example.spring.exception.ExceptionTranslator;
|
||||
import org.jooq.impl.DataSourceConnectionProvider;
|
||||
import org.jooq.impl.DefaultConfiguration;
|
||||
import org.jooq.impl.DefaultDSLContext;
|
||||
import org.jooq.impl.DefaultExecuteListenerProvider;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
/**
|
||||
* @author Jacques Gonzalez
|
||||
*/
|
||||
@Configuration
|
||||
public class JooqSpringBootConfiguration {
|
||||
|
||||
@Bean
|
||||
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
|
||||
return new DataSourceTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DSLContext dsl(org.jooq.Configuration config) {
|
||||
return new DefaultDSLContext(config);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ConnectionProvider connectionProvider(DataSource dataSource) {
|
||||
return new DataSourceConnectionProvider(new TransactionAwareDataSourceProxy(dataSource));
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TransactionProvider transactionProvider() {
|
||||
return new SpringTransactionProvider();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ExceptionTranslator exceptionTranslator() {
|
||||
return new ExceptionTranslator();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ExecuteListenerProvider executeListenerProvider(ExceptionTranslator exceptionTranslator) {
|
||||
return new DefaultExecuteListenerProvider(exceptionTranslator);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public org.jooq.Configuration jooqConfig(ConnectionProvider connectionProvider,
|
||||
TransactionProvider transactionProvider, ExecuteListenerProvider executeListenerProvider) {
|
||||
|
||||
return new DefaultConfiguration() //
|
||||
.derive(connectionProvider) //
|
||||
.derive(transactionProvider) //
|
||||
.derive(executeListenerProvider) //
|
||||
.derive(SQLDialect.H2);
|
||||
}
|
||||
}
|
||||
@ -1,49 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Other licenses:
|
||||
* -----------------------------------------------------------------------------
|
||||
* Commercial licenses for this work are available. These replace the above
|
||||
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
|
||||
* database integrations.
|
||||
*
|
||||
* For more information, please visit: http://www.jooq.org/licenses
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
package org.jooq.example.spring.config;
|
||||
|
||||
import org.jooq.Transaction;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
|
||||
class SpringTransaction implements Transaction {
|
||||
final TransactionStatus tx;
|
||||
|
||||
SpringTransaction(TransactionStatus tx) {
|
||||
this.tx = tx;
|
||||
}
|
||||
}
|
||||
@ -1,86 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Other licenses:
|
||||
* -----------------------------------------------------------------------------
|
||||
* Commercial licenses for this work are available. These replace the above
|
||||
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
|
||||
* database integrations.
|
||||
*
|
||||
* For more information, please visit: http://www.jooq.org/licenses
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
package org.jooq.example.spring.config;
|
||||
|
||||
import static org.springframework.transaction.TransactionDefinition.PROPAGATION_NESTED;
|
||||
|
||||
import org.jooq.TransactionContext;
|
||||
import org.jooq.TransactionProvider;
|
||||
import org.jooq.tools.JooqLogger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
||||
|
||||
/**
|
||||
* An example <code>TransactionProvider</code> implementing the {@link TransactionProvider} contract for use with
|
||||
* Spring.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
public class SpringTransactionProvider implements TransactionProvider {
|
||||
|
||||
private static final JooqLogger log = JooqLogger.getLogger(SpringTransactionProvider.class);
|
||||
|
||||
@Autowired DataSourceTransactionManager txMgr;
|
||||
|
||||
@Override
|
||||
public void begin(TransactionContext ctx) {
|
||||
log.info("Begin transaction");
|
||||
|
||||
// This TransactionProvider behaves like jOOQ's DefaultTransactionProvider,
|
||||
// which supports nested transactions using Savepoints
|
||||
TransactionStatus tx = txMgr.getTransaction(new DefaultTransactionDefinition(PROPAGATION_NESTED));
|
||||
ctx.transaction(new SpringTransaction(tx));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit(TransactionContext ctx) {
|
||||
log.info("commit transaction");
|
||||
|
||||
txMgr.commit(((SpringTransaction) ctx.transaction()).tx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback(TransactionContext ctx) {
|
||||
log.info("rollback transaction");
|
||||
|
||||
txMgr.rollback(((SpringTransaction) ctx.transaction()).tx);
|
||||
}
|
||||
}
|
||||
@ -1,77 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Other licenses:
|
||||
* -----------------------------------------------------------------------------
|
||||
* Commercial licenses for this work are available. These replace the above
|
||||
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
|
||||
* database integrations.
|
||||
*
|
||||
* For more information, please visit: http://www.jooq.org/licenses
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
package org.jooq.example.spring.exception;
|
||||
|
||||
import org.jooq.ExecuteContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.impl.DefaultExecuteListener;
|
||||
|
||||
import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator;
|
||||
import org.springframework.jdbc.support.SQLExceptionTranslator;
|
||||
import org.springframework.jdbc.support.SQLStateSQLExceptionTranslator;
|
||||
|
||||
/**
|
||||
* This class transforms SQLException into a Spring specific
|
||||
* DataAccessException. The idea behind this is borrowed from Adam Zell's Gist
|
||||
*
|
||||
* @author Petri Kainulainen
|
||||
* @author Adam Zell
|
||||
* @author Lukas Eder
|
||||
* @see <a
|
||||
* href="http://www.petrikainulainen.net/programming/jooq/using-jooq-with-spring-configuration/">http://www.petrikainulainen.net/programming/jooq/using-jooq-with-spring-configuration/</a>
|
||||
* @see <a
|
||||
* href="https://gist.github.com/azell/5655888">https://gist.github.com/azell/5655888</a>
|
||||
*/
|
||||
public class ExceptionTranslator extends DefaultExecuteListener {
|
||||
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -2450323227461061152L;
|
||||
|
||||
@Override
|
||||
public void exception(ExecuteContext ctx) {
|
||||
|
||||
// [#4391] Translate only SQLExceptions
|
||||
if (ctx.sqlException() != null) {
|
||||
SQLDialect dialect = ctx.dialect();
|
||||
SQLExceptionTranslator translator = (dialect != null)
|
||||
? new SQLErrorCodeSQLExceptionTranslator(dialect.thirdParty().springDbName())
|
||||
: new SQLStateSQLExceptionTranslator();
|
||||
|
||||
ctx.exception(translator.translate("jOOQ", ctx.sql(), ctx.sqlException()));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user