parent
43cf95b845
commit
1f36d4657f
|
@ -101,6 +101,16 @@
|
||||||
<artifactId>tomcat-embed-core</artifactId>
|
<artifactId>tomcat-embed-core</artifactId>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.crashub</groupId>
|
||||||
|
<artifactId>crash.shell</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.crashub</groupId>
|
||||||
|
<artifactId>crash.cli</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.crashub</groupId>
|
<groupId>org.crashub</groupId>
|
||||||
<artifactId>crash.embed.spring</artifactId>
|
<artifactId>crash.embed.spring</artifactId>
|
||||||
|
|
|
@ -33,6 +33,7 @@ import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||||
import org.springframework.util.AntPathMatcher;
|
import org.springframework.util.AntPathMatcher;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to match resources for inclusion in a CLI application's jar file
|
* Used to match resources for inclusion in a CLI application's jar file
|
||||||
|
@ -186,8 +187,8 @@ class ResourceMatcher {
|
||||||
}
|
}
|
||||||
|
|
||||||
private MatchedResource(File rootFolder, File file) {
|
private MatchedResource(File rootFolder, File file) {
|
||||||
this.name = file.getAbsolutePath().substring(
|
this.name = StringUtils.cleanPath(file.getAbsolutePath().substring(
|
||||||
rootFolder.getAbsolutePath().length() + 1);
|
rootFolder.getAbsolutePath().length() + 1));
|
||||||
this.file = file;
|
this.file = file;
|
||||||
this.root = false;
|
this.root = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import org.codehaus.groovy.control.CompilerConfiguration;
|
||||||
import org.codehaus.groovy.control.SourceUnit;
|
import org.codehaus.groovy.control.SourceUnit;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.FileCopyUtils;
|
import org.springframework.util.FileCopyUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extension of the {@link GroovyClassLoader} with support for obtaining '.class' files as
|
* Extension of the {@link GroovyClassLoader} with support for obtaining '.class' files as
|
||||||
|
@ -222,6 +223,7 @@ public class ExtendedGroovyClassLoader extends GroovyClassLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isGroovyJar(String entry) {
|
private boolean isGroovyJar(String entry) {
|
||||||
|
entry = StringUtils.cleanPath(entry);
|
||||||
for (String jarPrefix : GROOVY_JARS_PREFIXES) {
|
for (String jarPrefix : GROOVY_JARS_PREFIXES) {
|
||||||
if (entry.contains("/" + jarPrefix + "-")) {
|
if (entry.contains("/" + jarPrefix + "-")) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -26,9 +26,17 @@ import org.eclipse.aether.transfer.TransferResource;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.containsString;
|
||||||
|
import static org.hamcrest.Matchers.endsWith;
|
||||||
|
import static org.hamcrest.Matchers.startsWith;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link DetailedProgressReporter}.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
public final class DetailedProgressReporterTests {
|
public final class DetailedProgressReporterTests {
|
||||||
|
|
||||||
private static final String REPOSITORY = "http://my.repository.com/";
|
private static final String REPOSITORY = "http://my.repository.com/";
|
||||||
|
@ -63,13 +71,13 @@ public final class DetailedProgressReporterTests {
|
||||||
public void downloaded() throws InterruptedException {
|
public void downloaded() throws InterruptedException {
|
||||||
// Ensure some transfer time
|
// Ensure some transfer time
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
|
|
||||||
TransferEvent completedEvent = new TransferEvent.Builder(this.session,
|
TransferEvent completedEvent = new TransferEvent.Builder(this.session,
|
||||||
this.resource).addTransferredBytes(4096).build();
|
this.resource).addTransferredBytes(4096).build();
|
||||||
this.session.getTransferListener().transferSucceeded(completedEvent);
|
this.session.getTransferListener().transferSucceeded(completedEvent);
|
||||||
|
String message = new String(this.baos.toByteArray()).replace("\\", "/");
|
||||||
assertTrue(new String(this.baos.toByteArray()).matches(String.format(
|
assertThat(message, startsWith("Downloaded: " + REPOSITORY + ARTIFACT));
|
||||||
"Downloaded: %s%s \\(4KB at [0-9]+(\\.|,)[0-9]KB/sec\\)\\n", REPOSITORY,
|
assertThat(message, containsString("4KB at"));
|
||||||
ARTIFACT)));
|
assertThat(message, containsString("KB/sec"));
|
||||||
|
assertThat(message, endsWith("\n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ import org.springframework.util.ClassUtils;
|
||||||
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.util.ResourceUtils;
|
import org.springframework.util.ResourceUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An {@link ApplicationListener} that configures a logging framework depending on what it
|
* An {@link ApplicationListener} that configures a logging framework depending on what it
|
||||||
|
@ -147,6 +148,16 @@ public class LoggingApplicationListener implements SmartApplicationListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Logback won't read backslashes so add a clean path for it to use
|
||||||
|
if (!StringUtils.hasLength(System.getProperty("LOG_TEMP"))) {
|
||||||
|
String path = System.getProperty("java.io.tmpdir");
|
||||||
|
path = StringUtils.cleanPath(path);
|
||||||
|
if(path.endsWith("/")) {
|
||||||
|
path = path.substring(0,path.length()-1);
|
||||||
|
}
|
||||||
|
System.setProperty("LOG_TEMP", path);
|
||||||
|
}
|
||||||
|
|
||||||
boolean environmentChanged = false;
|
boolean environmentChanged = false;
|
||||||
for (Map.Entry<String, String> mapping : ENVIRONMENT_SYSTEM_PROPERTY_MAPPING
|
for (Map.Entry<String, String> mapping : ENVIRONMENT_SYSTEM_PROPERTY_MAPPING
|
||||||
.entrySet()) {
|
.entrySet()) {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
<include resource="org/springframework/boot/logging/logback/basic.xml"/>
|
<include resource="org/springframework/boot/logging/logback/basic.xml"/>
|
||||||
|
|
||||||
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${java.io.tmpdir:-/tmp}/}spring.log}"/>
|
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
|
||||||
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex"/>
|
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex"/>
|
||||||
|
|
||||||
<appender name="FILE"
|
<appender name="FILE"
|
||||||
|
|
|
@ -86,7 +86,12 @@ public class LoggingApplicationListenerTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String tmpDir() {
|
private String tmpDir() {
|
||||||
return this.context.getEnvironment().resolvePlaceholders("${java.io.tmpdir}");
|
String path = this.context.getEnvironment().resolvePlaceholders("${java.io.tmpdir}");
|
||||||
|
path = path.replace("\\", "/");
|
||||||
|
if(path.endsWith("/")) {
|
||||||
|
path = path.substring(0, path.length()-1);
|
||||||
|
}
|
||||||
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -61,7 +61,11 @@ public class LogbackLoggingSystemTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String tmpDir() {
|
private String tmpDir() {
|
||||||
return System.getProperty("java.io.tmpdir");
|
String path = StringUtils.cleanPath(System.getProperty("java.io.tmpdir"));
|
||||||
|
if (path.endsWith("/")) {
|
||||||
|
path = path.substring(0, path.length() - 1);
|
||||||
|
}
|
||||||
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${java.io.tmpdir:-/tmp}/}tmp.log}"/>
|
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}tmp.log}"/>
|
||||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
<encoder>
|
<encoder>
|
||||||
<pattern>${LOG_FILE} [%t] ${PID:-????} %c{1}: %m%n</pattern>
|
<pattern>${LOG_FILE} [%t] ${PID:-????} %c{1}: %m%n</pattern>
|
||||||
|
|
Loading…
Reference in New Issue