You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ji...@apache.org on 2019/01/08 05:07:15 UTC

[flink] branch master updated: [FLINK-11161][scala-shell] Fix unable to import java packages in scala-shell.

This is an automated email from the ASF dual-hosted git repository.

jincheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 79f3170  [FLINK-11161][scala-shell] Fix unable to import java packages in scala-shell.
79f3170 is described below

commit 79f317026bcf8f5829ed32f592c91aa2a99a4051
Author: acqua.csq <ac...@alibaba-inc.com>
AuthorDate: Thu Dec 27 14:33:10 2018 +0800

    [FLINK-11161][scala-shell] Fix unable to import java packages in scala-shell.
    
    This closes #7370
---
 .../org/apache/flink/api/scala/FlinkILoop.scala    |  1 -
 .../apache/flink/api/scala/ScalaShellITCase.scala  | 89 ++++++++++++++++++++--
 .../start-script/start-scala-shell.sh              |  2 +-
 3 files changed, 84 insertions(+), 8 deletions(-)

diff --git a/flink-scala-shell/src/main/scala/org/apache/flink/api/scala/FlinkILoop.scala b/flink-scala-shell/src/main/scala/org/apache/flink/api/scala/FlinkILoop.scala
index c124d8e..27db2a3 100644
--- a/flink-scala-shell/src/main/scala/org/apache/flink/api/scala/FlinkILoop.scala
+++ b/flink-scala-shell/src/main/scala/org/apache/flink/api/scala/FlinkILoop.scala
@@ -149,7 +149,6 @@ class FlinkILoop(
     "org.apache.flink.api.scala.utils._",
     "org.apache.flink.streaming.api.scala._",
     "org.apache.flink.streaming.api.windowing.time._",
-    "org.apache.flink.table.api._",
     "org.apache.flink.table.api.scala._",
     "org.apache.flink.types.Row"
   )
diff --git a/flink-scala-shell/src/test/scala/org/apache/flink/api/scala/ScalaShellITCase.scala b/flink-scala-shell/src/test/scala/org/apache/flink/api/scala/ScalaShellITCase.scala
index fc90d8d..8fd94e5 100644
--- a/flink-scala-shell/src/test/scala/org/apache/flink/api/scala/ScalaShellITCase.scala
+++ b/flink-scala-shell/src/test/scala/org/apache/flink/api/scala/ScalaShellITCase.scala
@@ -183,9 +183,9 @@ class ScalaShellITCase extends TestLogger {
         |:q
       """.stripMargin
     val output = processInShell(input)
-    Assert.assertFalse(output.contains("failed"))
-    Assert.assertFalse(output.contains("error"))
-    Assert.assertFalse(output.contains("Exception"))
+    Assert.assertFalse(output.toLowerCase.contains("failed"))
+    Assert.assertFalse(output.toLowerCase.contains("error"))
+    Assert.assertFalse(output.toLowerCase.contains("exception"))
     Assert.assertTrue(output.contains("1,Hi"))
     Assert.assertTrue(output.contains("3,Hello world"))
   }
@@ -218,9 +218,9 @@ class ScalaShellITCase extends TestLogger {
     Assert.assertTrue(output.contains("6,1"))
     Assert.assertTrue(output.contains("1,2"))
     Assert.assertTrue(output.contains("2,1"))
-    Assert.assertFalse(output.contains("failed"))
-    Assert.assertFalse(output.contains("error"))
-    Assert.assertFalse(output.contains("Exception"))
+    Assert.assertFalse(output.toLowerCase.contains("failed"))
+    Assert.assertFalse(output.toLowerCase.contains("error"))
+    Assert.assertFalse(output.toLowerCase.contains("exception"))
   }
 
   /**
@@ -362,6 +362,83 @@ class ScalaShellITCase extends TestLogger {
     Assert.assertFalse(output.contains("ERROR"))
     Assert.assertFalse(output.contains("Exception"))
   }
+
+  @Test
+  def testImportJavaCollection(): Unit = {
+    val input = """
+      import java.util.List
+      val jul: List[Int] = new java.util.ArrayList[Int]()
+      jul.add(2)
+      jul.add(4)
+      jul.add(6)
+      jul.add(8)
+      jul.add(10)
+      val str = "the java list size is: " + jul.size
+    """.stripMargin
+
+    val output = processInShell(input)
+
+    Assert.assertTrue(output.contains("the java list size is: 5"))
+    Assert.assertFalse(output.toLowerCase.contains("failed"))
+    Assert.assertFalse(output.toLowerCase.contains("error"))
+    Assert.assertFalse(output.toLowerCase.contains("exception"))
+
+  }
+
+  @Test
+  def testImplicitConversionBetweenJavaAndScala(): Unit = {
+    val input =
+      """
+        import collection.JavaConversions._
+        import scala.collection.mutable.ArrayBuffer
+        val jul:java.util.List[Int] = ArrayBuffer(1,2,3,4,5)
+        val buf: Seq[Int] = jul
+        var sum = 0
+        buf.foreach(num => sum += num)
+        val str = "sum is: " + sum
+        val scala2jul = List(1,2,3)
+        scala2jul.add(7)
+      """.stripMargin
+
+    val output = processInShell(input)
+
+    Assert.assertTrue(output.contains("sum is: 15"))
+    Assert.assertFalse(output.toLowerCase.contains("failed"))
+    Assert.assertFalse(output.toLowerCase.contains("error"))
+    Assert.assertTrue(output.contains("java.lang.UnsupportedOperationException"))
+  }
+
+  @Test
+  def testImportPackageConflict(): Unit = {
+    val input =
+      """
+        import org.apache.flink.table.api._
+        import java.util.List
+        val jul: List[Int] = new java.util.ArrayList[Int]()
+        jul.add(2)
+        jul.add(4)
+        jul.add(6)
+        jul.add(8)
+        jul.add(10)
+        val str = "the java list size is: " + jul.size
+      """.stripMargin
+
+    val output = processInShell(input)
+    Assert.assertTrue(output.contains("error: object util is not a member of package org.apache." +
+      "flink.table.api.java"))
+  }
+
+  @Test
+  def testGetMultiExecutionEnvironment(): Unit = {
+    val input =
+      """
+        |val newEnv = ExecutionEnvironment.getExecutionEnvironment
+      """.stripMargin
+    val output = processInShell(input)
+    Assert.assertTrue(output.contains("java.lang.UnsupportedOperationException: Execution " +
+      "Environment is already defined for this shell."))
+  }
+
 }
 
 object ScalaShellITCase {
diff --git a/flink-scala-shell/start-script/start-scala-shell.sh b/flink-scala-shell/start-script/start-scala-shell.sh
index e357114..489d50b 100644
--- a/flink-scala-shell/start-script/start-scala-shell.sh
+++ b/flink-scala-shell/start-script/start-scala-shell.sh
@@ -54,7 +54,7 @@ FLINK_CLASSPATH=`constructFlinkClassPath`
 
 # Append flink-table jar into class path
 opt=`dirname "$0"`
-opt=`cd ../"$opt"/opt; pwd`
+opt=`cd "$opt"/../opt; pwd`
 FLINK_TABLE_LIB_PATH=$opt/`ls $opt|grep flink-table_*`
 FLINK_CLASSPATH=$FLINK_CLASSPATH:$FLINK_TABLE_LIB_PATH