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

Reply via email to