Skip to content

Commit 9a0f847

Browse files
author
Mark Perry
committed
Compile java8 with separate jvm
1 parent e7a8953 commit 9a0f847

File tree

2 files changed

+81
-36
lines changed

2 files changed

+81
-36
lines changed

java8/build.gradle

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11

2-
buildscript {
3-
repositories {
4-
mavenCentral()
5-
}
6-
7-
dependencies {
8-
classpath 'me.tatarka:gradle-retrolambda:1.3.1'
9-
}
10-
}
11-
122
apply plugin: 'java'
13-
apply plugin: 'retrolambda'
143

154
apply from: "$rootDir/lib.gradle"
165

@@ -25,14 +14,17 @@ task javadoc(type: Javadoc, overwrite: true) {
2514
dependsOn(t)
2615
}
2716

28-
retrolambda {
29-
jdk System.getenv("JAVA8_HOME")
30-
oldJdk System.getenv("JAVA7_HOME")
31-
javaVersion JavaVersion.VERSION_1_7
32-
}
33-
3417
dependencies {
3518
compile project(":core")
36-
3719
testCompile "junit:junit:4.11"
3820
}
21+
22+
compileJava {
23+
def jh = System.getenv("JAVA8_HOME")
24+
if (jh == null) {
25+
throw new Exception("JAVA8_HOME environment variable not set")
26+
}
27+
options.fork = true
28+
options.forkOptions.executable = "$jh/bin/javac"
29+
}
30+

java8/src/main/java/fj/data/Java8.java

Lines changed: 71 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import fj.*;
44

5+
import java.util.Optional;
56
import java.util.function.BiFunction;
67
import java.util.function.Function;
78
import java.util.function.Supplier;
@@ -15,40 +16,92 @@ private Java8() {
1516
throw new UnsupportedOperationException();
1617
}
1718

18-
public static <A> P1<A> toP1(Supplier<A> f) {
19-
return () -> f.get();
19+
public static <A> P1<A> Supplier_P1(final Supplier<A> s) {
20+
return Java8.<A>Supplier_P1().f(s);
2021
}
2122

22-
public static <A> Supplier<A> toSupplier(P1<A> p) {
23-
return () -> p._1();
23+
public static <A> F<Supplier<A>, P1<A>> Supplier_P1() {
24+
return s -> () -> s.get();
2425
}
2526

26-
public static <A, B> F<A, B> toF(Function<A, B> f) {
27-
return a -> f.apply(a);
27+
public static <A> Supplier<A> P1_Supplier(final P1<A> p) {
28+
return Java8.<A>P1_Supplier().f(p);
2829
}
2930

30-
public static <A, B> Function<A, B> toFunction(F<A, B> f) {
31-
return a -> f.f(a);
31+
public static <A> F<P1<A>, Supplier<A>> P1_Supplier() {
32+
return (p) -> () -> p._1();
3233
}
3334

34-
public static <A, B, C> F2<A, B, C> toF2(BiFunction<A, B, C> f) {
35-
return (a, b) -> f.apply(a, b);
35+
public static <A, B> F<A, B> Function_F(final Function<A, B> f) {
36+
return Java8.<A, B>Function_F().f(f);
3637
}
3738

38-
public static <A, B, C> BiFunction<A, B, C> toBiFunction(F2<A, B, C> f) {
39-
return (a, b) -> f.f(a, b);
39+
public static <A, B> F<Function<A, B>, F<A, B>> Function_F() {
40+
return f -> a -> f.apply(a);
4041
}
4142

42-
static public <A> Supplier<Validation<Exception, A>> toSupplier(final TryCatch0<A> t) {
43-
return toSupplier(P1Functions.toP1(t));
43+
public static <A, B> Function<A, B> F_Function(final F<A, B> f) {
44+
return Java8.<A, B>F_Function().f(f);
4445
}
4546

46-
static public <A, B> Function<A, Validation<Exception, B>> toFunction(final TryCatch1<A, B> t) {
47-
return toFunction(F1Functions.toF1(t));
47+
public static <A, B> F<F<A, B>, Function<A, B>> F_Function() {
48+
return f -> a -> f.f(a);
4849
}
4950

50-
static public <A, B, C> BiFunction<A, B, Validation<Exception, C>> toBiFunction(final TryCatch2<A, B, C> t) {
51-
return toBiFunction(F2Functions.toF2(t));
51+
public static <A, B, C> F2<A, B, C> BiFunction_F2(final BiFunction<A, B, C> f) {
52+
return Java8.<A, B, C>BiFunction_F2().f(f);
53+
}
54+
55+
public static <A, B, C> F<BiFunction<A, B, C>, F2<A, B, C>> BiFunction_F2() {
56+
return f -> (a, b) -> f.apply(a, b);
57+
}
58+
59+
public static <A, B, C> BiFunction<A, B, C> F2_BiFunction(final F2<A, B, C> f) {
60+
return Java8.<A, B, C>F2_BiFunction().f(f);
61+
}
62+
63+
public static <A, B, C> F<F2<A, B, C>, BiFunction<A, B, C>> F2_BiFunction() {
64+
return f -> (a, b) -> f.f(a, b);
65+
}
66+
67+
static public <A> Supplier<Validation<Exception, A>> TryCatch0_Supplier(final TryCatch0<A> t) {
68+
return Java8.<A>TryCatch0_Supplier().f(t);
69+
}
70+
71+
static public <A> F<TryCatch0<A>, Supplier<Validation<Exception, A>>> TryCatch0_Supplier() {
72+
return t -> () -> P1Functions.toP1(t)._1();
73+
}
74+
75+
static public <A, B> Function<A, Validation<Exception, B>> TryCatch1_Function(final TryCatch1<A, B> t) {
76+
return Java8.<A, B>TryCatch1_Function().f(t);
77+
}
78+
79+
static public <A, B> F<TryCatch1<A, B>, Function<A, Validation<Exception, B>>> TryCatch1_Function() {
80+
return t -> a -> F1Functions.toF1(t).f(a);
81+
}
82+
83+
static public <A, B, C> BiFunction<A, B, Validation<Exception, C>> TryCatch2_BiFunction(final TryCatch2<A, B, C> t) {
84+
return Java8.<A, B, C>TryCatch2_BiFunction().f(t);
85+
}
86+
87+
static public <A, B, C> F<TryCatch2<A, B, C>, BiFunction<A, B, Validation<Exception, C>>> TryCatch2_BiFunction() {
88+
return t -> (a, b) -> F2Functions.toF2(t).f(a, b);
89+
}
90+
91+
static public <A> Option<A> Optional_Option(final Optional<A> o) {
92+
return Java8.<A>Optional_Option().f(o);
93+
}
94+
95+
static public <A> F<Optional<A>, Option<A>> Optional_Option() {
96+
return o -> o.isPresent() ? Option.fromNull(o.get()) : Option.none();
97+
}
98+
99+
static public <A> Optional<A> Option_Optional(final Option<A> o) {
100+
return Java8.<A>Option_Optional().f(o);
101+
}
102+
103+
static public <A> F<Option<A>, Optional<A>> Option_Optional() {
104+
return o -> o.isSome() ? Optional.ofNullable(o.some()) : Optional.empty();
52105
}
53106

54107
}

0 commit comments

Comments
 (0)