From aa732d275238a346e76744b42340b4264c0fb1fb Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 15 Dec 2016 15:41:14 +0100 Subject: [PATCH] #66 - Adapt API in EnversRepositoryFactoryBean. Related tickets: DATACMNS-891, DATACMNS-960. --- .../support/EnversRevisionRepository.java | 17 +++------- .../EnversRevisionRepositoryFactoryBean.java | 34 +++++++++++++------ .../data/envers/sample/CountryRepository.java | 5 ++- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepository.java b/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepository.java index 9c4b2fa..8cde690 100644 --- a/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepository.java +++ b/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ package org.springframework.data.envers.repository.support; import java.io.Serializable; -import org.springframework.data.history.Revision; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.history.RevisionRepository; @@ -28,17 +27,11 @@ import org.springframework.data.repository.history.RevisionRepository; * * @author Oliver Gierke * @author Michael Igler + * @deprecated since 1.1, in favor of simply extending {@link RevisionRepository}. */ +@Deprecated @NoRepositoryBean -public interface EnversRevisionRepository> extends - RevisionRepository, JpaRepository { +public interface EnversRevisionRepository> + extends RevisionRepository, JpaRepository { - /** - * Returns the entity with the given ID in the given revision number. - * - * @param id must not be {@literal null}. - * @param revisionNumber must not be {@literal null}. - * @return - */ - Revision findRevision(ID id, N revisionNumber); } diff --git a/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepositoryFactoryBean.java b/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepositoryFactoryBean.java index 2e73543..b5adfca 100755 --- a/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepositoryFactoryBean.java +++ b/src/main/java/org/springframework/data/envers/repository/support/EnversRevisionRepositoryFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,11 +37,20 @@ import org.springframework.data.repository.history.support.RevisionEntityInforma * @author Oliver Gierke * @author Michael Igler */ -public class EnversRevisionRepositoryFactoryBean extends - JpaRepositoryFactoryBean, Object, Serializable> { +public class EnversRevisionRepositoryFactoryBean, S, ID extends Serializable, N extends Number & Comparable> + extends JpaRepositoryFactoryBean { private Class revisionEntityClass; + /** + * Creates a new {@link EnversRevisionRepositoryFactoryBean} for the given repository interface. + * + * @param repositoryInterface must not be {@literal null}. + */ + public EnversRevisionRepositoryFactoryBean(Class repositoryInterface) { + super(repositoryInterface); + } + /** * Configures the revision entity class. Will default to {@link DefaultRevisionEntity}. * @@ -57,7 +66,7 @@ public class EnversRevisionRepositoryFactoryBean extends */ @Override protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) { - return new RevisionRepositoryFactory(entityManager, revisionEntityClass); + return new RevisionRepositoryFactory(entityManager, revisionEntityClass); } /** @@ -65,7 +74,8 @@ public class EnversRevisionRepositoryFactoryBean extends * * @author Oliver Gierke */ - private static class RevisionRepositoryFactory> extends JpaRepositoryFactory { + private static class RevisionRepositoryFactory> + extends JpaRepositoryFactory { private final RevisionEntityInformation revisionEntityInformation; private final EntityManager entityManager; @@ -81,8 +91,8 @@ public class EnversRevisionRepositoryFactoryBean extends super(entityManager); this.entityManager = entityManager; revisionEntityClass = revisionEntityClass == null ? DefaultRevisionEntity.class : revisionEntityClass; - this.revisionEntityInformation = DefaultRevisionEntity.class.equals(revisionEntityClass) ? new DefaultRevisionEntityInformation() - : new ReflectionRevisionEntityInformation(revisionEntityClass); + this.revisionEntityInformation = DefaultRevisionEntity.class.equals(revisionEntityClass) + ? new DefaultRevisionEntityInformation() : new ReflectionRevisionEntityInformation(revisionEntityClass); } /* @@ -93,9 +103,10 @@ public class EnversRevisionRepositoryFactoryBean extends @SuppressWarnings({ "unchecked", "rawtypes" }) protected EnversRevisionRepositoryImpl getTargetRepository(RepositoryInformation information) { - JpaEntityInformation entityInformation = (JpaEntityInformation) getEntityInformation(information.getDomainType()); + JpaEntityInformation entityInformation = (JpaEntityInformation) getEntityInformation( + information.getDomainType()); - return new EnversRevisionRepositoryImpl(entityInformation , revisionEntityInformation, entityManager); + return new EnversRevisionRepositoryImpl(entityInformation, revisionEntityInformation, entityManager); } /* @@ -112,6 +123,7 @@ public class EnversRevisionRepositoryFactoryBean extends * @see org.springframework.data.repository.core.support.RepositoryFactorySupport#getRepository(java.lang.Class, java.lang.Object) */ @Override + @SuppressWarnings("hiding") public T getRepository(Class repositoryInterface, Object customImplementation) { if (RevisionRepository.class.isAssignableFrom(repositoryInterface)) { @@ -123,8 +135,8 @@ public class EnversRevisionRepositoryFactoryBean extends if (!revisionEntityInformation.getRevisionNumberType().equals(revisionNumberType)) { throw new IllegalStateException(String.format( "Configured a revision entity type of %s with a revision type of %s " - + "but the repository interface is typed to a revision type of %s!", repositoryInterface, - revisionEntityInformation.getRevisionNumberType(), revisionNumberType)); + + "but the repository interface is typed to a revision type of %s!", + repositoryInterface, revisionEntityInformation.getRevisionNumberType(), revisionNumberType)); } } diff --git a/src/test/java/org/springframework/data/envers/sample/CountryRepository.java b/src/test/java/org/springframework/data/envers/sample/CountryRepository.java index aee5fe0..0429536 100755 --- a/src/test/java/org/springframework/data/envers/sample/CountryRepository.java +++ b/src/test/java/org/springframework/data/envers/sample/CountryRepository.java @@ -1,5 +1,5 @@ /* - * Copyright 2012 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,6 @@ */ package org.springframework.data.envers.sample; -import org.springframework.data.envers.repository.support.EnversRevisionRepository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.history.RevisionRepository; @@ -24,6 +23,6 @@ import org.springframework.data.repository.history.RevisionRepository; * * @author Oliver Gierke */ -public interface CountryRepository extends EnversRevisionRepository, JpaRepository { +public interface CountryRepository extends RevisionRepository, JpaRepository { }