You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2019/12/24 12:14:47 UTC
[commons-math] 05/07: MATH-1362: Use "IntegerSequence.Incrementor".
This is an automated email from the ASF dual-hosted git repository.
erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit 8091c4fe8395ef69a652885bb6eef0c2ac935927
Author: Gilles Sadowski <gi...@harfang.homelinux.org>
AuthorDate: Tue Dec 24 12:56:13 2019 +0100
MATH-1362: Use "IntegerSequence.Incrementor".
---
.../commons/math4/util/IterationManager.java | 47 ++++++++++++++--------
1 file changed, 31 insertions(+), 16 deletions(-)
diff --git a/src/main/java/org/apache/commons/math4/util/IterationManager.java b/src/main/java/org/apache/commons/math4/util/IterationManager.java
index 550bd25..bd29ed7 100644
--- a/src/main/java/org/apache/commons/math4/util/IterationManager.java
+++ b/src/main/java/org/apache/commons/math4/util/IterationManager.java
@@ -29,36 +29,43 @@ import org.apache.commons.math4.exception.MaxCountExceededException;
*
*/
public class IterationManager {
-
- /** Keeps a count of the number of iterations. */
- private final Incrementor iterations;
-
/** The collection of all listeners attached to this iterative algorithm. */
private final Collection<IterationListener> listeners;
+ /** Maximum number of iterations. */
+ private final int maxIterations;
+ /** Callback. */
+ private final IntegerSequence.Incrementor.MaxCountExceededCallback callback;
+ /** Keeps a count of the number of iterations. */
+ private IntegerSequence.Incrementor iterations;
/**
* Creates a new instance of this class.
*
- * @param maxIterations the maximum number of iterations
+ * @param maxIterations Maximum number of iterations.
+ * {@link MaxCountExceededException} will be raised at
+ * counter exhaustion.
*/
public IterationManager(final int maxIterations) {
- this.iterations = new Incrementor(maxIterations);
- this.listeners = new CopyOnWriteArrayList<>();
+ this(maxIterations, null);
}
/**
* Creates a new instance of this class.
*
* @param maxIterations the maximum number of iterations
- * @param callBack the function to be called when the maximum number of
- * iterations has been reached
- * @throws org.apache.commons.math4.exception.NullArgumentException if {@code callBack} is {@code null}
+ * @param callback the function to be called when the maximum number of
+ * iterations has been reached.
+ * If {@code null}, {@link MaxCountExceededException} will be raised at
+ * counter exhaustion.
+ *
* @since 3.1
*/
public IterationManager(final int maxIterations,
- final Incrementor.MaxCountExceededCallback callBack) {
- this.iterations = new Incrementor(maxIterations, callBack);
+ final IntegerSequence.Incrementor.MaxCountExceededCallback callback) {
+ this.maxIterations = maxIterations;
+ this.callback = callback;
this.listeners = new CopyOnWriteArrayList<>();
+ resetCounter();
}
/**
@@ -145,9 +152,8 @@ public class IterationManager {
* @throws MaxCountExceededException if the maximum number of iterations is
* reached.
*/
- public void incrementIterationCount()
- throws MaxCountExceededException {
- iterations.incrementCount();
+ public void incrementIterationCount() {
+ iterations.increment();
}
/**
@@ -167,6 +173,15 @@ public class IterationManager {
* initial phase.
*/
public void resetIterationCount() {
- iterations.resetCount();
+ resetCounter();
+ }
+
+ /** Reset counter. */
+ private void resetCounter() {
+ iterations = IntegerSequence.Incrementor.create()
+ .withMaximalCount(maxIterations);
+ if (callback != null) {
+ iterations = iterations.withCallback(callback);
+ }
}
}