Skip to content

Commit 24704fc

Browse files
committed
DATACMNS-1097 - Polishing.
Updated Sonargraph architecture description. Polished imports in domain package to avoid unnecessary imports (mostly due to Javadoc references). Removed manually declared constructor in ExampleMatcherAccessor in favor of Lombok's @requiredargsconstructor. Removed deprecations in type information subsystem. Moved to different way of class loading to avoid null pointer warnings in ReflectionUtils.
1 parent 1fc2572 commit 24704fc

File tree

7 files changed

+65
-56
lines changed

7 files changed

+65
-56
lines changed

Spring Data Commons.sonargraph

+54-30
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
<element type="IncludeTypePattern" name="**.core.support.**"/>
5858
</element>
5959
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
60+
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Support" type="AllowedDependency"/>
6061
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Core" type="AllowedDependency"/>
6162
<dependency toName="Project|spring-data-commons::Layer|Repositories::Subsystem|Query" type="AllowedDependency"/>
6263
</element>
@@ -84,6 +85,7 @@
8485
<element type="TypeFilter" name="Assignment">
8586
<element type="IncludeTypePattern" name="**.cdi.**"/>
8687
</element>
88+
<dependency toName="External|External::Subsystem|JRE" type="AllowedDependency"/>
8789
<dependency toName="External|External::Subsystem|JavaEE" type="AllowedDependency"/>
8890
<dependency toName="External|External::Subsystem|Logging" type="AllowedDependency"/>
8991
<dependency toName="External|External::Subsystem|Reflection" type="AllowedDependency"/>
@@ -142,80 +144,92 @@
142144
<element type="TypeFilter" name="Assignment">
143145
<element type="IncludeTypePattern" name="**.context.**"/>
144146
</element>
147+
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Support" type="AllowedDependency"/>
145148
<dependency toName="Project|spring-data-commons::Layer|Mapping::Subsystem|Model" type="AllowedDependency"/>
146149
</element>
147150
<dependency toName="Project|spring-data-commons::Layer|Core" type="AllowedDependency"/>
148151
</element>
149-
<element type="Layer" name="Core">
152+
<element type="Layer" name="Application">
150153
<element type="TypeFilter" name="Assignment"/>
151-
<element type="Subsystem" name="Types">
154+
<element type="Subsystem" name="Domain">
152155
<element type="TypeFilter" name="Assignment">
153-
<element type="WeakTypePattern" name="**.util.**"/>
156+
<element type="WeakTypePattern" name="**.domain.**"/>
154157
</element>
155-
<stereotype name="Public"/>
156158
</element>
157-
<element type="Subsystem" name="Annotations">
159+
<element type="Subsystem" name="JAXB">
158160
<element type="TypeFilter" name="Assignment">
159-
<element type="IncludeTypePattern" name="**.annotation.**"/>
161+
<element type="IncludeTypePattern" name="**.domain.jaxb.**"/>
160162
</element>
161-
<stereotype name="Public"/>
163+
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
164+
<dependency toName="External|External::Subsystem|JAXB" type="AllowedDependency"/>
165+
<dependency toName="External|External::Subsystem|Spring" type="AllowedDependency"/>
162166
</element>
163-
<element type="Subsystem" name="Geo">
167+
<element type="Subsystem" name="Cross store">
164168
<element type="TypeFilter" name="Assignment">
165-
<element type="IncludeTypePattern" name="**.geo.**"/>
169+
<element type="IncludeTypePattern" name="**.crossstore.**"/>
166170
</element>
167171
</element>
168-
<element type="Subsystem" name="Authentication">
172+
<element type="Subsystem" name="Geo">
169173
<element type="TypeFilter" name="Assignment">
170-
<element type="IncludeTypePattern" name="**.authentication.**"/>
174+
<element type="IncludeTypePattern" name="**.geo.**"/>
171175
</element>
176+
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
172177
</element>
173178
<element type="Subsystem" name="History">
174179
<element type="TypeFilter" name="Assignment">
175180
<element type="WeakTypePattern" name="**.history.**"/>
176181
</element>
182+
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
177183
</element>
178184
<element type="Subsystem" name="Support">
179185
<element type="TypeFilter" name="Assignment">
180186
<element type="WeakTypePattern" name="**.support.**"/>
181187
</element>
188+
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
182189
</element>
183-
<element type="Subsystem" name="Transactions">
190+
<dependency toName="Project|spring-data-commons::Layer|Core" type="AllowedDependency"/>
191+
</element>
192+
<element type="Layer" name="Core">
193+
<element type="TypeFilter" name="Assignment"/>
194+
<element type="Subsystem" name="Types">
184195
<element type="TypeFilter" name="Assignment">
185-
<element type="IncludeTypePattern" name="**.transaction.**"/>
196+
<element type="WeakTypePattern" name="**.util.**Information"/>
197+
<element type="IncludeTypePattern" name="**.util.TypeDiscoverer**"/>
186198
</element>
199+
<stereotype name="Public"/>
200+
<dependency toName="Project|spring-data-commons::Layer|Core::Subsystem|Util" type="AllowedDependency"/>
187201
</element>
188-
<element type="Subsystem" name="Configuration">
202+
<element type="Subsystem" name="Util">
189203
<element type="TypeFilter" name="Assignment">
190-
<element type="WeakTypePattern" name="**.config.**"/>
204+
<element type="WeakTypePattern" name="**.util.**"/>
191205
</element>
192206
</element>
193-
<element type="Subsystem" name="Projection">
207+
<element type="Subsystem" name="Annotations">
194208
<element type="TypeFilter" name="Assignment">
195-
<element type="IncludeTypePattern" name="**.projection.**"/>
209+
<element type="IncludeTypePattern" name="**.annotation.**"/>
196210
</element>
211+
<stereotype name="Public"/>
197212
</element>
198-
<dependency toName="Project|spring-data-commons::Layer|Application" type="AllowedDependency"/>
199-
</element>
200-
<element type="Layer" name="Application">
201-
<element type="TypeFilter" name="Assignment"/>
202-
<element type="Subsystem" name="Domain">
213+
<element type="Subsystem" name="Authentication">
203214
<element type="TypeFilter" name="Assignment">
204-
<element type="WeakTypePattern" name="**.domain.**"/>
215+
<element type="IncludeTypePattern" name="**.authentication.**"/>
205216
</element>
206217
</element>
207-
<element type="Subsystem" name="JAXB">
218+
<element type="Subsystem" name="Transactions">
208219
<element type="TypeFilter" name="Assignment">
209-
<element type="IncludeTypePattern" name="**.domain.jaxb.**"/>
220+
<element type="IncludeTypePattern" name="**.transaction.**"/>
210221
</element>
211-
<dependency toName="Project|spring-data-commons::Layer|Application::Subsystem|Domain" type="AllowedDependency"/>
212-
<dependency toName="External|External::Subsystem|JAXB" type="AllowedDependency"/>
213-
<dependency toName="External|External::Subsystem|Spring" type="AllowedDependency"/>
214222
</element>
215-
<element type="Subsystem" name="Cross store">
223+
<element type="Subsystem" name="Configuration">
216224
<element type="TypeFilter" name="Assignment">
217-
<element type="IncludeTypePattern" name="**.crossstore.**"/>
225+
<element type="WeakTypePattern" name="**.config.**"/>
226+
</element>
227+
</element>
228+
<element type="Subsystem" name="Projection">
229+
<element type="TypeFilter" name="Assignment">
230+
<element type="IncludeTypePattern" name="**.projection.**"/>
218231
</element>
232+
<dependency toName="Project|spring-data-commons::Layer|Core::Subsystem|Util" type="AllowedDependency"/>
219233
</element>
220234
</element>
221235
</architecture>
@@ -348,6 +362,16 @@
348362
<element type="IncludeTypePattern" name="org.threeten.bp.**"/>
349363
</element>
350364
</element>
365+
<element type="Subsystem" name="Vavr">
366+
<element type="TypeFilter" name="Assignment">
367+
<element type="IncludeTypePattern" name="io.vavr.**"/>
368+
</element>
369+
</element>
370+
<element type="Subsystem" name="Lombok">
371+
<element type="TypeFilter" name="Assignment">
372+
<element type="IncludeTypePattern" name="lombok.**"/>
373+
</element>
374+
</element>
351375
</architecture>
352376
</scope>
353377
<scope type="Global" name="Global">

