diff --git a/xtraplatform-routes-sql/src/main/java/de/ii/xtraplatform/routes/sql/app/RoutesQueriesSql.java b/xtraplatform-routes-sql/src/main/java/de/ii/xtraplatform/routes/sql/app/RoutesQueriesSql.java index 1baa32ac3..069fa609a 100644 --- a/xtraplatform-routes-sql/src/main/java/de/ii/xtraplatform/routes/sql/app/RoutesQueriesSql.java +++ b/xtraplatform-routes-sql/src/main/java/de/ii/xtraplatform/routes/sql/app/RoutesQueriesSql.java @@ -93,6 +93,7 @@ */ @Singleton @AutoBind +@SuppressWarnings("PMD.TooManyMethods") public class RoutesQueriesSql implements FeatureQueriesExtension { private static final Logger LOGGER = LoggerFactory.getLogger(RoutesQueriesSql.class); @@ -117,30 +118,33 @@ public void on( FeatureProviderConnector connector) { Optional routesConfiguration = getRoutesConfiguration(provider.getData()); - if (routesConfiguration.isPresent()) { - SqlClient sqlClient = ((SqlConnector) connector).getSqlClient(); + if (routesConfiguration.isEmpty() || hook != LIFECYCLE_HOOK.STARTED) { + return; + } - switch (hook) { - case STARTED: - if (routesConfiguration.get().shouldWarmup()) { - LOGGER.debug("Warming up routes queries for {}", provider.getId()); - List queries = getWarmupSelects(routesConfiguration.get()); - AtomicInteger completed = new AtomicInteger(); - queries.forEach( - query -> - sqlClient - .run(query, SqlQueryOptions.ignoreResults()) - .whenComplete( - (r, t) -> { - completed.getAndIncrement(); - if (completed.get() == queries.size()) - LOGGER.debug( - "Routes queries for {} are warmed up", provider.getId()); - })); - } - break; - } + RoutesConfiguration routesConfig = routesConfiguration.get(); + if (!routesConfig.shouldWarmup()) { + return; } + + SqlClient sqlClient = ((SqlConnector) connector).getSqlClient(); + + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Warming up routes queries for {}", provider.getId()); + } + List queries = getWarmupSelects(routesConfig); + AtomicInteger completed = new AtomicInteger(); + queries.forEach( + query -> + sqlClient + .run(query, SqlQueryOptions.ignoreResults()) + .whenComplete( + (r, t) -> { + completed.getAndIncrement(); + if (completed.get() == queries.size() && LOGGER.isDebugEnabled()) { + LOGGER.debug("Routes queries for {} are warmed up", provider.getId()); + } + })); } @Override @@ -159,15 +163,11 @@ public void on( if (routesConfiguration.isPresent() && routeQuery.isPresent()) { SqlClient sqlClient = ((SqlConnector) connector).getSqlClient(); - switch (hook) { - case BEFORE: - String tableName = - createRouteTable(routesConfiguration.get(), routeQuery.get(), sqlClient); - aliasResolver.accept("_route_", tableName); - break; - case AFTER: - deleteRouteTable(routesConfiguration.get(), routeQuery.get(), sqlClient); - break; + if (hook == QUERY_HOOK.BEFORE) { + String tableName = createRouteTable(routesConfiguration.get(), routeQuery.get(), sqlClient); + aliasResolver.accept("_route_", tableName); + } else if (hook == QUERY_HOOK.AFTER) { + deleteRouteTable(routeQuery.get(), sqlClient); } } } @@ -184,8 +184,7 @@ private String createRouteTable( return tableName; } - private void deleteRouteTable( - RoutesConfiguration routesConfiguration, RouteQuery routeQuery, SqlClient sqlClient) { + private void deleteRouteTable(RouteQuery routeQuery, SqlClient sqlClient) { String tableName = getTempTableName(routeQuery); deleteTempTable(sqlClient, tableName); @@ -213,14 +212,17 @@ private void insertIntoTempTable(SqlClient sqlClient, String name, String select .run(query, SqlQueryOptions.mutation()) .whenComplete( (result, throwable) -> { - if (Objects.nonNull(throwable)) { - try { + if (Objects.isNull(throwable)) { + return; + } + try { + if (LOGGER.isDebugEnabled()) { LOGGER.debug( "Inserting into temp table failed, dropping it ({})", throwable.getMessage()); - deleteTempTable(sqlClient, name); - } catch (Throwable t) { - // ignore } + deleteTempTable(sqlClient, name); + } catch (Throwable t) { + // ignore } }) .join();