[
https://issues.apache.org/jira/browse/LANG-740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14528977#comment-14528977
]
ASF GitHub Bot commented on LANG-740:
-------------------------------------
Github user britter commented on a diff in the pull request:
https://github.com/apache/commons-lang/pull/80#discussion_r29696865
--- Diff:
src/test/java/org/apache/commons/lang3/concurrent/MemoizerTest.java ---
@@ -0,0 +1,112 @@
+package org.apache.commons.lang3.concurrent;
+
+import org.easymock.EasyMockRunner;
+import org.easymock.Mock;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+@RunWith(EasyMockRunner.class)
+public class MemoizerTest {
+
+ @Mock
+ private Computable<Integer, Integer> computable;
+
+ @Test
+ public void testOnlyCallComputableOnceIfDoesNotThrowException() throws
Exception {
+ Integer input = 1;
+ Memoizer<Integer, Integer> memoizer = new Memoizer<Integer,
Integer>(computable);
+ expect(computable.compute(input)).andReturn(input);
+ replay(computable);
+
+ assertEquals("Should call computable first time", input,
memoizer.compute(input));
+ assertEquals("Should not call the computable the second time",
input, memoizer.compute(input));
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void testDefaultBehaviourNotToRecalculateExecutionExceptions()
throws Exception {
+ Integer input = 1;
+ Integer answer = 3;
--- End diff --
answer is unused
> Add a Memoizer class
> --------------------
>
> Key: LANG-740
> URL: https://issues.apache.org/jira/browse/LANG-740
> Project: Commons Lang
> Issue Type: New Feature
> Components: lang.concurrent.*
> Reporter: Gary Gregory
> Assignee: Gary Gregory
> Fix For: Review Patch, 3.5
>
> Attachments: LANG-740.patch
>
>
> I am currently using a class like the Memoizer class [1] from "Java
> Concurrency in Practice" [2], a great book.
> It would fit perfectly in org.apache.commons.lang3.concurrent.
> [1] http://jcip.net/listings/Memoizer.java
> [2] http://jcip.net/
> There is no licensing issue because the code is in the public domain:
> {noformat}
> ---------- Forwarded message ----------
> From: Brian Goetz <[email protected]>
> Date: Tue, Aug 9, 2011 at 5:40 PM
> Subject: Re: Apache Commons Lang and Memoizer
> To: Gary Gregory <[email protected]>, Tim Peierls <[email protected]>
> No license issues -- the code is in the public domain:
> Written by Brian Goetz and Tim Peierls with assistance from members of
> JCP JSR-166 Expert Group and released to the public domain, as explained at
> http://creativecommons.org/licenses/publicdomain
> Code for the samples can be downloaded from http://www.jcip.net/listings.html.
> Cheers,
> -Brian
> On 8/9/2011 5:38 PM, Gary Gregory wrote:
> >
> > Hi Brian,
> >
> > I would like to include a Memoizer in the next release of Apache
> > Commons Lang [1].
> >
> > Can we use the Memoizer pattern from "Java Concurrency in Practice"? I
> > think I would reuse the code from the class Memoizer and change names,
> > things like that.
> >
> > We are talking about this on the Lang mailing list and are wondering
> > if there are any licensing issues.
> >
> > [1] https://commons.apache.org/lang/
> >
> --
> Thank you,
> Gary
> http://garygregory.wordpress.com/
> http://garygregory.com/
> http://people.apache.org/~ggregory/
> http://twitter.com/GaryGregory
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)