src/main/java/org/springframework/data/domain/DomainEvents.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@
2020
import java.lang.annotation.RetentionPolicy;
2121
import java.lang.annotation.Target;
2222

23-
import org.springframework.context.ApplicationEventPublisher;
24-
2523
/**
2624
* {@link DomainEvents} can be used on methods of aggregate roots managed by Spring Data repositories to publish the
2725
* events returned by that method as Spring application events.
2826
*
2927
* @author Oliver Gierke
30-
* @see ApplicationEventPublisher
28+
* @see org.springframework.context.ApplicationEventPublisher
3129
* @see AfterDomainEventPublication
3230
* @since 1.13
3331
* @soundtrack Benny Greb - Soulfood (Moving Parts Live)

src/main/java/org/springframework/data/domain/Page.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
import java.util.function.Function;
1919

20-
import org.springframework.core.convert.converter.Converter;
21-
2220
/**
2321
* A page is a sublist of a list of objects. It allows gain information about the position of it in the containing
2422
* entire list.
@@ -43,10 +41,10 @@ public interface Page<T> extends Slice<T> {
4341
long getTotalElements();
4442

4543
/**
46-
* Returns a new {@link Page} with the content of the current one mapped by the given {@link Converter}.
44+
* Returns a new {@link Page} with the content of the current one mapped by the given {@link Function}.
4745
*
4846
* @param converter must not be {@literal null}.
49-
* @return a new {@link Page} with the content of the current one mapped by the given {@link Converter}.
47+
* @return a new {@link Page} with the content of the current one mapped by the given {@link Function}.
5048
* @since 1.10
5149
*/
5250
<U> Page<U> map(Function<? super T, ? extends U> converter);

