You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/02/25 19:20:34 UTC
incubator-juneau git commit: Allow REST microservices to try
alternate ports when port is in use.
Repository: incubator-juneau
Updated Branches:
refs/heads/master 0af286e95 -> 053b7c9ad
Allow REST microservices to try alternate ports when port is in use.
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/053b7c9a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/053b7c9a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/053b7c9a
Branch: refs/heads/master
Commit: 053b7c9adf9ce4a9d63a3efa3a87b97102d6d561
Parents: 0af286e
Author: JamesBognar <ja...@apache.org>
Authored: Sat Feb 25 14:20:27 2017 -0500
Committer: JamesBognar <ja...@apache.org>
Committed: Sat Feb 25 14:20:27 2017 -0500
----------------------------------------------------------------------
juneau-core/src/main/javadoc/overview.html | 19 +++-
juneau-examples-rest/examples.cfg | 5 +-
.../apache/juneau/examples/rest/Constants.java | 28 -----
.../juneau/examples/rest/RootResourcesTest.java | 4 +-
.../juneau/examples/rest/SamplesRestClient.java | 8 +-
.../juneau/examples/rest/TestMicroservice.java | 19 +++-
.../juneau/microservice/RestMicroservice.java | 104 ++++++++++++++++++-
.../apache/juneau/rest/client/RestClient.java | 10 +-
.../org/apache/juneau/rest/client/package.html | 2 +-
juneau-rest-test/juneau-rest-test.cfg | 5 +-
.../org/apache/juneau/rest/test/Constants.java | 53 ----------
.../juneau/rest/test/TestMicroservice.java | 16 ++-
.../apache/juneau/rest/test/TestRestClient.java | 8 +-
.../org/apache/juneau/rest/test/UrisTest.java | 24 ++---
14 files changed, 183 insertions(+), 122 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-core/src/main/javadoc/overview.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/javadoc/overview.html b/juneau-core/src/main/javadoc/overview.html
index c0c92ff..d1d3b4a 100644
--- a/juneau-core/src/main/javadoc/overview.html
+++ b/juneau-core/src/main/javadoc/overview.html
@@ -5667,6 +5667,23 @@
<li>Whitespace wasn't being ignored in some cases.
</ul>
</ul>
+
+ <h6 class='topic'>org.apache.juneau.rest.client</h6>
+ <ul class='spaced-list'>
+ <li>{@link org.apache.juneau.rest.client.RestClient#setRootUrl(Object)} can now take in <code>URI</code> and <code>URL</code> objects.
+ </ul>
+
+ <h6 class='topic'>org.apache.juneau.microservice</h6>
+ <ul class='spaced-list'>
+ <li><js>"REST/port"</js> configuration setting can now be a comma-limited list of port numbers to try.
+ <br>You can also specify one or more <code>0</code>s to try a random port.
+ <li>Methods added to {@link org.apache.juneau.microservice.RestMicroservice} class:
+ <ul>
+ <li>{@link org.apache.juneau.microservice.RestMicroservice#getPort()}
+ <li>{@link org.apache.juneau.microservice.RestMicroservice#getURI()}
+ <li>Override methods added from {@link org.apache.juneau.microservice.Microservice} class for easier method chaining.
+ </ul>
+ </ul>
</div>
@@ -6393,7 +6410,7 @@
<ul>
<li>{@link org.apache.juneau.rest.client.RestClient#setBasicAuth(String,int,String,String)}
<li>{@link org.apache.juneau.rest.client.RestClient#logTo(Level,Logger)}
- <li>{@link org.apache.juneau.rest.client.RestClient#setRootUrl(String)}
+ <li><code><del>RestClient.setRootUrl(String)</del></code>
<li>{@link org.apache.juneau.rest.client.RestClient#enableSSL(SSLOpts)}
<li>{@link org.apache.juneau.rest.client.RestClient#enableLaxSSL()}
<li>{@link org.apache.juneau.rest.client.RestClient#doCall(HttpMethod,Object,Object)}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-examples-rest/examples.cfg
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/examples.cfg b/juneau-examples-rest/examples.cfg
index bee6b91..6b221b6 100755
--- a/juneau-examples-rest/examples.cfg
+++ b/juneau-examples-rest/examples.cfg
@@ -23,7 +23,10 @@
resources = org.apache.juneau.examples.rest.RootResources
-port = 10000
+# Ports to try.
+# 0 means try a random port.
+# 3 0's means try 3 random ports.
+port = 10000, 0, 0, 0
# Authentication: NONE, BASIC.
authType = NONE
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/Constants.java
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/Constants.java b/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/Constants.java
deleted file mode 100644
index 48cea08..0000000
--- a/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/Constants.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// ***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
-// * to you 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 *
-// * *
-// * http://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.apache.juneau.examples.rest;
-
-public class Constants {
-
- private static String juneauSampleUrl = System.getProperty("JUNO_SAMPLE_URL");
-
- /**
- * Returns the value of the "JUNO_SAMPLE_URL" system property, or throws a {@link RuntimeException}
- * if it's not set.
- */
- public static String getSampleUrl() {
- if (juneauSampleUrl == null)
- return "http://localhost:10000";
- return juneauSampleUrl;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java b/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
index b3c7c98..0133292 100644
--- a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
+++ b/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/RootResourcesTest.java
@@ -14,8 +14,6 @@ package org.apache.juneau.examples.rest;
import static org.junit.Assert.*;
-import java.net.*;
-
import org.apache.juneau.*;
import org.apache.juneau.dto.swagger.*;
import org.apache.juneau.html.*;
@@ -27,7 +25,7 @@ import org.junit.*;
public class RootResourcesTest extends RestTestcase {
- private static String path = URI.create(Constants.getSampleUrl()).getPath(); // /jazz/juneau/sample
+ private static String path = TestMicroservice.getURI().getPath(); // /jazz/juneau/sample
private static boolean debug = false;
private static RestClient jsonClient;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/SamplesRestClient.java
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/SamplesRestClient.java b/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/SamplesRestClient.java
index 13083d7..b3abd2b 100644
--- a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/SamplesRestClient.java
+++ b/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/SamplesRestClient.java
@@ -29,21 +29,21 @@ public class SamplesRestClient extends RestClient {
public SamplesRestClient(Class<? extends Serializer> s, Class<? extends Parser> p) throws InstantiationException {
super(s,p);
- setRootUrl(Constants.getSampleUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public SamplesRestClient(Serializer s, Parser p) {
super(s,p);
- setRootUrl(Constants.getSampleUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public SamplesRestClient() {
- setRootUrl(Constants.getSampleUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public SamplesRestClient(CloseableHttpClient c) {
super(c);
- setRootUrl(Constants.getSampleUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public static SSLConnectionSocketFactory getSSLSocketFactory() throws Exception {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/TestMicroservice.java
----------------------------------------------------------------------
diff --git a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/TestMicroservice.java b/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/TestMicroservice.java
index 8cedc99..c7877d7 100644
--- a/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/TestMicroservice.java
+++ b/juneau-examples-rest/src/test/java/org/apache/juneau/examples/rest/TestMicroservice.java
@@ -12,16 +12,21 @@
// ***************************************************************************************************************************
package org.apache.juneau.examples.rest;
+import java.net.*;
import java.util.*;
import org.apache.juneau.microservice.*;
/**
* Utility class for starting up the examples microservice.
+ * <p>
+ * This class is NOT thread safe.
+ *
* @author james.bognar
*/
public class TestMicroservice {
- static Microservice microservice;
+ static RestMicroservice microservice;
+ static URI microserviceURI;
/**
* Starts the microservice.
@@ -34,7 +39,7 @@ public class TestMicroservice {
try {
Locale.setDefault(Locale.US);
microservice = new RestMicroservice().setConfig("examples.cfg", false);
- microservice.start();
+ microserviceURI = microservice.start().getURI();
return true;
} catch (Throwable e) {
// Probably already started.
@@ -44,6 +49,16 @@ public class TestMicroservice {
}
/**
+ * Returns the URI of the microservice.
+ * @return The URI of the microservice.
+ */
+ public static URI getURI() {
+ if (microservice == null)
+ startMicroservice();
+ return microserviceURI;
+ }
+
+ /**
* Stops the microservice.
*/
public static void stopMicroservice() {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
----------------------------------------------------------------------
diff --git a/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java b/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
index 36cef4e..56e9789 100755
--- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
+++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/RestMicroservice.java
@@ -13,7 +13,9 @@
package org.apache.juneau.microservice;
import java.io.*;
+import java.net.*;
import java.util.*;
+import java.util.jar.*;
import java.util.logging.*;
import javax.servlet.*;
@@ -69,6 +71,7 @@ public class RestMicroservice extends Microservice {
Server server;
int port;
+ String contextPath;
Logger logger;
/**
@@ -143,6 +146,32 @@ public class RestMicroservice extends Microservice {
//--------------------------------------------------------------------------------
// RestMicroservice API methods.
//--------------------------------------------------------------------------------
+
+ /**
+ * Returns the port that this microservice started up on.
+ * @return The port that this microservice started up on.
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * Returns the URI where this microservice is listening on.
+ * @return The URI where this microservice is listening on.
+ */
+ public URI getURI() {
+ String scheme = getConfig().getBoolean("REST/useSsl") ? "https" : "http";
+ String hostname = "localhost";
+ String ctx = "/".equals(contextPath) ? null : contextPath;
+ try {
+ hostname = InetAddress.getLocalHost().getHostName();
+ } catch (UnknownHostException e) {}
+ try {
+ return new URI(scheme, null, hostname, port, ctx, null, null);
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
/**
* Initialize the logging for this microservice.
@@ -259,12 +288,14 @@ public class RestMicroservice extends Microservice {
* <cs>[REST]</cs>
*
* <cc># The HTTP port number to use.
- * # Default is Rest-Port setting in manifest file, or 8000.</cc>
+ * # Default is Rest-Port setting in manifest file, or 8000.
+ * # Can also specify a comma-delimited lists of ports to try, including 0 meaning
+ * # try a random port.</cc>
* <ck>port</ck> = 10000
*
* <cc># The context root of the Jetty server.
* # Default is Rest-ContextPath in manifest file, or "/".</cc>
- * <ck>contextPath</ck> = 10000
+ * <ck>contextPath</ck> =
*
* <cc># Authentication: NONE, BASIC.
* # Default is Rest-AuthType in manifest file, or NONE.</cc>
@@ -306,9 +337,16 @@ public class RestMicroservice extends Microservice {
ConfigFile cf = getConfig();
ObjectMap mf = getManifest();
+
+ int[] ports = cf.getObject(int[].class, "REST/port", mf.get(int[].class, "Rest-Port", new int[]{8000}));
- port = cf.getInt("REST/port", mf.getInt("Rest-Port", 8000));
- String contextPath = cf.getString("REST/contextPath", mf.getString("Rest-ContextPath", "/"));
+ port = findOpenPort(ports);
+ if (port == 0) {
+ System.err.println("Open port not found. Tried " + JsonSerializer.DEFAULT_LAX.toString(ports));
+ System.exit(1);
+ }
+
+ contextPath = cf.getString("REST/contextPath", mf.getString("Rest-ContextPath", "/"));
if (cf.getBoolean("REST/useSsl")) {
@@ -354,19 +392,35 @@ public class RestMicroservice extends Microservice {
return server;
}
+
+ private int findOpenPort(int[] ports) {
+ for (int port : ports) {
+ try {
+ // If port is 0, try a random port between ports[0] and 32767.
+ if (port == 0)
+ port = new Random().nextInt(32767 - ports[0] + 1) + ports[0];
+ ServerSocket ss = new ServerSocket(port);
+ ss.close();
+ return port;
+ } catch (IOException e) {}
+ }
+ return 0;
+ }
/**
* Method used to start the Jetty server created by {@link #createServer()}.
* <p>
* Subclasses can override this method to customize server startup.
*
+ * @return The port that this server started on.
* @throws Exception
*/
- protected void startServer() throws Exception {
+ protected int startServer() throws Exception {
onStartServer();
server.start();
logger.warning("Server started on port " + port);
onPostStartServer();
+ return port;
}
/**
@@ -527,6 +581,46 @@ public class RestMicroservice extends Microservice {
//--------------------------------------------------------------------------------
+ // Overridden methods.
+ //--------------------------------------------------------------------------------
+
+ @Override /* Microservice */
+ public RestMicroservice setConfig(String cfPath, boolean create) throws IOException {
+ super.setConfig(cfPath, create);
+ return this;
+ }
+
+ @Override /* Microservice */
+ public RestMicroservice setConfig(ConfigFile cf) {
+ super.setConfig(cf);
+ return this;
+ }
+
+ @Override /* Microservice */
+ public RestMicroservice setManifest(Manifest mf) {
+ super.setManifest(mf);
+ return this;
+ }
+
+ @Override /* Microservice */
+ public RestMicroservice setManifestContents(String...contents) throws IOException {
+ super.setManifestContents(contents);
+ return this;
+ }
+
+ @Override /* Microservice */
+ public RestMicroservice setManifest(File f) throws IOException {
+ super.setManifest(f);
+ return this;
+ }
+
+ @Override /* Microservice */
+ public RestMicroservice setManifest(Class<?> c) throws IOException {
+ super.setManifest(c);
+ return this;
+ }
+
+ //--------------------------------------------------------------------------------
// Other methods.
//--------------------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index de99eb0..6f175cc 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -532,12 +532,14 @@ public class RestClient extends CoreApi {
* This root URL is ignored on those methods if you pass in a {@link URL}, {@link URI}, or an absolute URL string.
*
* @param rootUrl The root URL to prefix to relative URL strings. Trailing slashes are trimmed.
+ * Usually a <code>String<code> but you can also pass in <code>URI</code> and <code>URL</code> objects as well.
* @return This object (for method chaining).
*/
- public RestClient setRootUrl(String rootUrl) {
- if (rootUrl.endsWith("/"))
- rootUrl = rootUrl.replaceAll("\\/$", "");
- this.rootUrl = rootUrl;
+ public RestClient setRootUrl(Object rootUrl) {
+ String s = rootUrl.toString();
+ if (s.endsWith("/"))
+ s = s.replaceAll("\\/$", "");
+ this.rootUrl = s;
return this;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/package.html
----------------------------------------------------------------------
diff --git a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/package.html b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/package.html
index 7e9ee45..55797bb 100644
--- a/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/package.html
+++ b/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/package.html
@@ -818,7 +818,7 @@
<h3 class='topic' onclick='toggle(this)'>1.8 - Other Useful Methods</h3>
<div class='topic'>
<p>
- The {@link org.apache.juneau.rest.client.RestClient#setRootUrl(String)} method can be used to specify a root URL on
+ The {@link org.apache.juneau.rest.client.RestClient#setRootUrl(Object)} method can be used to specify a root URL on
all requests so that you don't have to use absolute paths on individual calls.
</p>
<p class='bcode'>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-test/juneau-rest-test.cfg
----------------------------------------------------------------------
diff --git a/juneau-rest-test/juneau-rest-test.cfg b/juneau-rest-test/juneau-rest-test.cfg
index 6d15a17..ff6d323 100644
--- a/juneau-rest-test/juneau-rest-test.cfg
+++ b/juneau-rest-test/juneau-rest-test.cfg
@@ -23,7 +23,10 @@
resources = org.apache.juneau.rest.test.Root
-port = 10001
+# Ports to try.
+# 0 means try a random port.
+# 3 0's means try 3 random ports.
+port = 10001, 0, 0, 0
# Authentication: NONE, BASIC.
authType = NONE
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/Constants.java
----------------------------------------------------------------------
diff --git a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/Constants.java b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/Constants.java
deleted file mode 100644
index a996b3b..0000000
--- a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/Constants.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// ***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
-// * to you 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 *
-// * *
-// * http://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.apache.juneau.rest.test;
-
-import java.net.*;
-
-
-public class Constants extends RestTestcase {
-
- private static String juneauSampleUrl = System.getProperty("JUNO_SAMPLE_URL", "http://localhost:10000");
- private static URI juneauSampleUri = (juneauSampleUrl == null ? null : URI.create(juneauSampleUrl));
-
- /**
- * Returns the value of the "JUNO_SAMPLE_URL" system property, or throws a {@link RuntimeException}
- * if it's not set.
- */
- public static String getJuneauSamplesUrl() {
- if (juneauSampleUrl == null)
- throw new RuntimeException("'JUNO_SAMPLE_URL' system property not set to URL of juneau.sample.war location.");
- return juneauSampleUrl;
- }
-
- public static URI getJuneauSamplesUri() {
- if (juneauSampleUri == null)
- throw new RuntimeException("'JUNO_SAMPLE_URL' system property not set to URL of juneau.sample.war location.");
- return juneauSampleUri;
- }
-
- private static String juneauServerTestUrl = System.getProperty("JUNO_SERVER_TEST_URL", "http://localhost:10001");
- private static URI juneauServerTestUri = (juneauServerTestUrl == null ? null : URI.create(juneauServerTestUrl));
-
- public static String getServerTestUrl() {
- if (juneauServerTestUrl == null)
- throw new RuntimeException("'JUNO_SERVER_TEST_URL' system property not set to URL of juneau.sample.war location.");
- return juneauServerTestUrl;
- }
-
- public static URI getServerTestUri() {
- if (juneauServerTestUri == null)
- throw new RuntimeException("'JUNO_SERVER_TEST_URL' system property not set to URL of juneau.sample.war location.");
- return juneauServerTestUri;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
----------------------------------------------------------------------
diff --git a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
index d7d45d9..84df9ec 100644
--- a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
+++ b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
@@ -12,6 +12,7 @@
// ***************************************************************************************************************************
package org.apache.juneau.rest.test;
+import java.net.*;
import java.util.*;
import org.apache.juneau.microservice.*;
@@ -21,7 +22,8 @@ import org.apache.juneau.microservice.*;
* @author james.bognar
*/
public class TestMicroservice {
- static Microservice microservice;
+ static RestMicroservice microservice;
+ static URI microserviceURI;
/**
* Starts the microservice.
@@ -38,7 +40,7 @@ public class TestMicroservice {
.setManifestContents(
"Test-Entry: test-value"
);
- microservice.start();
+ microserviceURI = microservice.start().getURI();
return true;
} catch (Throwable e) {
System.err.println(e); // NOT DEBUG
@@ -47,6 +49,16 @@ public class TestMicroservice {
}
/**
+ * Returns the URI of the microservice.
+ * @return The URI of the microservice.
+ */
+ public static URI getURI() {
+ if (microservice == null)
+ startMicroservice();
+ return microserviceURI;
+ }
+
+ /**
* Stops the microservice.
*/
public static void stopMicroservice() {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestRestClient.java
----------------------------------------------------------------------
diff --git a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestRestClient.java b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestRestClient.java
index 642d85d..05c491c 100644
--- a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestRestClient.java
+++ b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/TestRestClient.java
@@ -29,21 +29,21 @@ class TestRestClient extends RestClient {
public TestRestClient(Class<? extends Serializer> s, Class<? extends Parser> p) throws InstantiationException {
super(s,p);
- setRootUrl(Constants.getServerTestUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public TestRestClient(Serializer s, Parser p) {
super(s,p);
- setRootUrl(Constants.getServerTestUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public TestRestClient() {
- setRootUrl(Constants.getServerTestUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public TestRestClient(CloseableHttpClient c) {
super(c);
- setRootUrl(Constants.getServerTestUrl());
+ setRootUrl(TestMicroservice.getURI());
}
public static SSLConnectionSocketFactory getSSLSocketFactory() throws Exception {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/053b7c9a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/UrisTest.java
----------------------------------------------------------------------
diff --git a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/UrisTest.java b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/UrisTest.java
index 42ed4ab..57b929c 100644
--- a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/UrisTest.java
+++ b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/UrisTest.java
@@ -14,8 +14,6 @@ package org.apache.juneau.rest.test;
import static org.junit.Assert.*;
-import java.util.regex.*;
-
import org.apache.juneau.*;
import org.apache.juneau.json.*;
import org.apache.juneau.rest.client.*;
@@ -26,9 +24,9 @@ import org.junit.*;
*/
public class UrisTest extends RestTestcase {
- private static String URL2 = Constants.getServerTestUrl() + "/testuris"; // /jazz/juneau/sample/testuris
- private static int port = getPort(Constants.getServerTestUrl()); // 9443
- private static String path = Constants.getServerTestUri().getPath(); // /jazz/juneau/sample
+ private static String URL2 = TestMicroservice.getURI() + "/testuris"; // /jazz/juneau/sample/testuris
+ private static int port = TestMicroservice.getURI().getPort(); // 9443
+ private static String path = TestMicroservice.getURI().getPath(); // /jazz/juneau/sample
//====================================================================================================
// testRoot - http://localhost:8080/sample/testuris
@@ -907,12 +905,12 @@ public class UrisTest extends RestTestcase {
client.closeQuietly();
}
-
- private static int getPort(String url) {
- Pattern p = Pattern.compile("\\:(\\d{2,5})");
- Matcher m = p.matcher(url);
- if (m.find())
- return Integer.parseInt(m.group(1));
- return -1;
- }
+//
+// private static int getPort(String url) {
+// Pattern p = Pattern.compile("\\:(\\d{2,5})");
+// Matcher m = p.matcher(url);
+// if (m.find())
+// return Integer.parseInt(m.group(1));
+// return -1;
+// }
}