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) {}