Skip to content

Commit e96e01d

Browse files
committed
Introduce ErrorProne, fix compiler warnings
Signed-off-by: Stefano Cordio <stefano.cordio@gmail.com>
1 parent a7f090a commit e96e01d

File tree

196 files changed

+716
-712
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

196 files changed

+716
-712
lines changed

.mvn/jvm.config

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
2+
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
3+
--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
4+
--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
5+
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
6+
--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
7+
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
8+
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
9+
--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
10+
--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED

pom.xml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,61 @@
181181
<release>${java.version}</release>
182182
<compilerArgs>
183183
<compilerArg>-parameters</compilerArg>
184+
<!-- https://errorprone.info/docs/installation#maven -->
185+
<compilerArg>-XDcompilePolicy=simple</compilerArg>
186+
<compilerArg>--should-stop=ifError=FLOW</compilerArg>
187+
<compilerArg>
188+
-Xplugin:ErrorProne
189+
-Xep:AlmostJavadoc:OFF
190+
-Xep:BadInstanceof:OFF <!-- FIXME gh-4839 -->
191+
-Xep:ByteBufferBackingArray:OFF
192+
-Xep:ClassCanBeStatic:OFF
193+
-Xep:CollectionUndefinedEquality:OFF
194+
-Xep:DefaultCharset:OFF
195+
-Xep:DirectInvocationOnMock:OFF
196+
-Xep:DoNotCallSuggester:OFF
197+
-Xep:EmptyCatch:OFF
198+
-Xep:EqualsGetClass:OFF
199+
-Xep:Finally:OFF
200+
-Xep:FutureReturnValueIgnored:OFF
201+
-Xep:HidingField:OFF
202+
-Xep:ImmutableEnumChecker:OFF
203+
-Xep:InlineMeSuggester:OFF
204+
-Xep:InputStreamSlowMultibyteRead:OFF
205+
-Xep:JavaTimeDefaultTimeZone:OFF
206+
-Xep:JavaUtilDate:OFF
207+
-Xep:JdkObsolete:OFF
208+
-Xep:MissingSummary:OFF
209+
-Xep:MixedMutabilityReturnType:OFF
210+
-Xep:MutablePublicArray:OFF
211+
-Xep:NonAtomicVolatileUpdate:OFF
212+
-Xep:RedundantControlFlow:OFF
213+
-Xep:ReferenceEquality:OFF
214+
-Xep:StaticAssignmentInConstructor:OFF
215+
-Xep:StaticAssignmentOfThrowable:OFF
216+
-Xep:StaticMockMember:OFF
217+
-Xep:StreamResourceLeak:OFF
218+
-Xep:StringCaseLocaleUsage:OFF
219+
-Xep:StringSplitter:OFF
220+
-Xep:SynchronizeOnNonFinalField:OFF
221+
-Xep:ThreadLocalUsage:OFF
222+
-Xep:ThreadPriorityCheck:OFF
223+
-Xep:TypeParameterUnusedInFormals:OFF
224+
-Xep:UndefinedEquals:OFF
225+
-Xep:UnnecessaryStringBuilder:OFF
226+
-Xep:UnusedMethod:OFF
227+
-Xep:UnusedVariable:OFF
228+
-Xep:WaitNotInLoop:OFF
229+
</compilerArg>
184230
</compilerArgs>
231+
<failOnWarning>true</failOnWarning>
232+
<annotationProcessorPaths>
233+
<path>
234+
<groupId>com.google.errorprone</groupId>
235+
<artifactId>error_prone_core</artifactId>
236+
<version>2.38.0</version>
237+
</path>
238+
</annotationProcessorPaths>
185239
</configuration>
186240
</plugin>
187241
<plugin>

