Skip to content

Commit db9e2d4

Browse files
Minor refactoring and JavaDoc
1 parent c4b4991 commit db9e2d4

8 files changed

Lines changed: 52 additions & 26 deletions

File tree

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/EclipseStoreStorage.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343
import software.xdev.spring.data.eclipse.store.repository.support.copier.id.IdManager;
4444
import software.xdev.spring.data.eclipse.store.repository.support.copier.id.IdManagerProvider;
4545
import software.xdev.spring.data.eclipse.store.repository.support.copier.id.IdSetter;
46+
import software.xdev.spring.data.eclipse.store.repository.support.copier.version.EntityVersionIncrementer;
4647
import software.xdev.spring.data.eclipse.store.repository.support.copier.version.VersionManager;
4748
import software.xdev.spring.data.eclipse.store.repository.support.copier.version.VersionManagerProvider;
48-
import software.xdev.spring.data.eclipse.store.repository.support.copier.version.VersionSetter;
4949
import software.xdev.spring.data.eclipse.store.repository.support.reposyncer.RepositorySynchronizer;
5050
import software.xdev.spring.data.eclipse.store.repository.support.reposyncer.SimpleRepositorySynchronizer;
5151

@@ -64,7 +64,7 @@ public class EclipseStoreStorage
6464
* "Why are the VersionManagers seperated from the repositories?" - Because there might be entities for which there
6565
* are no repositories, but they still have Versions.
6666
*/
67-
private final Map<Class<?>, VersionManager<?, ?>> versionManagers = new ConcurrentHashMap<>();
67+
private final Map<Class<?>, VersionManager<?>> versionManagers = new ConcurrentHashMap<>();
6868
private final EclipseStoreStorageFoundationProvider foundationProvider;
6969
private EntitySetCollector entitySetCollector;
7070
private PersistableChecker persistenceChecker;
@@ -356,14 +356,14 @@ public <T, ID> IdManager<T, ID> ensureIdManager(final Class<T> classPossiblyWith
356356

357357
@Override
358358
@SuppressWarnings("unchecked")
359-
public <T, VERSION> VersionManager<T, VERSION> ensureVersionManager(final Class<T> possiblyVersionedClass)
359+
public <T> VersionManager<T> ensureVersionManager(final Class<T> possiblyVersionedClass)
360360
{
361-
return (VersionManager<T, VERSION>)this.versionManagers.computeIfAbsent(
361+
return (VersionManager<T>)this.versionManagers.computeIfAbsent(
362362
possiblyVersionedClass,
363363
clazz ->
364-
new VersionManager<T, VERSION>(
364+
new VersionManager<>(
365365
possiblyVersionedClass,
366-
VersionSetter.createVersionSetter(possiblyVersionedClass)
366+
EntityVersionIncrementer.createVersionSetter(possiblyVersionedClass)
367367
)
368368
);
369369
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionSetter.java renamed to spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/EntityVersionIncrementer.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,29 @@
2424

2525

2626
/**
27-
* A IdSetter <b>must be unique</b> in one storage for one entity-class. It creates Ids and therefore must know all
28-
* existing entities of one class.
27+
* Increments the version of a given entity. One VersionSetter is created for every entity type.
2928
*/
30-
public interface VersionSetter<T>
29+
public interface EntityVersionIncrementer<T>
3130
{
32-
static <T> VersionSetter<T> createVersionSetter(final Class<T> classWithId)
31+
/**
32+
* Creates a new version setter for one specific entity type. If the entity type has no version, a
33+
* {@link NotIncrementingEntityVersionIncrementer} is created, which does nothing.
34+
*/
35+
static <T> EntityVersionIncrementer<T> createVersionSetter(final Class<T> classWithId)
3336
{
3437
Objects.requireNonNull(classWithId);
3538
final Optional<Field> versionField = AnnotatedFieldFinder.findVersionField(classWithId);
3639
if(versionField.isEmpty())
3740
{
38-
return new NotSettingVersionSetter<>();
41+
return new NotIncrementingEntityVersionIncrementer<>();
3942
}
40-
return new SimpleVersionSetter<>(
43+
return new SimpleEntityVersionIncrementer<>(
4144
versionField.get(),
4245
VersionIncrementer.createVersionIncrementer(versionField.get()));
4346
}
4447

4548
/**
46-
* This method makes sure, that an version is set for the given object. If it is already set (not null), then the
49+
* This method makes sure, that a version is set for the given object. If it is already set (not null), then the
4750
* version is incremented. If it is not set, a new one will be generated and set.
4851
*/
4952
void incrementVersion(T objectToSetVersionIn);

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/NotSettingVersionSetter.java renamed to spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/NotIncrementingEntityVersionIncrementer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package software.xdev.spring.data.eclipse.store.repository.support.copier.version;
1717

18-
public class NotSettingVersionSetter<T> implements VersionSetter<T>
18+
public class NotIncrementingEntityVersionIncrementer<T> implements EntityVersionIncrementer<T>
1919
{
2020
@Override
2121
public void incrementVersion(final T objectToSetVersionIn)

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/SimpleVersionSetter.java renamed to spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/SimpleEntityVersionIncrementer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@
2424
import software.xdev.spring.data.eclipse.store.repository.support.copier.version.incrementer.VersionIncrementer;
2525

2626

27-
public class SimpleVersionSetter<T, VERSION> implements VersionSetter<T>
27+
public class SimpleEntityVersionIncrementer<T, VERSION> implements EntityVersionIncrementer<T>
2828
{
2929
private final VersionIncrementer<VERSION> versionIncrementer;
3030
private final Field versionField;
3131

32-
public SimpleVersionSetter(final Field versionField, final VersionIncrementer<VERSION> versionIncrementer)
32+
public SimpleEntityVersionIncrementer(
33+
final Field versionField,
34+
final VersionIncrementer<VERSION> versionIncrementer)
3335
{
3436
this.versionField = versionField;
3537
this.versionIncrementer = versionIncrementer;

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionManager.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,40 @@
2626
import software.xdev.spring.data.eclipse.store.repository.support.AnnotatedFieldFinder;
2727

2828

29-
public class VersionManager<T, VERSION>
29+
/**
30+
* Manages the versions of one type of entity
31+
*
32+
* @param <T> type of entity
33+
*/
34+
public class VersionManager<T>
3035
{
3136
private final Optional<Field> versionField;
32-
private final VersionSetter<T> versionSetter;
37+
private final EntityVersionIncrementer<T> entityVersionIncrementer;
3338

3439
public VersionManager(
35-
final Class<T> domainClass,
36-
final VersionSetter<T> versionSetter
40+
final Class<T> entityClass,
41+
final EntityVersionIncrementer<T> entityVersionIncrementer
3742
)
3843
{
39-
this.versionField = AnnotatedFieldFinder.findVersionField(domainClass);
40-
this.versionSetter = versionSetter;
44+
this.versionField = AnnotatedFieldFinder.findVersionField(entityClass);
45+
this.entityVersionIncrementer = entityVersionIncrementer;
4146
}
4247

43-
public void incrementVersion(final T workingCopy)
48+
/**
49+
* Increments the version of given entity
50+
*
51+
* @param entity to increment the version in
52+
*/
53+
public void incrementVersion(final T entity)
4454
{
45-
this.versionSetter.incrementVersion(workingCopy);
55+
this.entityVersionIncrementer.incrementVersion(entity);
4656
}
4757

58+
/**
59+
* Checks if the two entities are valid for merge. If they have the same version, everything is ok. But if the
60+
* workingCopy-version is null or different from the original-version, an Exception is thrown.
61+
*/
62+
@SuppressWarnings("PMD.AvoidRethrowingException")
4863
public void ensureSameVersion(final T workingCopy, final T original)
4964
{
5065
if(this.versionField.isPresent() && original != null)

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionManagerProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717

1818
public interface VersionManagerProvider
1919
{
20-
<T, VERSION> VersionManager<T, VERSION> ensureVersionManager(final Class<T> domainClass);
20+
<T> VersionManager<T> ensureVersionManager(final Class<T> domainClass);
2121
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/incrementer/VersionIncrementer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@
2222
import software.xdev.spring.data.eclipse.store.exceptions.IdGeneratorNotSupportedException;
2323

2424

25+
/**
26+
* Increments given version to a new version
27+
*/
2528
public interface VersionIncrementer<VERSION>
2629
{
30+
/**
31+
* Increments the original value and returns it.
32+
*/
2733
VERSION increment(final VERSION original);
2834

2935
@SuppressWarnings({"java:S1452", "TypeParameterExplicitlyExtendsObject"})

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/working/RecursiveWorkingCopier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public <E> E getOrCreateObjectForDatastore(
151151
this.idManagerProvider.ensureIdManager((Class<E>)workingCopy.getClass());
152152
idManager.ensureId(workingCopy);
153153

154-
final VersionManager<E, Object> versionManager =
154+
final VersionManager<E> versionManager =
155155
this.versionManagerProvider.ensureVersionManager((Class<E>)workingCopy.getClass());
156156

157157
final E originalObject = this.registry.getOriginalObjectFromWorkingCopy(workingCopy);

0 commit comments

Comments
 (0)