[ 
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)

Reply via email to