Code Monkey home page Code Monkey logo

scipamato's People

Contributors

dependabot[bot] avatar jcornaz avatar renovate[bot] avatar ursjoss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

katrinleinweber

scipamato's Issues

Excluding papers from search from within paper edit page should not jump to result page

Given I have a search with a number of papers in the result list, if I open the edit page for one of the papers from the search result list and hit the exclude button, SciPaMaTo jumps back to the result list page - this time hiding the excluded paper from the result list.

While this behavior is not wrong, it is impractical. I want to browse the papers in the edit page using the previous or next buttons, reading the content and then decide whether to exclude the paper from the search or not. If I do exclude the paper, the edit page should jump to the next paper (as if I had pressed the next button) - unless we're excluding the very last paper from the result list. In this scenario, the edit page should jump to the previous paper. Only when I exclude the very last paper in the search, the (empty) result list should be shown.

The same should be true if we're browsing the excluded papers from the search. Re-including the paper into the search should skip to the next (or previous if we handled the last one) excluded paper.

Database Connection Leak

The integration tests occasionally fail with too many connections. While normal SciPaMaTo-Core and Public operation are presumably managed correctly using HikariCP, I suspect the spring batch process for the data sync between core and public is not.

Layout Tweaks

The users have relatively small screen resolutions (probably 1366x768). They'd like to have the layout of the paper entry page slightly tweaked.

  • Tab1: Fields Goals and Population with fewer rows (2/3), add more lines to Methods instead, to use up the space used by the new study fields. Tab Index first within the left column, then within the right column
  • Tab 3 (Codes): Put the codes into two columns. Don't have the multselect combo boxes grow with more selections

Source: Trello-Card 10/18

Translate Exception into more user friendly form: DataViolationException when trying to delete Code

Exception thrown when trying to delete a code that is still assigned to papers:

jOOQ; SQL [delete from "public"."code" where ("public"."code"."code" = ? and "public"."code"."version" = ?)]; ERROR: update or delete on table "code" violates foreign key constraint "paper_code_code_fkey" on table "paper_code" Detail: Key (code)=(7Q) is still referenced from table "paper_code".; nested exception is org.postgresql.util.PSQLException: ERROR: update or delete on table "code" violates foreign key constraint "paper_code_code_fkey" on table "paper_code" Detail: Key (code)=(7Q) is still referenced from table "paper_code".

should be translated to something like:

You cannot delete code '1A' as it is still assigned to at least one paper.

Reactivate integration tests for core-sync

