Search in sources :

Example 11 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineListModulesRoute.

private void defineListModulesRoute() {
    Route route = router.route(HttpMethod.GET, "/modules").produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        execute(200, routingContext, new ServerAction() {

            @Override
            public Object execute() throws Exception {
                return engine.listModules().stream().map(m -> ApiUtils.convertCamelToSnake(m)).collect(Collectors.toList());
            }
        }, false);
    });
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Route(io.vertx.ext.web.Route) UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) MissingInstanceException(com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)

Example 12 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineCreateModuleInstanceRoute.

private void defineCreateModuleInstanceRoute() {
    Route route = router.route(HttpMethod.POST, "/modules/:" + PARAM_MODULE + "/instances").produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        String moduleId = routingContext.request().getParam(PARAM_MODULE);
        ConnectionOptions opts = retrieveConnectionOptions(routingContext.getBodyAsString());
        execute(200, routingContext, new ServerAction() {

            @Override
            public Object execute() throws Exception {
                return engine.createInstance(moduleId, opts).toInstance();
            }
        }, false);
    });
}
Also used : ConnectionOptions(com.arm.mbed.cloud.sdk.common.ConnectionOptions) JsonObject(io.vertx.core.json.JsonObject) Route(io.vertx.ext.web.Route) UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) MissingInstanceException(com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)

Example 13 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineModuleMethodTestRoute.

// TODO Remove when not needed anymore
@SuppressWarnings("boxing")
private void defineModuleMethodTestRoute() {
    Route route = router.route(HttpMethod.GET, "/:" + PARAM_MODULE + "/:" + PARAM_METHOD + "*").produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        HttpServerRequest request = routingContext.request();
        String module = request.getParam(PARAM_MODULE);
        String method = request.getParam(PARAM_METHOD);
        Map<String, Object> params = retrieveQueryParameters(request);
        logger.logInfo("TEST http://localhost:" + String.valueOf(port) + request.uri() + " AT " + new Date().toString());
        ModuleInstance instance = null;
        try {
            instance = engine.createInstance(module, defaultConnectionConfiguration);
            APIMethodResult result = engine.callAPIOnInstance(instance.getId(), method, params);
            if (!result.wasExceptionRaised()) {
                String resultJson = Serializer.convertLegacyResultToJson(result.getResult());
                logger.logDebug("RESULT: " + String.valueOf(resultJson));
                engine.deleteInstance(instance.getId());
                respond(200, routingContext, resultJson);
            } else {
                engine.deleteInstance(instance.getId());
                logger.logDebug("RESULT error happened: " + result.getMetadata());
                if (result.getMetadata() == null) {
                    sendError(setResponse(500, routingContext), null, (result.getException().getMessage() == null) ? "Exception of type " + result.getException() + " was raised" : result.getException().getMessage());
                } else {
                    sendError(setResponse(500, routingContext), result.getMetadata().getStatusCode(), "An error occurred during call. Call metadata: " + result.getMetadata().toString());
                }
            }
        } catch (UnknownAPIException | APICallException | ServerCacheException e) {
            if (instance != null) {
                try {
                    engine.deleteInstance(instance.getId());
                } catch (ServerCacheException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
            sendError(setResponse(500, routingContext), null, (e.getMessage() == null) ? "Exception of type " + e + " was raised" : e.getMessage());
        }
    });
}
Also used : UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) HttpServerRequest(io.vertx.core.http.HttpServerRequest) JsonObject(io.vertx.core.json.JsonObject) APIMethodResult(com.arm.mbed.cloud.sdk.testserver.internal.model.APIMethodResult) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) ModuleInstance(com.arm.mbed.cloud.sdk.testserver.internal.model.ModuleInstance) Route(io.vertx.ext.web.Route) Date(java.util.Date) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException)

Example 14 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineShutdownRoute.

private void defineShutdownRoute() {
    Route route = router.route(HttpMethod.POST, "/shutdown").produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        execute(202, routingContext, new ServerAction() {

            @Override
            public Object execute() throws Exception {
                engine.shutdown();
                return null;
            }
        }, false);
        System.exit(0);
    });
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Route(io.vertx.ext.web.Route) UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) MissingInstanceException(com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)

Example 15 with Route

use of io.vertx.ext.web.Route in project mbed-cloud-sdk-java by ARMmbed.

the class TestServer method defineDeleteInstanceRoute.

private void defineDeleteInstanceRoute() {
    Route route = router.route(HttpMethod.DELETE, "/instances/:" + PARAM_INSTANCE).produces(APPLICATION_JSON);
    route.blockingHandler(routingContext -> {
        String instanceId = fetchInstanceId(routingContext.request().getParam(PARAM_INSTANCE));
        execute(200, routingContext, new ServerAction() {

            @SuppressWarnings("boxing")
            @Override
            public Object execute() throws Exception {
                return engine.deleteInstance(instanceId);
            }
        }, false);
    });
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Route(io.vertx.ext.web.Route) UnknownAPIException(com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException) ServerCacheException(com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException) APICallException(com.arm.mbed.cloud.sdk.testutils.APICallException) MissingInstanceException(com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)

Aggregations

Route (io.vertx.ext.web.Route)30 JsonObject (io.vertx.core.json.JsonObject)17 ServerCacheException (com.arm.mbed.cloud.sdk.testserver.cache.ServerCacheException)14 UnknownAPIException (com.arm.mbed.cloud.sdk.testserver.internal.model.UnknownAPIException)14 APICallException (com.arm.mbed.cloud.sdk.testutils.APICallException)14 MissingInstanceException (com.arm.mbed.cloud.sdk.testserver.cache.MissingInstanceException)13 RoutingContext (io.vertx.ext.web.RoutingContext)10 Router (io.vertx.ext.web.Router)7 HttpMethod (io.vertx.core.http.HttpMethod)4 AbstractVerticle (io.vertx.core.AbstractVerticle)3 Handler (io.vertx.core.Handler)3 HttpServerResponse (io.vertx.core.http.HttpServerResponse)3 TemplateHandler (io.vertx.ext.web.handler.TemplateHandler)3 TemplateHandlerImpl (io.vertx.ext.web.handler.impl.TemplateHandlerImpl)3 TemplateEngine (io.vertx.ext.web.templ.TemplateEngine)3 Date (java.util.Date)3 Map (java.util.Map)3 Set (java.util.Set)3 Test (org.junit.Test)3 APIMethodResult (com.arm.mbed.cloud.sdk.testserver.internal.model.APIMethodResult)2