[
https://issues.apache.org/jira/browse/CAUSEWAY-3687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17818909#comment-17818909
]
Jörg Rade commented on CAUSEWAY-3687:
-------------------------------------
Reproduce with causeway-app-simpleapp (jpa):
* add execute method to SimpleObjects:
{code:java}
@Transactional
public SimpleObject execute(SimpleObject obj) {
return obj;
}
{code}
Invocation of Prototyping -> Run Fixture Script lead to:
{code}
java.lang.NullPointerException: Cannot invoke
"org.apache.causeway.applib.services.repository.RepositoryService.persist(Object)"
because "this.repositoryService" is null
at
domainapp.modules.simple.dom.so.SimpleObjects.create(SimpleObjects.java:43)
~[classes/:?]
at
domainapp.modules.simple.dom.so.SimpleObjects$$EnhancerBySpringCGLIB$$bab7c812.create(<generated>)
~[classes/:?]
at
domainapp.modules.simple.fixture.SimpleObject_persona$Builder.buildResult(SimpleObject_persona.java:64)
~[classes/:?]
at
domainapp.modules.simple.fixture.SimpleObject_persona$Builder.buildResult(SimpleObject_persona.java:56)
~[classes/:?]
at
org.apache.causeway.testing.fixtures.applib.personas.BuilderScriptWithResult.execute(BuilderScriptWithResult.java:49)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlreadyWithValueSemantics(FixtureScript.java:644)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:614)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:581)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:540)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.setup.PersonaEnumPersistAll.execute(PersonaEnumPersistAll.java:81)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlreadyWithValueSemantics(FixtureScript.java:644)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:614)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:581)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:540)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChild(FixtureScript.java:467)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
domainapp.webapp.application.fixture.scenarios.DomainAppDemo.execute(DomainAppDemo.java:15)
~[classes/:?]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:617)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript.run(FixtureScript.java:803)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScripts.runFixtureScript(FixtureScripts.java:341)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScripts.runFixtureScript(FixtureScripts.java:327)
~[causeway-testing-fixtures-applib-2.0.0-RC3.jar:2.0.0-RC3]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:?]
at
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
~[?:?]
at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at
org.apache.causeway.commons.internal.reflection._Reflect.lambda$invokeMethodOn$13(_Reflect.java:577)
~[causeway-commons-2.0.0-RC3.jar:2.0.0-RC3]
at org.apache.causeway.commons.functional.Try.call(Try.java:58)
~[causeway-commons-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.commons.internal.reflection._Reflect.invokeMethodOn(_Reflect.java:575)
~[causeway-commons-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.commons.CanonicalInvoker.invoke(CanonicalInvoker.java:126)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.commons.CanonicalInvoker.invoke(CanonicalInvoker.java:114)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.commons.CanonicalInvoker.invoke(CanonicalInvoker.java:93)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.execution.ActionExecutor.invokeMethodElseFromCache(ActionExecutor.java:219)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.execution.ActionExecutor.executeWithoutEvents(ActionExecutor.java:187)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.execution.ActionExecutor.execute(ActionExecutor.java:167)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.execution.ActionExecutor.execute(ActionExecutor.java:58)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.interaction.session.CausewayInteraction.executeInternal(CausewayInteraction.java:136)
~[causeway-core-interaction-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.interaction.session.CausewayInteraction.execute(CausewayInteraction.java:109)
~[causeway-core-interaction-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.runtimeservices.executor.MemberExecutorServiceDefault.invokeActionInternally(MemberExecutorServiceDefault.java:169)
~[causeway-core-runtimeservices-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.runtimeservices.executor.MemberExecutorServiceDefault.lambda$invokeAction$1(MemberExecutorServiceDefault.java:125)
~[causeway-core-runtimeservices-2.0.0-RC3.jar:2.0.0-RC3]
at org.apache.causeway.commons.functional.Try.call(Try.java:58)
~[causeway-commons-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.runtimeservices.transaction.TransactionServiceSpring.callTransactional(TransactionServiceSpring.java:109)
~[causeway-core-runtimeservices-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.applib.services.xactn.TransactionalProcessor.callWithinCurrentTransactionElseCreateNew(TransactionalProcessor.java:100)
~[causeway-applib-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.runtimeservices.executor.MemberExecutorServiceDefault.invokeAction(MemberExecutorServiceDefault.java:124)
~[causeway-core-runtimeservices-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.execution.MemberExecutorService.invokeAction(MemberExecutorService.java:86)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForAction.invoke(ActionInvocationFacetForAction.java:56)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault.executeInternal(ObjectActionDefault.java:465)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:453)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.specloader.specimpl.ObjectActionDefault.executeWithRuleChecking(ObjectActionDefault.java:433)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.interactions.managed.ManagedAction.invokeWithRuleChecking(ManagedAction.java:156)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.core.metamodel.interactions.managed.ActionInteraction.invokeWithRuleChecking(ActionInteraction.java:157)
~[causeway-core-metamodel-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.viewer.wicket.model.models.ActionModelImpl.executeActionAndReturnResult(ActionModelImpl.java:135)
~[causeway-viewer-wicket-model-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.viewer.wicket.ui.panels.FormExecutorDefault.lambda$executeAndProcessResults$6(FormExecutorDefault.java:129)
~[causeway-viewer-wicket-ui-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.commons.functional.Either$Left.fold(Either.java:127)
~[causeway-commons-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.viewer.wicket.ui.panels.FormExecutorDefault.executeAndProcessResults(FormExecutorDefault.java:128)
~[causeway-viewer-wicket-ui-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.viewer.wicket.ui.panels.PromptFormAbstract.onOkSubmitted(PromptFormAbstract.java:122)
~[causeway-viewer-wicket-ui-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.causeway.viewer.wicket.ui.util.Wkt$5.onSubmit(Wkt.java:331)
~[causeway-viewer-wicket-ui-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.wicket.ajax.markup.html.form.AjaxButton$1.onSubmit(AjaxButton.java:113)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:249)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1372)
~[wicket-core-9.14.0.jar:9.14.0]
at org.apache.wicket.markup.html.form.Form.process(Form.java:1034)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:858)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:202)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:154)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:630)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.core.request.handler.ListenerRequestHandler.internalInvoke(ListenerRequestHandler.java:300)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.core.request.handler.ListenerRequestHandler.invoke(ListenerRequestHandler.java:274)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.core.request.handler.ListenerRequestHandler.invokeListener(ListenerRequestHandler.java:222)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.core.request.handler.ListenerRequestHandler.respond(ListenerRequestHandler.java:202)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:910)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:63)
~[wicket-request-9.14.0.jar:9.14.0]
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:294)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:255)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:277)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:208)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:307)
~[wicket-core-9.14.0.jar:9.14.0]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.causeway.core.webapp.modules.logonlog.CausewayLogOnExceptionFilter.doFilter(CausewayLogOnExceptionFilter.java:60)
~[causeway-core-webapp-2.0.0-RC3.jar:2.0.0-RC3]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
~[spring-web-5.3.30.jar:5.3.30]
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
~[spring-web-5.3.30.jar:5.3.30]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
~[spring-web-5.3.30.jar:5.3.30]
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
~[spring-web-5.3.30.jar:5.3.30]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
~[tomcat-embed-core-9.0.80.jar:9.0.80]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
{code}
> Using @Transactional within a @DomainService Leads to a Missing Menu Entry
> --------------------------------------------------------------------------
>
> Key: CAUSEWAY-3687
> URL: https://issues.apache.org/jira/browse/CAUSEWAY-3687
> Project: Causeway
> Issue Type: Bug
> Components: Viewer Wicket
> Affects Versions: 2.0.0-RC4
> Reporter: Jörg Rade
> Priority: Major
> Attachments: screenshot-1.png
>
>
> {code:java}
> package com.kn.lx.domain;
> import com.kn.lx.util.Constants;
> import com.kn.lx.config.Properties;
> import com.kn.lx.input.elastic.QueryResultItemTO;
> import com.kn.lx.input.elastic.QueryService;
> import com.kn.lx.input.elastic.pr.PrQuery;
> import lombok.NonNull;
> import lombok.RequiredArgsConstructor;
> import org.apache.causeway.applib.annotation.Action;
> import org.apache.causeway.applib.annotation.ActionLayout;
> import org.apache.causeway.applib.annotation.DomainService;
> import org.apache.causeway.applib.annotation.NatureOfService;
> import org.apache.causeway.applib.annotation.Programmatic;
> import org.apache.causeway.applib.annotation.SemanticsOf;
> import org.springframework.transaction.annotation.Transactional;
> import javax.inject.Inject;
> import javax.inject.Named;
> import java.lang.reflect.InvocationTargetException;
> import java.time.LocalDateTime;
> import java.util.List;
> import java.util.Optional;
> @Named("lx.Tasks")
> @DomainService(nature = NatureOfService.VIEW)
> @RequiredArgsConstructor(onConstructor_ = {@Inject})
> public class Tasks {
> private final TaskRepository taskRepository;
> private final QueryService queryService;
> private final Executions executions;
> private final Properties properties;
> @Programmatic
> public Task create(String className) {
> final Task obj = new Task();
> obj.setQueryClassName(className);
> obj.setCronExpression(Constants.INSTANCE.getEVERY_FIVE_MINUTES());
> obj.setActive(true);
> taskRepository.saveAndFlush(obj);
> return obj;
> }
> @ActionLayout(sequence = "1")
> public List<Task> listAll() {
> return taskRepository.findAll();
> }
> public void init() {
> createIfAbsent(PrQuery.class.getCanonicalName());
> }
> @ActionLayout(sequence = "2")
> public void createIfAbsent(final String name) {
> final Task obj = taskRepository.findByQueryClassName(name);
> if (null == obj) {
> create(name);
> }
> }
> @Action(semantics = SemanticsOf.SAFE)
> @ActionLayout(sequence = "3", cssClassFa = "trash")
> public void delete(Task task) {
> taskRepository.delete(task);
> }
> List<QueryResultItemTO> executeQuery(PrQuery query) {
> final Integer chunkSize =
> properties.getInteger(Constants.INSTANCE.getELASTIC_QUERY_CHUNK_SIZE());
> query.setMaxNumberOfHits(chunkSize);
> String latestTimeStamp =
> properties.getString(Constants.INSTANCE.getEND_TIME_STAMP());
> if (latestTimeStamp.isEmpty()) {
> latestTimeStamp =
> properties.getString(Constants.INSTANCE.getSTART_TIME_STAMP());
> }
> return queryService.searchBy(query, latestTimeStamp);
> }
> @NonNull PrQuery createForClass(String queryClassName) {
> try {
> return (PrQuery)
> Class.forName(queryClassName).getDeclaredConstructor().newInstance();
> } catch (InstantiationException |
> IllegalAccessException |
> ClassNotFoundException |
> InvocationTargetException |
> NoSuchMethodException e) {
> throw new RuntimeException(e);
> }
> }
> @Transactional
> public Task execute(Task argTask) {
> final Task task = update(argTask);
> if (task.isActive()) {
> final PrQuery query = createForClass(task.getQueryClassName());
> final List<QueryResultItemTO> queryResultList =
> executeQuery(query);
> final Execution e = executions.create(task, queryResultList);
> e.setEndedAt(LocalDateTime.now());
> e.setHits((long) queryResultList.size());
> task.getExecutionList().add(e);
> taskRepository.saveAndFlush(task);
> executions.sendMessagesFor(e);
> return task;
> }
> return null;
> }
> /**
> * It seems argTask is out of sync when it reaches this point.
> * Read it again.
> *
> * @param argTask Task to be synced
> * @return Task, synced with DB
> */
> private Task update(Task argTask) {
> final Optional<? extends Task> optionalTask =
> taskRepository.findById(argTask.getId());
> if (optionalTask.isPresent()) {
> return optionalTask.get();
> } else {
> throw new RuntimeException("Task not found");
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)