In the context of running postgresql in a docker container for jOOQ code generation and for integration tests (#88), I had to disable the integration tests for public-web.

I renamed the path for the respective test-set from core/sync/src/intTest to core/sync/intTestDisabled.

The problem in particular is that we need to databases with three datasources to test the persistence layer involving batch, core and public database (with batch on core).

Find a way to reactivate those tests.

Reactivate integration tests for core-web and public-web

In the context of running postgresql in a docker container for jOOQ code generation and for integration tests (#88), I had to disable the integration tests for public-web (see ticket #112).

I renamed the path for the respective test-set from core/web/src/intTest to core/web/intTestDisabled.

core-web inherits the multiple datasources defined in core-sync it depends on.

Find a way to reactivate those tests.

Reactivate integration tests for public-web

In the context of running postgresql in a docker container for jOOQ code generation and for integration tests (#88), I had to disable the integration tests for public-web (see #112).

I renamed the path for the respective test-set from public/web/src/intTest to public/web/intTestDisabled.

Find a way to reactivate those tests.

Upgrade of gradle from 5.4.1 to 5.5.0/5.5.1 results in test failures (inlining mockito with asm < 7.0)

Bumping gradle from 5.4.1 to 5.5.1 results in failing tests, but only when run from gradle. Running the tests from IntellJ works fine.

ch.difty.scipamato.publ.persistence.paper.JooqPublicPaperServiceTest > findingByNumber_withRepoFindingRecord_returnsItWrappedAsOptional() FAILED
    org.mockito.exceptions.base.MockitoException
        Caused by: org.mockito.exceptions.base.MockitoException
            Caused by: java.lang.IllegalStateException
                Caused by: java.lang.UnsupportedOperationException

I presume it has to do with asm. But need to investigate. Currently rolled back the gradle-wrapper to 5.4.1.

Filter Newsletters by Topic

Enhance NewsletterListPage with a select box that allows to specify a newsletter topic. Triggering the search should result in a list of newsletters that involved the selected topic. Leaving the topic blank skips filtering by topic.

Inspired by Trello Card 10/40.

Users with >= 20 saved searches will not be able to effectively use new searches

The search order panel shows a combo box with saved searches, offering the user the possibility to select and retrigger one of those searches. A button New Search offers the possibility to create and define a new search order.

The users faced the problem that this button seemed to not have an effect anymore.

It turned out the creation of new search orders did work as expected. However the combobox was limited to only display the first 20 results, sorting global searches first and then implicitly in natural order. If the new search order was in rank 21 or later, it would simply not turn up in the combobox.

Bug: PaperEntryPage: Class does not have a visible default constructor.

Occasionally found in the logs:

2019-01-10 09:19:37.827 ERROR 6272 --- [XNIO-1 task-2] o.apache.wicket.DefaultExceptionMapper   : Unexpected error occurred

org.apache.wicket.WicketRuntimeException: Unable to create page from class ch.difty.scipamato.core.web.paper.entry.PaperEntryPage. Class does not have a visible default constructor.
        at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:80) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:90) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.PageProvider$Provision.getPage(PageProvider.java:380) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:171) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:231) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:202) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) ~[wicket-request-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:275) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:206) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:299) [wicket-core-8.2.0.jar!/:8.2.0]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) [spring-boot-actuator-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) [spring-boot-actuator-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) [spring-boot-actuator-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) [na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [na:na]
        at java.base/java.lang.Thread.run(Thread.java:844) [na:na]
Caused by: java.lang.NoSuchMethodException: ch.difty.scipamato.core.web.paper.entry.PaperEntryPage.<init>()
        at java.base/java.lang.Class.getConstructor0(Class.java:3302) ~[na:na]
        at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2512) ~[na:na]
        at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:65) ~[wicket-core-8.2.0.jar!/:8.2.0]
        ... 99 common frames omitted

Fix typo in Reference Data

Cause Code 4H in language 'en' is wrongly attributed with "Heart, cardovascular system, blood".

Should be "Heart, cardiovascular system, blood"

Bug: OptimisticLockingException when deleting search orders

Found in the logs:

2019-01-15 00:01:36.642 ERROR 6272 --- [XNIO-1 task-35] o.apache.wicket.DefaultExceptionMapper   : Unexpected error occurred

