mirror of
https://github.com/apache/commons-collections.git
synced 2025-02-06 10:09:16 +00:00
Add single argument constructor for IfClosure
bug 38495, from Matt Benson git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/collections/trunk@375766 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1c8ccc351e
commit
c56039ade9
@ -79,6 +79,7 @@ If this causes major headaches to anyone please contact commons-dev at jakarta.a
|
|||||||
<li>ListOrderedMap - additional list-like method, setValue(int,Object)</li>
|
<li>ListOrderedMap - additional list-like method, setValue(int,Object)</li>
|
||||||
<li>ListOrderedMap - additional method, put(int,Object,Object)</li>
|
<li>ListOrderedMap - additional method, put(int,Object,Object)</li>
|
||||||
<li>PriorityBuffer - now Serializable [36163]</li>
|
<li>PriorityBuffer - now Serializable [36163]</li>
|
||||||
|
<li>IfClosure - add single argument constructor [38495]</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<center><h3>BUG FIXES</h3></center>
|
<center><h3>BUG FIXES</h3></center>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2004 The Apache Software Foundation
|
* Copyright 2002-2004,2006 The Apache Software Foundation
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -51,6 +51,7 @@ import org.apache.commons.collections.functors.WhileClosure;
|
|||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*
|
*
|
||||||
* @author Stephen Colebourne
|
* @author Stephen Colebourne
|
||||||
|
* @author Matt Benson
|
||||||
*/
|
*/
|
||||||
public class ClosureUtils {
|
public class ClosureUtils {
|
||||||
|
|
||||||
@ -226,6 +227,23 @@ public class ClosureUtils {
|
|||||||
return ChainedClosure.getInstance(closures);
|
return ChainedClosure.getInstance(closures);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new Closure that calls another closure based on the
|
||||||
|
* result of the specified predicate.
|
||||||
|
*
|
||||||
|
* @see org.apache.commons.collections.functors.IfClosure
|
||||||
|
*
|
||||||
|
* @param predicate the validating predicate
|
||||||
|
* @param trueClosure the closure called if the predicate is true
|
||||||
|
* @return the <code>if</code> closure
|
||||||
|
* @throws IllegalArgumentException if the predicate is null
|
||||||
|
* @throws IllegalArgumentException if the closure is null
|
||||||
|
* @since Commons Collections 3.2
|
||||||
|
*/
|
||||||
|
public static Closure ifClosure(Predicate predicate, Closure trueClosure) {
|
||||||
|
return IfClosure.getInstance(predicate, trueClosure);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new Closure that calls one of two closures depending
|
* Create a new Closure that calls one of two closures depending
|
||||||
* on the specified predicate.
|
* on the specified predicate.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2001-2004 The Apache Software Foundation
|
* Copyright 2001-2004,2006 The Apache Software Foundation
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -28,6 +28,7 @@ import org.apache.commons.collections.Predicate;
|
|||||||
* @version $Revision$ $Date$
|
* @version $Revision$ $Date$
|
||||||
*
|
*
|
||||||
* @author Stephen Colebourne
|
* @author Stephen Colebourne
|
||||||
|
* @author Matt Benson
|
||||||
*/
|
*/
|
||||||
public class IfClosure implements Closure, Serializable {
|
public class IfClosure implements Closure, Serializable {
|
||||||
|
|
||||||
@ -41,6 +42,22 @@ public class IfClosure implements Closure, Serializable {
|
|||||||
/** The closure to use if false */
|
/** The closure to use if false */
|
||||||
private final Closure iFalseClosure;
|
private final Closure iFalseClosure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory method that performs validation.
|
||||||
|
* <p>
|
||||||
|
* This factory creates a closure that performs no action when
|
||||||
|
* the predicate is false.
|
||||||
|
*
|
||||||
|
* @param predicate predicate to switch on
|
||||||
|
* @param trueClosure closure used if true
|
||||||
|
* @return the <code>if</code> closure
|
||||||
|
* @throws IllegalArgumentException if either argument is null
|
||||||
|
* @since Commons Collections 3.2
|
||||||
|
*/
|
||||||
|
public static Closure getInstance(Predicate predicate, Closure trueClosure) {
|
||||||
|
return getInstance(predicate, trueClosure, NOPClosure.INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory method that performs validation.
|
* Factory method that performs validation.
|
||||||
*
|
*
|
||||||
@ -60,6 +77,21 @@ public class IfClosure implements Closure, Serializable {
|
|||||||
return new IfClosure(predicate, trueClosure, falseClosure);
|
return new IfClosure(predicate, trueClosure, falseClosure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor that performs no validation.
|
||||||
|
* Use <code>getInstance</code> if you want that.
|
||||||
|
* <p>
|
||||||
|
* This constructor creates a closure that performs no action when
|
||||||
|
* the predicate is false.
|
||||||
|
*
|
||||||
|
* @param predicate predicate to switch on, not null
|
||||||
|
* @param trueClosure closure used if true, not null
|
||||||
|
* @since Commons Collections 3.2
|
||||||
|
*/
|
||||||
|
public IfClosure(Predicate predicate, Closure trueClosure) {
|
||||||
|
this(predicate, trueClosure, NOPClosure.INSTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor that performs no validation.
|
* Constructor that performs no validation.
|
||||||
* Use <code>getInstance</code> if you want that.
|
* Use <code>getInstance</code> if you want that.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2001-2004 The Apache Software Foundation
|
* Copyright 2001-2004,2006 The Apache Software Foundation
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -37,9 +37,7 @@ import org.apache.commons.collections.functors.NOPClosure;
|
|||||||
*/
|
*/
|
||||||
public class TestClosureUtils extends junit.framework.TestCase {
|
public class TestClosureUtils extends junit.framework.TestCase {
|
||||||
|
|
||||||
private static final Object cObject = new Object();
|
|
||||||
private static final Object cString = "Hello";
|
private static final Object cString = "Hello";
|
||||||
private static final Object cInteger = new Integer(6);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct
|
* Construct
|
||||||
@ -244,12 +242,21 @@ public class TestClosureUtils extends junit.framework.TestCase {
|
|||||||
} catch (IllegalArgumentException ex) {}
|
} catch (IllegalArgumentException ex) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// switchClosure
|
// ifClosure
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
public void testSwitchClosure() {
|
public void testIfClosure() {
|
||||||
MockClosure a = new MockClosure();
|
MockClosure a = new MockClosure();
|
||||||
MockClosure b = new MockClosure();
|
MockClosure b = null;
|
||||||
|
ClosureUtils.ifClosure(PredicateUtils.truePredicate(), a).execute(null);
|
||||||
|
assertEquals(1, a.count);
|
||||||
|
|
||||||
|
a = new MockClosure();
|
||||||
|
ClosureUtils.ifClosure(PredicateUtils.falsePredicate(), a).execute(null);
|
||||||
|
assertEquals(0, a.count);
|
||||||
|
|
||||||
|
a = new MockClosure();
|
||||||
|
b = new MockClosure();
|
||||||
ClosureUtils.ifClosure(PredicateUtils.truePredicate(), a, b).execute(null);
|
ClosureUtils.ifClosure(PredicateUtils.truePredicate(), a, b).execute(null);
|
||||||
assertEquals(1, a.count);
|
assertEquals(1, a.count);
|
||||||
assertEquals(0, b.count);
|
assertEquals(0, b.count);
|
||||||
@ -259,9 +266,14 @@ public class TestClosureUtils extends junit.framework.TestCase {
|
|||||||
ClosureUtils.ifClosure(PredicateUtils.falsePredicate(), a, b).execute(null);
|
ClosureUtils.ifClosure(PredicateUtils.falsePredicate(), a, b).execute(null);
|
||||||
assertEquals(0, a.count);
|
assertEquals(0, a.count);
|
||||||
assertEquals(1, b.count);
|
assertEquals(1, b.count);
|
||||||
|
}
|
||||||
a = new MockClosure();
|
|
||||||
b = new MockClosure();
|
// switchClosure
|
||||||
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
|
public void testSwitchClosure() {
|
||||||
|
MockClosure a = new MockClosure();
|
||||||
|
MockClosure b = new MockClosure();
|
||||||
ClosureUtils.switchClosure(
|
ClosureUtils.switchClosure(
|
||||||
new Predicate[] {PredicateUtils.equalPredicate("HELLO"), PredicateUtils.equalPredicate("THERE")},
|
new Predicate[] {PredicateUtils.equalPredicate("HELLO"), PredicateUtils.equalPredicate("THERE")},
|
||||||
new Closure[] {a, b}).execute("WELL");
|
new Closure[] {a, b}).execute("WELL");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user