Skip to content

Commit

Permalink
Replace uses of F.Promise with CompletableFuture
Browse files Browse the repository at this point in the history
  • Loading branch information
gmethvin committed Nov 9, 2015
1 parent acafed4 commit 4ca5263
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
*/
package play.cache;

import play.libs.F;
import play.mvc.*;
import play.mvc.Http.*;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

import play.mvc.Action;
import play.mvc.Http.Context;
import play.mvc.Result;

/**
* Cache another action.
*/
Expand All @@ -27,7 +28,7 @@ public CompletionStage<Result> call(Context ctx) {
return result;
});
} else {
return F.Promise.pure(cacheResult);
return CompletableFuture.completedFuture(cacheResult);
}

} catch (RuntimeException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
*/
package play.filters.csrf

import java.util.concurrent.CompletableFuture
import javax.inject.Inject

import play.api.http.HttpFilters
import play.libs.F.Promise
import play.mvc.Http

import scala.concurrent.Future
Expand Down Expand Up @@ -210,7 +210,7 @@ object CSRFFilterSpec extends CSRFCommonSpecs {
}

class JavaErrorHandler extends CSRFErrorHandler {
def handle(req: Http.RequestHeader, msg: String) = Promise.pure(play.mvc.Results.unauthorized())
def handle(req: Http.RequestHeader, msg: String) = CompletableFuture.completedFuture(play.mvc.Results.unauthorized())
}

class CsrfFilters @Inject() (filter: CSRFFilter) extends HttpFilters {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
*/
package play.filters.csrf

import java.util.concurrent.CompletableFuture

import play.api.libs.Crypto
import play.api.mvc.Session
import play.core.routing.HandlerInvokerFactory
import play.libs.F.Promise
import play.mvc.Http.{ RequestHeader, Context }

import scala.concurrent.Future
import play.api.libs.ws._
import play.mvc.{ Results, Result, Controller }
import play.core.j.{ JavaHandlerComponents, JavaActionAnnotations, JavaAction }
import play.libs.F

import scala.reflect.ClassTag

Expand All @@ -29,7 +29,7 @@ object JavaCSRFActionSpec extends CSRFCommonSpecs {
def parser = HandlerInvokerFactory.javaBodyParserToScala(
javaHandlerComponents.injector.instanceOf(annotations.parser)
)
def invocation = F.Promise.pure(inv)
def invocation = CompletableFuture.completedFuture(inv)
val annotations = new JavaActionAnnotations(clazz, clazz.getMethod(method))
}

Expand Down Expand Up @@ -122,7 +122,7 @@ object JavaCSRFActionSpec extends CSRFCommonSpecs {

class CustomErrorHandler extends CSRFErrorHandler {
def handle(req: RequestHeader, msg: String) = {
Promise.pure(Results.unauthorized(msg))
CompletableFuture.completedFuture(Results.unauthorized(msg))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import play.test.WithApplication;

import java.io.InputStream;
import java.util.concurrent.CompletableFuture;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
Expand Down Expand Up @@ -65,7 +66,7 @@ public void threeParameters() {
@Test
public void noParametersAsync() {
Router router = new RoutingDsl()
.GET("/hello/world").routeAsync(() -> F.Promise.pure(Results.ok("Hello world")))
.GET("/hello/world").routeAsync(() -> CompletableFuture.completedFuture(Results.ok("Hello world")))
.build();

assertThat(makeRequest(router, "GET", "/hello/world"), equalTo("Hello world"));
Expand All @@ -75,7 +76,7 @@ public void noParametersAsync() {
@Test
public void oneParameterAsync() {
Router router = new RoutingDsl()
.GET("/hello/:to").routeAsync(to -> F.Promise.pure(Results.ok("Hello " + to)))
.GET("/hello/:to").routeAsync(to -> CompletableFuture.completedFuture(Results.ok("Hello " + to)))
.build();

assertThat(makeRequest(router, "GET", "/hello/world"), equalTo("Hello world"));
Expand All @@ -85,7 +86,7 @@ public void oneParameterAsync() {
@Test
public void twoParametersAsync() {
Router router = new RoutingDsl()
.GET("/:say/:to").routeAsync((say, to) -> F.Promise.pure(Results.ok(say + " " + to)))
.GET("/:say/:to").routeAsync((say, to) -> CompletableFuture.completedFuture(Results.ok(say + " " + to)))
.build();

assertThat(makeRequest(router, "GET", "/Hello/world"), equalTo("Hello world"));
Expand All @@ -95,7 +96,8 @@ public void twoParametersAsync() {
@Test
public void threeParametersAsync() {
Router router = new RoutingDsl()
.GET("/:say/:to/:extra").routeAsync((say, to, extra) -> F.Promise.pure(Results.ok(say + " " + to + extra)))
.GET("/:say/:to/:extra").routeAsync((say, to, extra) -> CompletableFuture.completedFuture(
Results.ok(say + " " + to + extra)))
.build();

assertThat(makeRequest(router, "GET", "/Hello/world/!"), equalTo("Hello world!"));
Expand Down Expand Up @@ -191,7 +193,7 @@ public void regexMatcher() {
assertThat(makeRequest(router, "GET", "/hello/world"), equalTo("Hello world"));
assertNull(makeRequest(router, "GET", "/hello/10"));
}

@Test
public void multipleRoutes() {
Router router = new RoutingDsl()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,18 @@
package play.it.bindings

import java.lang.reflect.Method
import java.util.concurrent.CompletableFuture

import org.specs2.mutable.Specification
import play.api.inject.guice.GuiceApplicationBuilder
import play.api.libs.ws._
import play.api.routing.Router
import play.api.{ Application, Configuration, GlobalSettings }
import play.api.Application
import play.api.mvc._
import play.api.mvc.Results._
import play.api.test._
import play.it._
import play.it.http.{ MockController, JAction }
import play.mvc.Http
import play.mvc.Http.Context
import scala.concurrent._

object NettyGlobalSettingsSpec extends GlobalSettingsSpec with NettyIntegrationSpecification

Expand Down Expand Up @@ -88,11 +86,11 @@ class FooFilteringJavaGlobal extends play.GlobalSettings {
class OnRequestJavaGlobal extends play.GlobalSettings {
override def onRequest(request: Http.Request, actionMethod: Method) = {
new play.mvc.Action.Simple {
def call(ctx: Context) = play.libs.F.Promise.pure(play.mvc.Results.ok("intercepted"))
def call(ctx: Context) = CompletableFuture.completedFuture(play.mvc.Results.ok("intercepted"))
}
}
}

object JavaAction extends MockController {
def action = play.mvc.Results.ok(Option(request.getHeader("X-Foo")).getOrElse("null"))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
*/
package play.it.http

import java.util.concurrent.{ CompletionStage, CompletableFuture }

import play.api._
import play.api.mvc.EssentialAction
import play.core.j.{ JavaHandlerComponents, JavaActionAnnotations, JavaAction }
import play.core.routing.HandlerInvokerFactory
import play.http.DefaultHttpRequestHandler
import play.mvc.{ Http, Result }
import play.libs.F.Promise

/**
* Use this to mock Java actions, eg:
Expand Down Expand Up @@ -37,7 +37,7 @@ object JAction {
}

trait AbstractMockController {
def invocation: Promise[Result]
def invocation: CompletionStage[Result]

def ctx = Http.Context.current()
def response = ctx.response()
Expand All @@ -48,10 +48,10 @@ trait AbstractMockController {

abstract class MockController extends AbstractMockController {
def action: Result
def invocation: Promise[Result] = Promise.pure(action)
def invocation: CompletionStage[Result] = CompletableFuture.completedFuture(action)
}

abstract class AsyncMockController extends AbstractMockController {
def action: Promise[Result]
def invocation: Promise[Result] = action
def action: CompletionStage[Result]
def invocation: CompletionStage[Result] = action
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import play.libs.F;

import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;

import javax.inject.Inject;
Expand Down Expand Up @@ -38,7 +39,7 @@ public JPAApiProvider(JPAConfig jpaConfig, DBApi dbApi, ApplicationLifecycle lif
jpaApi = new DefaultJPAApi(jpaConfig);
lifecycle.addStopHook(() -> {
jpaApi.shutdown();
return F.Promise.pure(null);
return CompletableFuture.completedFuture(null);
});
jpaApi.start();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
*/
package play.libs.ws.ning;

import java.util.concurrent.CompletableFuture;

import play.api.libs.ws.ning.NingAsyncHttpClientConfigBuilder;
import play.api.libs.ws.ning.NingWSClientConfig;
import play.inject.ApplicationLifecycle;
import play.libs.F;
import play.libs.ws.WSAPI;
import play.libs.ws.WSClient;
import play.libs.ws.WSRequest;
Expand All @@ -32,7 +33,7 @@ public NingWSAPI(NingWSClientConfig clientConfig, ApplicationLifecycle lifecycle
client = new NingWSClient(config, materializer);
lifecycle.addStopHook(() -> {
client.close();
return F.Promise.pure(null);
return CompletableFuture.completedFuture(null);
});
}

Expand Down
9 changes: 5 additions & 4 deletions framework/src/play/src/test/java/play/mvc/SecurityTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.google.common.collect.ImmutableMap;
import java.lang.annotation.Annotation;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

Expand All @@ -12,7 +14,6 @@
import org.junit.runner.RunWith;

import play.inject.Injector;
import play.libs.F;

import static org.mockito.Mockito.*;

Expand Down Expand Up @@ -67,7 +68,7 @@ public void testDontSetUsernameToNullUntilDelegateRaisesException() throws Excep
public void testSetUsernameToNullWhenExceptionRaised() {
action.delegate = new Action<Object>() {
@Override
public F.Promise<Result> call(Http.Context ctx) {
public CompletionStage<Result> call(Http.Context ctx) {
throw exception;
}
};
Expand All @@ -85,8 +86,8 @@ public F.Promise<Result> call(Http.Context ctx) {
private void runSetUsernameToNullInCallback(final boolean shouldRaiseException) throws Exception {
action.delegate = new Action<Object>() {
@Override
public F.Promise<Result> call(Http.Context ctx) {
return F.Promise.promise(() -> {
public CompletionStage<Result> call(Http.Context ctx) {
return CompletableFuture.supplyAsync(() -> {
if (shouldRaiseException) {
throw exception;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
*/
package play.api.http

import java.util.concurrent.CompletableFuture

import org.specs2.mutable.Specification
import play.api.inject.BindingKey
import play.api.{ OptionalSourceMapper, Configuration, Mode, Environment }
Expand Down Expand Up @@ -83,9 +85,9 @@ object HttpErrorHandlerSpec extends Specification {

class CustomJavaErrorHandler extends play.http.HttpErrorHandler {
def onClientError(req: play.mvc.Http.RequestHeader, status: Int, msg: String) =
play.libs.F.Promise.pure(play.mvc.Results.ok())
CompletableFuture.completedFuture(play.mvc.Results.ok())
def onServerError(req: play.mvc.Http.RequestHeader, exception: Throwable) =
play.libs.F.Promise.pure(play.mvc.Results.ok())
CompletableFuture.completedFuture(play.mvc.Results.ok())
}

}

0 comments on commit 4ca5263

Please sign in to comment.