ch.difty.scipamato.core.persistence.OptimisticLockingException: Record in table 'search_order' has been modified prior to the delete attempt. Aborting....
        at ch.difty.scipamato.core.persistence.JooqEntityRepo.delete(JooqEntityRepo.java:154) ~[scipamato-core-persistence-jooq-1.1.0.jar!/:1.1.0]
        at ch.difty.scipamato.core.persistence.JooqEntityRepo$$FastClassBySpringCGLIB$$f9a9a574.invoke(<generated>) ~[scipamato-core-persistence-jooq-1.1.0.jar!/:1.1.0]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) ~[spring-aop-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at ch.difty.scipamato.core.persistence.search.JooqSearchOrderService$$EnhancerBySpringCGLIB$$e3c936b4.remove(<generated>) ~[scipamato-core-persistence-jooq-1.1.0.jar!/:1.1.0]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
        at org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:521) ~[wicket-ioc-8.2.0.jar!/:8.2.0]
        at com.sun.proxy.$Proxy181.remove(Unknown Source) ~[na:na]
        at ch.difty.scipamato.core.web.paper.search.SearchOrderSelectorPanel$6.onSubmit(SearchOrderSelectorPanel.java:229) ~[classes!/:1.1.0]
        at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:111) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:223) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:778) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:176) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:127) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:598) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.internalInvoke(ListenerRequestHandler.java:306) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.invoke(ListenerRequestHandler.java:280) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.invokeListener(ListenerRequestHandler.java:222) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.respond(ListenerRequestHandler.java:208) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912) ~[wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) ~[wicket-request-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:275) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:206) [wicket-core-8.2.0.jar!/:8.2.0]
        at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:299) [wicket-core-8.2.0.jar!/:8.2.0]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) [spring-boot-actuator-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.1.2.RELEASE.jar!/:5.1.2.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) [spring-boot-actuator-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) [spring-boot-actuator-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) [undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) [undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) [na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [na:na]
        at java.base/java.lang.Thread.run(Thread.java:844) [na:na]

Error when creating literature review PDF after using the back button

Steps to reproduce:

  • In the default page (Paper Filter Page) apply some filter
  • Verify you can create/download the PDF 'literature review'
  • Jump into the Edit Page for a particular paper (click on the title)
  • Use the browser's back button (not the applications back button) to return to the filter page
  • Click once more the button to create/download the literature review PDF -> Error

Based on trello card 10/15

FR: Provide better feedback about the underlying cause if the PubMed API is unable to retrieve an article

Currently, if an article cannot be retrieved from PubMed, the only response to the user that issued the request is Could not retrieve an article with PMID 30419128 from PubMed.. The cause for the issue is logged to the log file but remains hidden from the user.

In this particular case, the problem was a 502 Bad Gateway status code, the api within scipamato through an exception with the apache response page as the containing message.

SciPaMaTo should evaluate the Html status code and at least indicate the direction of the problem to the user.

Starting SciPaMaTo-Public with profile development in debug mode throws

Starting SciPaMaTo-Public from IntelliJ with profile development,public resulted in the following exception (while starting it without those profiles did not throw):

org.apache.wicket.WicketRuntimeException: An error occurred while generating an Url for handler 'ResourceReferenceRequestHandler{resourceReference=scope: ch.difty.scipamato.publ.web.themes.markup.html.publ.ScipamatoPublicLessReference; name: less/__main.less; locale: null; style: null; variation: null, pageParameters=}'
	at org.apache.wicket.request.cycle.RequestCycle.urlFor(RequestCycle.java:557) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.CssReferenceHeaderItem.getUrl(CssReferenceHeaderItem.java:162) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.CssReferenceHeaderItem.getRenderTokens(CssReferenceHeaderItem.java:149) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.internal.HeaderResponse.wasItemRendered(HeaderResponse.java:61) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.internal.HeaderResponse.render(HeaderResponse.java:52) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.filter.FilteringHeaderResponse.getContent(FilteringHeaderResponse.java:270) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.filter.FilteringHeaderResponse.close(FilteringHeaderResponse.java:222) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.html.DecoratingHeaderResponse.close(DecoratingHeaderResponse.java:87) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.head.ResourceAggregator.close(ResourceAggregator.java:290) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.html.internal.HtmlHeaderContainer.onComponentTagBody(HtmlHeaderContainer.java:176) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Component.internalRenderComponent(Component.java:2484) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1593) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Component.internalRender(Component.java:2289) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Component.render(Component.java:2220) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1454) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1654) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Page.onRender(Page.java:858) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.markup.html.WebPage.onRender(WebPage.java:126) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Component.internalRender(Component.java:2289) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Component.render(Component.java:2220) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.Page.renderPage(Page.java:998) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:124) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:195) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:202) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:914) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) ~[wicket-request-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:282) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:327) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:335) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:259) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:275) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:206) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:299) ~[wicket-core-8.3.0.jar:8.3.0]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) ~[spring-boot-actuator-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) ~[spring-boot-actuator-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) ~[spring-boot-actuator-2.1.3.RELEASE.jar:2.1.3.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) ~[undertow-servlet-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:364) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) ~[undertow-core-2.0.17.Final.jar:2.0.17.Final]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.IllegalArgumentException: Argument 'lessStream' may not be null.
	at org.apache.wicket.util.lang.Args.notNull(Args.java:41) ~[wicket-util-8.3.0.jar:8.3.0]
	at de.agilecoders.wicket.less.LessResourceStream.<init>(LessResourceStream.java:33) ~[wicket-bootstrap-less-2.0.7.jar:na]
	at de.agilecoders.wicket.less.LessPackageResource.getResourceStream(LessPackageResource.java:31) ~[wicket-bootstrap-less-2.0.7.jar:na]
	at org.apache.wicket.request.resource.caching.version.LastModifiedResourceVersion.getVersion(LastModifiedResourceVersion.java:44) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.resource.caching.version.RequestCycleCachedResourceVersion.getVersion(RequestCycleCachedResourceVersion.java:98) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.resource.caching.FilenameWithVersionResourceCachingStrategy.decorateUrl(FilenameWithVersionResourceCachingStrategy.java:105) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.core.request.mapper.BasicResourceReferenceMapper.mapHandler(BasicResourceReferenceMapper.java:234) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.mapper.ParentPathReferenceRewriter.mapHandler(ParentPathReferenceRewriter.java:92) ~[wicket-request-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:210) ~[wicket-request-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.mapUrlFor(RequestCycle.java:451) ~[wicket-core-8.3.0.jar:8.3.0]
	at org.apache.wicket.request.cycle.RequestCycle.urlFor(RequestCycle.java:551) ~[wicket-core-8.3.0.jar:8.3.0]
	... 128 common frames omitted

Extend Complex Search: Searching for Methods to search other fields as well

When using the complex search, the users have requested to incorporate a feature that has already been added to the filtering capabilities: Adding a search term to the methods field should simultaneously search in additional related fields (see here for filtering).

The additional fields are all from the short study field collection. Background: Either the user enters the study in the 'normal' fields (method, population, results etc.) or in the short fields (in the blue frames (e.g. study design, outcome etc.).

I'm not particularly fond of the idea, as it adds complexity to the search functionality, which is quite specific to one set of fields, but it seems to really help.

The fields that have been included in filtering when searching for method are:

  • Methods (the 'normal' field)
  • Study Design
  • Place/Country (study name)
  • Outcome
  • Pollutant
  • Exposure Assessment
  • Statistical Method
  • Confounders

The original feature request (trello card 11/4) also listed two more short study fields that are currently not reflected in the filtering:

  • Duration
  • Participants

This is still TBD whether we need to include those two fields too. But if so, they should also be included when filtering - for pure consistency.

The direction is only one way. Searching in the method fields will also consider the other fields. Searching in one of the other fields directly will only consider that field.

  • Initial approach without duration and participants
  • Adjust wiki page Search
  • Feedback by users on whether to include the two additional fields both in filtering/searching
    • if so:
      • Add to filtering
      • Add to searching
      • Adjust filtering and searching wiki pages

Restore test coverage with gradle

Before moving to gradle (with maven) and the related restructuring of the project, the test coverage in sonarcloud was at more than 97%. The current state of PR #83 only achieves 76.4% test coverage. I suspect that my current setup does not merge the coverage from unit tests with that of integration tests.

I decided to pull this out of #83 into a separate issue, so I can merge #83 and get on with functional changes.

The goal of this issue is to restore the full coverage as it was before.

Creating PDFs via jasperreports failed after upgrade to JDK 11 (on Redhat 7.5 and 7.6)

java.lang.InternalError: java.lang.reflect.InvocationTargetException
java.lang.InternalError: java.lang.reflect.InvocationTargetException
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86) ~[na:na]
        at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
        at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) ~[na:na]
        at java.desktop/sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:189) ~[na:na]
        at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:223) ~[na:na]
        at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:251) ~[na:na]
        at java.desktop/sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:75) ~[na:na]
        at net.sf.jasperreports.engine.util.JRStyledTextParser.(JRStyledTextParser.java:95) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:116) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:79) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:251) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:272) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:156) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:145) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:758) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:1074) ~[jasperreports-6.7.0.jar!/:6.6.0]
        at org.wicketstuff.jasperreports.JRResource.newJasperPrint(JRResource.java:356) ~[wicketstuff-jasperreports-8.3.0.jar!/:8.3.0]
        at org.wicketstuff.jasperreports.JRResource$4.writeData(JRResource.java:403) ~[wicketstuff-jasperreports-8.3.0.jar!/:8.3.0]                                                                                                                                  
        at org.apache.wicket.request.resource.AbstractResource.respond(AbstractResource.java:660) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.markup.html.link.ResourceLink.onRequest(ResourceLink.java:154) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.internalInvoke(ListenerRequestHandler.java:306) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.invoke(ListenerRequestHandler.java:255) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.invokeListener(ListenerRequestHandler.java:215) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.core.request.handler.ListenerRequestHandler.respond(ListenerRequestHandler.java:208) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:914) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) ~[wicket-request-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:282) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:275) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:206) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:299) ~[wicket-core-8.3.0.jar!/:8.3.0]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) ~[spring-boot-actuator-2.1.2.RELEASE.jar!/:2.1.2.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]                                                                                                                                
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) ~[spring-boot-actuator-2.1.2.RELEASE.jar!/:2.1.2.RELEASE]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) ~[spring-boot-actuator-2.1.2.RELEASE.jar!/:2.1.2.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.4.RELEASE.jar!/:5.1.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) ~[undertow-servlet-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) ~[undertow-core-2.0.16.Final.jar!/:2.0.16.Final]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.reflect.InvocationTargetException: null
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[na:na]
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84) ~[na:na]
        ... 116 common frames omitted
