@Override public void start() throws Exception { // Build the Jax-RS hello world deployment VertxResteasyDeployment deployment = new VertxResteasyDeployment(); deployment.start(); deployment.getRegistry().addPerInstanceResource(HelloWorldService.class); // Start the front end server using the Jax-RS controller vertx.createHttpServer() .requestHandler(new VertxRequestHandler(vertx, deployment)) .listen(8080, ar -> { System.out.println("Server started on port "+ ar.result().actualPort()); }); } }
@Override public CompletableFuture<Void> stop() { if (server != null) { CompletableFuture<Void> future = new CompletableFuture<>(); server.close(result -> { LOGGER.info("Stopped"); future.complete(null); }); deployment.stop(); return future; } open.set(false); return CompletableFuture.completedFuture(null); }
public static VertxResteasyDeployment start(String bindPath, SecurityDomain domain) throws Exception { VertxResteasyDeployment deployment = new VertxResteasyDeployment(); deployment.setSecurityEnabled(true); return start(bindPath, domain, deployment); }
public Handler<HttpServerRequest> createHandler(Vertx vertx) { return new VertxRequestHandler(vertx, deployment, root, domain); } }
@Override public VertxRegistry getRegistry() { Registry registry = super.getRegistry(); if (!(registry instanceof VertxRegistry)) { registry = new VertxRegistry(registry, getProviderFactory().getResourceBuilder()); } return (VertxRegistry) registry; }
@Override public boolean resume(Object entity) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; done = true; return internalResume(entity, t -> vertxFlush()); } }
@Override public void sendError(int status) throws IOException { checkException(); sendError(status, null); }
public static VertxResteasyDeployment start() throws Exception { return start(""); }
@Override public ResteasyAsynchronousResponse suspend(long millis) throws IllegalStateException { return suspend(millis, TimeUnit.MILLISECONDS); }
public VertxHttpRequest(final Context context, final ResteasyHttpHeaders httpHeaders, final ResteasyUriInfo uri, final String httpMethod, final SynchronousDispatcher dispatcher, final VertxHttpResponse response, final boolean is100ContinueExpected) { super(uri); this.context = context; this.is100ContinueExpected = is100ContinueExpected; this.response = response; this.dispatcher = dispatcher; this.httpHeaders = httpHeaders; this.httpMethod = httpMethod; this.executionContext = new VertxExecutionContext(this, response, dispatcher); }
VertxExecutionContext(final VertxHttpRequest request, final VertxHttpResponse response, final SynchronousDispatcher dispatcher) { super(dispatcher, request, response); this.request = request; this.response = response; this.asyncResponse = new VertxHttpAsyncResponse(dispatcher, request, response); }
@Override public void complete() { synchronized (responseLock) { if (done) return; if (cancelled) return; done = true; vertxFlush(); } }
public static void stop() throws Exception { if (vertx != null) { try { vertx.stop(); } catch (Exception e) { } } vertx = null; }
public VertxRequestHandler(final Vertx vertx, final ResteasyDeployment deployment, final String servletMappingPrefix, final SecurityDomain domain) { this.vertx = vertx; this.dispatcher = new RequestDispatcher((SynchronousDispatcher) deployment.getDispatcher(), deployment.getProviderFactory(), domain); this.servletMappingPrefix = servletMappingPrefix; }
@Override public void start() throws Exception { // Build the Jax-RS controller deployment VertxResteasyDeployment deployment = new VertxResteasyDeployment(); deployment.start(); deployment.getRegistry().addPerInstanceResource(Controller.class); // Start the front end server using the Jax-RS controller vertx.createHttpServer() .requestHandler(new VertxRequestHandler(vertx, deployment)) .listen(8080, ar -> { System.out.println("Server started on port "+ ar.result().actualPort()); }); } }
@Override public boolean resume(Throwable ex) { synchronized (responseLock) { if (done) return false; if (cancelled) return false; done = true; return internalResume(ex, t -> vertxFlush()); } }
public static VertxResteasyDeployment start(String bindPath) throws Exception { return start(bindPath, null); }
@Override public ResteasyAsynchronousResponse suspend() throws IllegalStateException { return suspend(-1); }
@Override public CompletableFuture<RestService> start() { server = vertx.createHttpServer(); deployment = new VertxResteasyDeployment(); deployment.start(); deployment.getDispatcher().getDefaultContextObjects() .put(ClusterMembershipService.class, atomix.getMembershipService()); deployment.getDispatcher().getDefaultContextObjects() .put(ClusterCommunicationService.class, atomix.getCommunicationService()); deployment.getDispatcher().getDefaultContextObjects() .put(ClusterEventService.class, atomix.getEventService()); deployment.getDispatcher().getDefaultContextObjects() .put(PrimitiveFactory.class, atomix.getPrimitivesService()); deployment.getDispatcher().getDefaultContextObjects() .put(PrimitivesService.class, atomix.getPrimitivesService()); deployment.getDispatcher().getDefaultContextObjects() .put(EventManager.class, new EventManager()); deployment.getDispatcher().getDefaultContextObjects() .put(AtomixRegistry.class, atomix.getRegistry()); deployment.getRegistry().addPerInstanceResource(classInfo.loadClass(), "/v1"); }); deployment.getDispatcher().getProviderFactory().register(new JacksonProvider(createObjectMapper())); server.requestHandler(new VertxRequestHandler(vertx, deployment));
public static void main(String[] args) throws Exception { start(); } }