You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2018/07/11 10:03:54 UTC

flink git commit: [FLINK-9743][client] Use correct zip path separator for nested jars

Repository: flink
Updated Branches:
  refs/heads/release-1.4 5380ad3a3 -> 1a852ecfe


[FLINK-9743][client] Use correct zip path separator for nested jars

This closes #6263.


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/1a852ecf
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/1a852ecf
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/1a852ecf

Branch: refs/heads/release-1.4
Commit: 1a852ecfeb077a5bee6ccb4f7af7ac1303421742
Parents: 5380ad3
Author: snuyanzin <sn...@gmail.com>
Authored: Thu Jul 5 11:58:33 2018 +0300
Committer: zentol <ch...@apache.org>
Committed: Tue Jul 10 21:05:58 2018 +0200

----------------------------------------------------------------------
 .../flink/client/program/PackagedProgram.java   |  4 ++-
 .../client/program/PackagedProgramTest.java     | 28 ++++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/1a852ecf/flink-clients/src/main/java/org/apache/flink/client/program/PackagedProgram.java
----------------------------------------------------------------------
diff --git a/flink-clients/src/main/java/org/apache/flink/client/program/PackagedProgram.java b/flink-clients/src/main/java/org/apache/flink/client/program/PackagedProgram.java
index 35bb04f..8d2c248 100644
--- a/flink-clients/src/main/java/org/apache/flink/client/program/PackagedProgram.java
+++ b/flink-clients/src/main/java/org/apache/flink/client/program/PackagedProgram.java
@@ -692,7 +692,9 @@ public class PackagedProgram {
 					for (int i = 0; i < containedJarFileEntries.size(); i++) {
 						final JarEntry entry = containedJarFileEntries.get(i);
 						String name = entry.getName();
-						name = name.replace(File.separatorChar, '_');
+						// '/' as in case of zip, jar
+						// java.util.zip.ZipEntry#isDirectory always looks only for '/' not for File.separator
+						name = name.replace('/', '_');
 
 						File tempFile;
 						try {

http://git-wip-us.apache.org/repos/asf/flink/blob/1a852ecf/flink-clients/src/test/java/org/apache/flink/client/program/PackagedProgramTest.java
----------------------------------------------------------------------
diff --git a/flink-clients/src/test/java/org/apache/flink/client/program/PackagedProgramTest.java b/flink-clients/src/test/java/org/apache/flink/client/program/PackagedProgramTest.java
index e68d1dc..fdbaefa 100644
--- a/flink-clients/src/test/java/org/apache/flink/client/program/PackagedProgramTest.java
+++ b/flink-clients/src/test/java/org/apache/flink/client/program/PackagedProgramTest.java
@@ -19,18 +19,29 @@
 package org.apache.flink.client.program;
 
 import org.apache.flink.client.CliFrontendTestUtils;
+import org.apache.flink.configuration.ConfigConstants;
 
 import org.junit.Assert;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.PrintStream;
+import java.nio.file.Files;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
 /**
  * Tests for the {@link PackagedProgramTest}.
  */
 public class PackagedProgramTest {
 
+	@Rule
+	public final TemporaryFolder temporaryFolder = new TemporaryFolder();
+
 	@Test
 	public void testGetPreviewPlan() {
 		try {
@@ -56,6 +67,23 @@ public class PackagedProgramTest {
 		}
 	}
 
+	@Test
+	public void testExtractContainedLibraries() throws Exception {
+		String s = "testExtractContainedLibraries";
+		byte[] nestedJarContent = s.getBytes(ConfigConstants.DEFAULT_CHARSET);
+		File fakeJar = temporaryFolder.newFile("test.jar");
+		try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(fakeJar))) {
+			ZipEntry entry = new ZipEntry("lib/internalTest.jar");
+			zos.putNextEntry(entry);
+			zos.write(nestedJarContent);
+			zos.closeEntry();
+		}
+
+		final List<File> files = PackagedProgram.extractContainedLibraries(fakeJar.toURI().toURL());
+		Assert.assertEquals(1, files.size());
+		Assert.assertArrayEquals(nestedJarContent, Files.readAllBytes(files.iterator().next().toPath()));
+	}
+
 	private static final class NullOutputStream extends java.io.OutputStream {
 		@Override
 		public void write(int b) {}