Throw IllegalStateException from afterPropertiesSet
Consistently use Assert.state in the afterPropertiesSet() methods to throw IllegalStateException instead of IllegalArgumentException when some properties are missing and/or invalid. Resolves #2244
This commit is contained in:
committed by
Mahmoud Ben Hassine
parent
b9d6e26d61
commit
fc0ec01ff8
@@ -278,7 +278,7 @@ public class DefaultJobLoader implements JobLoader, InitializingBean {
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
Assert.notNull(jobRegistry, "Job registry could not be null.");
|
||||
Assert.state(jobRegistry != null, "Job registry could not be null.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public class JobRegistryBeanPostProcessor
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(jobRegistry, "JobRegistry must not be null");
|
||||
Assert.state(jobRegistry != null, "JobRegistry must not be null");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.springframework.batch.core.job.flow.support.state.StepState;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Convenience factory for {@link SimpleFlow} instances for use in the XML namespace. It
|
||||
@@ -94,7 +95,7 @@ public class SimpleFlowFactoryBean implements FactoryBean<SimpleFlow>, Initializ
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.hasText(name, "The flow must have a name");
|
||||
Assert.state(StringUtils.hasText(name), "The flow must have a name");
|
||||
|
||||
if (flowType == null) {
|
||||
flowType = SimpleFlow.class;
|
||||
|
||||
@@ -153,7 +153,7 @@ public class JobExplorerFactoryBean extends AbstractJobExplorerFactoryBean imple
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
|
||||
Assert.notNull(dataSource, "DataSource must not be null.");
|
||||
Assert.state(dataSource != null, "DataSource must not be null.");
|
||||
|
||||
if (jdbcOperations == null) {
|
||||
jdbcOperations = new JdbcTemplate(dataSource);
|
||||
|
||||
@@ -128,7 +128,7 @@ public abstract class AbstractJob implements Job, StepLocator, BeanNameAware, In
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(jobRepository, "JobRepository must be set");
|
||||
Assert.state(jobRepository != null, "JobRepository must be set");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2011-2018 the original author or authors.
|
||||
* Copyright 2011-2022 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.
|
||||
@@ -60,8 +60,8 @@ public class CompositeJobParametersValidator implements JobParametersValidator,
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(validators, "The 'validators' may not be null");
|
||||
Assert.notEmpty(validators, "The 'validators' may not be empty");
|
||||
Assert.state(validators != null, "The 'validators' may not be null");
|
||||
Assert.state(!validators.isEmpty(), "The 'validators' may not be empty");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -110,10 +110,10 @@ public class SimpleJobOperator implements JobOperator, InitializingBean {
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(jobLauncher, "JobLauncher must be provided");
|
||||
Assert.notNull(jobRegistry, "JobLocator must be provided");
|
||||
Assert.notNull(jobExplorer, "JobExplorer must be provided");
|
||||
Assert.notNull(jobRepository, "JobRepository must be provided");
|
||||
Assert.state(jobLauncher != null, "JobLauncher must be provided");
|
||||
Assert.state(jobRegistry != null, "JobLocator must be provided");
|
||||
Assert.state(jobExplorer != null, "JobExplorer must be provided");
|
||||
Assert.state(jobRepository != null, "JobRepository must be provided");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
* Copyright 2002-2022 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.
|
||||
@@ -196,7 +196,7 @@ public abstract class AbstractListenerFactoryBean<T> implements FactoryBean<Obje
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(delegate, "Delegate must not be null");
|
||||
Assert.state(delegate != null, "Delegate must not be null");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2021 the original author or authors.
|
||||
* Copyright 2006-2022 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.
|
||||
@@ -25,6 +25,7 @@ import org.springframework.batch.support.PatternMatcher;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
* This class can be used to automatically promote items from the {@link Step}
|
||||
@@ -77,10 +78,10 @@ public class ExecutionContextPromotionListener implements StepExecutionListener,
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(this.keys, "The 'keys' property must be provided");
|
||||
Assert.notEmpty(this.keys, "The 'keys' property must not be empty");
|
||||
Assert.notNull(this.statuses, "The 'statuses' property must be provided");
|
||||
Assert.notEmpty(this.statuses, "The 'statuses' property must not be empty");
|
||||
Assert.state(this.keys != null, "The 'keys' property must be provided");
|
||||
Assert.state(!ObjectUtils.isEmpty(this.keys), "The 'keys' property must not be empty");
|
||||
Assert.state(this.statuses != null, "The 'statuses' property must be provided");
|
||||
Assert.state(!ObjectUtils.isEmpty(this.statuses), "The 'statuses' property must not be empty");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2021 the original author or authors.
|
||||
* Copyright 2006-2022 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.
|
||||
@@ -78,8 +78,8 @@ public class PartitionStep extends AbstractStep {
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(stepExecutionSplitter, "StepExecutionSplitter must be provided");
|
||||
Assert.notNull(partitionHandler, "PartitionHandler must be provided");
|
||||
Assert.state(stepExecutionSplitter != null, "StepExecutionSplitter must be provided");
|
||||
Assert.state(partitionHandler != null, "PartitionHandler must be provided");
|
||||
super.afterPropertiesSet();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2013 the original author or authors.
|
||||
* Copyright 2006-2022 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.
|
||||
@@ -79,7 +79,7 @@ public abstract class AbstractJdbcBatchMetadataDao implements InitializingBean {
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(jdbcTemplate, "JdbcOperations is required");
|
||||
Assert.state(jdbcTemplate != null, "JdbcOperations is required");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ public class JdbcJobExecutionDao extends AbstractJdbcBatchMetadataDao implements
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
super.afterPropertiesSet();
|
||||
Assert.notNull(jobExecutionIncrementer, "The jobExecutionIncrementer must not be null.");
|
||||
Assert.state(jobExecutionIncrementer != null, "The jobExecutionIncrementer must not be null.");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -311,7 +311,7 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
super.afterPropertiesSet();
|
||||
Assert.notNull(jobInstanceIncrementer, "jobInstanceIncrementer is required");
|
||||
Assert.state(jobInstanceIncrementer != null, "jobInstanceIncrementer is required");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -129,7 +129,7 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao implement
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
super.afterPropertiesSet();
|
||||
Assert.notNull(stepExecutionIncrementer, "StepExecutionIncrementer cannot be null.");
|
||||
Assert.state(stepExecutionIncrementer != null, "StepExecutionIncrementer cannot be null.");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -178,7 +178,7 @@ public abstract class AbstractJobRepositoryFactoryBean implements FactoryBean<Jo
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(transactionManager, "TransactionManager must not be null.");
|
||||
Assert.state(transactionManager != null, "TransactionManager must not be null.");
|
||||
if (this.transactionAttributeSource == null) {
|
||||
Properties transactionAttributes = new Properties();
|
||||
transactionAttributes.setProperty("create*",
|
||||
|
||||
@@ -199,7 +199,7 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean i
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
|
||||
Assert.notNull(dataSource, "DataSource must not be null.");
|
||||
Assert.state(dataSource != null, "DataSource must not be null.");
|
||||
|
||||
if (jdbcOperations == null) {
|
||||
jdbcOperations = new JdbcTemplate(dataSource);
|
||||
@@ -226,12 +226,12 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean i
|
||||
serializer = defaultSerializer;
|
||||
}
|
||||
|
||||
Assert.isTrue(incrementerFactory.isSupportedIncrementerType(databaseType),
|
||||
Assert.state(incrementerFactory.isSupportedIncrementerType(databaseType),
|
||||
() -> "'" + databaseType + "' is an unsupported database type. The supported database types are "
|
||||
+ StringUtils.arrayToCommaDelimitedString(incrementerFactory.getSupportedIncrementerTypes()));
|
||||
|
||||
if (clobType != null) {
|
||||
Assert.isTrue(isValidTypes(clobType), "lobType must be a value from the java.sql.Types class");
|
||||
Assert.state(isValidTypes(clobType), "lobType must be a value from the java.sql.Types class");
|
||||
}
|
||||
|
||||
if (this.conversionService == null) {
|
||||
|
||||
@@ -99,7 +99,7 @@ public class SimpleChunkProcessor<I, O> implements ChunkProcessor<I>, Initializi
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(itemWriter, "ItemWriter must be set");
|
||||
Assert.state(itemWriter != null, "ItemWriter must be set");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006-2019 the original author or authors.
|
||||
* Copyright 2006-2022 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.
|
||||
@@ -49,7 +49,7 @@ public class CallableTaskletAdapter implements Tasklet, InitializingBean {
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(callable, "A Callable is required");
|
||||
Assert.state(callable != null, "A Callable is required");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -37,6 +37,8 @@ import org.springframework.core.task.SimpleAsyncTaskExecutor;
|
||||
import org.springframework.core.task.TaskExecutor;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* {@link Tasklet} that executes a system command.
|
||||
@@ -190,14 +192,13 @@ public class SystemCommandTasklet implements StepExecutionListener, StoppableTas
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(commandRunner, "CommandRunner must be set");
|
||||
Assert.notNull(cmdArray, "'cmdArray' property value must not be null");
|
||||
Assert.notEmpty(cmdArray, "'cmdArray' property value is required with at least 1 element");
|
||||
Assert.noNullElements(cmdArray, "'cmdArray' property value must not contain be null elements");
|
||||
Assert.hasLength(cmdArray[0], "'cmdArray' property value is required with at least 1 element");
|
||||
Assert.notNull(systemProcessExitCodeMapper, "SystemProcessExitCodeMapper must be set");
|
||||
Assert.isTrue(timeout > 0, "timeout value must be greater than zero");
|
||||
Assert.notNull(taskExecutor, "taskExecutor is required");
|
||||
Assert.state(commandRunner != null, "CommandRunner must be set");
|
||||
Assert.state(cmdArray != null, "'cmdArray' property value must not be null");
|
||||
Assert.state(!ObjectUtils.isEmpty(cmdArray), "'cmdArray' property value is required with at least 1 element");
|
||||
Assert.state(StringUtils.hasText(cmdArray[0]), "'cmdArray' property value is required with at least 1 element");
|
||||
Assert.state(systemProcessExitCodeMapper != null, "SystemProcessExitCodeMapper must be set");
|
||||
Assert.state(timeout > 0, "timeout value must be greater than zero");
|
||||
Assert.state(taskExecutor != null, "taskExecutor is required");
|
||||
stoppable = jobExplorer != null;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class JobRegistryBeanPostProcessorTests {
|
||||
|
||||
@Test
|
||||
void testInitializationFails() {
|
||||
Exception exception = assertThrows(IllegalArgumentException.class, processor::afterPropertiesSet);
|
||||
Exception exception = assertThrows(IllegalStateException.class, processor::afterPropertiesSet);
|
||||
assertTrue(exception.getMessage().contains("JobRegistry"));
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ class JobExplorerFactoryBeanTests {
|
||||
void testMissingDataSource() {
|
||||
|
||||
factory.setDataSource(null);
|
||||
Exception exception = assertThrows(IllegalArgumentException.class, factory::afterPropertiesSet);
|
||||
Exception exception = assertThrows(IllegalStateException.class, factory::afterPropertiesSet);
|
||||
String message = exception.getMessage();
|
||||
assertTrue(message.contains("DataSource"), "Wrong message: " + message);
|
||||
|
||||
|
||||
@@ -41,13 +41,13 @@ class CompositeJobParametersValidatorTests {
|
||||
@Test
|
||||
void testValidatorsCanNotBeNull() {
|
||||
compositeJobParametersValidator.setValidators(null);
|
||||
assertThrows(IllegalArgumentException.class, compositeJobParametersValidator::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, compositeJobParametersValidator::afterPropertiesSet);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidatorsCanNotBeEmpty() {
|
||||
compositeJobParametersValidator.setValidators(new ArrayList<>());
|
||||
assertThrows(IllegalArgumentException.class, compositeJobParametersValidator::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, compositeJobParametersValidator::afterPropertiesSet);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -120,7 +120,7 @@ class ExtendedAbstractJobTests {
|
||||
@Test
|
||||
void testAfterPropertiesSet() {
|
||||
job.setJobRepository(null);
|
||||
Exception exception = assertThrows(IllegalArgumentException.class, () -> job.afterPropertiesSet());
|
||||
Exception exception = assertThrows(IllegalStateException.class, () -> job.afterPropertiesSet());
|
||||
assertTrue(exception.getMessage().contains("JobRepository"));
|
||||
}
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ class SimpleJobOperatorTests {
|
||||
@Test
|
||||
void testMandatoryProperties() {
|
||||
jobOperator = new SimpleJobOperator();
|
||||
assertThrows(IllegalArgumentException.class, jobOperator::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, jobOperator::afterPropertiesSet);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -247,7 +247,7 @@ class ExecutionContextPromotionListenerTests {
|
||||
void keysMustBeSet() {
|
||||
ExecutionContextPromotionListener listener = new ExecutionContextPromotionListener();
|
||||
// didn't set the keys, same as listener.setKeys(null);
|
||||
assertThrows(IllegalArgumentException.class, listener::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, listener::afterPropertiesSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ class JobRepositoryFactoryBeanTests {
|
||||
void testMissingDataSource() {
|
||||
|
||||
factory.setDataSource(null);
|
||||
Exception exception = assertThrows(IllegalArgumentException.class, factory::afterPropertiesSet);
|
||||
Exception exception = assertThrows(IllegalStateException.class, factory::afterPropertiesSet);
|
||||
String message = exception.getMessage();
|
||||
assertTrue(message.contains("DataSource"), "Wrong message: " + message);
|
||||
|
||||
@@ -255,7 +255,7 @@ class JobRepositoryFactoryBeanTests {
|
||||
when(incrementerFactory.isSupportedIncrementerType("mockDb")).thenReturn(true);
|
||||
when(incrementerFactory.getSupportedIncrementerTypes()).thenReturn(new String[0]);
|
||||
|
||||
Exception exception = assertThrows(IllegalArgumentException.class, () -> factory.afterPropertiesSet());
|
||||
Exception exception = assertThrows(IllegalStateException.class, () -> factory.afterPropertiesSet());
|
||||
String message = exception.getMessage();
|
||||
assertTrue(message.contains("TransactionManager"), "Wrong message: " + message);
|
||||
|
||||
@@ -268,7 +268,7 @@ class JobRepositoryFactoryBeanTests {
|
||||
when(incrementerFactory.isSupportedIncrementerType("foo")).thenReturn(false);
|
||||
when(incrementerFactory.getSupportedIncrementerTypes()).thenReturn(new String[0]);
|
||||
|
||||
Exception exception = assertThrows(IllegalArgumentException.class, () -> factory.afterPropertiesSet());
|
||||
Exception exception = assertThrows(IllegalStateException.class, () -> factory.afterPropertiesSet());
|
||||
String message = exception.getMessage();
|
||||
assertTrue(message.contains("foo"), "Wrong message: " + message);
|
||||
|
||||
@@ -363,7 +363,7 @@ class JobRepositoryFactoryBeanTests {
|
||||
@Test
|
||||
void testInvalidCustomLobType() {
|
||||
factory.setClobType(Integer.MAX_VALUE);
|
||||
assertThrows(IllegalArgumentException.class, this::testCreateRepository);
|
||||
assertThrows(IllegalStateException.class, this::testCreateRepository);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -40,7 +40,7 @@ class CallableTaskletAdapterTests {
|
||||
|
||||
@Test
|
||||
void testAfterPropertiesSet() {
|
||||
assertThrows(IllegalArgumentException.class, adapter::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, adapter::afterPropertiesSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ class SystemCommandTaskletIntegrationTests {
|
||||
@Test
|
||||
public void testCommandRunnerNotSet() throws Exception {
|
||||
tasklet.setCommandRunner(null);
|
||||
assertThrows(IllegalArgumentException.class, tasklet::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, tasklet::afterPropertiesSet);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -196,10 +196,10 @@ class SystemCommandTaskletIntegrationTests {
|
||||
@Test
|
||||
void testCommandNotSet() {
|
||||
tasklet.setCommand(null);
|
||||
assertThrows(IllegalArgumentException.class, tasklet::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, tasklet::afterPropertiesSet);
|
||||
|
||||
tasklet.setCommand("");
|
||||
assertThrows(IllegalArgumentException.class, tasklet::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, tasklet::afterPropertiesSet);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -209,7 +209,7 @@ class SystemCommandTaskletIntegrationTests {
|
||||
void testTimeoutNotSet() {
|
||||
tasklet.setCommand("not-empty placeholder");
|
||||
tasklet.setTimeout(0);
|
||||
assertThrows(IllegalArgumentException.class, tasklet::afterPropertiesSet);
|
||||
assertThrows(IllegalStateException.class, tasklet::afterPropertiesSet);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -76,7 +76,7 @@ public class DataSourceInitializer implements InitializingBean {
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(dataSource, "A DataSource is required");
|
||||
Assert.state(dataSource != null, "A DataSource is required");
|
||||
initialize();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user