spring-batch-core/src/main/java/org/springframework/batch/core/Entity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public boolean equals(Object other) {
146146
@Override
147147
public int hashCode() {
148148
if (id == null) {
149-
return super.hashCode();
149+
return System.identityHashCode(this);
150150
}
151151
return 39 + 87 * id.hashCode();
152152
}

spring-batch-core/src/main/java/org/springframework/batch/core/JobExecution.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.io.IOException;
2020
import java.io.ObjectInputStream;
21+
import java.time.Clock;
2122
import java.time.LocalDateTime;
2223
import java.util.ArrayList;
2324
import java.util.Collection;
@@ -203,7 +204,7 @@ public void upgradeStatus(BatchStatus status) {
203204
/**
204205
* Convenience getter for the {@code id} of the enclosing job. Useful for DAO
205206
* implementations.
206-
* @return the @{code id} of the enclosing job.
207+
* @return the {@code id} of the enclosing job.
207208
*/
208209
public Long getJobId() {
209210
if (jobInstance != null) {

spring-batch-core/src/main/java/org/springframework/batch/core/JobParameters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ public String toString() {
373373
for (Map.Entry<String, JobParameter<?>> entry : this.parameters.entrySet()) {
374374
parameters.add(String.format("'%s':'%s'", entry.getKey(), entry.getValue()));
375375
}
376-
return new StringBuilder("{").append(String.join(",", parameters)).append("}").toString();
376+
return "{" + String.join(",", parameters) + "}";
377377
}
378378

379379
}

spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ public boolean equals(Object obj) {
492492
return super.equals(obj);
493493
}
494494

495-
return stepName.equals(other.getStepName()) && (jobExecutionId.equals(other.getJobExecutionId()))
495+
return stepName.equals(other.getStepName()) && jobExecutionId.equals(other.getJobExecutionId())
496496
&& getId().equals(other.getId());
497497
}
498498

spring-batch-core/src/main/java/org/springframework/batch/core/aot/CoreRuntimeHints.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
130130
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
131131

132132
// reflection hints
133-
hints.reflection().registerType(Types.class, MemberCategory.DECLARED_FIELDS);
133+
hints.reflection().registerType(Types.class, MemberCategory.ACCESS_DECLARED_FIELDS);
134134
hints.reflection().registerType(JobContext.class, MemberCategory.INVOKE_PUBLIC_METHODS);
135135
hints.reflection().registerType(StepContext.class, MemberCategory.INVOKE_PUBLIC_METHODS);
136136
hints.reflection().registerType(JobParameter.class, MemberCategory.values());

spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/BatchObservabilityBeanPostProcessor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
5050
try {
5151
if (bean instanceof AbstractJob || bean instanceof AbstractStep) {
5252
ObservationRegistry observationRegistry = this.beanFactory.getBean(ObservationRegistry.class);
53-
if (bean instanceof AbstractJob) {
54-
((AbstractJob) bean).setObservationRegistry(observationRegistry);
53+
if (bean instanceof AbstractJob job) {
54+
job.setObservationRegistry(observationRegistry);
5555
}
56-
if (bean instanceof AbstractStep) {
57-
((AbstractStep) bean).setObservationRegistry(observationRegistry);
56+
if (bean instanceof AbstractStep step) {
57+
step.setObservationRegistry(observationRegistry);
5858
}
5959
}
6060
}

spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/BatchRegistrar.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
4949

5050
private static final Log LOGGER = LogFactory.getLog(BatchRegistrar.class);
5151

52-
private static final String MISSING_ANNOTATION_ERROR_MESSAGE = "EnableBatchProcessing is not present on importing class '%s' as expected";
53-
5452
private static final String JOB_REPOSITORY = "jobRepository";
5553

5654
private static final String JOB_OPERATOR = "jobOperator";
@@ -79,7 +77,8 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
7977
private void validateState(AnnotationMetadata importingClassMetadata) {
8078
if (!importingClassMetadata.isAnnotated(EnableBatchProcessing.class.getName())) {
8179
String className = importingClassMetadata.getClassName();
82-
String errorMessage = String.format(MISSING_ANNOTATION_ERROR_MESSAGE, className);
80+
String errorMessage = "EnableBatchProcessing is not present on importing class '%s' as expected"
81+
.formatted(className);
8382
throw new IllegalStateException(errorMessage);
8483
}
8584
}
@@ -238,6 +237,7 @@ private void registerJobOperator(BeanDefinitionRegistry registry, EnableBatchPro
238237
if (registry.containsBeanDefinition(taskExecutorRef)) {
239238
beanDefinitionBuilder.addPropertyReference("taskExecutor", taskExecutorRef);
240239
}
240+
@SuppressWarnings("removal")
241241
String jobParametersConverterRef = batchAnnotation.jobParametersConverterRef();
242242
if (registry.containsBeanDefinition(jobParametersConverterRef)) {
243243
beanDefinitionBuilder.addPropertyReference("jobParametersConverter", jobParametersConverterRef);

spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/AbstractApplicationContextFactory.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
2121
import java.util.Collection;
22+
import java.util.Collections;
2223
import java.util.List;
2324

2425
import org.apache.commons.logging.Log;
@@ -196,13 +197,11 @@ protected void prepareContext(ConfigurableApplicationContext parent, Configurabl
196197
protected void prepareBeanFactory(ConfigurableListableBeanFactory parent,
197198
ConfigurableListableBeanFactory beanFactory) {
198199
if (copyConfiguration && parent != null) {
199-
List<BeanPostProcessor> parentPostProcessors = new ArrayList<>();
200-
List<BeanPostProcessor> childPostProcessors = new ArrayList<>();
201-
202-
childPostProcessors.addAll(beanFactory instanceof AbstractBeanFactory
203-
? ((AbstractBeanFactory) beanFactory).getBeanPostProcessors() : new ArrayList<>());
204-
parentPostProcessors.addAll(parent instanceof AbstractBeanFactory
205-
? ((AbstractBeanFactory) parent).getBeanPostProcessors() : new ArrayList<>());
200+
List<BeanPostProcessor> childPostProcessors = new ArrayList<>(
201+
beanFactory instanceof AbstractBeanFactory factory ? factory.getBeanPostProcessors()
202+
: new ArrayList<>());
203+
List<BeanPostProcessor> parentPostProcessors = new ArrayList<>(parent instanceof AbstractBeanFactory factory
204+
? factory.getBeanPostProcessors() : new ArrayList<>());
206205

207206
try {
208207
Class<?> applicationContextAwareProcessorClass = ClassUtils.forName(
@@ -237,8 +236,8 @@ protected void prepareBeanFactory(ConfigurableListableBeanFactory parent,
237236

238237
beanFactory.copyConfigurationFrom(parent);
239238

240-
List<BeanPostProcessor> beanPostProcessors = beanFactory instanceof AbstractBeanFactory
241-
? ((AbstractBeanFactory) beanFactory).getBeanPostProcessors() : new ArrayList<>();
239+
List<BeanPostProcessor> beanPostProcessors = beanFactory instanceof AbstractBeanFactory abstractBeanFactory
240+
? abstractBeanFactory.getBeanPostProcessors() : new ArrayList<>();
242241

243242
beanPostProcessors.clear();
244243
beanPostProcessors.addAll(aggregatedPostProcessors);

0 commit comments

Comments
 (0)