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:04:30 UTC
[4/4] flink git commit: [FLINK-9743][client] Use correct zip path
separator for nested jars
[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/434bf57c
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/434bf57c
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/434bf57c
Branch: refs/heads/release-1.5
Commit: 434bf57c96c74e5f87b7bc2ec7635392f3a512cb
Parents: 62839e8
Author: snuyanzin <sn...@gmail.com>
Authored: Thu Jul 5 11:58:33 2018 +0300
Committer: zentol <ch...@apache.org>
Committed: Wed Jul 11 09:17:26 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/434bf57c/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 d81cacb..377b277 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
@@ -695,7 +695,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/434bf57c/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 e137ada..355e663 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.cli.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) {}