public static Result routeAndCall(Router router, RequestBuilder requestBuilder, long timeout) { try { Request request = requestBuilder.build(); if (router.routes().isDefinedAt(request._underlyingRequest())) { return invokeHandler(router.routes().apply(request._underlyingRequest()), request, timeout); } else { return null; } } catch (RuntimeException e) { throw e; } catch (Throwable t) { throw new RuntimeException(t); } }
public static Result routeAndCall( Class<? extends Router> router, RequestBuilder requestBuilder, long timeout) { try { Request request = requestBuilder.build(); Router routes = (Router) router .getClassLoader() .loadClass(router.getName() + "$") .getDeclaredField("MODULE$") .get(null); if (routes.routes().isDefinedAt(request._underlyingRequest())) { return invokeHandler(routes.routes().apply(request._underlyingRequest()), request, timeout); } else { return null; } } catch (RuntimeException e) { throw e; } catch (Throwable t) { throw new RuntimeException(t); } }
// -- @SuppressWarnings(value = "unchecked") private static Result invokeHandler( play.api.mvc.Handler handler, Request requestBuilder, long timeout) { if (handler instanceof play.api.mvc.Action) { play.api.mvc.Action action = (play.api.mvc.Action) handler; return wrapScalaResult(action.apply(requestBuilder._underlyingRequest()), timeout); } else if (handler instanceof JavaHandler) { return invokeHandler( ((JavaHandler) handler) .withComponents( Play.application().injector().instanceOf(JavaHandlerComponents.class)), requestBuilder, timeout); } else { throw new RuntimeException("This is not a JavaAction and can't be invoked this way."); } }
public static boolean isHttpsRequest(Request request) { return (request.getHeader(SSL_HEADER) != null && request.getHeader(SSL_HEADER).contains("https")) || isOverHttpsPort(request.host()); }
@Test public void matchingBBTest() { /* ==================================================== BLACK BOX TEST : SEE /Z/report/report.pdf, page 16 ==================================================== */ Coordinate coorATest = new Coordinate(50.669715, 4.602624); Coordinate coorBTest = new Coordinate(50.667892, 4.619073); User userTest = new User( "loginTest", "Mister", "Nobody", "*****@*****.**", "0123-456", 0, null, null, null, null, null); Date arrTimeTest = new Date(2013, 01, 04, 15, 00); Traject trajectTest = new Traject( 1, // Seats 15, // TotalCost null, // Request userTest, // User null, // Dep PP null, // Arr PP null); // Proposal Request reqTest = new Request( coorATest, // Coor departure coorBTest, // Coor arrival "Place Galilee 6 1348 Louvain-La-Neuve", // Adress departure "Cour des Fleurets 1348 Louvain-La-Neuve", // Adress arrival arrTimeTest, // Arrival time 1, // Seats 60, // Time tolerance 3000, // Walk tolerance in m 5, // Price tolerance userTest, // User trajectTest); // Traject trajectTest.setRequest(reqTest); // BB Test : msg-1 ArrayList<Traject> response = controllers.Matching.match(reqTest); /*for(Traject traj : response){ Assert.fail("Requete n est pas dans la base de donnees mais matching retourne un trajet"); }*/ reqTest.getUser().addRequest(reqTest); reqTest.save(); reqTest.getUser().save(); // BB Test : msg-2 ArrayList<Traject> response2 = controllers.Matching.match(reqTest); for (Traject traj : response2) { ExpressionList<Proposal> res = Proposal.find.where().eq("id", traj.getProposal().getId()); if (res.findRowCount() < 1) { Assert.fail("Proposal n est pas dans la base de donnees mais matching retourne un trajet"); } } // BB Test : msg-3 + msg-4 for (Traject traj : response2) { PickupPoint depPP = traj.getDeparturePP().getPickupPoint(); PickupPoint arrPP = traj.getArrivalPP().getPickupPoint(); if (PickupPoint.find.where().eq("id", depPP.getId()) != depPP) { Assert.fail("Departure PickUpPoint pas dans la base de donnees"); } if (PickupPoint.find.where().eq("id", arrPP.getId()) != arrPP) { Assert.fail("Arrival PickUpPoint pas dans la base de donnees"); } } for (Traject traj : response2) { // BB Test : msg-5 double walkBegin = Matching.distance( traj.getDeparturePP().getPickupPoint().getCoordinates(), reqTest.getTraject().getDeparturePP().getPickupPoint().getCoordinates()); double walkEnd = Matching.distance( reqTest.getTraject().getArrivalPP().getPickupPoint().getCoordinates(), traj.getArrivalPP().getPickupPoint().getCoordinates()); if (walkBegin + walkEnd > 3000) { Assert.fail("La tolerance de distance de marche n est pas respectee"); } // BB Test : msg-6 Date maxiTime = new Date(2013, 01, 04, 16, 00); if (traj.getArrivalPP().getTime().after(maxiTime)) { Assert.fail("Heure d arrivee du passager depasse la tolerance d heure d arrivee"); } // BB Test : msg-7 if (traj.getReservedSeats() - 1 < 0) { Assert.fail("Pas assez de sieges libres dans la proposition pour satisfaire la requete"); } // BB Test : msg-8 if (traj.getTotalCost() > 5) { Assert.fail("Tolerance en cout non respectee."); } } }