Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions cwms-data-api/src/main/java/cwms/cda/ApiServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
import cwms.cda.api.enums.UnitSystem;
import cwms.cda.api.errors.ApplicationException;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.api.location.kind.GateChangeCreateController;
import cwms.cda.api.location.kind.GateChangeDeleteController;
import cwms.cda.api.location.kind.GateChangeGetAllController;
Expand Down Expand Up @@ -355,31 +356,32 @@ public void init() {
ctx.header("X-XSS-Protection", "1; mode=block");
})
.exception(ApplicationException.class, (e, ctx) -> {
CdaError re = new CdaError(e.getCdaErrorMessage(), e.getSource(), e.getDetails());
CdaError re = ErrorTraceSupport.buildError(ctx, e.getCdaErrorMessage(),
e.getSource(), e.getDetails(), e);
if (e.getLoggerLevel().isPresent()) {
logger.at(e.getLoggerLevel().get()).withCause(e).log(re.toString());
}
ctx.status(e.getCdaHttpErrorCode()).json(re);
})
.exception(UnsupportedOperationException.class, (e, ctx) -> {
final CdaError re = CdaError.notImplemented();
final CdaError re = ErrorTraceSupport.buildError(ctx, "Not Implemented", e);
logger.atWarning().withCause(e)
.log("%s for request: %s", re, ctx.fullUrl());
ctx.status(HttpServletResponse.SC_NOT_IMPLEMENTED).json(re);
})
.exception(BadRequestResponse.class, (e, ctx) -> {
CdaError re = new CdaError("Bad Request",
"User Input", new HashMap<>(e.getDetails()));
CdaError re = ErrorTraceSupport.buildError(ctx, "Bad Request",
"User Input", new HashMap<>(e.getDetails()), e);
logger.atInfo().withCause(e).log(re.toString());
ctx.status(e.getStatus()).json(re);
})
.exception(IllegalArgumentException.class, (e, ctx) -> {
CdaError re = new CdaError("Bad Request");
CdaError re = ErrorTraceSupport.buildError(ctx, "Bad Request", e);
logger.atInfo().withCause(e).log(re.toString());
ctx.status(HttpServletResponse.SC_BAD_REQUEST).json(re);
})
.exception(DateTimeException.class, (e, ctx) -> {
CdaError re = new CdaError(e.getMessage());
CdaError re = ErrorTraceSupport.buildError(ctx, e.getMessage(), e);
ctx.status(HttpServletResponse.SC_BAD_REQUEST).json(re);
})
.exception(DataAccessException.class, (e, ctx) -> {
Expand All @@ -393,15 +395,15 @@ public void init() {
// CdaError does not include the Oracle exception message b/c this block catches
// all unhandled DataAccessExceptions and we don't know what is in the message
// it is unknown if the message would be safe/appropriate for users to see.
CdaError errResponse = new CdaError("Database Error");
CdaError errResponse = ErrorTraceSupport.buildError(ctx, "Database Error", e);
logger.atWarning().withCause(e).log("error on request[%s]: %s",
errResponse.getIncidentIdentifier(), ctx.req.getRequestURI());
ctx.status(500);
ctx.contentType(ContentType.APPLICATION_JSON.toString());
ctx.json(errResponse);
})
.exception(Exception.class, (e, ctx) -> {
CdaError errResponse = new CdaError("System Error");
CdaError errResponse = ErrorTraceSupport.buildError(ctx, "System Error", e);
logger.atWarning().withCause(e).log("error on request[%s]: %s",
errResponse.getIncidentIdentifier(), ctx.req.getRequestURI());
ctx.status(500);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import com.codahale.metrics.Timer;
import cwms.cda.api.enums.UnitSystem;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dao.basinconnectivity.BasinDao;
import cwms.cda.data.dto.CwmsId;
Expand Down Expand Up @@ -143,7 +144,7 @@ public void getAll(@NotNull Context ctx) {
ctx.result(result);
ctx.status(HttpServletResponse.SC_OK);
} catch (SQLException ex) {
CdaError error = new CdaError("Error retrieving all basins");
CdaError error = ErrorTraceSupport.buildError(ctx, "Error retrieving all basins", ex);
LOGGER.atSevere().withCause(ex).log("Error retrieving all basins");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(error);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao;
import cwms.cda.data.dto.binarytimeseries.BinaryTimeSeries;
import cwms.cda.formatters.ContentType;
Expand Down Expand Up @@ -163,8 +164,8 @@ public void getAll(@NotNull Context ctx) {

ctx.status(HttpServletResponse.SC_OK);
} catch (URISyntaxException | UnsupportedEncodingException ex) {
CdaError re =
new CdaError("Failed to process request: " + ex.getLocalizedMessage());
CdaError re = ErrorTraceSupport.buildError(ctx,
"Failed to process request: " + ex.getLocalizedMessage(), ex);
logger.atSevere().withCause(ex).log("%s", re);
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down
13 changes: 5 additions & 8 deletions cwms-data-api/src/main/java/cwms/cda/api/LocationController.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import cwms.cda.api.enums.UnitSystem;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.DeleteConflictException;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.data.dao.LocationsDao;
import cwms.cda.data.dao.LocationsDaoImpl;
import cwms.cda.data.dto.Location;
Expand Down Expand Up @@ -200,10 +201,6 @@ public void getAll(@NotNull Context ctx) {

ctx.status(HttpServletResponse.SC_OK);

} catch (Exception ex) {
CdaError re = new CdaError("failed to process request");
logger.atSevere().withCause(ex).log("%s", re.toString());
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
}

Expand Down Expand Up @@ -261,7 +258,7 @@ public void getOne(@NotNull Context ctx, @NotNull String locationId) {
addDeprecatedContentTypeWarning(ctx, contentType);
} catch (IOException ex) {
String errorMsg = "Error retrieving " + locationId;
CdaError re = new CdaError(errorMsg);
CdaError re = ErrorTraceSupport.buildError(ctx, errorMsg, ex);
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
logger.atSevere().withCause(ex).log("%s", errorMsg);
}
Expand Down Expand Up @@ -303,7 +300,7 @@ public void create(@NotNull Context ctx) {
"Created Location", locationFromBody.getName());
ctx.status(HttpServletResponse.SC_CREATED).json(re);
} catch (IOException ex) {
CdaError re = new CdaError("failed to process request");
CdaError re = ErrorTraceSupport.buildError(ctx, "failed to process request", ex);
logger.atSevere().withCause(ex).log("%s", re.toString());
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down Expand Up @@ -357,8 +354,8 @@ public void update(@NotNull Context ctx, @NotNull String locationId) {
"Updated Location", updatedLocation.getName()));
}
} catch (IOException ex) {
CdaError re =
new CdaError("Failed to process request: " + ex.getLocalizedMessage());
CdaError re = ErrorTraceSupport.buildError(ctx,
"Failed to process request: " + ex.getLocalizedMessage(), ex);
logger.atSevere().withCause(ex).log("%s", re.toString());
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,10 @@
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.util.List;
import com.google.common.flogger.FluentLogger;
import javax.servlet.http.HttpServletResponse;
import org.jooq.DSLContext;

public class ParametersController implements CrudHandler {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final MetricRegistry metrics;

private final Histogram requestResultSize;
Expand Down Expand Up @@ -121,10 +119,6 @@ public void getAll(Context ctx) {
ctx.result(results);
addDeprecatedContentTypeWarning(ctx, contentType);
requestResultSize.update(results.length());
} catch (Exception ex) {
CdaError re = new CdaError("Failed to process request");
logger.atSevere().withCause(ex).log("%s", re);
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,13 @@

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import com.google.common.flogger.FluentLogger;

import static com.codahale.metrics.MetricRegistry.name;
import static cwms.cda.api.Controllers.*;
import static cwms.cda.data.dao.JooqDao.getDslContext;


public class SpecifiedLevelController implements CrudHandler {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final String TAG = "Levels";
private final MetricRegistry metrics;

Expand Down Expand Up @@ -110,11 +108,6 @@ public void getAll(Context ctx) {
ctx.result(result);
requestResultSize.update(result.length());
ctx.status(HttpServletResponse.SC_OK);
} catch (Exception ex) {
CdaError re =
new CdaError("Failed to process request: " + ex.getLocalizedMessage());
logger.atSevere().withCause(ex).log("%s", re);
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.data.dao.texttimeseries.TimeSeriesTextDao;
import cwms.cda.data.dto.texttimeseries.TextTimeSeries;
import cwms.cda.formatters.ContentType;
Expand Down Expand Up @@ -144,8 +145,8 @@ public void getAll(@NotNull Context ctx) {

ctx.status(HttpServletResponse.SC_OK);
} catch (URISyntaxException | UnsupportedEncodingException ex) {
CdaError re =
new CdaError("Failed to process request: " + ex.getLocalizedMessage());
CdaError re = ErrorTraceSupport.buildError(ctx,
"Failed to process request: " + ex.getLocalizedMessage(), ex);
logger.atSevere().withCause(ex).log("%s", re);
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import com.codahale.metrics.Timer;
import cwms.cda.api.enums.UnitSystem;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.api.errors.NotFoundException;
import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dao.StoreRule;
Expand Down Expand Up @@ -222,7 +223,7 @@ public void create(@NotNull Context ctx) {
dao.create(timeSeries, createAsLrts, storeRule, overrideProtection, vd);
ctx.status(HttpServletResponse.SC_OK);
} catch (DataAccessException | IOException ex) {
CdaError re = new CdaError("Internal Error");
CdaError re = ErrorTraceSupport.buildError(ctx, "Internal Error", ex);
logger.atSevere().withCause(ex).log("%s", re.toString());
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down Expand Up @@ -638,7 +639,7 @@ public void update(@NotNull Context ctx, @NotNull String id) {

ctx.status(HttpServletResponse.SC_OK);
} catch (DataAccessException | IOException ex) {
CdaError re = new CdaError("Internal Error");
CdaError re = ErrorTraceSupport.buildError(ctx, "Internal Error", ex);
logger.atSevere().withCause(ex).log("%s", re.toString());
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ErrorTraceSupport;
import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dao.TimeSeriesIdentifierDescriptorDao;
import cwms.cda.data.dto.TimeSeriesIdentifierDescriptor;
Expand Down Expand Up @@ -343,7 +344,7 @@ public void delete(@NotNull Context ctx, @NotNull String timeseriesId) {
ctx.status(HttpServletResponse.SC_OK);

} catch (DataAccessException ex) {
CdaError re = new CdaError("Internal Error");
CdaError re = ErrorTraceSupport.buildError(ctx, "Internal Error", ex);
logger.atSevere().withCause(ex).log("%s", re.toString());
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,10 @@
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;

import com.google.common.flogger.FluentLogger;
import javax.servlet.http.HttpServletResponse;
import org.jooq.DSLContext;

public class TimeZoneController implements CrudHandler {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();

private final MetricRegistry metrics;

private final Histogram requestResultSize;
Expand Down Expand Up @@ -121,10 +118,6 @@ public void getAll(Context ctx) {
requestResultSize.update(results.length());
ctx.status(HttpServletResponse.SC_OK);
ctx.result(results);
} catch (Exception ex) {
logger.atSevere().withCause(ex).log("Failed to process request");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
ctx.result("Failed to process request");
}
}

Expand Down
6 changes: 0 additions & 6 deletions cwms-data-api/src/main/java/cwms/cda/api/UnitsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,10 @@
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.util.List;
import com.google.common.flogger.FluentLogger;
import javax.servlet.http.HttpServletResponse;
import org.jooq.DSLContext;

public class UnitsController implements CrudHandler {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final MetricRegistry metrics;

private final Histogram requestResultSize;
Expand Down Expand Up @@ -115,10 +113,6 @@ public void getAll(Context ctx) {
ctx.result(results);
addDeprecatedContentTypeWarning(ctx, contentType);
requestResultSize.update(results.length());
} catch (Exception ex) {
logger.atSevere().withCause(ex).log("Failed to process request");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
ctx.result("Failed to process request");
}

}
Expand Down
Loading
Loading