Hi Oscar,

2015-01-08 17:37 GMT+01:00 GESCONSULTOR - Óscar Bou <[email protected]>
:

>
> Hi all,
>
> I’m launching tests with have Services with Event Handlers this way:
>
> public class MonitoringSystemInitializer {
> …
> private static class MonitoringIntegTestBuilder extends
> IsisSystemForTest.Builder {
>
>         private MonitoringIntegTestBuilder() {
> …
> this.withServices(new ExternalSystemsMonitoringInformationEventHandler()
> ...
>
>
>
> ...
> }
> …
> }
>
>
>
> public class ExternalSystemsMonitoringInformationEventHandler extends
> AbstractXMSService {
>
>    …
>
>     // {{ injected: EventBusService
>     @Programmatic
>     @PostConstruct
>     public void postConstruct() {
>         this.eventBusService.register(this);
>     }
>
>     @Programmatic
>     @PreDestroy
>     public void preDestroy() {
>         this.eventBusService.unregister(this);
>     }
>
>     @javax.inject.Inject
>     private EventBusService eventBusService;
>     // }}
>
>
> }
>
>
>
>
> When launching the tests the following exception is thrown:
>
>
>
> java.lang.IllegalStateException: Event bus has already been created; too
> late to register any further (singleton) subscribers
> at
> org.apache.isis.core.runtime.services.eventbus.EventBusServiceDefault.register(EventBusServiceDefault.java:68)
> at
> com.xms.framework.risk.domain.model.RiskCategories.setEventBusService(RiskCategories.java:68)
>

The stacktrace says the service is RiskCategories,
not ExternalSystemsMonitoringInformationEventHandler.
Is the logic the same there ?

Looking at the code I see it is possible to re-register only RequestScoped
services, but not singletons.
I remember Dan explaining the change in dev@ few months ago.


> 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
> org.apache.isis.core.metamodel.services.ServicesInjectorDefault.invokeMethod(ServicesInjectorDefault.java:254)
> at
> org.apache.isis.core.metamodel.services.ServicesInjectorDefault.invokeInjectorMethod(ServicesInjectorDefault.java:286)
> at
> org.apache.isis.core.metamodel.services.ServicesInjectorDefault.autowire(ServicesInjectorDefault.java:239)
> at
> org.apache.isis.core.metamodel.services.ServicesInjectorDefault.autowireViaPrefixedMethods(ServicesInjectorDefault.java:229)
> at
> org.apache.isis.core.metamodel.services.ServicesInjectorDefault.injectServices(ServicesInjectorDefault.java:182)
> at
> org.apache.isis.core.metamodel.services.ServicesInjectorDefault.injectServicesInto(ServicesInjectorDefault.java:148)
> at
> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.mapAndInjectServices(AdapterManagerDefault.java:750)
> at
> org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault.adapterFor(AdapterManagerDefault.java:184)
> at
> org.apache.isis.core.runtime.system.persistence.PersistenceSession.createServiceAdapters(PersistenceSession.java:208)
> at
> org.apache.isis.core.runtime.system.persistence.PersistenceSession.initServices(PersistenceSession.java:194)
> at
> org.apache.isis.core.runtime.system.persistence.PersistenceSession.open(PersistenceSession.java:184)
> at
> org.apache.isis.core.runtime.system.session.IsisSessionDefault.open(IsisSessionDefault.java:97)
> at
> org.apache.isis.core.runtime.system.context.IsisContextStatic.openSessionInstance(IsisContextStatic.java:71)
> at
> org.apache.isis.core.runtime.system.context.IsisContext.openSession(IsisContext.java:271)
> at
> org.apache.isis.core.integtestsupport.IsisSystemForTest.openSession(IsisSystemForTest.java:405)
> at
> org.apache.isis.core.integtestsupport.IsisSystemForTest.openSession(IsisSystemForTest.java:400)
> at
> org.apache.isis.core.integtestsupport.IsisSystemForTest.bounceSystem(IsisSystemForTest.java:395)
> at
> org.apache.isis.core.integtestsupport.IntegrationTestAbstract$IsisTransactionRule$1.evaluate(IntegrationTestAbstract.java:202)
> at
> org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2$1.evaluate(JUnitRuleMockery2.java:146)
> at
> org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:168)
> at org.junit.rules.RunRules.evaluate(RunRules.java:20)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
>
>
>
>
> *Óscar Bou Bou*
> Responsable de Producto
> Auditor Jefe de Certificación ISO 27001 en BSI
> CISA, CRISC, APMG ISO 20000, ITIL-F
>
>    902 900 231 / 620 267 520
>    http://www.twitter.com/oscarbou
>
>    http://es.linkedin.com/in/oscarbou
>
>    http://www.GesConsultor.com <http://www.gesconsultor.com/>
>
>
>
> Este mensaje y los ficheros anexos son confidenciales. Los mismos
> contienen información reservada que no puede ser difundida. Si usted ha
> recibido este correo por error, tenga la amabilidad de eliminarlo de su
> sistema y avisar al remitente mediante reenvío a su dirección electrónica;
> no deberá copiar el mensaje ni divulgar su contenido a ninguna persona.
> Su dirección de correo electrónico junto a sus datos personales constan en
> un fichero titularidad de Gesdatos Software, S.L. cuya finalidad es la de
> mantener el contacto con Ud. Si quiere saber de qué información disponemos
> de Ud., modificarla, y en su caso, cancelarla, puede hacerlo enviando un
> escrito al efecto, acompañado de una fotocopia de su D.N.I. a la siguiente
> dirección: Gesdatos Software, S.L. , Paseo de la Castellana, 153 bajo -
> 28046 (Madrid), y Avda. Cortes Valencianas num. 50, 1ºC - 46015 (Valencia).
> Asimismo, es su responsabilidad comprobar que este mensaje o sus archivos
> adjuntos no contengan virus informáticos, y en caso que los tuvieran
> eliminarlos.
>
>
>
>
>
>

Reply via email to