Skip to content

Commit

Permalink
Merge branch '2.3.x' into 2.4.x
Browse files Browse the repository at this point in the history
Closes gh-24657
  • Loading branch information
philwebb committed Jan 6, 2021
2 parents ab80803 + 7825921 commit c9f9246
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 24 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 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 @@ -207,18 +207,6 @@ private String getActualPortsDescription() {
return ports.toString();
}

private Integer getLocalPort(Connector connector) {
try {
// Jetty 9 internals are different, but the method name is the same
return (Integer) ReflectionUtils
.invokeMethod(ReflectionUtils.findMethod(connector.getClass(), "getLocalPort"), connector);
}
catch (Exception ex) {
logger.info("could not determine port ( " + ex.getMessage() + ")");
return 0;
}
}

private String getProtocols(Connector connector) {
List<String> protocols = connector.getProtocols();
return " (" + StringUtils.collectionToDelimitedString(protocols, ", ") + ")";
Expand Down Expand Up @@ -276,8 +264,29 @@ public void stop() {
public int getPort() {
Connector[] connectors = this.server.getConnectors();
for (Connector connector : connectors) {
// Probably only one...
return getLocalPort(connector);
Integer localPort = getLocalPort(connector);
if (localPort != null && localPort > 0) {
return localPort;
}
}
return -1;
}

private Integer getLocalPort(Connector connector) {
try {
if (connector instanceof NetworkConnector) {
return ((NetworkConnector) connector).getLocalPort();
}
}
catch (Exception ex) {
}
try {
// Jetty 9 internals are different, but the method name is the same
return (Integer) ReflectionUtils
.invokeMethod(ReflectionUtils.findMethod(connector.getClass(), "getLocalPort"), connector);
}
catch (Exception ex) {
logger.info("could not determine port ( " + ex.getMessage() + ")");
}
return 0;
}
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 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 @@ -217,7 +217,7 @@ public int getPort() {
return -1;
}
}
return 0;
return -1;
}

}
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 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 @@ -364,7 +364,7 @@ public int getPort() {
if (connector != null) {
return connector.getLocalPort();
}
return 0;
return -1;
}

private String getContextPath() {
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 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 @@ -295,7 +295,7 @@ public void stop() throws WebServerException {
public int getPort() {
List<Port> ports = getActualPorts();
if (ports.isEmpty()) {
return 0;
return -1;
}
return ports.get(0).getNumber();
}
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 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 @@ -115,6 +115,16 @@ void specificPort() throws Exception {
assertThat(this.webServer.getPort()).isEqualTo(specificPort);
}

@Test
void portIsMinusOneWhenConnectionIsClosed() {
AbstractReactiveWebServerFactory factory = getFactory();
this.webServer = factory.getWebServer(new EchoHandler());
this.webServer.start();
assertThat(this.webServer.getPort()).isGreaterThan(0);
this.webServer.stop();
assertThat(this.webServer.getPort()).isEqualTo(-1);
}

@Test
void basicSslFromClassPath() {
testBasicSslWithKeyStore("classpath:test.jks", "password");
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 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 @@ -250,7 +250,7 @@ void emptyServerWhenPortIsMinusOne() {
factory.setPort(-1);
this.webServer = factory.getWebServer(exampleServletRegistration());
this.webServer.start();
assertThat(this.webServer.getPort()).isLessThan(0); // Jetty is -2
assertThat(this.webServer.getPort()).isEqualTo(-1);
}

@Test
Expand Down Expand Up @@ -300,6 +300,16 @@ void loadOnStartAfterContextIsInitialized() {
assertThat(servlet.getInitCount()).isEqualTo(1);
}

@Test
void portIsMinusOneWhenConnectionIsClosed() {
AbstractServletWebServerFactory factory = getFactory();
this.webServer = factory.getWebServer();
this.webServer.start();
assertThat(this.webServer.getPort()).isGreaterThan(0);
this.webServer.stop();
assertThat(this.webServer.getPort()).isEqualTo(-1);
}

@Test
void specificPort() throws Exception {
AbstractServletWebServerFactory factory = getFactory();
Expand Down

0 comments on commit c9f9246

Please sign in to comment.