src/main/java/org/springframework/data/support/ExampleMatcherAccessor.java

+5-15
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@
1515
*/
1616
package org.springframework.data.support;
1717

18+
import lombok.NonNull;
19+
import lombok.RequiredArgsConstructor;
20+
1821
import java.util.Collection;
1922

2023
import org.springframework.data.domain.ExampleMatcher;
2124
import org.springframework.data.domain.ExampleMatcher.PropertySpecifier;
22-
import org.springframework.data.util.StringMatcher;
23-
import org.springframework.util.Assert;
2425

2526
/**
2627
* Accessor for the {@link ExampleMatcher} to use in modules that support query by example (QBE) querying.
@@ -31,21 +32,10 @@
3132
* @author Jens Schauder
3233
* @since 1.12
3334
*/
35+
@RequiredArgsConstructor
3436
public class ExampleMatcherAccessor {
3537

36-
private final ExampleMatcher matcher;
37-
38-
/**
39-
* Creates a new {@link ExampleMatcherAccessor} for the given {@link ExampleMatcher}.
40-
*
41-
* @param matcher must not be {@literal null}.
42-
*/
43-
public ExampleMatcherAccessor(ExampleMatcher matcher) {
44-
45-
Assert.notNull(matcher, "ExampleMatcher must not be null!");
46-
47-
this.matcher = matcher;
48-
}
38+
private final @NonNull ExampleMatcher matcher;
4939

5040
/**
5141
* Returns the {@link PropertySpecifier}s of the underlying {@link ExampleMatcher}.

src/main/java/org/springframework/data/util/ClassTypeInformation.java

-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ private static Map<TypeVariable<?>, Type> getTypeVariableMap(Class<?> type) {
117117
return getTypeVariableMap(type, new HashSet<>());
118118
}
119119

120-
@SuppressWarnings("deprecation")
121120
private static Map<TypeVariable<?>, Type> getTypeVariableMap(Class<?> type, Collection<Type> visited) {
122121

123122
if (visited.contains(type)) {

src/main/java/org/springframework/data/util/ReflectionUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class ReflectionUtils {
6060
public static <T> T createInstanceIfPresent(String classname, T defaultInstance) {
6161

6262
try {
63-
Class<?> type = ClassUtils.getDefaultClassLoader().loadClass(classname);
63+
Class<?> type = ClassUtils.forName(classname, ClassUtils.getDefaultClassLoader());
6464
return (T) BeanUtils.instantiateClass(type);
6565
} catch (Exception e) {
6666
return defaultInstance;

src/main/java/org/springframework/data/util/TypeDiscoverer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ protected Map<TypeVariable<?>, Type> getTypeVariableMap() {
115115
* @param fieldType must not be {@literal null}.
116116
* @return
117117
*/
118-
@SuppressWarnings({ "rawtypes", "unchecked", "deprecation" })
118+
@SuppressWarnings({ "rawtypes", "unchecked" })
119119
protected TypeInformation<?> createInfo(Type fieldType) {
120120

121121
Assert.notNull(fieldType, "Field type must not be null!");
@@ -180,7 +180,7 @@ protected TypeInformation<?> createInfo(Type fieldType) {
180180
* @param type
181181
* @return
182182
*/
183-
@SuppressWarnings({ "unchecked", "rawtypes", "deprecation" })
183+
@SuppressWarnings({ "unchecked", "rawtypes" })
184184
protected Class<S> resolveType(Type type) {
185185

186186
Map<TypeVariable, Type> map = new HashMap<>();

0 commit comments

Comments
 (0)