diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/InternalServerError.java b/pdb-ui/src/main/java/org/lucares/pdbui/InternalServerError.java deleted file mode 100644 index 448f803..0000000 --- a/pdb-ui/src/main/java/org/lucares/pdbui/InternalServerError.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.lucares.pdbui; - -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ResponseStatus; - -@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR, reason = "Internal Server Error") -public class InternalServerError extends RuntimeException { - - private static final long serialVersionUID = 1L; - - public InternalServerError(final String message, final Throwable cause) { - super(message, cause); - } - - public InternalServerError(final Throwable cause) { - super(cause); - } -} diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/NotFoundException.java b/pdb-ui/src/main/java/org/lucares/pdbui/NotFoundException.java new file mode 100644 index 0000000..eac3fac --- /dev/null +++ b/pdb-ui/src/main/java/org/lucares/pdbui/NotFoundException.java @@ -0,0 +1,18 @@ +package org.lucares.pdbui; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Not Found") +public class NotFoundException extends RuntimeException { + + private static final long serialVersionUID = 694206253376122420L; + + public NotFoundException(final String message, final Throwable cause) { + super(message, cause); + } + + public NotFoundException(final Throwable cause) { + super(cause); + } +} diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java b/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java index f641884..6177d5e 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.lucares.ludb.FieldNotExistsException; import org.lucares.ludb.Proposal; import org.lucares.pdb.plot.api.PlotSettings; import org.lucares.pdbui.domain.AutocompleteProposal; @@ -44,48 +45,37 @@ public class PdbController implements HardcodedValues, CollectionUtils { produces = MediaType.APPLICATION_JSON_UTF8_VALUE // ) @ResponseBody - PlotResponse createPlot(@RequestBody final PlotRequest request) { + PlotResponse createPlot(@RequestBody final PlotRequest request) throws InternalPlottingException { - try { + final PlotSettings plotSettings = PlotSettingsTransformer.toSettings(request); - final PlotSettings plotSettings = PlotSettingsTransformer.toSettings(request); + final File image = plotter.plot(plotSettings); - final File image = plotter.plot(plotSettings); - - final Path relativeImagePath = plotter.getOutputDir().relativize(image.toPath()); - return new PlotResponse(WEB_IMAGE_OUTPUT_PATH + "/" + relativeImagePath.toString()); - - } catch (final InternalPlottingException e) { - throw new InternalServerError(e); - } + final Path relativeImagePath = plotter.getOutputDir().relativize(image.toPath()); + final String relativeImgUrl = relativeImagePath.toString().replace('\\', '/'); + return new PlotResponse(WEB_IMAGE_OUTPUT_PATH + "/" + relativeImgUrl); } @RequestMapping(path = "/autocomplete", // method = RequestMethod.GET, // - consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, // APPLICATION_JSON_UTF8_VALUE + consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, // produces = MediaType.APPLICATION_JSON_UTF8_VALUE // ) @ResponseBody AutocompleteResponse autocomplete(@RequestParam(name = "query") final String query, @RequestParam(name = "caretIndex") final int caretIndex) { - try { - final AutocompleteResponse result = new AutocompleteResponse(); - final int zeroBasedCaretIndex = caretIndex - 1; + final AutocompleteResponse result = new AutocompleteResponse(); + final int zeroBasedCaretIndex = caretIndex - 1; - final List proposals = db.autocomplete(query, zeroBasedCaretIndex); - final List nonEmptyProposals = filter(proposals, p -> p.getResults() > 0); + final List proposals = db.autocomplete(query, zeroBasedCaretIndex); + final List nonEmptyProposals = filter(proposals, p -> p.getResults() > 0); - final List autocompleteProposals = toAutocompleteProposals(nonEmptyProposals); - Collections.sort(autocompleteProposals, new AutocompleteProposalByValue()); + final List autocompleteProposals = toAutocompleteProposals(nonEmptyProposals); + Collections.sort(autocompleteProposals, new AutocompleteProposalByValue()); - result.setProposals(autocompleteProposals); - return result; - - } catch (final Exception e) { - e.printStackTrace(); - throw new InternalServerError(e); - } + result.setProposals(autocompleteProposals); + return result; } @RequestMapping(path = "/fields", // @@ -95,16 +85,9 @@ public class PdbController implements HardcodedValues, CollectionUtils { ) @ResponseBody List fields() { + final List fields = db.getDb().getFields(); - try { - final List fields = db.getDb().getFields(); - - return fields; - - } catch (final Exception e) { - e.printStackTrace(); - throw new InternalServerError(e); - } + return fields; } @RequestMapping(path = "/fields/{fieldName}/values", // @@ -120,10 +103,8 @@ public class PdbController implements HardcodedValues, CollectionUtils { final List fields = db.getDb().getFieldsValues(query, fieldName); return fields; - - } catch (final Exception e) { - e.printStackTrace(); - throw new InternalServerError(e); + } catch (final FieldNotExistsException e) { + throw new NotFoundException(e); } } diff --git a/performanceDb/src/main/resources/log4j2.properties b/pdb-ui/src/main/resources/log4j2.properties similarity index 63% rename from performanceDb/src/main/resources/log4j2.properties rename to pdb-ui/src/main/resources/log4j2.properties index ac5129b..78335eb 100644 --- a/performanceDb/src/main/resources/log4j2.properties +++ b/pdb-ui/src/main/resources/log4j2.properties @@ -11,3 +11,6 @@ appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] %c rootLogger.level = info rootLogger.appenderRef.stdout.ref = STDOUT + +## log all exceptions thrown by controllers. Otherwise only 500 will be logged. +#log4j.logger.org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver=debug