Many thanks, Dan.

I'll try it!

> El 18/4/2015, a las 12:26, Dan Haywood <[email protected]> 
> escribió:
> 
> Hi Oscar,
> 
> I hit this same issue a couple of weeks ago while refactoring our example
> todoapp, which led me to inventing the "SudoService".
> 
> Not yet documented, but you can see its usage here [1]
> 
> HTH
> Dan
> 
> [1]
> https://github.com/isisaddons/isis-app-todoapp/blob/master/fixture/src/main/java/todoapp/fixture/module/todoitem/ToDoItemCreate.java#L134
> 
>> On 18 April 2015 at 10:17, QUALITEC - Óscar Bou <[email protected]> wrote:
>> 
>> Hi all.
>> 
>> I have a FixtureScript that invokes some factory methods that include
>> setters that are invoking by wrapping the domain object (for ensuring that
>> the validateXXX, modifyXXX, etc. methods are also invoked).
>> 
>> public class TwentyPercentForTwoOrdersCoupon extends FixtureScript {
>> 
>>    @Override
>>    protected void execute(
>>            final FixtureScript.ExecutionContext executionContext) {
>> 
>>        this.coupons.createCoupon("50€-2ORDERS", LocalDate.now(),
>> LocalDate.now().plusDays(3), 2L, null, new BigDecimal("50"));
>> 
>>    }
>> 
>>    @Inject
>>    private Coupons coupons;
>> 
>> }
>> 
>> @DomainService(repositoryFor = Coupon.class)
>> public class Coupons extends AbstractTellmegenService {
>> 
>>    // {{ createCoupon (action)
>>    @MemberOrder(sequence = "2.5.1")
>>    public Coupon createCoupon(@ParameterLayout(named = "Code") final
>> String code,
>>            @ParameterLayout(named = "Start Date") final LocalDate
>> startDate,
>>            @ParameterLayout(named = "Due Date") final LocalDate dueDate,
>>            @ParameterLayout(named = "Max Number of Kits") final Long
>> maxNumberOfKits,
>>            @ParameterLayout(named = "Percent Discount (0-100)")
>> @Parameter(optionality = Optionality.OPTIONAL) final Integer
>> percentDiscount,
>>            @ParameterLayout(named = "Amount Discount (€)")
>> @Parameter(optionality = Optionality.OPTIONAL) final BigDecimal
>> amountDiscount) {
>>        final Coupon coupon = this.newTransientInstance(Coupon.class);
>> 
>>        this.wrap(coupon).setCode(code);
>>        this.wrap(coupon).setStartDate(startDate);
>>        this.wrap(coupon).setDueDate(dueDate);
>>        this.wrap(coupon).setMaxNumberOfOrders(maxNumberOfKits);
>>        this.wrap(coupon).setPercentDiscount(percentDiscount);
>>        this.wrap(coupon).setAmountDiscount(amountDiscount);
>> 
>>        // Save DB
>>        this.persist(coupon);
>>        this.getContainer().flush();
>> 
>>        return coupon;
>>    }
>> 
>> 
>> 
>> But when executing from the Fixture Script, the following exception is
>> thrown.
>> Any ideas about how to avoid it?
>> 
>> I'm using the security add-on. Perhaps it must be initialized somewhere on
>> the Fixture Script?
>> 
>> Thanks!
>> 
>> 
>> 11:06:11,379  [WebAppContext        main       WARN ]  Failed startup of
>> context
>> o.e.j.w.WebAppContext{,file:/Users/oscarboubou/dev/tellmegen/dbtg/webapp/src/main/webapp/},src/main/webapp
>> javax.servlet.ServletException: com.google.inject.ProvisionException:
>> Guice provision errors:
>> 
>> 1) Error in custom provider,
>> org.apache.isis.applib.services.wrapper.HiddenException: Reason: Could not
>> locate application user for initialisation. Identifier:
>> com.tellmegen.domain.model.order.coupon.Coupon#code()
>>  at
>> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:132)
>>  at
>> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:132)
>>  while locating org.apache.isis.core.runtime.system.IsisSystem
>>    for field at
>> org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.system(IsisWicketApplication.java:1)
>>  while locating webapp.application.TellMeGenApplication
>> 
>> 1 error
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:450)
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:351)
>>        at
>> org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:118)
>>        at
>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>        at
>> org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:768)
>>        at
>> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
>>        at
>> org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
>>        at
>> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
>>        at
>> org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
>>        at
>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>        at
>> org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
>>        at org.eclipse.jetty.server.Server.doStart(Server.java:282)
>>        at
>> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
>>        at
>> org.apache.isis.core.webserver.WebServerBootstrapper.bootstrap(WebServerBootstrapper.java:86)
>>        at org.apache.isis.core.webserver.WebServer.run(WebServer.java:107)
>>        at org.apache.isis.core.webserver.WebServer.main(WebServer.java:71)
>>        at org.apache.isis.WebServer.main(WebServer.java:25)
>> Caused by: com.google.inject.ProvisionException: Guice provision errors:
>> 
>> 1) Error in custom provider,
>> org.apache.isis.applib.services.wrapper.HiddenException: Reason: Could not
>> locate application user for initialisation. Identifier:
>> com.tellmegen.domain.model.order.coupon.Coupon#code()
>>  at
>> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:132)
>>  at
>> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:132)
>>  while locating org.apache.isis.core.runtime.system.IsisSystem
>>    for field at
>> org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.system(IsisWicketApplication.java:1)
>>  while locating webapp.application.TellMeGenApplication
>> 
>> 1 error
>>        at
>> com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:451)
>>        at
>> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:65)
>>        at
>> com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:944)
>>        at
>> org.apache.isis.viewer.wicket.viewer.IsisWicketApplication.init(IsisWicketApplication.java:256)
>>        at
>> webapp.application.TellMeGenApplication.init(TellMeGenApplication.java:204)
>>        at
>> org.apache.wicket.Application.initApplication(Application.java:823)
>>        at
>> org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:424)
>>        ... 16 more
>> Caused by: org.apache.isis.applib.services.wrapper.HiddenException:
>> Reason: Could not locate application user for initialisation. Identifier:
>> com.tellmegen.domain.model.order.coupon.Coupon#code()
>>        at
>> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.toException(DomainObjectInvocationHandler.java:713)
>>        at
>> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.notifyListenersAndVetoIfRequired(DomainObjectInvocationHandler.java:681)
>>        at
>> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.checkVisibility(DomainObjectInvocationHandler.java:663)
>>        at
>> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleSetterMethodOnProperty(DomainObjectInvocationHandler.java:387)
>>        at
>> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:216)
>>        at
>> org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(ProxyInstantiatorForJavassist.java:52)
>>        at
>> com.tellmegen.domain.model.order.coupon.Coupon_$$_jvstc93_5.setCode(Coupon_$$_jvstc93_5.java)
>>        at
>> com.tellmegen.domain.model.order.coupon.Coupons.createCoupon(Coupons.java:36)
>>        at
>> com.tellmegen.fixture.model.orders.TwentyPercentForTwoOrdersCoupon.execute(TwentyPercentForTwoOrdersCoupon.java:35)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:549)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:528)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:498)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChild(FixtureScript.java:487)
>>        at
>> com.tellmegen.fixture.TellMeGenDemoFixture.execute(TellMeGenDemoFixture.java:58)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:549)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:528)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildT(FixtureScript.java:498)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChild(FixtureScript.java:487)
>>        at
>> com.tellmegen.fixture.TellMeGenDemoWithAllRecordsFixture.execute(TellMeGenDemoWithAllRecordsFixture.java:25)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.executeChildIfNotAlready(FixtureScript.java:549)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript$ExecutionContext.access$0(FixtureScript.java:546)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript.run(FixtureScript.java:719)
>>        at
>> org.apache.isis.applib.fixturescripts.FixtureScript.install(FixtureScript.java:814)
>>        at
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixture(FixturesInstallerDelegate.java:205)
>>        at
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtureInTransaction(FixturesInstallerDelegate.java:171)
>>        at
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:158)
>>        at
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate.installFixtures(FixturesInstallerDelegate.java:138)
>>        at
>> org.apache.isis.core.runtime.fixtures.FixturesInstallerAbstract.installFixtures(FixturesInstallerAbstract.java:42)
>>        at
>> org.apache.isis.core.runtime.systemusinginstallers.IsisSystemAbstract.installFixturesIfRequired(IsisSystemAbstract.java:85)
>>        at
>> org.apache.isis.core.runtime.system.IsisSystemFixturesHookAbstract.init(IsisSystemFixturesHookAbstract.java:128)
>>        at
>> org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:133)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>        at java.lang.reflect.Method.invoke(Method.java:606)
>>        at
>> com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:104)
>>        at
>> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
>>        at
>> com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
>>        at
>> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
>>        at
>> com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
>>        at com.google.inject.Scopes$1$1.get(Scopes.java:65)
>>        at
>> com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
>>        at
>> com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53)
>>        at
>> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:110)
>>        at
>> com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:75)
>>        at
>> com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73)
>>        at
>> com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
>>        at
>> com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73)
>>        at
>> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:60)
>>        ... 21 more
>> 11:06:11,449  [AbstractConnector    main       INFO ]  Started
>> [email protected]:8080

Reply via email to