Skip to content

Commit 9ef565f

Browse files
committed
Merge pull request scala#41 from retronym/topic/seriaizable
Make bridge interfaces implement serializable
2 parents cde8fb2 + 4bb7192 commit 9ef565f

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

build.sbt

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ OsgiKeys.privatePackage := List("scala.concurrent.java8.*")
1717

1818
libraryDependencies += "junit" % "junit" % "4.11" % "test"
1919

20+
libraryDependencies += "org.apache.commons" % "commons-lang3" % "3.4" % "test"
21+
2022
libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test"
2123

2224
mimaPreviousVersion := None

project/CodeGen.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ object CodeGen {
4040
|$packaging
4141
|
4242
|@FunctionalInterface
43-
|public interface JFunction0<R> extends scala.Function0<R> {
43+
|public interface JFunction0<R> extends scala.Function0<R>, java.io.Serializable {
4444
| default void $initName() {
4545
| };
4646
|""".stripMargin
@@ -51,7 +51,7 @@ object CodeGen {
5151
|$packaging
5252
|
5353
|@FunctionalInterface
54-
|public interface JFunction1<T1, R> extends scala.Function1<T1, R> {
54+
|public interface JFunction1<T1, R> extends scala.Function1<T1, R>, java.io.Serializable {
5555
| default void $initName() {
5656
| };
5757
|
@@ -77,7 +77,7 @@ object CodeGen {
7777
|$packaging
7878
|
7979
|@FunctionalInterface
80-
|public interface JFunction$n<$tparams, R> extends scala.Function$n<$tparams, R> {
80+
|public interface JFunction$n<$tparams, R> extends scala.Function$n<$tparams, R>, java.io.Serializable {
8181
| default void $initName() {
8282
| };
8383
|

src/test/java/scala/compat/java8/LambdaTest.java

+19
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
*/
44
package scala.compat.java8;
55

6+
import org.apache.commons.lang3.SerializationUtils;
67
import scala.runtime.*;
8+
9+
import static junit.framework.Assert.assertEquals;
710
import static scala.compat.java8.JFunction.*;
811
import static scala.compat.java8.TestAPI.*;
912

1013
import org.junit.Test;
1114

15+
1216
public class LambdaTest {
1317
@Test
1418
public void lambdaDemo() {
@@ -95,6 +99,21 @@ public void lambdaDemo() {
9599
acceptFunction22Unit( proc((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) -> {v1.toUpperCase(); return;}));
96100
}
97101

102+
@Test
103+
public void isSerializable() {
104+
scala.compat.java8.JFunction0<String> f0 = () -> "foo";
105+
assertEquals("foo", SerializationUtils.clone(f0).apply());
106+
107+
scala.compat.java8.JFunction1<String, String> f1 = (a) -> a.toUpperCase();
108+
assertEquals("FOO", SerializationUtils.clone(f1).apply("foo"));
109+
110+
scala.compat.java8.JFunction2<String, String, String> f2 = (a, b) -> a + b;
111+
assertEquals("foobar", SerializationUtils.clone(f2).apply("foo", "bar"));
112+
113+
scala.compat.java8.JFunction3<String, String, String, String> f3 = (a, b, c) -> a + b + c;
114+
assertEquals("foobarbaz", SerializationUtils.clone(f3).apply("foo", "bar", "baz"));
115+
}
116+
98117
private static scala.concurrent.Future<Integer> futureExample(
99118
scala.concurrent.Future<String> future, scala.concurrent.ExecutionContext ec) {
100119
return future.map(func(s -> s.toUpperCase()), ec).map(func(s -> s.length()), ec);

0 commit comments

Comments
 (0)