Skip to content

Commit 534bab2

Browse files
committed
Merge pull request alteryx#100 from JoshRosen/spark-902
Remove redundant Java Function call() definitions This should fix [SPARK-902](https://spark-project.atlassian.net/browse/SPARK-902), an issue where some Java API Function classes could cause AbstractMethodErrors when user code is compiled using the Eclipse compiler. Thanks to @MartinWeindel for diagnosing this problem. (This PR subsumes alteryx#30). (cherry picked from commit 9dfcf53) Signed-off-by: Reynold Xin <[email protected]>
1 parent c449ee1 commit 534bab2

File tree

8 files changed

+4
-32
lines changed

8 files changed

+4
-32
lines changed

core/src/main/scala/org/apache/spark/api/java/function/DoubleFlatMapFunction.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,14 @@
1818
package org.apache.spark.api.java.function;
1919

2020

21-
import scala.runtime.AbstractFunction1;
22-
2321
import java.io.Serializable;
2422

2523
/**
2624
* A function that returns zero or more records of type Double from each input record.
2725
*/
2826
// DoubleFlatMapFunction does not extend FlatMapFunction because flatMap is
2927
// overloaded for both FlatMapFunction and DoubleFlatMapFunction.
30-
public abstract class DoubleFlatMapFunction<T> extends AbstractFunction1<T, Iterable<Double>>
28+
public abstract class DoubleFlatMapFunction<T> extends WrappedFunction1<T, Iterable<Double>>
3129
implements Serializable {
32-
33-
public abstract Iterable<Double> call(T t);
34-
35-
@Override
36-
public final Iterable<Double> apply(T t) { return call(t); }
30+
// Intentionally left blank
3731
}

core/src/main/scala/org/apache/spark/api/java/function/DoubleFunction.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
package org.apache.spark.api.java.function;
1919

2020

21-
import scala.runtime.AbstractFunction1;
22-
2321
import java.io.Serializable;
2422

2523
/**
@@ -29,6 +27,5 @@
2927
// are overloaded for both Function and DoubleFunction.
3028
public abstract class DoubleFunction<T> extends WrappedFunction1<T, Double>
3129
implements Serializable {
32-
33-
public abstract Double call(T t) throws Exception;
30+
// Intentionally left blank
3431
}

core/src/main/scala/org/apache/spark/api/java/function/FlatMapFunction.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,5 @@ package org.apache.spark.api.java.function
2121
* A function that returns zero or more output records from each input record.
2222
*/
2323
abstract class FlatMapFunction[T, R] extends Function[T, java.lang.Iterable[R]] {
24-
@throws(classOf[Exception])
25-
def call(x: T) : java.lang.Iterable[R]
26-
2724
def elementType() : ClassManifest[R] = ClassManifest.Any.asInstanceOf[ClassManifest[R]]
2825
}

core/src/main/scala/org/apache/spark/api/java/function/FlatMapFunction2.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,5 @@ package org.apache.spark.api.java.function
2121
* A function that takes two inputs and returns zero or more output records.
2222
*/
2323
abstract class FlatMapFunction2[A, B, C] extends Function2[A, B, java.lang.Iterable[C]] {
24-
@throws(classOf[Exception])
25-
def call(a: A, b:B) : java.lang.Iterable[C]
26-
2724
def elementType() : ClassManifest[C] = ClassManifest.Any.asInstanceOf[ClassManifest[C]]
2825
}

core/src/main/scala/org/apache/spark/api/java/function/Function.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import scala.reflect.ClassManifest;
2121
import scala.reflect.ClassManifest$;
22-
import scala.runtime.AbstractFunction1;
2322

2423
import java.io.Serializable;
2524

@@ -30,8 +29,6 @@
3029
* when mapping RDDs of other types.
3130
*/
3231
public abstract class Function<T, R> extends WrappedFunction1<T, R> implements Serializable {
33-
public abstract R call(T t) throws Exception;
34-
3532
public ClassManifest<R> returnType() {
3633
return (ClassManifest<R>) ClassManifest$.MODULE$.fromClass(Object.class);
3734
}

core/src/main/scala/org/apache/spark/api/java/function/Function2.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import scala.reflect.ClassManifest;
2121
import scala.reflect.ClassManifest$;
22-
import scala.runtime.AbstractFunction2;
2322

2423
import java.io.Serializable;
2524

@@ -29,8 +28,6 @@
2928
public abstract class Function2<T1, T2, R> extends WrappedFunction2<T1, T2, R>
3029
implements Serializable {
3130

32-
public abstract R call(T1 t1, T2 t2) throws Exception;
33-
3431
public ClassManifest<R> returnType() {
3532
return (ClassManifest<R>) ClassManifest$.MODULE$.fromClass(Object.class);
3633
}

core/src/main/scala/org/apache/spark/api/java/function/PairFlatMapFunction.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import scala.Tuple2;
2121
import scala.reflect.ClassManifest;
2222
import scala.reflect.ClassManifest$;
23-
import scala.runtime.AbstractFunction1;
2423

2524
import java.io.Serializable;
2625

@@ -34,8 +33,6 @@ public abstract class PairFlatMapFunction<T, K, V>
3433
extends WrappedFunction1<T, Iterable<Tuple2<K, V>>>
3534
implements Serializable {
3635

37-
public abstract Iterable<Tuple2<K, V>> call(T t) throws Exception;
38-
3936
public ClassManifest<K> keyType() {
4037
return (ClassManifest<K>) ClassManifest$.MODULE$.fromClass(Object.class);
4138
}

core/src/main/scala/org/apache/spark/api/java/function/PairFunction.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import scala.Tuple2;
2121
import scala.reflect.ClassManifest;
2222
import scala.reflect.ClassManifest$;
23-
import scala.runtime.AbstractFunction1;
2423

2524
import java.io.Serializable;
2625

@@ -29,12 +28,9 @@
2928
*/
3029
// PairFunction does not extend Function because some UDF functions, like map,
3130
// are overloaded for both Function and PairFunction.
32-
public abstract class PairFunction<T, K, V>
33-
extends WrappedFunction1<T, Tuple2<K, V>>
31+
public abstract class PairFunction<T, K, V> extends WrappedFunction1<T, Tuple2<K, V>>
3432
implements Serializable {
3533

36-
public abstract Tuple2<K, V> call(T t) throws Exception;
37-
3834
public ClassManifest<K> keyType() {
3935
return (ClassManifest<K>) ClassManifest$.MODULE$.fromClass(Object.class);
4036
}

0 commit comments

Comments
 (0)