I've tried to write a pointcut that combines a couple of different cflow()/cflowbelow() together, but it does not seem to work as expected. That is, the advise is still being executed even though one of the cflow() pointcuts is clearly in the stacktrace.
My pointcut in question is: @Pointcut("get(* model.UserAccount.accountOwner)") public void userAccountOwner(){} I then use the defined pointcut as: @Before( "aspectInitialized() && cflowbelow(ejbMethods()) && !cflowbelow(userAccountOwner()) && (newModelsWhichReferenceUserA() || (userAccountAccessibleMethods() ))") public void preventConstructorsForRelatedObjects(JoinPoint joinPoint) throws SecurityAccessTableDataException{ // some logic throw new RuntimeException( "USERA tables not yet ready"); } And in my stack trace in which the advice is clearly being executed (the GeneralException is being triggered by an exception thrown in the advice), I can observe the UserAccount.getAccountOwner() method being called. Caused by: <0|false|0.9.5-incubating> kodo.jdo.GeneralException: USERA tables are not yet ready at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:749) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.find(JDBCStoreManager.java:746) at org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.load(RelationFieldStrategy.java:550) at org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:791) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:483) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:113) at org.apache.openjpa.datacache.DataCacheStoreManager.load(DataCacheStoreManager.java:363) at org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:113) at org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:75) at org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:2742) at org.apache.openjpa.kernel.StateManagerImpl.loadField(StateManagerImpl.java:2820) at kodo.kernel.ProfilingStateManager.loadField(ProfilingStateManager.java:68) at org.apache.openjpa.kernel.StateManagerImpl.beforeAccessField(StateManagerImpl.java:1337) at kodo.kernel.ProfilingStateManager.beforeAccessField(ProfilingStateManager.java:49) at org.apache.openjpa.kernel.StateManagerImpl.accessingField(StateManagerImpl.java:1322) at model.UserAccount.pcGetaccountOwner(UserAccount.java:1) ====> at model.UserAccount.getAccountOwner(UserAccount.java:500) at business.impl.PersistentManipulationUtil.findAccountablePersonWithUserName(PersistentManipulationUtil.java:991) at business.impl.EJBUtil.createBusinessContext(EJBUtil.java:120) at business.impl.EJBUtil.createBusinessContext(EJBUtil.java:78) at business.ejb3.base.BaseManagerBean.getBusinessContext(BaseManagerBean.java:410) at business.ejb3.EnterpriseManagerBean.getEnterpriseWindowThresholds(EnterpriseManagerBean.java:1680) Changing the userAccountOwner() pointcut to read: @Pointcut("execution(* model.UserAccount.getAccountOwner(..))") public void userAccountOwner(){} And the cflow() works as expected. Is this behaviour expected based on the way field getter/setter pointcuts are designed to work or is this a bug in my code (or my use of the field getter) or AspectJ? This is with AspectJ 1.8.13. Thanks, Eric
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/aspectj-users