From 33a81e87d14d495e9c830f6647ea12a9f9848027 Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Fri, 26 Aug 2016 20:20:43 +0800 Subject: [PATCH 1/2] Avoid null handler package in JarFile protocol handler registration Closes gh-6759 --- .../org/springframework/boot/loader/jar/JarFile.java | 2 +- .../boot/loader/jar/JarFileTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java b/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java index ca66f6773b..2d730859e1 100644 --- a/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java +++ b/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java @@ -449,7 +449,7 @@ public class JarFile extends java.util.jar.JarFile implements Iterable Date: Wed, 31 Aug 2016 13:50:26 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Polish=20=E2=80=9CAvoid=20null=20handler=20?= =?UTF-8?q?package=20in=20JarFile=20protocol=20handler=20registration?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See gh-6759 --- .../boot/loader/jar/JarFile.java | 2 +- .../boot/loader/jar/JarFileTests.java | 43 ++++++++++++++++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java b/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java index 2d730859e1..c48f64bf87 100644 --- a/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java +++ b/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarFile.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/jar/JarFileTests.java b/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/jar/JarFileTests.java index 61199d2921..e6723f1342 100644 --- a/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/jar/JarFileTests.java +++ b/spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/jar/JarFileTests.java @@ -43,12 +43,10 @@ import org.springframework.boot.loader.util.AsciiBytes; import org.springframework.util.FileCopyUtils; import org.springframework.util.StreamUtils; -import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.sameInstance; @@ -459,10 +457,41 @@ public class JarFileTests { } @Test - public void registerUrlProtocolHandler() { - JarFile.registerUrlProtocolHandler(); - String protocolHandler = System.getProperty(PROTOCOL_HANDLER); - assertThat(protocolHandler, containsString(HANDLERS_PACKAGE)); - assertThat(protocolHandler, not(containsString("null"))); + public void registerUrlProtocolHandlerWithNoExistingRegistration() { + String original = System.getProperty(PROTOCOL_HANDLER); + try { + System.clearProperty(PROTOCOL_HANDLER); + JarFile.registerUrlProtocolHandler(); + String protocolHandler = System.getProperty(PROTOCOL_HANDLER); + assertThat(protocolHandler, equalTo(HANDLERS_PACKAGE)); + } + finally { + if (original == null) { + System.clearProperty(PROTOCOL_HANDLER); + } + else { + System.setProperty(PROTOCOL_HANDLER, original); + } + } } + + @Test + public void registerUrlProtocolHandlerAddsToExistingRegistration() { + String original = System.getProperty(PROTOCOL_HANDLER); + try { + System.setProperty(PROTOCOL_HANDLER, "com.example"); + JarFile.registerUrlProtocolHandler(); + String protocolHandler = System.getProperty(PROTOCOL_HANDLER); + assertThat(protocolHandler, equalTo("com.example|" + HANDLERS_PACKAGE)); + } + finally { + if (original == null) { + System.clearProperty(PROTOCOL_HANDLER); + } + else { + System.setProperty(PROTOCOL_HANDLER, original); + } + } + } + }