parent
9a940702bc
commit
3be5e6cc3e
|
@ -76,7 +76,7 @@ public class Builder {
|
||||||
* @param log a logger used to record output
|
* @param log a logger used to record output
|
||||||
*/
|
*/
|
||||||
public Builder(BuildLog log) {
|
public Builder(BuildLog log) {
|
||||||
this(log, new DockerApi(null, BuildLogDockerLogDelegate.get(log)), null);
|
this(log, new DockerApi(null, BuildLogAdapter.get(log)), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -87,7 +87,7 @@ public class Builder {
|
||||||
*/
|
*/
|
||||||
public Builder(BuildLog log, DockerConfiguration dockerConfiguration) {
|
public Builder(BuildLog log, DockerConfiguration dockerConfiguration) {
|
||||||
this(log, new DockerApi((dockerConfiguration != null) ? dockerConfiguration.getHost() : null,
|
this(log, new DockerApi((dockerConfiguration != null) ? dockerConfiguration.getHost() : null,
|
||||||
BuildLogDockerLogDelegate.get(log)), dockerConfiguration);
|
BuildLogAdapter.get(log)), dockerConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
Builder(BuildLog log, DockerApi docker, DockerConfiguration dockerConfiguration) {
|
Builder(BuildLog log, DockerApi docker, DockerConfiguration dockerConfiguration) {
|
||||||
|
@ -264,14 +264,13 @@ public class Builder {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link DockerLog} implementation that delegates logging to a provided
|
* A {@link DockerLog} implementation that adapts to an {@link AbstractBuildLog}.
|
||||||
* {@link AbstractBuildLog}.
|
|
||||||
*/
|
*/
|
||||||
static final class BuildLogDockerLogDelegate implements DockerLog {
|
static final class BuildLogAdapter implements DockerLog {
|
||||||
|
|
||||||
private final AbstractBuildLog log;
|
private final AbstractBuildLog log;
|
||||||
|
|
||||||
private BuildLogDockerLogDelegate(AbstractBuildLog log) {
|
private BuildLogAdapter(AbstractBuildLog log) {
|
||||||
this.log = log;
|
this.log = log;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,14 +283,14 @@ public class Builder {
|
||||||
* Creates{@link DockerLog} instance based on the provided {@link BuildLog}.
|
* Creates{@link DockerLog} instance based on the provided {@link BuildLog}.
|
||||||
* <p>
|
* <p>
|
||||||
* If the provided {@link BuildLog} instance is an {@link AbstractBuildLog}, the
|
* If the provided {@link BuildLog} instance is an {@link AbstractBuildLog}, the
|
||||||
* method returns a {@link BuildLogDockerLogDelegate}, otherwise it returns a
|
* method returns a {@link BuildLogAdapter}, otherwise it returns a default
|
||||||
* default {@link DockerLog#toSystemOut()}.
|
* {@link DockerLog#toSystemOut()}.
|
||||||
* @param log the {@link BuildLog} instance to delegate
|
* @param log the {@link BuildLog} instance to delegate
|
||||||
* @return a {@link DockerLog} instance for logging
|
* @return a {@link DockerLog} instance for logging
|
||||||
*/
|
*/
|
||||||
static DockerLog get(BuildLog log) {
|
static DockerLog get(BuildLog log) {
|
||||||
if (log instanceof AbstractBuildLog) {
|
if (log instanceof AbstractBuildLog abstractBuildLog) {
|
||||||
return new BuildLogDockerLogDelegate(((AbstractBuildLog) log));
|
return new BuildLogAdapter(abstractBuildLog);
|
||||||
}
|
}
|
||||||
return DockerLog.toSystemOut();
|
return DockerLog.toSystemOut();
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ public interface DockerLog {
|
||||||
* @return {@link DockerLog} instance that logs to the given print stream
|
* @return {@link DockerLog} instance that logs to the given print stream
|
||||||
*/
|
*/
|
||||||
static DockerLog to(PrintStream out) {
|
static DockerLog to(PrintStream out) {
|
||||||
return new PrintStreamDockerLog(out);
|
return out::println;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2012-2025 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.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.springframework.boot.buildpack.platform.docker;
|
|
||||||
|
|
||||||
import java.io.PrintStream;
|
|
||||||
|
|
||||||
import org.springframework.util.Assert;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link DockerLog} implementation that prints output to a {@link PrintStream}.
|
|
||||||
*
|
|
||||||
* @author Dmytro Nosan
|
|
||||||
*/
|
|
||||||
class PrintStreamDockerLog implements DockerLog {
|
|
||||||
|
|
||||||
private final PrintStream stream;
|
|
||||||
|
|
||||||
PrintStreamDockerLog(PrintStream stream) {
|
|
||||||
Assert.notNull(stream, "'stream' must not be null");
|
|
||||||
this.stream = stream;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void log(String message) {
|
|
||||||
this.stream.println(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
|
|
||||||
import org.springframework.boot.buildpack.platform.build.Builder.BuildLogDockerLogDelegate;
|
import org.springframework.boot.buildpack.platform.build.Builder.BuildLogAdapter;
|
||||||
import org.springframework.boot.buildpack.platform.docker.DockerApi;
|
import org.springframework.boot.buildpack.platform.docker.DockerApi;
|
||||||
import org.springframework.boot.buildpack.platform.docker.DockerApi.ContainerApi;
|
import org.springframework.boot.buildpack.platform.docker.DockerApi.ContainerApi;
|
||||||
import org.springframework.boot.buildpack.platform.docker.DockerApi.ImageApi;
|
import org.springframework.boot.buildpack.platform.docker.DockerApi.ImageApi;
|
||||||
|
@ -84,7 +84,7 @@ class BuilderTests {
|
||||||
assertThat(builder).extracting("docker")
|
assertThat(builder).extracting("docker")
|
||||||
.extracting("system")
|
.extracting("system")
|
||||||
.extracting("log")
|
.extracting("log")
|
||||||
.isInstanceOf(BuildLogDockerLogDelegate.class);
|
.isInstanceOf(BuildLogAdapter.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2012-2025 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.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.springframework.boot.buildpack.platform.docker;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.PrintStream;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests for {@link PrintStreamDockerLog}.
|
|
||||||
*
|
|
||||||
* @author Dmytro Nosan
|
|
||||||
*/
|
|
||||||
class PrintStreamDockerLogTests {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void printsExpectedOutput() {
|
|
||||||
TestPrintStream stream = new TestPrintStream();
|
|
||||||
PrintStreamDockerLog logger = new PrintStreamDockerLog(stream);
|
|
||||||
logger.log("Some message");
|
|
||||||
logger.log("Some message1");
|
|
||||||
assertThat(stream.toString()).isEqualTo(String.format("Some message%nSome message1%n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
static class TestPrintStream extends PrintStream {
|
|
||||||
|
|
||||||
TestPrintStream() {
|
|
||||||
super(new ByteArrayOutputStream());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return this.out.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue