From 83ddc78c116f9a64642fe08e7332661150b790b8 Mon Sep 17 00:00:00 2001 From: Andreas Meingast Date: Sat, 5 Dec 2015 18:00:29 +0100 Subject: [PATCH] Updated to Java 8 and Sesame 4 --- LICENSE | 2 +- pom.xml | 18 +++++----- ...micRepositoryManagerConnectionFactory.java | 18 +++++----- .../spring/RepositoryConnectionFactory.java | 12 ++++--- .../RepositoryManagerConnectionFactory.java | 14 ++------ .../org/openrdf/spring/SafeTransactional.java | 23 ------------ .../spring/SesameConnectionFactory.java | 2 +- .../java/org/openrdf/spring/BaseTest.java | 35 +++++++++---------- ...epositoryManagerConnectionFactoryTest.java | 4 +-- 9 files changed, 48 insertions(+), 80 deletions(-) delete mode 100644 src/main/java/org/openrdf/spring/SafeTransactional.java diff --git a/LICENSE b/LICENSE index cebe0a3..6a017b9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2013 Andreas Meingast +Copyright 2013 - 2015 Andreas Meingast Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pom.xml b/pom.xml index 6313bcc..9c2dc79 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ org.openrdf.sesame sesame-spring - 2.8.6 + 4.0.0 ${project.artifactId} @@ -104,15 +104,14 @@ test - + org.slf4j slf4j-log4j12 ${slf4j.version} - test - + junit junit @@ -139,20 +138,23 @@ ${language-level} ${language-level} ${encoding} + true + true + -Xlint:all,-serial - 4.2.1.RELEASE + 4.2.3.RELEASE ${project.version} 4.12 - 1.7.12 - 3.1 + 1.7.13 + 3.2.0 3.3 UTF-8 - 1.6 + 1.8 diff --git a/src/main/java/org/openrdf/spring/DynamicRepositoryManagerConnectionFactory.java b/src/main/java/org/openrdf/spring/DynamicRepositoryManagerConnectionFactory.java index e9cccb2..472cf5b 100644 --- a/src/main/java/org/openrdf/spring/DynamicRepositoryManagerConnectionFactory.java +++ b/src/main/java/org/openrdf/spring/DynamicRepositoryManagerConnectionFactory.java @@ -42,18 +42,18 @@ public class DynamicRepositoryManagerConnectionFactory implements SesameConnecti * identify the {@link org.openrdf.repository.Repository} to which connections will be opened is retrieved * from via a call-back from repositoryIdProvider. */ - public DynamicRepositoryManagerConnectionFactory(RepositoryManager repositoryManager, - RepositoryIdProvider repositoryIdProvider) { + DynamicRepositoryManagerConnectionFactory(RepositoryManager repositoryManager, + RepositoryIdProvider repositoryIdProvider) { this(repositoryManager, null, repositoryIdProvider); } - public DynamicRepositoryManagerConnectionFactory(RepositoryManager repositoryManager, - RepositoryImplConfig repositoryImplConfig, - RepositoryIdProvider repositoryIdProvider) { + DynamicRepositoryManagerConnectionFactory(RepositoryManager repositoryManager, + RepositoryImplConfig repositoryImplConfig, + RepositoryIdProvider repositoryIdProvider) { this.repositoryManager = repositoryManager; this.repositoryImplConfig = repositoryImplConfig; this.repositoryIdProvider = repositoryIdProvider; - this.repositoryConnectionFactoryMap = new HashMap(128); + this.repositoryConnectionFactoryMap = new HashMap<>(128); } /** @@ -124,9 +124,7 @@ private RepositoryConnectionFactory initializeRepositoryConnectionFactory(String } return new RepositoryConnectionFactory(repository); - } catch (RepositoryException e) { - throw new SesameTransactionException(e); - } catch (RepositoryConfigException e) { + } catch (RepositoryException | RepositoryConfigException e) { throw new SesameTransactionException(e); } } @@ -160,7 +158,7 @@ public String toString() { * Call-back helper to provide runtime-dynamic repository-ids for * {@link org.openrdf.spring.DynamicRepositoryManagerConnectionFactory}. */ - public static interface RepositoryIdProvider { + public interface RepositoryIdProvider { String getRepositoryId(); } } diff --git a/src/main/java/org/openrdf/spring/RepositoryConnectionFactory.java b/src/main/java/org/openrdf/spring/RepositoryConnectionFactory.java index 0665714..280b18b 100644 --- a/src/main/java/org/openrdf/spring/RepositoryConnectionFactory.java +++ b/src/main/java/org/openrdf/spring/RepositoryConnectionFactory.java @@ -3,6 +3,8 @@ import org.openrdf.repository.Repository; import org.openrdf.repository.RepositoryConnection; import org.openrdf.repository.RepositoryException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.transaction.TransactionSystemException; @@ -17,6 +19,8 @@ * @see SesameConnectionFactory */ public class RepositoryConnectionFactory implements DisposableBean, SesameConnectionFactory { + private static final Logger log = LoggerFactory.getLogger(RepositoryConnectionFactory.class); + private final ThreadLocal localTransactionObject; private final Repository repository; @@ -28,7 +32,7 @@ public class RepositoryConnectionFactory implements DisposableBean, SesameConnec */ public RepositoryConnectionFactory(Repository repository) { this.repository = repository; - localTransactionObject = new ThreadLocal(); + localTransactionObject = new ThreadLocal<>(); } /** @@ -46,7 +50,7 @@ public RepositoryConnection getConnection() { try { if (!repositoryConnection.isOpen()) { - throw new SesameTransactionException("Connection closed during transaction"); + throw new SesameTransactionException("Cannot get connection. Connection closed during transaction."); } if (!repositoryConnection.isActive()) { @@ -88,7 +92,7 @@ public void closeConnection() { try { repositoryConnection.close(); } catch (RepositoryException e) { - throw new SesameTransactionException(e); + log.error(e.getMessage(), e); } localTransactionObject.remove(); @@ -123,7 +127,7 @@ public void endTransaction(boolean rollback) throws RepositoryException { RepositoryConnection repositoryConnection = sesameTransactionObject.getRepositoryConnection(); if (!repositoryConnection.isOpen()) { - throw new SesameTransactionException("Connection closed during transaction"); + throw new SesameTransactionException("Cannot end transaction: Connection closed during transaction"); } if (repositoryConnection.isActive()) { diff --git a/src/main/java/org/openrdf/spring/RepositoryManagerConnectionFactory.java b/src/main/java/org/openrdf/spring/RepositoryManagerConnectionFactory.java index c18e1cb..7004129 100644 --- a/src/main/java/org/openrdf/spring/RepositoryManagerConnectionFactory.java +++ b/src/main/java/org/openrdf/spring/RepositoryManagerConnectionFactory.java @@ -17,20 +17,10 @@ public class RepositoryManagerConnectionFactory extends DynamicRepositoryManager * identify the {@link org.openrdf.repository.Repository} to which connections will be opened. */ public RepositoryManagerConnectionFactory(RepositoryManager repositoryManager, final String repositoryId) { - super(repositoryManager, new RepositoryIdProvider() { - @Override - public String getRepositoryId() { - return repositoryId; - } - }); + super(repositoryManager, () -> repositoryId); } public RepositoryManagerConnectionFactory(RepositoryManager repositoryManager, RepositoryImplConfig repositoryImplConfig, final String repositoryId) { - super(repositoryManager, repositoryImplConfig, new RepositoryIdProvider() { - @Override - public String getRepositoryId() { - return repositoryId; - } - }); + super(repositoryManager, repositoryImplConfig, () -> repositoryId); } } diff --git a/src/main/java/org/openrdf/spring/SafeTransactional.java b/src/main/java/org/openrdf/spring/SafeTransactional.java deleted file mode 100644 index 56f5273..0000000 --- a/src/main/java/org/openrdf/spring/SafeTransactional.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.openrdf.spring; - -import org.springframework.transaction.annotation.Transactional; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - *

{@link org.openrdf.spring.SafeTransactional} provides an annotation similar to - * {@link org.springframework.transaction.annotation.Transactional}.

- *

In contrast to {@link org.springframework.transaction.annotation.Transactional}, - * {@link org.openrdf.spring.SafeTransactional} will also trigger a transaction roll-back - * on checked exceptions.

- * - * @author ameingast@gmail.com - */ -@Target({ ElementType.METHOD, ElementType.TYPE }) -@Retention(RetentionPolicy.RUNTIME) -@Transactional(rollbackFor = Exception.class) -public @interface SafeTransactional { -} \ No newline at end of file diff --git a/src/main/java/org/openrdf/spring/SesameConnectionFactory.java b/src/main/java/org/openrdf/spring/SesameConnectionFactory.java index 8f5a349..c9438df 100644 --- a/src/main/java/org/openrdf/spring/SesameConnectionFactory.java +++ b/src/main/java/org/openrdf/spring/SesameConnectionFactory.java @@ -24,7 +24,7 @@ public interface SesameConnectionFactory extends DisposableBean { *
  • The connection was closed during the transaction
  • * */ - public RepositoryConnection getConnection(); + RepositoryConnection getConnection(); /** *

    Closes the connection and cleans up the (thread-local) state for the current transaction.

    diff --git a/src/test/java/org/openrdf/spring/BaseTest.java b/src/test/java/org/openrdf/spring/BaseTest.java index a84f7a7..88ca055 100644 --- a/src/test/java/org/openrdf/spring/BaseTest.java +++ b/src/test/java/org/openrdf/spring/BaseTest.java @@ -3,9 +3,9 @@ import org.junit.Assert; import org.junit.Ignore; import org.junit.runner.RunWith; -import org.openrdf.model.URI; +import org.openrdf.model.IRI; import org.openrdf.model.ValueFactory; -import org.openrdf.model.impl.ValueFactoryImpl; +import org.openrdf.model.impl.SimpleValueFactory; import org.openrdf.query.BindingSet; import org.openrdf.query.QueryLanguage; import org.openrdf.query.TupleQuery; @@ -26,26 +26,23 @@ public abstract class BaseTest { @Autowired protected SesameConnectionFactory repositoryManagerConnectionFactory; - protected static void assertDataPresent(SesameConnectionFactory sesameConnectionFactory) throws Exception { + static void assertDataPresent(SesameConnectionFactory sesameConnectionFactory) throws Exception { RepositoryConnection connection = sesameConnectionFactory.getConnection(); final TupleQuery tupleQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL, "SELECT ?s ?o WHERE { ?s ?o . }"); TupleQueryResult result = tupleQuery.evaluate(); - withTupleQueryResult(result, new TupleQueryResultHandler() { - @Override - public void handle(TupleQueryResult tupleQueryResult) throws Exception { - Assert.assertTrue(tupleQueryResult.hasNext()); + withTupleQueryResult(result, tupleQueryResult -> { + Assert.assertTrue(tupleQueryResult.hasNext()); - BindingSet bindingSet = tupleQueryResult.next(); + BindingSet bindingSet = tupleQueryResult.next(); - Assert.assertEquals("http://example.com/a", bindingSet.getBinding("s").getValue().stringValue()); - Assert.assertEquals("http://example.com/c", bindingSet.getBinding("o").getValue().stringValue()); - } + Assert.assertEquals("http://example.com/a", bindingSet.getBinding("s").getValue().stringValue()); + Assert.assertEquals("http://example.com/c", bindingSet.getBinding("o").getValue().stringValue()); }); } private static void withTupleQueryResult(TupleQueryResult tupleQueryResult, - TupleQueryResultHandler tupleQueryResultHandler) throws Exception { + TupleQueryResultHandler tupleQueryResultHandler) { try { tupleQueryResultHandler.handle(tupleQueryResult); } finally { @@ -53,17 +50,17 @@ private static void withTupleQueryResult(TupleQueryResult tupleQueryResult, } } - protected static void addData(SesameConnectionFactory sesameConnectionFactory) throws RepositoryException { - ValueFactory f = ValueFactoryImpl.getInstance(); - URI a = f.createURI("http://example.com/a"); - URI b = f.createURI("http://example.com/b"); - URI c = f.createURI("http://example.com/c"); + static void addData(SesameConnectionFactory sesameConnectionFactory) throws RepositoryException { + ValueFactory f = SimpleValueFactory.getInstance(); + IRI a = f.createIRI("http://example.com/a"); + IRI b = f.createIRI("http://example.com/b"); + IRI c = f.createIRI("http://example.com/c"); RepositoryConnection connection = sesameConnectionFactory.getConnection(); connection.add(a, b, c); } - static interface TupleQueryResultHandler { - void handle(TupleQueryResult tupleQueryResult) throws Exception; + interface TupleQueryResultHandler { + void handle(TupleQueryResult tupleQueryResult); } } diff --git a/src/test/java/org/openrdf/spring/RepositoryManagerConnectionFactoryTest.java b/src/test/java/org/openrdf/spring/RepositoryManagerConnectionFactoryTest.java index 57df14b..c4d48ac 100644 --- a/src/test/java/org/openrdf/spring/RepositoryManagerConnectionFactoryTest.java +++ b/src/test/java/org/openrdf/spring/RepositoryManagerConnectionFactoryTest.java @@ -43,11 +43,11 @@ public void testWrapTransactions() { } @Transactional - protected RepositoryConnection transactionScope() { + private RepositoryConnection transactionScope() { return repositoryManagerConnectionFactory.getConnection(); } - protected RepositoryConnection transactionScopeWithoutAnnotation() { + private RepositoryConnection transactionScopeWithoutAnnotation() { return repositoryManagerConnectionFactory.getConnection(); }