Hi Oscar, I think this is from me attempting to address a previous issue you flagged, namely that the @PostsPropertyChangedEvent wasn't firing.
The reason for that, I determined, was because if there's either a @PropertyInteraction or a @Property#domainEvent() annotation present, then they would take precedent. So I tried to modify the algorithm to check for the presence of @PostsPropertyChangedEvent first. Doing this caused the event to fire again. However, I realized today that it could also cause the event to be fired too often; the two events don't have identical semantics. Specifically: - @Property#domainEvent() and also @PropertyInteraction causes the event to be thrown up to five times: for hide/disable/validate/pre-execute/post-execute - @PostsPropertyChangedEvent in contrast is only fired on post-execute. So it would be wrong to simply fire the event specified in @PostsPropertyChangedEvent, because any subscribers wouldn't expect it to be fired multiple times. I've therefore backed out the change, along with that for @PostsCollectionAddedTo/RemovedFrom and @PostsActionInvokedEvent. ~~~ I'm therefore not exactly sure how to proceed. I suspect yours is the only project using these old annotations. Is moving to the new @Property#domainEvent(), @Collection#domainEvent(), @Action#domainEvent() feasible for you? Dan On 6 February 2015 at 18:03, QUALITEC - Óscar Bou <[email protected]> wrote: > > Hi Dan. > > Since today our Jenkins fails with the following message. > > Perhaps is it due to the refactoring / deprecation work you’re doing? > > We’re working against latest SNAPSHOT. > > In fact, when throwing: > > Caused by: java.lang.NoSuchMethodException: > com.xms.framework.architecture.domain.model.events.AssetCollectionWithRelationshipAddedToEvent.<init>(? > super com.xms.framework.architecture.domain.model.business.Product, > org.apache.isis.applib.Identifier, java.lang.Object) > > > It’s true because I have a 3 params constructor: > > public class AssetCollectionWithRelationshipAddedToEvent extends > CollectionAddedToEvent<Asset, Asset> { > > /** > * > */ > private static final long serialVersionUID = 1L; > > public AssetCollectionWithRelationshipAddedToEvent(final Asset source, > final Identifier identifier, final Asset value) { > super(source, identifier, value); > } > > } > > > > Thanks, > > Oscar > > Mensaje de error > > com.xms.framework.architecture.domain.model.events.AssetCollectionWithRelationshipAddedToEvent.<init>(? > super com.xms.framework.architecture.domain.model.business.Product, > org.apache.isis.applib.Identifier, java.lang.Object) > Traza > > org.apache.isis.applib.FatalException: > com.xms.framework.architecture.domain.model.events.AssetCollectionWithRelationshipAddedToEvent.<init>(? > super com.xms.framework.architecture.domain.model.business.Product, > org.apache.isis.applib.Identifier, java.lang.Object) > at > org.apache.isis.core.metamodel.facets.DomainEventHelper.postEventForCollection(DomainEventHelper.java:240) > at > org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetAbstract.hides(CollectionDomainEventFacetAbstract.java:61) > at > org.apache.isis.core.metamodel.interactions.InteractionUtils.isVisibleResult(InteractionUtils.java:40) > at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract.isVisibleResult(ObjectMemberAbstract.java:232) > at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract.isVisible(ObjectMemberAbstract.java:227) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.checkVisibility(DomainObjectInvocationHandler.java:592) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleCollectionAddToMethod(DomainObjectInvocationHandler.java:470) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:215) > at > org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(ProxyInstantiatorForJavassist.java:52) > at > com.xms.framework.architecture.domain.model.business.Product_$$_jvstd87_40.addToAggregatedServices(Product_$$_jvstd87_40.java) > at > com.xms.framework.architecture.domain.model.business.Product.addService(Product.java:115) > 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.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.internalInvoke(ActionInvocationFacetForDomainEventAbstract.java:337) > at > org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.invoke(ActionInvocationFacetForDomainEventAbstract.java:191) > at > org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:57) > at > org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:54) > at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:205) > at > org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction.invoke(ActionInvocationFacetWrapTransaction.java:54) > at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl.execute(ObjectActionImpl.java:367) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleActionMethod(DomainObjectInvocationHandler.java:563) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:229) > at > org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(ProxyInstantiatorForJavassist.java:52) > at > com.xms.framework.architecture.domain.model.business.Product_$$_jvstd87_40.addService(Product_$$_jvstd87_40.java) > at > com.xms.framework.architecture.integration.glue.business.old.ProductGlue.product_aggregates_the_business_service(ProductGlue.java:34) > at ✽.When the "EAM-ASS-VAL-INH-010 - product" product aggregates > the "EAM-ASS-VAL-INH-010 - business service" business > service(com/xms/framework/architecture/integration/specs/base/EAM-ASS-VAL - > Enterprise Architecture Model - Assets - Valuation.feature:93) > Caused by: java.lang.NoSuchMethodException: > com.xms.framework.architecture.domain.model.events.AssetCollectionWithRelationshipAddedToEvent.<init>(? > super com.xms.framework.architecture.domain.model.business.Product, > org.apache.isis.applib.Identifier, java.lang.Object) > at > org.apache.isis.core.metamodel.facets.DomainEventHelper.newCollectionDomainEvent(DomainEventHelper.java:327) > at > org.apache.isis.core.metamodel.facets.DomainEventHelper.postEventForCollection(DomainEventHelper.java:233) > at > org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetAbstract.hides(CollectionDomainEventFacetAbstract.java:61) > at > org.apache.isis.core.metamodel.interactions.InteractionUtils.isVisibleResult(InteractionUtils.java:40) > at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract.isVisibleResult(ObjectMemberAbstract.java:232) > at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract.isVisible(ObjectMemberAbstract.java:227) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.checkVisibility(DomainObjectInvocationHandler.java:592) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleCollectionAddToMethod(DomainObjectInvocationHandler.java:470) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:215) > at > org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(ProxyInstantiatorForJavassist.java:52) > at > com.xms.framework.architecture.domain.model.business.Product_$$_jvstd87_40.addToAggregatedServices(Product_$$_jvstd87_40.java) > at > com.xms.framework.architecture.domain.model.business.Product.addService(Product.java:115) > 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.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.internalInvoke(ActionInvocationFacetForDomainEventAbstract.java:337) > at > org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventAbstract.invoke(ActionInvocationFacetForDomainEventAbstract.java:191) > at > org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:57) > at > org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:54) > at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:205) > at > org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction.invoke(ActionInvocationFacetWrapTransaction.java:54) > at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl.execute(ObjectActionImpl.java:367) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.handleActionMethod(DomainObjectInvocationHandler.java:563) > at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:229) > at > org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist$1.invoke(ProxyInstantiatorForJavassist.java:52) > at > com.xms.framework.architecture.domain.model.business.Product_$$_jvstd87_40.addService(Product_$$_jvstd87_40.java) > at > com.xms.framework.architecture.integration.glue.business.old.ProductGlue.product_aggregates_the_business_service(ProductGlue.java:34) > 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 cucumber.runtime.Utils$1.call(Utils.java:35) > at cucumber.runtime.Timeout.timeout(Timeout.java:12) > at cucumber.runtime.Utils.invoke(Utils.java:31) > at > cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:35) > at > cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:38) > at cucumber.runtime.Runtime.runStep(Runtime.java:289) > at > cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44) > at > cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39) > at > cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:40) > at > cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:83) > at > cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63) > at > cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18) > 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.runners.ParentRunner.run(ParentRunner.java:309) > at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70) > at cucumber.api.junit.Cucumber.runChild(Cucumber.java:82) > at cucumber.api.junit.Cucumber.runChild(Cucumber.java:41) > 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.runners.ParentRunner.run(ParentRunner.java:309) > at cucumber.api.junit.Cucumber.run(Cucumber.java:87) > at > org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264) > at > org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) > at > org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124) > at > org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200) > at > org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153) > at > org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) > >
