Skip to content

Commit

Permalink
refactor: Removed unused BatchUtils methods
Browse files Browse the repository at this point in the history
  • Loading branch information
jruaux committed Apr 27, 2024
1 parent 1b274e3 commit aaa3658
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public long getAsLong() {
List<RedisFuture<String>> typeFutures = keys.stream().map(commands::type).collect(Collectors.toList());
connection.flushCommands();
List<String> types = OperationExecutor.getAll(connection.getTimeout(), typeFutures);
Predicate<String> matchPredicate = BatchUtils.globPredicate(keyPattern);
Predicate<String> matchPredicate = matchPredicate();
Predicate<String> typePredicate = typePredicate();
int total = 0;
int matchCount = 0;
Expand Down Expand Up @@ -117,6 +117,13 @@ public long getAsLong() {
return UNKNOWN_SIZE;
}

private Predicate<String> matchPredicate() {
if (StringUtils.hasLength(keyPattern)) {
return BatchUtils.globPredicate(keyPattern);
}
return s -> true;
}

private Predicate<String> typePredicate() {
if (StringUtils.hasLength(keyType)) {
return keyType::equalsIgnoreCase;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.redis.spring.batch.common;

import java.util.Optional;

import org.hsqldb.jdbc.JDBCDataSource;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.Job;
Expand Down Expand Up @@ -33,6 +35,8 @@

public class JobFactory implements JobLauncher, InitializingBean {

private static final String STEP_ERROR = "Error executing step %s: %s";

private JobRepository jobRepository;
private PlatformTransactionManager platformTransactionManager;
private JobLauncher jobLauncher;
Expand Down Expand Up @@ -117,26 +121,33 @@ public JobExecution runAsync(Job job, JobParameters jobParameters) throws JobExe
}

public static JobExecution checkJobExecution(JobExecution jobExecution) throws JobExecutionException {
if (jobExecution.getExitStatus().getExitCode().equals(ExitStatus.FAILED.getExitCode())) {
for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
ExitStatus exitStatus = stepExecution.getExitStatus();
if (exitStatus.getExitCode().equals(ExitStatus.FAILED.getExitCode())) {
String message = String.format("Error executing step %s in job %s: %s", stepExecution.getStepName(),
jobExecution.getJobInstance().getJobName(), exitStatus.getExitDescription());
if (stepExecution.getFailureExceptions().isEmpty()) {
throw new JobExecutionException(message);
}
throw new JobExecutionException(message, stepExecution.getFailureExceptions().get(0));
}
if (isFailed(jobExecution.getExitStatus())) {
Optional<JobExecutionException> stepExecutionException = jobExecution.getStepExecutions().stream()
.filter(e -> isFailed(e.getExitStatus())).map(JobFactory::stepExecutionException).findAny();
if (stepExecutionException.isPresent()) {
throw stepExecutionException.get();
}
if (jobExecution.getAllFailureExceptions().isEmpty()) {
throw new JobExecutionException(String.format("Error executing job %s: %s",
jobExecution.getJobInstance().getJobName(), jobExecution.getExitStatus().getExitDescription()));
jobExecution.getJobInstance(), jobExecution.getExitStatus().getExitDescription()));
}
}
return jobExecution;
}

private static JobExecutionException stepExecutionException(StepExecution stepExecution) {
String message = String.format(STEP_ERROR, stepExecution.getStepName(),
stepExecution.getExitStatus().getExitDescription());
if (stepExecution.getFailureExceptions().isEmpty()) {
return new JobExecutionException(message);
}
return new JobExecutionException(message, stepExecution.getFailureExceptions().get(0));
}

private static boolean isFailed(ExitStatus exitStatus) {
return exitStatus.getExitCode().equals(ExitStatus.FAILED.getExitCode());
}

public static ThreadPoolTaskExecutor threadPoolTaskExecutor(int threads) {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setMaxPoolSize(threads);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobExecutionException;
import org.springframework.batch.core.JobInstance;
Expand All @@ -22,7 +23,9 @@ class JobFactoryTests {
@Test
void testCheckExecution() throws JobExecutionException {
JobExecution jobExecution = new JobExecution(10L);
Assertions.assertEquals(10L, JobFactory.checkJobExecution(jobExecution).getId());
jobExecution.setExitStatus(ExitStatus.FAILED);
Assertions.assertThrows(JobExecutionException.class, () -> JobFactory.checkJobExecution(jobExecution));
Assertions.assertEquals(10L, jobExecution.getId());
}

private class SimpleJobRepository implements JobRepository {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import java.util.function.Supplier;

import org.springframework.util.FileCopyUtils;
import org.springframework.util.StringUtils;

import com.hrakaroo.glob.GlobPattern;
import com.redis.lettucemod.RedisModulesClient;
Expand Down Expand Up @@ -54,11 +53,6 @@ public static <V> Function<V, String> toStringValueFunction(RedisCodec<?, V> cod
return encode.andThen(StringCodec.UTF8::decodeValue);
}

public static <K> Function<byte[], K> byteArrayKeyFunction(RedisCodec<K, ?> codec) {
Function<byte[], ByteBuffer> encode = ByteArrayCodec.INSTANCE::encodeKey;
return encode.andThen(codec::decodeKey);
}

public static <K> Function<K, byte[]> toByteArrayKeyFunction(RedisCodec<K, ?> codec) {
Function<K, ByteBuffer> encode = codec::encodeKey;
return encode.andThen(ByteArrayCodec.INSTANCE::decodeKey);
Expand Down Expand Up @@ -90,9 +84,6 @@ public static <K, V> StatefulRedisModulesConnection<K, V> connection(RedisModule
}

public static Predicate<String> globPredicate(String match) {
if (!StringUtils.hasLength(match)) {
return s -> true;
}
return GlobPattern.compile(match)::matches;
}
}

0 comments on commit aaa3658

Please sign in to comment.