This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 9cc8a6881e Add ordinary-resource real-container 404 regression test
and correct remote-annotation parity javadoc
9cc8a6881e is described below
commit 9cc8a6881e35811ed0c2c5a6c3ca717e6b9eab8b
Author: James Bognar <[email protected]>
AuthorDate: Mon Aug 17 10:12:29 2026 -0400
Add ordinary-resource real-container 404 regression test and correct
remote-annotation parity javadoc
READY-403: New ephemeral-Jetty regression test
(OrdinaryResource_JettyMicroservice_NotFoundStatusSentinel_Test) proving an
unmatched path on an ordinary @Rest resource, mounted via a wildcard path
spec so the request reaches Juneau dispatch, yields a Juneau-produced 404
rather than a 500. No production change; verifies TODO-401's
statusExplicitlySet sentinel fix already covers the ordinary-resource case.
The four documented benign/mock-correct getStatus()==0 sites (RestSession
success-path default, RestOpInvoker metric default, NG/classic
MockRestClient mock-transport error detection) are left unchanged.
READY-404: Reword 62 stale "next-generation only" javadoc notes across the
seven remote annotations (Remote, RemoteOp, and the five verb annotations)
to the canonical classic/next-gen parity wording, since the classic engine
now parses and consumes every attribute except interceptors. interceptors
(7 notes) and @Multipart remain correctly documented as next-gen-only.
---
...tyMicroservice_NotFoundStatusSentinel_Test.java | 126 +++++++++++++++++++++
.../java/org/apache/juneau/http/remote/Remote.java | 32 +++---
.../apache/juneau/http/remote/RemoteDelete.java | 36 +++---
.../org/apache/juneau/http/remote/RemoteGet.java | 36 +++---
.../org/apache/juneau/http/remote/RemoteOp.java | 36 +++---
.../org/apache/juneau/http/remote/RemotePatch.java | 36 +++---
.../org/apache/juneau/http/remote/RemotePost.java | 36 +++---
.../org/apache/juneau/http/remote/RemotePut.java | 36 +++---
8 files changed, 250 insertions(+), 124 deletions(-)
diff --git
a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/OrdinaryResource_JettyMicroservice_NotFoundStatusSentinel_Test.java
b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/OrdinaryResource_JettyMicroservice_NotFoundStatusSentinel_Test.java
new file mode 100644
index 0000000000..3659c55724
--- /dev/null
+++
b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/OrdinaryResource_JettyMicroservice_NotFoundStatusSentinel_Test.java
@@ -0,0 +1,126 @@
+/*
+ * 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.server;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.net.*;
+import java.net.http.*;
+import java.net.http.HttpResponse.*;
+import java.time.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.commons.inject.*;
+import org.apache.juneau.microservice.*;
+import org.apache.juneau.rest.server.servlet.*;
+import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.extension.*;
+
+import jakarta.servlet.*;
+
+/**
+ * [READY-403] Real-container regression coverage for {@link
RestSession#run()}'s {@code NotFound} status
+ * sentinel ([TODO-401] Bug B) on an ORDINARY single-path {@code @Rest}
resource — i.e. one that relies on
+ * the default {@code @Rest.path()} mount, which normalizes to the
servlet-container WILDCARD path-spec
+ * {@code "/*"} (see {@code JettyServerComponent#restPathsFor}/{@code
#normalizePathSpec}), as opposed to
+ * {@code HealthServlet}'s auto-mounted EXACT multi-path spec.
+ *
+ * <p>
+ * {@code RestSession_NotFoundStatusSentinel_Test} (in {@code
juneau-rest-mock}) already proves the sentinel fix
+ * in-process, but its mock harness dispatches directly through {@code
RestContext.execute(...)}, bypassing real
+ * servlet-container URL routing entirely. This class instead boots a real
Jetty connector so the unmatched
+ * request path is routed by the CONTAINER first: because this resource's
default mount is the wildcard
+ * path-spec {@code "/*"}, Jetty routes any sub-path to this servlet, so the
request genuinely reaches
+ * {@code RestSession.run()}'s {@code findOperation}/{@code NotFound} path
— unlike an EXACT servlet mount
+ * (e.g. {@code HealthServlet}'s {@code /healthz}), where a sub-path 404s at
the container level before Juneau
+ * ever runs (see {@code
HealthServlet_JettyHttpConnector_Test#a02_subPathUnderExactMountIsCleanContainer404}).
+ *
+ * <p>
+ * Before the [TODO-401] Bug B fix, a real container's {@code
HttpServletResponse} defaults {@code getStatus()}
+ * to the servlet-spec {@code 200} (not the mock's coincidental {@code 0}), so
the old {@code getStatus() == 0}
+ * sentinel in {@code RestSession.run()}'s {@code NotFound} catch was skipped
and the miss was mis-mapped to a
+ * {@code 500} by {@code RestContext.handleError}. This test pins the fixed
behavior — a genuine 404,
+ * rendered by Juneau's own error writer rather than a bare container 404 page
— against future regression.
+ *
+ * @since 10.0.0
+ */
[email protected]
+class OrdinaryResource_JettyMicroservice_NotFoundStatusSentinel_Test extends
TestBase {
+
+ //
-----------------------------------------------------------------------------------------------------------------
+ // Resource — an ordinary, single-path @Rest resource: no
path()/paths() override, so it auto-mounts at the
+ // default wildcard "/*" servlet path-spec.
+ //
-----------------------------------------------------------------------------------------------------------------
+
+ @Rest
+ public static class OrdinaryServlet extends RestServlet {
+ private static final long serialVersionUID = 1L;
+
+ @RestGet(path="/foo")
+ public String foo() {
+ return "OK";
+ }
+ }
+
+ @Configuration
+ public static class Config {
+ @Bean(name="ordinaryServlet")
+ public Servlet ordinaryServlet() { return new
OrdinaryServlet(); }
+ }
+
+ @RegisterExtension
+ static MicroserviceTestFixture fixture =
MicroserviceTestFixture.create()
+ .configurations(Config.class);
+
+ private static final HttpClient HTTP = HttpClient.newBuilder()
+ .connectTimeout(Duration.ofSeconds(5))
+ .followRedirects(HttpClient.Redirect.NEVER)
+ .build();
+
+ private static HttpResponse<String> get(String path) throws Exception {
+ var req = HttpRequest.newBuilder()
+ .uri(URI.create(fixture.getRootUrl() + path))
+ .timeout(Duration.ofSeconds(15))
+ .GET()
+ .build();
+ return HTTP.send(req, BodyHandlers.ofString());
+ }
+
+ @Test void
a01_matchedOperation_returns200_sanityThatDispatchIsReached() throws Exception {
+ var resp = get("/foo");
+ assertEquals(200, resp.statusCode(), "body: " + resp.body());
+ assertTrue(resp.body().contains("OK"), "body: " + resp.body());
+ }
+
+ @Test void
a02_unmatchedPath_returnsJuneauProduced404_notContainer404_notServerError500()
throws Exception {
+ // [TODO-401] Bug B regression guard: over a real Jetty
connector (200-default HttpServletResponse), a
+ // genuine unmatched-path miss on this ordinary
wildcard-mounted resource must still surface as 404 —
+ // not the pre-fix 500 mis-mapping, and not a bare
container-level 404 page.
+ var resp = get("/nonexistent");
+
+ assertEquals(404, resp.statusCode(), "body: " + resp.body());
+
+ // Prove this 404 was rendered by Juneau's
RestContext#handleError — which explicitly sets
+ // Content-Type: text/plain and Content-Encoding: identity, and
writes an "HTTP 404: Not Found" body —
+ // rather than a bare Jetty container 404 page (text/html),
which would never reach RestSession.run() at
+ // all, let alone RestContext#handleError.
+ var contentType =
resp.headers().firstValue("Content-Type").orElse("");
+ assertTrue(contentType.startsWith("text/plain"), "Content-Type:
" + contentType);
+ assertEquals("identity",
resp.headers().firstValue("Content-Encoding").orElse(null));
+ assertTrue(resp.body().contains("HTTP 404: Not Found"), "body:
" + resp.body());
+ }
+}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/Remote.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/Remote.java
index 2f4dc49899..0c05f67f3a 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/Remote.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/Remote.java
@@ -88,8 +88,8 @@ public @interface Remote {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -115,8 +115,8 @@ public @interface Remote {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -201,8 +201,8 @@ public @interface Remote {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -222,8 +222,8 @@ public @interface Remote {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -316,8 +316,8 @@ public @interface Remote {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -333,8 +333,8 @@ public @interface Remote {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -351,8 +351,8 @@ public @interface Remote {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -369,8 +369,8 @@ public @interface Remote {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
index eb1b7ffefa..8333c7d93c 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteDelete.java
@@ -177,8 +177,8 @@ public @interface RemoteDelete {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -205,8 +205,8 @@ public @interface RemoteDelete {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -228,8 +228,8 @@ public @interface RemoteDelete {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -251,8 +251,8 @@ public @interface RemoteDelete {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -274,8 +274,8 @@ public @interface RemoteDelete {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -316,8 +316,8 @@ public @interface RemoteDelete {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -348,8 +348,8 @@ public @interface RemoteDelete {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -366,8 +366,8 @@ public @interface RemoteDelete {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -386,8 +386,8 @@ public @interface RemoteDelete {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteGet.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteGet.java
index 0231b73212..3852dc1d23 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteGet.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteGet.java
@@ -177,8 +177,8 @@ public @interface RemoteGet {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -205,8 +205,8 @@ public @interface RemoteGet {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -228,8 +228,8 @@ public @interface RemoteGet {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -251,8 +251,8 @@ public @interface RemoteGet {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -274,8 +274,8 @@ public @interface RemoteGet {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -316,8 +316,8 @@ public @interface RemoteGet {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -348,8 +348,8 @@ public @interface RemoteGet {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -366,8 +366,8 @@ public @interface RemoteGet {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -386,8 +386,8 @@ public @interface RemoteGet {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
index 4cfed67d6e..049f74346c 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemoteOp.java
@@ -202,8 +202,8 @@ public @interface RemoteOp {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -230,8 +230,8 @@ public @interface RemoteOp {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -253,8 +253,8 @@ public @interface RemoteOp {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -276,8 +276,8 @@ public @interface RemoteOp {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -299,8 +299,8 @@ public @interface RemoteOp {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -341,8 +341,8 @@ public @interface RemoteOp {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -373,8 +373,8 @@ public @interface RemoteOp {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -391,8 +391,8 @@ public @interface RemoteOp {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -411,8 +411,8 @@ public @interface RemoteOp {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePatch.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePatch.java
index 2ff92c6bbc..4190dd5e56 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePatch.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePatch.java
@@ -177,8 +177,8 @@ public @interface RemotePatch {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -205,8 +205,8 @@ public @interface RemotePatch {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -228,8 +228,8 @@ public @interface RemotePatch {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -251,8 +251,8 @@ public @interface RemotePatch {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -274,8 +274,8 @@ public @interface RemotePatch {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -316,8 +316,8 @@ public @interface RemotePatch {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -348,8 +348,8 @@ public @interface RemotePatch {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -366,8 +366,8 @@ public @interface RemotePatch {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -386,8 +386,8 @@ public @interface RemotePatch {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePost.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePost.java
index fc74e4896e..b1a5b11c40 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePost.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePost.java
@@ -177,8 +177,8 @@ public @interface RemotePost {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -205,8 +205,8 @@ public @interface RemotePost {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -228,8 +228,8 @@ public @interface RemotePost {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -251,8 +251,8 @@ public @interface RemotePost {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -274,8 +274,8 @@ public @interface RemotePost {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -316,8 +316,8 @@ public @interface RemotePost {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -348,8 +348,8 @@ public @interface RemotePost {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -366,8 +366,8 @@ public @interface RemotePost {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -386,8 +386,8 @@ public @interface RemotePost {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePut.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePut.java
index 8e0d18ebc4..ffd1c67d19 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePut.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RemotePut.java
@@ -176,8 +176,8 @@ public @interface RemotePut {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -204,8 +204,8 @@ public @interface RemotePut {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -227,8 +227,8 @@ public @interface RemotePut {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -250,8 +250,8 @@ public @interface RemotePut {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -273,8 +273,8 @@ public @interface RemotePut {
* Supports <a class="doclink"
href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a>
* (e.g. <js>"$S{mySystemProperty}"</js>).
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -315,8 +315,8 @@ public @interface RemotePut {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -347,8 +347,8 @@ public @interface RemotePut {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -365,8 +365,8 @@ public @interface RemotePut {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.
@@ -385,8 +385,8 @@ public @interface RemotePut {
*
* <h5 class='section'>Notes:</h5><ul>
* <li class='note'>
- * Honored by the next-generation engine
(<c>RestClient.remote(...)</c>) only; the classic engine currently
- * ignores this attribute.
+ * Honored by both the next-generation engine
(<c>RestClient.remote(...)</c>) and the classic engine
+ * (<c>RestClient.getRemote(...)</c>).
* </ul>
*
* @return The annotation value.