Skip to content

Commit 404823a

Browse files
committed
- r Refactor to use Once
1 parent 06870d1 commit 404823a

File tree

4 files changed

+57
-55
lines changed

4 files changed

+57
-55
lines changed

approvaltests-util-tests/src/test/java/org/lambda/utils/OnceTest.java

+38-38
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,42 @@
55

66
import static org.junit.jupiter.api.Assertions.assertEquals;
77

8-
public class OnceTest {
9-
public static int count = 0;
10-
11-
@Test
12-
public void testOnce() {
13-
increment();
14-
increment();
15-
increment();
16-
increment();
17-
increment();
18-
assertEquals(1, count);
19-
}
20-
21-
private void increment() {
22-
var fieldThatForcesLambdaToHaveMultipleInstances = NumberUtils.doRandomPercentage(50);
23-
Once.run(() -> {
24-
if (fieldThatForcesLambdaToHaveMultipleInstances)
25-
OnceTest.count++;
26-
else
27-
OnceTest.count++;
28-
});
29-
}
30-
31-
@Test
32-
public void testFunctionCallOnce() {
33-
int count = 0;
34-
count = increment(count);
35-
count = increment(count);
36-
count = increment(count);
37-
count = increment(count);
38-
count = increment(count);
39-
assertEquals(1, count);
40-
}
41-
42-
private int increment(int count) {
43-
return Once.run(() -> count + 1);
44-
}
45-
8+
public class OnceTest
9+
{
10+
public static int count = 0;
11+
@Test
12+
public void testOnce()
13+
{
14+
increment();
15+
increment();
16+
increment();
17+
increment();
18+
increment();
19+
assertEquals(1, count);
20+
}
21+
private void increment()
22+
{
23+
var fieldThatForcesLambdaToHaveMultipleInstances = NumberUtils.doRandomPercentage(50);
24+
Once.run(() -> {
25+
if (fieldThatForcesLambdaToHaveMultipleInstances)
26+
OnceTest.count++;
27+
else
28+
OnceTest.count++;
29+
});
30+
}
31+
@Test
32+
public void testFunctionCallOnce()
33+
{
34+
int count = 0;
35+
count = increment(count);
36+
count = increment(count);
37+
count = increment(count);
38+
count = increment(count);
39+
count = increment(count);
40+
assertEquals(1, count);
41+
}
42+
private int increment(int count)
43+
{
44+
return Once.run(() -> count + 1);
45+
}
4646
}

approvaltests-util/src/main/java/org/lambda/utils/Once.java

+15-11
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@
55

66
import java.util.*;
77

8-
public class Once {
9-
private static final Set<Class> actions = Collections.synchronizedSet(new HashSet<>());
10-
private static final Map<Class, Object> functions = Collections.synchronizedMap(new HashMap<>());
11-
public static void run(Action0 runnable) {
12-
if (!actions.contains(runnable.getClass())) {
13-
actions.add(runnable.getClass());
14-
runnable.call();
15-
}
16-
}
17-
public static <T> T run(Function0<T> runnable) {
18-
return (T) functions.computeIfAbsent(runnable.getClass(), k -> runnable.call());
8+
public class Once
9+
{
10+
private static final Set<Class> actions = Collections.synchronizedSet(new HashSet<>());
11+
private static final Map<Class, Object> functions = Collections.synchronizedMap(new HashMap<>());
12+
public static void run(Action0 runnable)
13+
{
14+
if (!actions.contains(runnable.getClass()))
15+
{
16+
actions.add(runnable.getClass());
17+
runnable.call();
1918
}
19+
}
20+
public static <T> T run(Function0<T> runnable)
21+
{
22+
return (T) functions.computeIfAbsent(runnable.getClass(), k -> runnable.call());
23+
}
2024
}

approvaltests/src/main/java/org/approvaltests/internal/logs/ApprovedFileLog.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.approvaltests.internal.logs;
22

33
import com.spun.util.io.FileUtils;
4+
import org.lambda.utils.Once;
45

56
import java.io.File;
67

@@ -9,6 +10,7 @@ public class ApprovedFileLog
910
static
1011
{
1112
FileUtils.writeFile(get(), "");
13+
Once.run(() -> LoggingUtils.downloadScriptIfMissing("detect_and_remove_abandoned"));
1214
}
1315
public static File get()
1416
{

approvaltests/src/main/java/org/approvaltests/internal/logs/FailedFileLog.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
package org.approvaltests.internal.logs;
22

33
import com.spun.util.io.FileUtils;
4+
import org.lambda.utils.Once;
45

56
import java.io.File;
67

78
import static org.approvaltests.internal.logs.LoggingUtils.APPROVAL_TEMP_DIRECTORY;
89

910
public class FailedFileLog
1011
{
11-
private static boolean downloadedScriptCheck = false;
1212
static
1313
{
1414
FileUtils.writeFile(get(), "");
1515
}
1616
private static void downloadApproveAllScriptIfMissing()
1717
{
18-
if (downloadedScriptCheck)
19-
{ return; }
20-
downloadedScriptCheck = true;
21-
String scriptName = "approve_all";
22-
LoggingUtils.downloadScriptIfMissing(scriptName);
18+
Once.run(() -> LoggingUtils.downloadScriptIfMissing("approve_all"));
2319
}
2420
public static File get()
2521
{

0 commit comments

Comments
 (0)