Caused by: java.lang.NullPointerException: null
        at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) ~[na:na]
        at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225) ~[na:na]
        at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107) ~[na:na]
        at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719) ~[na:na]
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367) ~[na:na]
        at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
        at java.desktop/sun.font.SunFontManager.(SunFontManager.java:312) ~[na:na]
        at java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) ~[na:na]
        at java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) ~[na:na]
        ... 121 common frames omitted

It did not happen on the development machine with Archlinux.

Bug: Switching between newsletters in the archive of SciPaMaTo-Public may lead to cut off study lists

In the LUDOK environment, the content of SciPaMaTo-Public is nested in an iframe of the SwissTPH-web site. We use pym.js to dynamically adapt the height of the iframe to the content of SciPaMaTo.

Currently this works flawlessly in most cases. However, if we go to the new-study page and switch to older newsletters in the archive section, the loaded content may be cut of - in case the page uses a bigger height than the one loaded initially.

This can be ovserved on the LUDOK site for the time being.

Most probably this can be resolved by calling pymChild.sendHeight() once the new content is loaded.

NPE in Sync Job: newStudyTopicInsertingOrUpdatingStep -> `getLaterTimeStampFrom`

2019-01-16 21:45:59.294  INFO 14901 --- [XNIO-1 task-23] o.s.b.c.l.support.SimpleJobLauncher      : Job: [FlowJob: [name=syncNewStudyTopicJob]] launched with the following parameters: [{runDate=1547671546518}]
2019-01-16 21:45:59.300  INFO 14901 --- [XNIO-1 task-23] o.s.batch.core.job.SimpleStepHandler     : Executing step: [newStudyTopicInsertingOrUpdatingStep]
2019-01-16 21:45:59.316 ERROR 14901 --- [XNIO-1 task-23] o.s.batch.core.step.AbstractStep         : Encountered an error executing step newStudyTopicInsertingOrUpdatingStep in job syncNewStudyTopicJob

