Skip to content

Commit

Permalink
PR for CallExecutor does not know the type of a result elennick#72
Browse files Browse the repository at this point in the history
  • Loading branch information
dev3loperb committed Aug 10, 2018
1 parent dd311a3 commit 417cc86
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 23 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.evanlennick</groupId>
<artifactId>retry4j</artifactId>
<version>0.15.0-SNAPSHOT</version>
<version>0.15.1-SNAPSHOT</version>

<name>${project.groupId}:${project.artifactId}</name>
<description>Library for retrying Java logic.</description>
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/com/evanlennick/retry4j/AsyncCallExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ public class AsyncCallExecutor<T> implements RetryExecutor<T, CompletableFuture<

private ExecutorService executorService;

private RetryListener afterFailedTryListener;
private RetryListener<T> afterFailedTryListener;

private RetryListener beforeNextTryListener;
private RetryListener<T> beforeNextTryListener;

private RetryListener onFailureListener;
private RetryListener<T> onFailureListener;

private RetryListener onSuccessListener;
private RetryListener<T> onSuccessListener;

private RetryListener onCompletionListener;
private RetryListener<T> onCompletionListener;

public AsyncCallExecutor(RetryConfig config) {
this(config, null);
Expand Down Expand Up @@ -75,27 +75,27 @@ private void executeFuture(Callable<T> callable, String callName, CallExecutor<T
}
}

public AsyncCallExecutor<T> afterFailedTry(RetryListener listener) {
public AsyncCallExecutor<T> afterFailedTry(RetryListener<T> listener) {
this.afterFailedTryListener = listener;
return this;
}

public AsyncCallExecutor<T> beforeNextTry(RetryListener listener) {
public AsyncCallExecutor<T> beforeNextTry(RetryListener<T> listener) {
this.beforeNextTryListener = listener;
return this;
}

public AsyncCallExecutor<T> onCompletion(RetryListener listener) {
public AsyncCallExecutor<T> onCompletion(RetryListener<T> listener) {
this.onCompletionListener = listener;
return this;
}

public AsyncCallExecutor<T> onSuccess(RetryListener listener) {
public AsyncCallExecutor<T> onSuccess(RetryListener<T> listener) {
this.onSuccessListener = listener;
return this;
}

public AsyncCallExecutor<T> onFailure(RetryListener listener) {
public AsyncCallExecutor<T> onFailure(RetryListener<T> listener) {
this.onFailureListener = listener;
return this;
}
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/com/evanlennick/retry4j/CallExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ public class CallExecutor<T> implements RetryExecutor<T, Status<T>> {

private RetryConfig config;

private RetryListener afterFailedTryListener;
private RetryListener<T> afterFailedTryListener;

private RetryListener beforeNextTryListener;
private RetryListener<T> beforeNextTryListener;

private RetryListener onFailureListener;
private RetryListener<T> onFailureListener;

private RetryListener onSuccessListener;
private RetryListener<T> onSuccessListener;

private RetryListener onCompletionListener;
private RetryListener<T> onCompletionListener;

private Exception lastKnownExceptionThatCausedRetry;

Expand Down Expand Up @@ -218,27 +218,27 @@ public void setConfig(RetryConfig config) {
this.config = config;
}

public CallExecutor<T> afterFailedTry(RetryListener listener) {
public CallExecutor<T> afterFailedTry(RetryListener<T> listener) {
this.afterFailedTryListener = listener;
return this;
}

public CallExecutor<T> beforeNextTry(RetryListener listener) {
public CallExecutor<T> beforeNextTry(RetryListener<T> listener) {
this.beforeNextTryListener = listener;
return this;
}

public CallExecutor<T> onCompletion(RetryListener listener) {
public CallExecutor<T> onCompletion(RetryListener<T> listener) {
this.onCompletionListener = listener;
return this;
}

public CallExecutor<T> onSuccess(RetryListener listener) {
public CallExecutor<T> onSuccess(RetryListener<T> listener) {
this.onSuccessListener = listener;
return this;
}

public CallExecutor<T> onFailure(RetryListener listener) {
public CallExecutor<T> onFailure(RetryListener<T> listener) {
this.onFailureListener = listener;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.evanlennick.retry4j.Status;

public interface RetryListener {
public interface RetryListener<T> {

void onEvent(Status status);
void onEvent(Status<T> status);

}
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,13 @@ public void verifyOnFailureListener_populatesException() {
verify(dummyMock, timeout(1000)).listenersCallThis(isA(IllegalArgumentException.class));
}

@Test
public void verifyOnSuccessListener_resultHasTypeOfCallExecutor() {
executor.onSuccess(status -> {
String result = status.getResult(); //compile time check
}).execute(callable);
}

private class DummyMock {

public String listenersCallThis() {
Expand Down

0 comments on commit 417cc86

Please sign in to comment.