This is an automated email from the ASF dual-hosted git repository.

jdyer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new dc4ab76420c SOLR-14763 SolrJ Async - remove deprecated apis from 
Solr10/main (#2407)
dc4ab76420c is described below

commit dc4ab76420cf63365935a3e0c9393ac3ff79b1e6
Author: James Dyer <[email protected]>
AuthorDate: Thu Apr 18 07:52:39 2024 -0500

    SOLR-14763 SolrJ Async - remove deprecated apis from Solr10/main (#2407)
---
 solr/CHANGES.txt                                   |   4 +
 .../solr/client/solrj/impl/Http2SolrClient.java    |  22 ----
 .../solr/client/solrj/impl/HttpJdkSolrClient.java  |  39 --------
 .../solr/client/solrj/impl/HttpSolrClientBase.java |  16 ---
 .../solr/client/solrj/impl/LBHttp2SolrClient.java  |  27 -----
 .../solr/client/solrj/util/AsyncListener.java      |  36 -------
 .../apache/solr/client/solrj/util/Cancellable.java |  34 -------
 .../solr/client/solrj/impl/DebugAsyncListener.java |  79 ---------------
 .../client/solrj/impl/Http2SolrClientTest.java     |  21 +---
 .../client/solrj/impl/HttpJdkSolrClientTest.java   |  74 +-------------
 .../client/solrj/impl/HttpSolrClientTestBase.java  |  81 +++------------
 .../client/solrj/impl/LBHttp2SolrClientTest.java   | 111 +++------------------
 12 files changed, 37 insertions(+), 507 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 067eef0617b..66385572605 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -59,6 +59,10 @@ Deprecation Removals
 * SOLR-12089: Remove deprecated `breakSugestionTieBreaker` parameter in favor 
of `breakSuggestionTieBreaker`
   in WordBreakSolrSpellChecker (Andrey Bozhko via Eric Pugh)
 
+* SOLR-14763: Remove deprecated asynchronous request methods from 
`Http2SolrClient`, `HttpJdkSolrClient` and `LBHttp2SolrClient`
+  in favor of the new CompletableFuture based methods.  Remove the related 
deprecated interfaces `AsyncListener` and ``Cancellable`
+  (James Dyer)
+
 Dependency Upgrades
 ---------------------
 (No changes)
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
index 549bb45320f..40fd27b7c8e 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java
@@ -47,8 +47,6 @@ import 
org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteSolrException;
 import 
org.apache.solr.client.solrj.impl.HttpListenerFactory.RequestResponseListener;
 import org.apache.solr.client.solrj.request.RequestWriter;
 import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.util.AsyncListener;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
@@ -417,26 +415,6 @@ public class Http2SolrClient extends HttpSolrClientBase {
     outStream.flush();
   }
 
-  @Override
-  public Cancellable asyncRequest(
-      SolrRequest<?> solrRequest,
-      String collection,
-      AsyncListener<NamedList<Object>> asyncListener) {
-
-    asyncListener.onStart();
-    CompletableFuture<NamedList<Object>> cf =
-        requestAsync(solrRequest, collection)
-            .whenComplete(
-                (nl, t) -> {
-                  if (t != null) {
-                    asyncListener.onFailure(t);
-                  } else {
-                    asyncListener.onSuccess(nl);
-                  }
-                });
-    return () -> cf.cancel(true);
-  }
-
   @Override
   public CompletableFuture<NamedList<Object>> requestAsync(
       final SolrRequest<?> solrRequest, String collection) {
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpJdkSolrClient.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpJdkSolrClient.java
index 96366d08c0f..034e16ac679 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpJdkSolrClient.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpJdkSolrClient.java
@@ -52,8 +52,6 @@ import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.RequestWriter;
-import org.apache.solr.client.solrj.util.AsyncListener;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -136,26 +134,6 @@ public class HttpJdkSolrClient extends HttpSolrClientBase {
     assert ObjectReleaseTracker.track(this);
   }
 
-  @Override
-  public Cancellable asyncRequest(
-      SolrRequest<?> solrRequest,
-      String collection,
-      AsyncListener<NamedList<Object>> asyncListener) {
-    asyncListener.onStart();
-    CompletableFuture<NamedList<Object>> cf =
-        requestAsync(solrRequest, collection)
-            .whenComplete(
-                (nl, t) -> {
-                  if (t != null) {
-                    asyncListener.onFailure(t);
-                  } else {
-                    asyncListener.onSuccess(nl);
-                  }
-                });
-
-    return new HttpSolrClientCancellable(cf);
-  }
-
   @Override
   public CompletableFuture<NamedList<Object>> requestAsync(
       final SolrRequest<?> solrRequest, String collection) {
@@ -539,23 +517,6 @@ public class HttpJdkSolrClient extends HttpSolrClientBase {
         .collect(Collectors.joining(", "));
   }
 
-  protected static class HttpSolrClientCancellable implements Cancellable {
-    private final CompletableFuture<NamedList<Object>> response;
-
-    protected HttpSolrClientCancellable(CompletableFuture<NamedList<Object>> 
response) {
-      this.response = response;
-    }
-
-    @Override
-    public void cancel() {
-      response.cancel(true);
-    }
-
-    protected CompletableFuture<NamedList<Object>> getResponse() {
-      return response;
-    }
-  }
-
   public static class Builder
       extends HttpSolrClientBuilderBase<HttpJdkSolrClient.Builder, 
HttpJdkSolrClient> {
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
index 95e448df762..56df7cafe61 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
@@ -42,8 +42,6 @@ import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.RequestWriter;
 import org.apache.solr.client.solrj.request.V2Request;
-import org.apache.solr.client.solrj.util.AsyncListener;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -377,20 +375,6 @@ public abstract class HttpSolrClientBase extends 
SolrClient {
 
   protected abstract void updateDefaultMimeTypeForParser();
 
-  /**
-   * @deprecated use {@link #requestAsync(SolrRequest, String)}.
-   * @param solrRequest the request to perform
-   * @param collection if null the default collection is used
-   * @param asyncListener callers should provide an implementation to handle 
events: start, success,
-   *     exception
-   * @return Cancellable allowing the caller to attempt cancellation
-   */
-  @Deprecated
-  public abstract Cancellable asyncRequest(
-      SolrRequest<?> solrRequest,
-      String collection,
-      AsyncListener<NamedList<Object>> asyncListener);
-
   /**
    * Execute an asynchronous request against a Solr server for a given 
collection.
    *
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
index ec44802f17b..e6633aff4d5 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java
@@ -32,8 +32,6 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.IsUpdateRequest;
 import org.apache.solr.client.solrj.request.RequestWriter;
-import org.apache.solr.client.solrj.util.AsyncListener;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.slf4j.MDC;
@@ -126,31 +124,6 @@ public class LBHttp2SolrClient extends LBSolrClient {
     return solrClient.getUrlParamNames();
   }
 
-  /**
-   * Execute an asynchronous request against a one or more hosts for a given 
collection.
-   *
-   * @param req the wrapped request to perform
-   * @param asyncListener callers should provide an implementation to handle 
events: start, success,
-   *     exception
-   * @return Cancellable allowing the caller to attempt cancellation
-   * @deprecated Use {@link #requestAsync(Req)}.
-   */
-  @Deprecated
-  public Cancellable asyncReq(Req req, AsyncListener<Rsp> asyncListener) {
-    asyncListener.onStart();
-    CompletableFuture<Rsp> cf =
-        requestAsync(req)
-            .whenComplete(
-                (rsp, t) -> {
-                  if (t != null) {
-                    asyncListener.onFailure(t);
-                  } else {
-                    asyncListener.onSuccess(rsp);
-                  }
-                });
-    return () -> cf.cancel(true);
-  }
-
   /**
    * Execute an asynchronous request against one or more hosts for a given 
collection. The passed-in
    * Req object includes a List of Endpoints. This method always begins with 
the first Endpoint in
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/util/AsyncListener.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/util/AsyncListener.java
deleted file mode 100644
index 690c558e51b..00000000000
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/util/AsyncListener.java
+++ /dev/null
@@ -1,36 +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.solr.client.solrj.util;
-
-/**
- * Listener for async requests
- *
- * @param <T> The result type returned by the {@code onSuccess} method
- * @deprecated Use the async variants that return CompletableFuture.
- */
-@Deprecated
-public interface AsyncListener<T> {
-  /** Callback method invoked before processing the request */
-  default void onStart() {}
-
-  /** Callback method invoked when the request completes successfully */
-  void onSuccess(T t);
-
-  /** Callback method invoked when the request completes in failure */
-  void onFailure(Throwable throwable);
-}
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/util/Cancellable.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/util/Cancellable.java
deleted file mode 100644
index 2dff867d546..00000000000
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/util/Cancellable.java
+++ /dev/null
@@ -1,34 +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.solr.client.solrj.util;
-
-/**
- * The return type for solrJ asynchronous requests, providing a mechanism 
whereby callers may
- * request cancellation.
- *
- * @deprecated Use the async variants that return CompletableFuture.
- */
-@Deprecated
-public interface Cancellable {
-
-  /**
-   * Request to cancel the asynchronous request. This may be a no-op in some 
situations, for
-   * instance, if the request failed or otherwise is complete.
-   */
-  void cancel();
-}
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/DebugAsyncListener.java 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/DebugAsyncListener.java
deleted file mode 100644
index f6db888421c..00000000000
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/DebugAsyncListener.java
+++ /dev/null
@@ -1,79 +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.solr.client.solrj.impl;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CountDownLatch;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.util.AsyncListener;
-import org.apache.solr.common.util.NamedList;
-import org.junit.Assert;
-
-@Deprecated
-public class DebugAsyncListener
-    implements AsyncListener<NamedList<Object>>, PauseableHttpSolrClient {
-
-  private final CountDownLatch latch;
-
-  public volatile boolean onStartCalled;
-
-  public volatile boolean latchCounted;
-
-  public volatile NamedList<Object> onSuccessResult = null;
-
-  public volatile Throwable onFailureResult = null;
-
-  public DebugAsyncListener(CountDownLatch latch) {
-    this.latch = latch;
-  }
-
-  @Override
-  public void onStart() {
-    onStartCalled = true;
-  }
-
-  @Override
-  public void onSuccess(NamedList<Object> entries) {
-    pause();
-    onSuccessResult = entries;
-    if (latchCounted) {
-      Assert.fail("either 'onSuccess' or 'onFailure' should be called exactly 
once.");
-    }
-    latch.countDown();
-    latchCounted = true;
-    unPause();
-  }
-
-  @Override
-  public void onFailure(Throwable throwable) {
-    pause();
-    onFailureResult = throwable;
-    if (latchCounted) {
-      Assert.fail("either 'onSuccess' or 'onFailure' should be called exactly 
once.");
-    }
-    latch.countDown();
-    latchCounted = true;
-    unPause();
-  }
-
-  @Override
-  public CompletableFuture<NamedList<Object>> requestAsync(
-      SolrRequest<?> solrRequest, String collection) {
-    throw new UnsupportedOperationException();
-  }
-}
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
index 620c24020ef..c1c2580e7a5 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
@@ -265,34 +265,19 @@ public class Http2SolrClientTest extends 
HttpSolrClientTestBase {
     }
   }
 
-  @Test
-  public void testDeprecatedAsyncGet() throws Exception {
-    super.testQueryAsync(true);
-  }
-
   @Test
   public void testAsyncGet() throws Exception {
-    super.testQueryAsync(false);
-  }
-
-  @Test
-  public void testDeprecatedAsyncPost() throws Exception {
-    super.testUpdateAsync(true);
+    super.testQueryAsync();
   }
 
   @Test
   public void testAsyncPost() throws Exception {
-    super.testUpdateAsync(false);
-  }
-
-  @Test
-  public void testDeprecatedAsyncException() throws Exception {
-    super.testAsyncExceptionBase(true);
+    super.testUpdateAsync();
   }
 
   @Test
   public void testAsyncException() throws Exception {
-    super.testAsyncExceptionBase(false);
+    super.testAsyncExceptionBase();
   }
 
   @Test
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpJdkSolrClientTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpJdkSolrClientTest.java
index 5cbfaa3dcd5..e5af5bd5f52 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpJdkSolrClientTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpJdkSolrClientTest.java
@@ -29,9 +29,6 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.Objects;
 import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionException;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -46,10 +43,8 @@ import org.apache.solr.client.solrj.ResponseParser;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.RequestWriter;
 import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.util.ExecutorUtil;
@@ -199,38 +194,19 @@ public class HttpJdkSolrClientTest extends 
HttpSolrClientTestBase {
     }
   }
 
-  @Test
-  public void testDeprecatedAsyncGet() throws Exception {
-    super.testQueryAsync(true);
-  }
-
   @Test
   public void testAsyncGet() throws Exception {
-    super.testQueryAsync(false);
-  }
-
-  @Test
-  public void testDeprecatedAsyncPost() throws Exception {
-    super.testUpdateAsync(true);
+    super.testQueryAsync();
   }
 
   @Test
   public void testAsyncPost() throws Exception {
-    super.testUpdateAsync(false);
-  }
-
-  @Test
-  public void testDeprecatedAsyncException() throws Exception {
-    DebugAsyncListener listener = super.testAsyncExceptionBase(true);
-    assertTrue(listener.onFailureResult instanceof CompletionException);
-    CompletionException ce = (CompletionException) listener.onFailureResult;
-    assertTrue(ce.getCause() instanceof 
BaseHttpSolrClient.RemoteSolrException);
-    assertTrue(ce.getMessage(), ce.getMessage().contains("mime type"));
+    super.testUpdateAsync();
   }
 
   @Test
   public void testAsyncException() throws Exception {
-    super.testAsyncExceptionBase(false);
+    super.testAsyncExceptionBase();
   }
 
   @Test
@@ -279,50 +255,6 @@ public class HttpJdkSolrClientTest extends 
HttpSolrClientTestBase {
     }
   }
 
-  @Test
-  public void testDeprecatedAsyncAndCancel() throws Exception {
-    ResponseParser rp = new XMLResponseParser();
-    DebugServlet.clear();
-    DebugServlet.addResponseHeader("Content-Type", "application/xml; 
charset=UTF-8");
-    DebugServlet.responseBodyByQueryFragment.put(
-        "", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<response />");
-    String url = getBaseUrl() + DEBUG_SERVLET_PATH;
-    HttpJdkSolrClient.Builder b = builder(url).withResponseParser(rp);
-    CountDownLatch latch = new CountDownLatch(0);
-    DebugAsyncListener listener = new DebugAsyncListener(latch);
-    Cancellable cancelMe = null;
-    try (HttpJdkSolrClient client = b.build()) {
-      QueryRequest query = new QueryRequest(new 
MapSolrParams(Collections.singletonMap("id", "1")));
-
-      // We are pausing in the "whenComplete" stage, in the unlikely event the 
http request
-      // finishes before the test calls "cancel".
-      listener.pause();
-
-      // Make the request then immediately cancel it!
-      cancelMe = client.asyncRequest(query, "collection1", listener);
-      cancelMe.cancel();
-
-      // We are safe to unpause our client, having guaranteed that our cancel 
was before everything
-      // completed.
-      listener.unPause();
-    }
-
-    // "onStart" fires before the async call.  This part of the request cannot 
be cancelled.
-    assertTrue(listener.onStartCalled);
-
-    // The client exposes the CompletableFuture to us via this inner class
-    assertTrue(cancelMe instanceof 
HttpJdkSolrClient.HttpSolrClientCancellable);
-    CompletableFuture<NamedList<Object>> response =
-        ((HttpJdkSolrClient.HttpSolrClientCancellable) cancelMe).getResponse();
-
-    // Even if our cancel didn't happen until we were at "whenComplete", the 
CompletableFuture will
-    // have set "isCancelled".
-    assertTrue(response.isCancelled());
-
-    // But we cannot guarantee the response will have been returned, or that 
"onFailure" was fired
-    // with a "CompletionException".  This depends on where we were when the 
cancellation hit.
-  }
-
   @Test
   public void testTimeout() throws Exception {
     SolrQuery q = new SolrQuery("*:*");
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
index 76b5f07841c..977275f5ea8 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
@@ -43,7 +43,6 @@ import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.SolrPing;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
@@ -544,16 +543,12 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
         "No authorization headers expected. Headers: " + DebugServlet.headers, 
authorizationHeader);
   }
 
-  protected void testUpdateAsync(boolean useDeprecatedApi) throws Exception {
+  protected void testUpdateAsync() throws Exception {
     ResponseParser rp = new XMLResponseParser();
     String url = getBaseUrl();
     HttpSolrClientBuilderBase<?, ?> b =
         builder(url, DEFAULT_CONNECTION_TIMEOUT, 
DEFAULT_CONNECTION_TIMEOUT).withResponseParser(rp);
     int limit = 10;
-
-    DebugAsyncListener[] listeners = new DebugAsyncListener[limit]; // 
Deprecated API use
-    Cancellable[] cancellables = new Cancellable[limit]; // Deprecated API use
-
     CountDownLatch latch = new CountDownLatch(limit);
 
     try (HttpSolrClientBase client = b.build()) {
@@ -573,12 +568,7 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
         ur.add("id", "KEY-" + i);
         ur.setMethod(SolrRequest.METHOD.POST);
 
-        if (useDeprecatedApi) {
-          listeners[i] = new DebugAsyncListener(latch);
-          client.asyncRequest(ur, COLLECTION_1, listeners[i]);
-        } else {
-          client.requestAsync(ur, COLLECTION_1).whenComplete((nl, e) -> 
latch.countDown());
-        }
+        client.requestAsync(ur, COLLECTION_1).whenComplete((nl, e) -> 
latch.countDown());
       }
       latch.await(1, TimeUnit.MINUTES);
       client.commit(COLLECTION_1);
@@ -597,7 +587,7 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
     }
   }
 
-  protected void testQueryAsync(boolean useDeprecatedApi) throws Exception {
+  protected void testQueryAsync() throws Exception {
     ResponseParser rp = new XMLResponseParser();
     DebugServlet.clear();
     DebugServlet.addResponseHeader("Content-Type", "application/xml; 
charset=UTF-8");
@@ -606,10 +596,6 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
         builder(url, DEFAULT_CONNECTION_TIMEOUT, 
DEFAULT_CONNECTION_TIMEOUT).withResponseParser(rp);
     int limit = 10;
 
-    CountDownLatch latch = new CountDownLatch(limit); // Deprecated API use
-    DebugAsyncListener[] listeners = new DebugAsyncListener[limit]; // 
Deprecated API use
-    Cancellable[] cancellables = new Cancellable[limit]; // Deprecated API use
-
     List<CompletableFuture<NamedList<Object>>> futures = new ArrayList<>();
 
     try (HttpSolrClientBase client = b.build()) {
@@ -622,24 +608,11 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
         QueryRequest query =
             new QueryRequest(new MapSolrParams(Collections.singletonMap("id", 
"KEY-" + i)));
         query.setMethod(SolrRequest.METHOD.GET);
-        if (useDeprecatedApi) {
-          listeners[i] = new DebugAsyncListener(latch);
-          client.asyncRequest(query, null, listeners[i]);
-        } else {
-          futures.add(client.requestAsync(query));
-        }
-      }
-      if (useDeprecatedApi) {
-        latch.await(1, TimeUnit.MINUTES);
+        futures.add(client.requestAsync(query));
       }
 
       for (int i = 0; i < limit; i++) {
-        NamedList<Object> result;
-        if (useDeprecatedApi) {
-          result = listeners[i].onSuccessResult;
-        } else {
-          result = futures.get(i).get(1, TimeUnit.MINUTES);
-        }
+        NamedList<Object> result = futures.get(i).get(1, TimeUnit.MINUTES);
         SolrDocumentList sdl = (SolrDocumentList) result.get("response");
         assertEquals(2, sdl.getNumFound());
         assertEquals(1, sdl.getStart());
@@ -647,18 +620,12 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
         assertEquals(1, sdl.size());
         assertEquals(1, sdl.iterator().next().size());
         assertEquals("KEY-" + i, sdl.iterator().next().get("id"));
-
-        if (useDeprecatedApi) {
-          assertNull(listeners[i].onFailureResult);
-          assertTrue(listeners[i].onStartCalled);
-        } else {
-          assertFalse(futures.get(i).isCompletedExceptionally());
-        }
+        assertFalse(futures.get(i).isCompletedExceptionally());
       }
     }
   }
 
-  protected DebugAsyncListener testAsyncExceptionBase(boolean 
useDeprecatedApi) throws Exception {
+  protected void testAsyncExceptionBase() throws Exception {
     ResponseParser rp = new XMLResponseParser();
     DebugServlet.clear();
     DebugServlet.addResponseHeader("Content-Type", "Wrong Content Type!");
@@ -666,40 +633,20 @@ public abstract class HttpSolrClientTestBase extends 
SolrJettyTestBase {
     HttpSolrClientBuilderBase<?, ?> b =
         builder(url, DEFAULT_CONNECTION_TIMEOUT, 
DEFAULT_CONNECTION_TIMEOUT).withResponseParser(rp);
 
-    CompletableFuture<NamedList<Object>> future = null;
-    ExecutionException ee = null;
-
-    CountDownLatch latch = new CountDownLatch(1); // Deprecated API use
-    DebugAsyncListener listener = new DebugAsyncListener(latch); // Deprecated 
API use
-
     try (HttpSolrClientBase client = b.build()) {
       QueryRequest query = new QueryRequest(new 
MapSolrParams(Collections.singletonMap("id", "1")));
-      if (useDeprecatedApi) {
-        client.asyncRequest(query, COLLECTION_1, listener);
-      } else {
-        future = client.requestAsync(query, COLLECTION_1);
-      }
-      if (useDeprecatedApi) {
-        latch.await(1, TimeUnit.MINUTES);
-      } else {
-        try {
-          future.get(1, TimeUnit.MINUTES);
-          fail("Should have thrown ExecutionException");
-        } catch (ExecutionException ee1) {
-          ee = ee1;
-        }
+      CompletableFuture<NamedList<Object>> future = client.requestAsync(query, 
COLLECTION_1);
+      ExecutionException ee = null;
+      try {
+        future.get(1, TimeUnit.MINUTES);
+        fail("Should have thrown ExecutionException");
+      } catch (ExecutionException ee1) {
+        ee = ee1;
       }
-    }
-    if (useDeprecatedApi) {
-      assertNotNull(listener.onFailureResult);
-      assertTrue(listener.onStartCalled);
-      assertNull(listener.onSuccessResult);
-    } else {
       assertTrue(future.isCompletedExceptionally());
       assertTrue(ee.getCause() instanceof 
BaseHttpSolrClient.RemoteSolrException);
       assertTrue(ee.getMessage(), ee.getMessage().contains("mime type"));
     }
-    return listener;
   }
 
   protected void testAsyncAndCancel(PauseableHttpSolrClient client) throws 
Exception {
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttp2SolrClientTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttp2SolrClientTest.java
index 8e29050cb81..203f050efc5 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttp2SolrClientTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttp2SolrClientTest.java
@@ -23,15 +23,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import org.apache.solr.SolrTestCase;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.util.AsyncListener;
-import org.apache.solr.client.solrj.util.Cancellable;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -68,16 +65,6 @@ public class LBHttp2SolrClientTest extends SolrTestCase {
     }
   }
 
-  @Test
-  public void testAsyncDeprecated() {
-    testAsync(true);
-  }
-
-  @Test
-  public void testAsync() {
-    testAsync(false);
-  }
-
   @Test
   public void testAsyncWithFailures() {
 
@@ -138,7 +125,8 @@ public class LBHttp2SolrClientTest extends SolrTestCase {
     }
   }
 
-  private void testAsync(boolean useDeprecatedApi) {
+  @Test
+  public void testAsync() {
     LBSolrClient.Endpoint ep1 = new 
LBSolrClient.Endpoint("http://endpoint.one";);
     LBSolrClient.Endpoint ep2 = new 
LBSolrClient.Endpoint("http://endpoint.two";);
     List<LBSolrClient.Endpoint> endpointList = List.of(ep1, ep2);
@@ -149,31 +137,12 @@ public class LBHttp2SolrClientTest extends SolrTestCase {
         LBHttp2SolrClient testClient = new LBHttp2SolrClient.Builder(client, 
ep1, ep2).build()) {
 
       int limit = 10; // For simplicity use an even limit
-
-      CountDownLatch latch = new CountDownLatch(limit); // deprecated API use
-      List<LBTestAsyncListener> listeners = new ArrayList<>(); // deprecated 
API use
       List<CompletableFuture<LBSolrClient.Rsp>> responses = new ArrayList<>();
 
       for (int i = 0; i < limit; i++) {
         QueryRequest queryRequest = new QueryRequest(new 
MapSolrParams(Map.of("q", "" + i)));
         LBSolrClient.Req req = new LBSolrClient.Req(queryRequest, 
endpointList);
-        if (useDeprecatedApi) {
-          LBTestAsyncListener listener = new LBTestAsyncListener(latch);
-          listeners.add(listener);
-          testClient.asyncReq(req, listener);
-        } else {
-          responses.add(testClient.requestAsync(req));
-        }
-      }
-
-      if (useDeprecatedApi) {
-        try {
-          // This is just a formality.  This is a single-threaded test.
-          latch.await(1, TimeUnit.MINUTES);
-        } catch (InterruptedException ie) {
-          Thread.currentThread().interrupt();
-          fail("interrupted");
-        }
+        responses.add(testClient.requestAsync(req));
       }
 
       QueryRequest[] queryRequests = new QueryRequest[limit];
@@ -191,25 +160,17 @@ public class LBHttp2SolrClientTest extends SolrTestCase {
         } else if (lastQueryReq.getBasePath().equals(ep2.toString())) {
           numEndpointTwo++;
         }
-        NamedList<Object> lastResponse;
-        if (useDeprecatedApi) {
-          LBTestAsyncListener lastAsyncListener = listeners.get(index);
-          assertTrue(lastAsyncListener.onStartCalled);
-          assertNull(lastAsyncListener.failure);
-          assertNotNull(lastAsyncListener.success);
-          lastResponse = lastAsyncListener.success.getResponse();
-        } else {
-          LBSolrClient.Rsp lastRsp = null;
-          try {
-            lastRsp = responses.get(index).get();
-          } catch (InterruptedException ie) {
-            Thread.currentThread().interrupt();
-            fail("interrupted");
-          } catch (ExecutionException ee) {
-            fail("Response " + index + " ended in failure: " + ee);
-          }
-          lastResponse = lastRsp.getResponse();
+
+        LBSolrClient.Rsp lastRsp = null;
+        try {
+          lastRsp = responses.get(index).get();
+        } catch (InterruptedException ie) {
+          Thread.currentThread().interrupt();
+          fail("interrupted");
+        } catch (ExecutionException ee) {
+          fail("Response " + index + " ended in failure: " + ee);
         }
+        NamedList<Object> lastResponse = lastRsp.getResponse();
 
         // The Mock will return {"response": index}.
         assertEquals("" + index, lastResponse.get("response"));
@@ -226,44 +187,6 @@ public class LBHttp2SolrClientTest extends SolrTestCase {
     }
   }
 
-  @Deprecated(forRemoval = true)
-  public static class LBTestAsyncListener implements 
AsyncListener<LBSolrClient.Rsp> {
-    private final CountDownLatch latch;
-    private volatile boolean countDownCalled = false;
-    public boolean onStartCalled = false;
-    public LBSolrClient.Rsp success = null;
-    public Throwable failure = null;
-
-    public LBTestAsyncListener(CountDownLatch latch) {
-      this.latch = latch;
-    }
-
-    @Override
-    public void onStart() {
-      onStartCalled = true;
-    }
-
-    @Override
-    public void onSuccess(LBSolrClient.Rsp entries) {
-      success = entries;
-      countdown();
-    }
-
-    @Override
-    public void onFailure(Throwable throwable) {
-      failure = throwable;
-      countdown();
-    }
-
-    private void countdown() {
-      if (countDownCalled) {
-        throw new IllegalStateException("Already counted down.");
-      }
-      latch.countDown();
-      countDownCalled = true;
-    }
-  }
-
   public static class MockHttp2SolrClient extends Http2SolrClient {
 
     public List<SolrRequest<?>> lastSolrRequests = new ArrayList<>();
@@ -281,14 +204,6 @@ public class LBHttp2SolrClientTest extends SolrTestCase {
       super(serverBaseUrl, builder);
     }
 
-    @Override
-    public Cancellable asyncRequest(
-        SolrRequest<?> solrRequest,
-        String collection,
-        AsyncListener<NamedList<Object>> asyncListener) {
-      throw new UnsupportedOperationException("do not use deprecated method.");
-    }
-
     @Override
     public CompletableFuture<NamedList<Object>> requestAsync(
         final SolrRequest<?> solrRequest, String collection) {


Reply via email to