java.lang.NullPointerException: null
        at ch.difty.scipamato.core.sync.jobs.newsletter.NewStudyTopicSyncConfig.getLaterTimeStampFrom(NewStudyTopicSyncConfig.java:127) ~[scipamato-core-sync-1.1.1.jar!/:1.1.1]
        at ch.difty.scipamato.core.sync.jobs.newsletter.NewStudyTopicSyncConfig.makeEntity(NewStudyTopicSyncConfig.java:112) ~[scipamato-core-sync-1.1.1.jar!/:1.1.1]
        at ch.difty.scipamato.core.sync.jobs.newsletter.NewStudyTopicSyncConfig.makeEntity(NewStudyTopicSyncConfig.java:45) ~[scipamato-core-sync-1.1.1.jar!/:1.1.1]
        at ch.difty.scipamato.core.sync.jobs.newsletter.NewStudyTopicSyncConfig$$EnhancerBySpringCGLIB$$e74e040f.makeEntity(<generated>) ~[scipamato-core-sync-1.1.1.jar!/:1.1.1]
        at ch.difty.scipamato.core.sync.jobs.SyncConfig.lambda$coreReader$0(SyncConfig.java:118) ~[scipamato-core-sync-1.1.1.jar!/:1.1.1]

Feature Request: PDF Report reconciliation

