Skip to content

Commit a4614ca

Browse files
committed
DATAJPA-1064 - Cleanups! Cleanups everywhere!
1 parent d60c0cb commit a4614ca

29 files changed

+148
-181
lines changed

src/main/java/org/springframework/data/jpa/domain/AbstractAuditable.java

+29-45
Original file line numberDiff line numberDiff line change
@@ -37,110 +37,94 @@
3737
* @param <PK> the type of the auditing type's idenifier
3838
*/
3939
@MappedSuperclass
40-
public abstract class AbstractAuditable<U, PK extends Serializable> extends AbstractPersistable<PK> implements
41-
Auditable<U, PK, LocalDateTime> {
40+
public abstract class AbstractAuditable<U, PK extends Serializable> extends AbstractPersistable<PK>
41+
implements Auditable<U, PK, LocalDateTime> {
4242

4343
private static final long serialVersionUID = 141481953116476081L;
4444

45-
@ManyToOne
45+
@ManyToOne //
4646
private U createdBy;
4747

48-
@Temporal(TemporalType.TIMESTAMP)
48+
@Temporal(TemporalType.TIMESTAMP) //
4949
private Date createdDate;
5050

51-
@ManyToOne
51+
@ManyToOne //
5252
private U lastModifiedBy;
5353

54-
@Temporal(TemporalType.TIMESTAMP)
54+
@Temporal(TemporalType.TIMESTAMP) //
5555
private Date lastModifiedDate;
5656

5757
/*
5858
* (non-Javadoc)
59-
*
6059
* @see org.springframework.data.domain.Auditable#getCreatedBy()
6160
*/
61+
@Override
6262
public Optional<U> getCreatedBy() {
63-
6463
return Optional.ofNullable(createdBy);
6564
}
6665

6766
/*
6867
* (non-Javadoc)
69-
*
70-
* @see
71-
* org.springframework.data.domain.Auditable#setCreatedBy(java.lang.Object)
68+
* @see org.springframework.data.domain.Auditable#setCreatedBy(java.lang.Object)
7269
*/
73-
public void setCreatedBy(final Optional<? extends U> createdBy) {
74-
75-
// TODO: this null guard should really not be required since we expect an optional here
76-
this.createdBy = createdBy != null ? createdBy.orElse(null) : null;
70+
@Override
71+
public void setCreatedBy(U createdBy) {
72+
this.createdBy = createdBy;
7773
}
7874

7975
/*
8076
* (non-Javadoc)
81-
*
8277
* @see org.springframework.data.domain.Auditable#getCreatedDate()
8378
*/
8479
@Override
8580
public Optional<LocalDateTime> getCreatedDate() {
86-
87-
return null == createdDate ? Optional.empty() : Optional.of(LocalDateTime.ofInstant(createdDate.toInstant(), ZoneId.systemDefault()));
81+
return null == createdDate ? Optional.empty()
82+
: Optional.of(LocalDateTime.ofInstant(createdDate.toInstant(), ZoneId.systemDefault()));
8883
}
8984

9085
/*
9186
* (non-Javadoc)
92-
*
93-
* @see
94-
* org.springframework.data.domain.Auditable#setCreatedDate(org.joda.time
95-
* .DateTime)
87+
* @see org.springframework.data.domain.Auditable#setCreatedDate(java.time.temporal.TemporalAccessor)
9688
*/
97-
public void setCreatedDate(Optional<? extends LocalDateTime> createdDate) {
98-
99-
this.createdDate = createdDate.map(d -> Date.from(d.atZone(ZoneId.systemDefault()).toInstant())).orElse(null);
89+
@Override
90+
public void setCreatedDate(LocalDateTime createdDate) {
91+
this.createdDate = Date.from(createdDate.atZone(ZoneId.systemDefault()).toInstant());
10092
}
10193

10294
/*
10395
* (non-Javadoc)
104-
*
10596
* @see org.springframework.data.domain.Auditable#getLastModifiedBy()
10697
*/
98+
@Override
10799
public Optional<U> getLastModifiedBy() {
108-
109100
return Optional.ofNullable(lastModifiedBy);
110101
}
111102

112103
/*
113104
* (non-Javadoc)
114-
*
115-
* @see
116-
* org.springframework.data.domain.Auditable#setLastModifiedBy(java.lang
117-
* .Object)
105+
* @see org.springframework.data.domain.Auditable#setLastModifiedBy(java.lang.Object)
118106
*/
119-
public void setLastModifiedBy(final Optional<? extends U> lastModifiedBy) {
120-
121-
// TODO: this null guard should really not be required since we expect an optional here
122-
this.lastModifiedBy = lastModifiedBy != null ? lastModifiedBy.orElse(null) : null;
107+
@Override
108+
public void setLastModifiedBy(U lastModifiedBy) {
109+
this.lastModifiedBy = lastModifiedBy;
123110
}
124111

125112
/*
126113
* (non-Javadoc)
127-
*
128114
* @see org.springframework.data.domain.Auditable#getLastModifiedDate()
129115
*/
116+
@Override
130117
public Optional<LocalDateTime> getLastModifiedDate() {
131-
132-
return null == lastModifiedDate ? Optional.empty() : Optional.of(LocalDateTime.ofInstant(lastModifiedDate.toInstant(), ZoneId.systemDefault()));
118+
return null == lastModifiedDate ? Optional.empty()
119+
: Optional.of(LocalDateTime.ofInstant(lastModifiedDate.toInstant(), ZoneId.systemDefault()));
133120
}
134121

135122
/*
136123
* (non-Javadoc)
137-
*
138-
* @see
139-
* org.springframework.data.domain.Auditable#setLastModifiedDate(org.joda
140-
* .time.DateTime)
124+
* @see org.springframework.data.domain.Auditable#setLastModifiedDate(java.time.temporal.TemporalAccessor)
141125
*/
142-
public void setLastModifiedDate(Optional<? extends LocalDateTime> lastModifiedDate) {
143-
144-
this.lastModifiedDate = lastModifiedDate.map(d -> Date.from(d.atZone(ZoneId.systemDefault()).toInstant())).orElse(null);
126+
@Override
127+
public void setLastModifiedDate(LocalDateTime lastModifiedDate) {
128+
this.lastModifiedDate = Date.from(lastModifiedDate.atZone(ZoneId.systemDefault()).toInstant());
145129
}
146130
}

src/main/java/org/springframework/data/jpa/domain/JpaSort.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,12 @@ private JpaSort(Direction direction, List<Path<?, ?>> paths) {
8080
this(Collections.<Order> emptyList(), direction, paths);
8181
}
8282

83+
@SuppressWarnings("deprecation")
8384
private JpaSort(List<Order> orders, Direction direction, List<Path<?, ?>> paths) {
8485
super(combine(orders, direction, paths));
8586
}
8687

88+
@SuppressWarnings("deprecation")
8789
private JpaSort(List<Order> orders) {
8890
super(orders);
8991
}
@@ -183,7 +185,6 @@ private static List<Order> combine(List<Order> orders, Direction direction, List
183185
* @param attribute must not be {@literal null}.
184186
* @return
185187
*/
186-
@SuppressWarnings("unchecked")
187188
public static <A extends Attribute<T, S>, T, S> Path<T, S> path(A attribute) {
188189

189190
Assert.notNull(attribute, "Attribute must not be null!");
@@ -196,7 +197,6 @@ public static <A extends Attribute<T, S>, T, S> Path<T, S> path(A attribute) {
196197
* @param attribute must not be {@literal null}.
197198
* @return
198199
*/
199-
@SuppressWarnings("unchecked")
200200
public static <P extends PluralAttribute<T, ?, S>, T, S> Path<T, S> path(P attribute) {
201201

202202
Assert.notNull(attribute, "Attribute must not be null!");
@@ -390,7 +390,7 @@ public Sort withUnsafe(String... properties) {
390390
orders.add(new JpaOrder(getDirection(), property, getNullHandling(), isIgnoreCase(), this.unsafe));
391391
}
392392

393-
return new Sort(orders);
393+
return Sort.by(orders);
394394
}
395395

396396
/*

src/main/java/org/springframework/data/jpa/domain/support/AuditingEntityListener.java

+6
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ public void setAuditingHandler(ObjectFactory<AuditingHandler> auditingHandler) {
8080
*/
8181
@PrePersist
8282
public void touchForCreate(Object target) {
83+
84+
Assert.notNull(target, "Entity must not be null!");
85+
8386
if (handler != null) {
8487
handler.getObject().markCreated(target);
8588
}
@@ -93,6 +96,9 @@ public void touchForCreate(Object target) {
9396
*/
9497
@PreUpdate
9598
public void touchForUpdate(Object target) {
99+
100+
Assert.notNull(target, "Entity must not be null!");
101+
96102
if (handler != null) {
97103
handler.getObject().markModified(target);
98104
}

src/main/java/org/springframework/data/jpa/mapping/JpaMetamodelMappingContext.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package org.springframework.data.jpa.mapping;
1717

18-
import java.beans.PropertyDescriptor;
19-
import java.lang.reflect.Field;
2018
import java.util.Set;
2119

2220
import javax.persistence.metamodel.ManagedType;
@@ -71,8 +69,8 @@ protected <T> JpaPersistentEntityImpl<?> createPersistentEntity(TypeInformation<
7169
* @see org.springframework.data.mapping.context.AbstractMappingContext#createPersistentProperty(java.lang.reflect.Field, java.beans.PropertyDescriptor, org.springframework.data.mapping.model.MutablePersistentEntity, org.springframework.data.mapping.model.SimpleTypeHolder)
7270
*/
7371
@Override
74-
protected JpaPersistentProperty createPersistentProperty(Property property,
75-
JpaPersistentEntityImpl<?> owner, SimpleTypeHolder simpleTypeHolder) {
72+
protected JpaPersistentProperty createPersistentProperty(Property property, JpaPersistentEntityImpl<?> owner,
73+
SimpleTypeHolder simpleTypeHolder) {
7674

7775
Metamodel metamodel = getMetamodelFor(owner.getType());
7876
return new JpaPersistentPropertyImpl(metamodel, property, owner, simpleTypeHolder);

src/main/java/org/springframework/data/jpa/provider/HibernateUtils.java

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
* @since 1.10.2
3131
* @soundtrack Benny Greb - Soulfood (Live, https://www.youtube.com/watch?v=9_ErMa_CtSw)
3232
*/
33-
@SuppressWarnings({ "deprecation", "rawtypes" })
3433
public abstract class HibernateUtils {
3534

3635
private static final List<String> TYPES = Arrays.asList("org.hibernate.jpa.HibernateQuery",

src/main/java/org/springframework/data/jpa/repository/EntityGraph.java

-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import java.lang.annotation.RetentionPolicy;
2222
import java.lang.annotation.Target;
2323

24-
import javax.persistence.NamedAttributeNode;
25-
2624
import org.springframework.data.jpa.repository.query.JpaQueryMethod;
2725

2826
/**

src/main/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtension.java

-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ protected String getModulePrefix() {
9999
* @see org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport#getIdentifyingAnnotations()
100100
*/
101101
@Override
102-
@SuppressWarnings("unchecked")
103102
protected Collection<Class<? extends Annotation>> getIdentifyingAnnotations() {
104103
return Arrays.asList(Entity.class, MappedSuperclass.class);
105104
}

src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java

+4-9
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
*/
1616
package org.springframework.data.jpa.repository.query;
1717

18-
import static org.springframework.data.jpa.domain.AbstractPersistable_.*;
1918
import static org.springframework.data.jpa.repository.query.QueryUtils.*;
2019
import static org.springframework.data.repository.query.parser.Part.Type.*;
2120

2221
import java.util.ArrayList;
2322
import java.util.Collection;
2423
import java.util.Iterator;
2524
import java.util.List;
25+
import java.util.stream.Collectors;
2626

2727
import javax.persistence.criteria.CriteriaBuilder;
2828
import javax.persistence.criteria.CriteriaQuery;
@@ -180,14 +180,9 @@ protected CriteriaQuery<? extends Object> complete(Predicate predicate, Sort sor
180180

181181
} else {
182182

183-
List<Selection<?>> selections = new ArrayList<Selection<?>>();
184-
185-
for (SingularAttribute<?, ?> attribute : root.getModel().getIdClassAttributes()) {
186-
selections.add(root.get((SingularAttribute) attribute).alias(attribute.getName()));
187-
}
188-
189-
selections.add(root.get((SingularAttribute) id).alias(id.getName()));
190-
query = query.multiselect(selections);
183+
query = query.multiselect(root.getModel().getIdClassAttributes().stream()//
184+
.map(it -> (Selection<?>) root.get((SingularAttribute) it).alias(it.getName()))
185+
.collect(Collectors.toList()));
191186
}
192187

193188
} else {

src/main/java/org/springframework/data/jpa/repository/support/JpaMetamodelEntityInformation.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public Optional<ID> getId(T entity) {
147147
BeanWrapper entityWrapper = new DirectFieldAccessFallbackBeanWrapper(entity);
148148

149149
if (idMetadata.hasSimpleId()) {
150-
return Optional.ofNullable((ID)entityWrapper.getPropertyValue(idMetadata.getSimpleIdAttribute().getName()));
150+
return Optional.ofNullable((ID) entityWrapper.getPropertyValue(idMetadata.getSimpleIdAttribute().getName()));
151151
}
152152

153153
BeanWrapper idWrapper = new IdentifierDerivingDirectFieldAccessFallbackBeanWrapper(idMetadata.getType(), metamodel);
@@ -163,7 +163,7 @@ public Optional<ID> getId(T entity) {
163163
idWrapper.setPropertyValue(attribute.getName(), propertyValue);
164164
}
165165

166-
return partialIdValueFound ? Optional.ofNullable((ID)idWrapper.getWrappedInstance()) : Optional.empty();
166+
return partialIdValueFound ? Optional.ofNullable((ID) idWrapper.getWrappedInstance()) : Optional.empty();
167167
}
168168

169169
/*
@@ -211,9 +211,9 @@ public Iterable<String> getIdAttributeNames() {
211211
* @see org.springframework.data.jpa.repository.support.JpaEntityInformation#getCompositeIdAttributeValue(java.io.Serializable, java.lang.String)
212212
*/
213213
public Object getCompositeIdAttributeValue(Serializable id, String idAttribute) {
214-
214+
215215
Assert.isTrue(hasCompositeId(), "Model must have a composite Id!");
216-
216+
217217
return new DirectFieldAccessFallbackBeanWrapper(id).getPropertyValue(idAttribute);
218218
}
219219

@@ -319,9 +319,9 @@ public IdentifierDerivingDirectFieldAccessFallbackBeanWrapper(Class<?> type, Met
319319
/**
320320
* In addition to the functionality described in {@link BeanWrapperImpl} it is checked whether we have a nested
321321
* entity that is part of the id key. If this is the case, we need to derive the identifier of the nested entity.
322-
*
323322
*/
324323
@Override
324+
@SuppressWarnings("unchecked")
325325
public void setPropertyValue(String propertyName, Object value) {
326326

327327
if (!isIdentifierDerivationNecessary(value)) {
@@ -330,7 +330,7 @@ public void setPropertyValue(String propertyName, Object value) {
330330
}
331331

332332
// Derive the identifier from the nested entity that is part of the composite key.
333-
@SuppressWarnings({ "rawtypes", "unchecked" })
333+
@SuppressWarnings("rawtypes")
334334
JpaMetamodelEntityInformation nestedEntityInformation = new JpaMetamodelEntityInformation(value.getClass(),
335335
this.metamodel);
336336

src/test/java/org/springframework/data/jpa/domain/sample/AuditorAwareStub.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@
2929
*/
3030
public class AuditorAwareStub implements AuditorAware<AuditableUser> {
3131

32-
@SuppressWarnings("unused")
32+
@SuppressWarnings("unused") //
3333
private final AuditableUserRepository repository;
34+
3435
private AuditableUser auditor;
3536

3637
public AuditorAwareStub(AuditableUserRepository repository) {
@@ -40,17 +41,15 @@ public AuditorAwareStub(AuditableUserRepository repository) {
4041
}
4142

4243
public void setAuditor(AuditableUser auditor) {
43-
4444
this.auditor = auditor;
4545
}
4646

4747
/*
4848
* (non-Javadoc)
49-
*
5049
* @see org.springframework.data.domain.AuditorAware#getCurrentAuditor()
5150
*/
51+
@Override
5252
public Optional<AuditableUser> getCurrentAuditor() {
53-
5453
return Optional.ofNullable(auditor);
5554
}
5655
}

src/test/java/org/springframework/data/jpa/domain/sample/Site.java

+9-14
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
*/
1616
package org.springframework.data.jpa.domain.sample;
1717

18+
import lombok.AllArgsConstructor;
19+
import lombok.Data;
20+
import lombok.NoArgsConstructor;
21+
1822
import javax.persistence.Entity;
1923
import javax.persistence.GeneratedValue;
2024
import javax.persistence.Id;
@@ -25,23 +29,14 @@
2529
* @see <a href="download.oracle.com/otn-pub/jcp/persistence-2_1-fr-eval-spec/JavaPersistence.pdf">Final JPA 2.1
2630
* Specification 2.4.1.3 Derived Identities Example 2</a>
2731
*/
32+
@Data
2833
@Entity
2934
@Table
35+
@AllArgsConstructor
36+
@NoArgsConstructor
3037
public class Site implements java.io.Serializable {
3138

32-
@Id @GeneratedValue Integer id;
33-
34-
public Site() {}
39+
private static final long serialVersionUID = 1L;
3540

36-
public Site(Integer id) {
37-
this.id = id;
38-
}
39-
40-
public Integer getId() {
41-
return id;
42-
}
43-
44-
public void setId(Integer id) {
45-
this.id = id;
46-
}
41+
@Id @GeneratedValue Integer id;
4742
}

0 commit comments

Comments
 (0)