Skip to content

Commit

Permalink
Include cause when throwing PortInUseException
Browse files Browse the repository at this point in the history
Update classes that throw `PortInUseException` so that they also
include the cause. Prior to this commit the cause was not included
which could make diagnosing the real cause difficult.

See gh-19807
  • Loading branch information
philwebb committed Apr 21, 2020
1 parent 85befdf commit c761111
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ public void start() throws WebServerException {
}
catch (IOException ex) {
if (connector instanceof NetworkConnector && findBindException(ex) != null) {
throw new PortInUseException(((NetworkConnector) connector).getPort());
throw new PortInUseException(((NetworkConnector) connector).getPort(), ex);
}
throw ex;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 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.
Expand Down Expand Up @@ -69,7 +69,7 @@ public void start() throws WebServerException {
catch (Exception ex) {
ChannelBindException bindException = findBindException(ex);
if (bindException != null) {
throw new PortInUseException(bindException.localPort());
throw new PortInUseException(bindException.localPort(), ex);
}
throw new WebServerException("Unable to start Netty", ex);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 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.
Expand Down Expand Up @@ -151,7 +151,7 @@ public void start() throws WebServerException {
List<Port> actualPorts = getActualPorts();
failedPorts.removeAll(actualPorts);
if (failedPorts.size() == 1) {
throw new PortInUseException(failedPorts.iterator().next().getNumber());
throw new PortInUseException(failedPorts.iterator().next().getNumber(), ex);
}
}
throw new WebServerException("Unable to start embedded Undertow", ex);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 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.
Expand Down Expand Up @@ -109,7 +109,7 @@ public void start() throws WebServerException {
List<UndertowWebServer.Port> actualPorts = getActualPorts();
failedPorts.removeAll(actualPorts);
if (failedPorts.size() == 1) {
throw new PortInUseException(failedPorts.iterator().next().getNumber());
throw new PortInUseException(failedPorts.iterator().next().getNumber(), ex);
}
}
throw new WebServerException("Unable to start embedded Undertow", ex);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 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.
Expand Down Expand Up @@ -32,7 +32,16 @@ public class PortInUseException extends WebServerException {
* @param port the port that was in use
*/
public PortInUseException(int port) {
super("Port " + port + " is already in use", null);
this(port, null);
}

/**
* Creates a new port in use exception for the given {@code port}.
* @param port the port that was in use
* @param cause the cause of the exception
*/
public PortInUseException(int port, Throwable cause) {
super("Port " + port + " is already in use", cause);
this.port = port;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public void exceptionIsThrownWhenPortIsAlreadyInUse() {
this.webServer.start();
factory.setPort(this.webServer.getPort());
assertThatExceptionOfType(PortInUseException.class).isThrownBy(factory.getWebServer(new EchoHandler())::start)
.satisfies(this::portMatchesRequirement);
.satisfies(this::portMatchesRequirement).withCauseInstanceOf(Throwable.class);
}

private void portMatchesRequirement(PortInUseException exception) {
Expand Down

0 comments on commit c761111

Please sign in to comment.