In the result panel

  • Remove button for PDF ShortList (PaperSummaryTable without results)
  • Change label button for PDF ShortList+ (PDF PaperSummaryTable) to Results

Source: Trello Card 10/6

Extension of the Literature Review PDF Report

  • Extend Literature Review Report to optionally hide the Goals paragraph
  • Literature Review will not show the goals paragraph
  • Literature Review+ will show the goals paragraph (basically matching what currently is the Literature Review report)

Source: Trello Card 10/21

Build project with gradle

  • Build project core and public
  • Adjust infrastructure to build and deploy from the gradle branch on the servers
  • Must be able to start jars with service script (executable)
  • Test Core on test server
  • Test Public on test server (check with commercial fonts)
  • align modules (nest within common, core and public)
  • separate integration test source set
  • fix disabled tests
  • provide jooq code generation against it databases
  • clean databases (normal and it)
  • play with flyway tasks
  • task for generating the pubmed api classes
  • spring dependency management (override versions, simplify)
  • consider kotlin dsl also for jooq and sync modules
  • check for remaining todos
  • update versions (spring boot, other)
  • adjust wikis
  • sonarcloud integration
  • jacoco merge multimodule output and feed to sonarcloud as xml -> Moved into dedicated issue #87

Searching for publication year ranges broken

Searching for publication year like >2016 is broken. Results in a NumberFormatException

Caused by: java.lang.NumberFormatException: For input string: ">"
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:na]
        at java.base/java.lang.Integer.parseInt(Integer.java:652) ~[na:na]
        at java.base/java.lang.Integer.parseInt(Integer.java:770) ~[na:na]
        at ch.difty.scipamato.core.entity.search.IntegerSearchTerm.<init>(IntegerSearchTerm.java:108) ~[scipamato-core-entity-1.1.6.jar!/:1.1.6]
        at ch.difty.scipamato.core.entity.search.IntegerSearchTerm.<init>(IntegerSearchTerm.java:54) ~[scipamato-core-entity-1.1.6.jar!/:1.1.6]
        at ch.difty.scipamato.core.entity.search.IntegerSearchTerm.<init>(IntegerSearchTerm.java:50) ~[scipamato-core-entity-1.1.6.jar!/:1.1.6]
        at ch.difty.scipamato.core.entity.search.SearchTerm.newIntegerSearchTerm(SearchTerm.java:85) ~[scipamato-core-entity-1.1.6.jar!/:1.1.6]
        at ch.difty.scipamato.core.entity.search.SearchCondition.setIntegerValue(SearchCondition.java:475) ~[scipamato-core-entity-1.1.6.jar!/:1.1.6]
        at ch.difty.scipamato.core.entity.search.SearchCondition.setPublicationYear(SearchCondition.java:216) ~[scipamato-core-entity-1.1.6.jar!/:1.1.6]
        at jdk.internal.reflect.GeneratedMethodAccessor516.invoke(Unknown Source) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.apache.wicket.core.util.lang.PropertyResolver$MethodGetAndSet.setValue(PropertyResolver.java:999) ~[wicket-core-8.3.0.jar!/:8.3.0]
        ... 116 common frames omitted

Use project relative paths instead of module relative paths for `sonar.exclusions`

Resolve sonar warning:

Warnings
Specifying module-relative paths at project level in the property 'sonar.exclusions' is deprecated. To continue matching files like 'scipamato-core-pubmed-api/src/main/java/ch/difty/scipamato/core/pubmed/api/Abstract.java', update this property so that patterns refer to project-relative paths.

Improve Feedback to user upon synchronizing data from SciPaMaTo-Core to Public

Feedback should be more detailed, i.e.

  • List (top n) of papers that are not synchronized due to some constraint, e.g. because of missing codes
  • If there are any exceptions in the synchronization process, it should be obvious to see in the feedback.
    (e.g. due to duplicate key issues, or unknown issues)

Source: Trello Card 10/1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.