Add Function4 and WrappedFunction4

Project: http://git-wip-us.apache.org/repos/asf/incubator-spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-spark/commit/de291c68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-spark/tree/de291c68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-spark/diff/de291c68

Branch: refs/heads/branch-0.8
Commit: de291c68879a79271dba060f7214db5759049a74
Parents: 987c613
Author: Xi Liu <x...@conviva.com>
Authored: Wed Oct 9 14:58:51 2013 -0700
Committer: Xi Liu <x...@conviva.com>
Committed: Wed Oct 9 14:58:51 2013 -0700

----------------------------------------------------------------------
 .../spark/api/java/function/Function4.java      | 38 ++++++++++++++++++++
 .../api/java/function/WrappedFunction4.scala    | 32 +++++++++++++++++
 2 files changed, 70 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-spark/blob/de291c68/core/src/main/scala/org/apache/spark/api/java/function/Function4.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/scala/org/apache/spark/api/java/function/Function4.java 
b/core/src/main/scala/org/apache/spark/api/java/function/Function4.java
new file mode 100644
index 0000000..94621d7
--- /dev/null
+++ b/core/src/main/scala/org/apache/spark/api/java/function/Function4.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.api.java.function;
+
+import scala.reflect.ClassManifest;
+import scala.reflect.ClassManifest$;
+import scala.runtime.AbstractFunction3;
+
+import java.io.Serializable;
+
+/**
+ * A four-argument function that takes arguments of type T1, T2, T3, and T4 
and returns an R.
+ */
+public abstract class Function4<T1, T2, T3, T4, R> extends 
WrappedFunction4<T1, T2, T3, T4, R>
+  implements Serializable {
+
+  public abstract R call(T1 t1, T2 t2, T3 t3, T4 t4) throws Exception;
+
+  public ClassManifest<R> returnType() {
+    return (ClassManifest<R>) ClassManifest$.MODULE$.fromClass(Object.class);
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-spark/blob/de291c68/core/src/main/scala/org/apache/spark/api/java/function/WrappedFunction4.scala
----------------------------------------------------------------------
diff --git 
a/core/src/main/scala/org/apache/spark/api/java/function/WrappedFunction4.scala 
b/core/src/main/scala/org/apache/spark/api/java/function/WrappedFunction4.scala
new file mode 100644
index 0000000..29ba67f
--- /dev/null
+++ 
b/core/src/main/scala/org/apache/spark/api/java/function/WrappedFunction4.scala
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.api.java.function
+
+import scala.runtime.AbstractFunction4
+
+/**
+ * Subclass of Function4 for ease of calling from Java. The main thing it does 
is re-expose the
+ * apply() method as call() and declare that it can throw Exception (since 
AbstractFunction3.apply
+ * isn't marked to allow that).
+ */
+private[spark] abstract class WrappedFunction4[T1, T2, T3, T4, R] extends 
AbstractFunction4[T1, T2, T3, T4, R] {
+  @throws(classOf[Exception])
+  def call(t1: T1, t2: T2, t3: T3, t4: T4): R
+
+  final def apply(t1: T1, t2: T2, t3: T3, t4: T4): R = call(t1, t2, t3, t4)
+}

Reply via email to