<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-2219</id>
	<title>Nabble - AspectJ - users</title>
	<updated>2009-11-08T01:09:42Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/AspectJ---users-f2219.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/AspectJ---users-f2219.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26251917</id>
	<title>Re: A transaction question</title>
	<published>2009-11-08T01:09:42Z</published>
	<updated>2009-11-08T01:09:42Z</updated>
	<author>
		<name>neo anderson</name>
	</author>
	<content type="html">The code is as below. The Main class is the starting point. AbstracTransaction is the aspect to capture EntityManager instance, which will create transaction covering the method executed e.g. process().
&lt;br&gt;&lt;br&gt;It seems like the the advice of `obtainEntityManager(..)&amp;&amp;cflow(..)' is not executed because the terminal does not output related information. 
&lt;br&gt;&lt;br&gt;Whilst reading the AspectJ in Action, the percflow indicates that per-control-flow will create a new instance. So I suppose the specified percflow(scope()) would only cause an aspect &amp;nbsp;instance created (because in the Main class process() is only executed once), wouldn't it? 
&lt;br&gt;&lt;br&gt;Thanks for your help.
&lt;br&gt;&lt;br&gt;I appreciate it. 
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public abstract aspect AbstractTransaction percflow(scope()){
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected abstract pointcut tx(); // concreated joint point specified in AccountTransaction.aj
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected pointcut obtainEntityManager(EntityManager manager): call(public void example.AccountDao.setEntityManager(EntityManager)) &amp;&amp; args(manager) ;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected pointcut scope(): tx() &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object around(): scope(){
&lt;br&gt;System.out.println(&amp;quot;===========&amp;gt; EntityManager:&amp;quot;+manager); // null
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result = proceed();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void around(EntityManager manager): obtainEntityManager(manager) &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager = manager;
&lt;br&gt;System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp;EntityManager:&amp;quot;+this.manager); // seems not run because console does not print anything related to this line. 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; proceed(manager);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;// &amp;nbsp;concrete class specifying the join point to be captured.
&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public aspect AccountTransaction extends AbstractTransaction{
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected pointcut tx(): execution(* example.Main.process());
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;// main class want to be monitored
&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;import example.EntityManager;
&lt;br&gt;&lt;br&gt;public class Main{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private AccountDao dao;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static void main(String args[]){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountDao d = new AccountDao();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Main m = new Main(d);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; m.process();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; m.print();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Main(AccountDao dao){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.dao = dao;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void process(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User u = new User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; u.setAddress(&amp;quot;7 Unkown Road, London, U.K.&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.save(u);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void print(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.list();	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Simone Gianni-2 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi Neo,
&lt;br&gt;it should work, if you don't find the manager there it could be because 
&lt;br&gt;two different instances of AbstractTransaction aspect are intercepting 
&lt;br&gt;the two methods. This happens if you declared your aspect with a 
&lt;br&gt;specific instantiation rule.
&lt;br&gt;&lt;br&gt;By default, aspects are singletons. That means that there will be only 
&lt;br&gt;one instance of AbstractTransaction in your application (well, in your 
&lt;br&gt;classloader). Since this is sometimes a limit, AspectJ supports 
&lt;br&gt;different instantiation systems, like perthis, pertarget, percflow 
&lt;br&gt;etc... If you use one of these construct, then a new instance of your 
&lt;br&gt;aspect will be created for each &amp;quot;this&amp;quot;, each &amp;quot;target&amp;quot; etc.. in this 
&lt;br&gt;case, when you use this.manager inside your aspect, it could be null 
&lt;br&gt;cause it is actually a different instance.
&lt;br&gt;&lt;br&gt;Could you post the complete aspect declaration, so that we can see which 
&lt;br&gt;instantiation rule you are using?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;Simone
&lt;br&gt;&lt;br&gt;neo anderson wrote:
&lt;br&gt;&amp;gt; Thank you very much. Now I am able to obtain EntityManager whilst method
&lt;br&gt;&amp;gt; setEntityManager get called. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But a new question: how can I assign the captured variable e.g.
&lt;br&gt;&amp;gt; EntityManager to the variable in an Aspect? For instance, 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ... aspect AbstractionTransaction ...{
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void around(EntityManager manager): obtainEntityManager(manager) &amp;&amp;
&lt;br&gt;&amp;gt; cflow(tx()){
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;manager:&amp;quot;+manager); // manager instance is not null
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager = manager; // but assign to the member of
&lt;br&gt;&amp;gt; aspect seemingly does not work
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; proceed(manager);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; My AbstractTransaction aspect contains a variable manager and I would like
&lt;br&gt;&amp;gt; to assign when the setEntityManager get called. Because in the example of
&lt;br&gt;&amp;gt; Aspectj in Action, the method intercepted will return Connection, which is
&lt;br&gt;&amp;gt; different from the method I have. Is there any chance to assign the variable
&lt;br&gt;&amp;gt; so that I can apply entitymanager to the pointcut when scope() is executed?
&lt;br&gt;&amp;gt; Or what is the right way to do this?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object around(): scope(){
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;===========&amp;gt; EntityManager:&amp;quot;+manager); // after
&lt;br&gt;&amp;gt; assigned, it is still null
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result = proceed();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sorry if this question is too newbie. I search on the internet and read
&lt;br&gt;&amp;gt; again the book Aspectj in Action, but seems there is no such explain. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for patiently answer my question. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I appreciate it. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy Clement wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; The method you are intercepting (setEntityManager) has a void return
&lt;br&gt;&amp;gt;&amp;gt; type, so your advice should too. &amp;nbsp;The proceed() call you are using
&lt;br&gt;&amp;gt;&amp;gt; will ensure your replacement is passed to the setEntityManager call.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009/11/4 neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi Mark &amp; Andy. Thanks for your reply. I really appreciate your help.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I change to use args, but now it thorws message:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [warning] advice defined in example.AbstractTransaction has not been
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; applied
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I check the syntax and read the example in e.g.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The way to capture the EntityManager looks correct.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public pointcut(EntityManager manager): call(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.setEntityManager(EntityManger)) &amp;&amp; args(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Is there any place I may go wrong? I test to move the .aj files and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; compile
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .java source. Everthing works fine. I am confused.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I appreciate any suggestion.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you very much.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Mark Cooke-6 wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It's been a while since I've used AspectJ in anger but as no-one else
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; has
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; replied yet...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'd say you probably want &amp;quot;args(manager)&amp;quot; instead of &amp;quot;target(manager)&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the obtainEntityManager pointcut.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The target of the call will be an AccountDAO, not an EntityManager.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; See
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; HTH!
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Mark.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --- On Wed, 4/11/09, neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; From: neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Subject: [aspectj-users] A transaction question
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; To: aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Date: Wednesday, 4 November, 2009, 12:09
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I am learning how to modulize transaction using aspectj,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but encounter a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; problem that EntityManager I try to capture is always null.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The compiler
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; issues message saying that the advice can not be applied.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; as below:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ... advice defined in example.AbstractTransaction has not
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; been applied
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; What should I change so that I can capture the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; EntityManager while it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; created (whilst calling to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public static void main(String args[]){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Main m = new Main();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; m.process();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; void process(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountDao dao = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountDao();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User u = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; u.setAddress(&amp;quot;123
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.save(u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dao.list();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static List&amp;lt;User&amp;gt; database
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void save(User user){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; database.add(user);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void list(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(User u :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; database){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; User.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private String id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private String name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private String address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public User(String id, String name){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.id = id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.name = name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String getId(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String getName(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String getAddress(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void setAddress(String address){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.address =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String toString(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;&amp;lt;User
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; createEntityManagerFactory(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == factory)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public static EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; createEntityManager(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager = new EntityManager();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public abstract aspect AbstractTransaction
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; percflow(scope()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected abstract pointcut tx();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected pointcut
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; target(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected pointcut scope(): tx()
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; Object around(): scope(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; proceed();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; EntityManager around(EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager = proceed(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public aspect AccountTransaction extends
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected pointcut tx(): execution(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; example.Main.process());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Sent from the AspectJ - users mailing list archive at
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Sent from the AspectJ - users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Simone Gianni &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CEO Semeru s.r.l. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Apache Committer
&lt;br&gt;&lt;a href=&quot;http://www.simonegianni.it/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.simonegianni.it/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;aspectj-users@eclipse.org
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26251917.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26230437</id>
	<title>Re: A transaction question</title>
	<published>2009-11-06T03:27:28Z</published>
	<updated>2009-11-06T03:27:28Z</updated>
	<author>
		<name>Simone Gianni-2</name>
	</author>
	<content type="html">Hi Neo,
&lt;br&gt;it should work, if you don't find the manager there it could be because 
&lt;br&gt;two different instances of AbstractTransaction aspect are intercepting 
&lt;br&gt;the two methods. This happens if you declared your aspect with a 
&lt;br&gt;specific instantiation rule.
&lt;br&gt;&lt;br&gt;By default, aspects are singletons. That means that there will be only 
&lt;br&gt;one instance of AbstractTransaction in your application (well, in your 
&lt;br&gt;classloader). Since this is sometimes a limit, AspectJ supports 
&lt;br&gt;different instantiation systems, like perthis, pertarget, percflow 
&lt;br&gt;etc... If you use one of these construct, then a new instance of your 
&lt;br&gt;aspect will be created for each &amp;quot;this&amp;quot;, each &amp;quot;target&amp;quot; etc.. in this 
&lt;br&gt;case, when you use this.manager inside your aspect, it could be null 
&lt;br&gt;cause it is actually a different instance.
&lt;br&gt;&lt;br&gt;Could you post the complete aspect declaration, so that we can see which 
&lt;br&gt;instantiation rule you are using?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;Simone
&lt;br&gt;&lt;br&gt;neo anderson wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thank you very much. Now I am able to obtain EntityManager whilst method
&lt;br&gt;&amp;gt; setEntityManager get called. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But a new question: how can I assign the captured variable e.g.
&lt;br&gt;&amp;gt; EntityManager to the variable in an Aspect? For instance, 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ... aspect AbstractionTransaction ...{
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void around(EntityManager manager): obtainEntityManager(manager) &amp;&amp;
&lt;br&gt;&amp;gt; cflow(tx()){
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;manager:&amp;quot;+manager); // manager instance is not null
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager = manager; // but assign to the member of
&lt;br&gt;&amp;gt; aspect seemingly does not work
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; proceed(manager);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; My AbstractTransaction aspect contains a variable manager and I would like
&lt;br&gt;&amp;gt; to assign when the setEntityManager get called. Because in the example of
&lt;br&gt;&amp;gt; Aspectj in Action, the method intercepted will return Connection, which is
&lt;br&gt;&amp;gt; different from the method I have. Is there any chance to assign the variable
&lt;br&gt;&amp;gt; so that I can apply entitymanager to the pointcut when scope() is executed?
&lt;br&gt;&amp;gt; Or what is the right way to do this?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object around(): scope(){
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;===========&amp;gt; EntityManager:&amp;quot;+manager); // after
&lt;br&gt;&amp;gt; assigned, it is still null
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result = proceed();
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sorry if this question is too newbie. I search on the internet and read
&lt;br&gt;&amp;gt; again the book Aspectj in Action, but seems there is no such explain. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for patiently answer my question. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I appreciate it. 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy Clement wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; The method you are intercepting (setEntityManager) has a void return
&lt;br&gt;&amp;gt;&amp;gt; type, so your advice should too. &amp;nbsp;The proceed() call you are using
&lt;br&gt;&amp;gt;&amp;gt; will ensure your replacement is passed to the setEntityManager call.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009/11/4 neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi Mark &amp; Andy. Thanks for your reply. I really appreciate your help.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I change to use args, but now it thorws message:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [warning] advice defined in example.AbstractTransaction has not been
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; applied
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I check the syntax and read the example in e.g.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The way to capture the EntityManager looks correct.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public pointcut(EntityManager manager): call(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.setEntityManager(EntityManger)) &amp;&amp; args(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Is there any place I may go wrong? I test to move the .aj files and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; compile
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; .java source. Everthing works fine. I am confused.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I appreciate any suggestion.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you very much.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Mark Cooke-6 wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; It's been a while since I've used AspectJ in anger but as no-one else
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; has
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; replied yet...
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I'd say you probably want &amp;quot;args(manager)&amp;quot; instead of &amp;quot;target(manager)&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; in
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the obtainEntityManager pointcut.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The target of the call will be an AccountDAO, not an EntityManager.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; See
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; HTH!
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Mark.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --- On Wed, 4/11/09, neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; From: neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Subject: [aspectj-users] A transaction question
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Date: Wednesday, 4 November, 2009, 12:09
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I am learning how to modulize transaction using aspectj,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but encounter a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; problem that EntityManager I try to capture is always null.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The compiler
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; issues message saying that the advice can not be applied.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; as below:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ... advice defined in example.AbstractTransaction has not
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; been applied
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; What should I change so that I can capture the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; EntityManager while it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; created (whilst calling to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public static void main(String args[]){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Main m = new Main();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; m.process();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; void process(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountDao dao = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountDao();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User u = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; u.setAddress(&amp;quot;123
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.save(u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; dao.list();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static List&amp;lt;User&amp;gt; database
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void save(User user){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; database.add(user);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void list(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(User u :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; database){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; User.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private String id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private String name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private String address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public User(String id, String name){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.id = id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.name = name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String getId(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String getName(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String getAddress(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public void setAddress(String address){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.address =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String toString(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;&amp;lt;User
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; createEntityManagerFactory(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == factory)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; public static EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; createEntityManager(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager = new EntityManager();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public abstract aspect AbstractTransaction
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; percflow(scope()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected abstract pointcut tx();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected pointcut
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; target(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected pointcut scope(): tx()
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; Object around(): scope(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; proceed();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; EntityManager around(EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; manager = proceed(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; public aspect AccountTransaction extends
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; protected pointcut tx(): execution(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; example.Main.process());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Sent from the AspectJ - users mailing list archive at
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Sent from the AspectJ - users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Simone Gianni &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CEO Semeru s.r.l. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Apache Committer
&lt;br&gt;&lt;a href=&quot;http://www.simonegianni.it/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.simonegianni.it/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26230437&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26230437.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26230259</id>
	<title>Re: Newbie question about paramter exposure.</title>
	<published>2009-11-06T03:16:12Z</published>
	<updated>2009-11-06T03:16:12Z</updated>
	<author>
		<name>neo anderson</name>
	</author>
	<content type="html">I just found out that in Aspectj in Action, it explains the passing context from a join point to advice is as below:
&lt;br&gt;&lt;br&gt;The interpretation of context whilst using advice looks like
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object advice(String command): p(command){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;1.) command passing in to pointcut p()
&lt;br&gt;2.) the execution object command is passed to advice(String command)
&lt;br&gt;3.) which then passes to the body {...}.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;quote author=&quot;neo anderson&quot;&gt;&lt;br&gt;Just want to practise to see if I understand it correctly.
&lt;br&gt;&lt;br&gt;The point of interest 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A.execute(&amp;quot;ls -alh&amp;quot;) 
&lt;br&gt;&lt;br&gt;is reached. 
&lt;br&gt;&lt;br&gt;That point of interest is specified in 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execution(* example.A.execute(String)) &amp;&amp; args(command); 
&lt;br&gt;&lt;br&gt;So the parameter value being passed in (i.e. ls -alh) is bound to the command 
&lt;br&gt;parameter in the pointcut p(String command). Thus the value of `command' (in pointcut p(String command)) now can be replaced with &amp;quot;ls -alh&amp;quot; (whilst method's executing).
&lt;br&gt;&lt;br&gt;And because an advice around(String command) is attached to the pointcut p(String command), when the method execution join point occurs, it becomes
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object advice(String command): p(&amp;quot;ls -alh&amp;quot;){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;And then when advice is invoked 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object advice(&amp;quot;ls -alh&amp;quot;): p(&amp;quot;ls -alh&amp;quot;){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;Am I correct to the above explanation? 
&lt;br&gt;&lt;br&gt;I discover my problem is because after reading the book e.g. Aspectj in Action, I still do not understand very well about the flow that goes between joint points, pointcuts and advices. In a traditional method call, I understand (maybe not precisely) that in the class Main, when executing `new A().execute(&amp;quot;ls -alh&amp;quot;)', the value `ls -alh' will pass in to the execute() method of the class A; therefore, in the execute() function of the class A, the variable `command' can be replaced using the value `ls -alh' and gets printed using System.out.println() method in execution. 
&lt;br&gt;&lt;br&gt;But concept of aop looks like not the same way; so it makes me confused.
&lt;br&gt;&lt;br&gt;Please correct me if anything goes wrong. 
&lt;br&gt;&lt;br&gt;Thanks for your help. 
&lt;br&gt;&lt;br&gt;I really appreciate it.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Andy Clement wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;&lt;br&gt;Your description is ok:
&lt;br&gt;&lt;br&gt;&amp;gt; therefore, execution of the method `new A().execute(&amp;quot;ls -alh&amp;quot;)' triggers the around() advice, which passes in a value `ls -lah' (as the variable command). That value `ls -alh' passes to
&lt;br&gt;&amp;gt; pointcut p(), which also takes a variable named command. And that pointcut p() tries to capture the execution of a method specified as `* example.A.execute(String)' and its argument
&lt;br&gt;&amp;gt; must be `command.'
&lt;br&gt;&lt;br&gt;let me write it another way to see if that helps. &amp;nbsp;Think about the
&lt;br&gt;events that occur when the program runs:
&lt;br&gt;Main.main() starts executing
&lt;br&gt;it calls the Main() constructor
&lt;br&gt;it calls the process() method
&lt;br&gt;Main.process() method starts executing
&lt;br&gt;it calls the A() constructor
&lt;br&gt;it calls the execute(&amp;quot;ls -alh&amp;quot;) method
&lt;br&gt;A.execute(&amp;quot;ls -alh&amp;quot;) &amp;nbsp;method starts executing *
&lt;br&gt;it accesses the field System.out
&lt;br&gt;it calls the method println()
&lt;br&gt;&lt;br&gt;all those are the joinpoints in your program flow and your pointcut is
&lt;br&gt;choosing the one you are interested in. &amp;nbsp;You have used 'execution(*
&lt;br&gt;execute(String))' which has selected the one I've marked * above. &amp;nbsp;In
&lt;br&gt;your pointcut you've also said you are interested in the parameter
&lt;br&gt;when the method executes, so you have used 'args' to bind it - so when
&lt;br&gt;the program runs and your point of interest is reached, the parameter
&lt;br&gt;value being passed in is bound to the command parameter in your
&lt;br&gt;pointcut. &amp;nbsp;You have chosen to have around() advice attached to that
&lt;br&gt;pointcut so when the method-execution join point occurs, your around
&lt;br&gt;advice is invoked with the bound parameter value. &amp;nbsp;Unlike a regular
&lt;br&gt;method call, the weaving infrastructure is looking after binding the
&lt;br&gt;pointcut/advice parameter for you.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;2009/10/27 Neo Anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;:
&lt;br&gt;&amp;gt; Hi
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am newbie to aspectj and have a question regarding to the usage of parameters exposed in the pointcut, advice, etc. Following is the source code:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package aspectj;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect P{
&lt;br&gt;&amp;gt;        public pointcut p(String command): execution(* example.A.execute(String)) &amp;&amp; args(command);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        Object around(String command): p(command){
&lt;br&gt;&amp;gt;                System.out.println(&amp;quot;around() advice : command:&amp;quot;+command);
&lt;br&gt;&amp;gt;                return proceed(command);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class A{
&lt;br&gt;&amp;gt;        public void execute(String c){
&lt;br&gt;&amp;gt;                System.out.println(&amp;quot;[A.java][execute] command:&amp;quot;+c);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public static void main(String args[]){
&lt;br&gt;&amp;gt;                new Main().process();
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        void process(){
&lt;br&gt;&amp;gt;                new A().execute(&amp;quot;ls -alh&amp;quot;);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The output :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; around() advice : command:ls -alh
&lt;br&gt;&amp;gt; [A.java][execute] command:ls -alh
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thought I can get the code worked, I do not know how to explain the parameter exposed in the pointcut (e.g. p(String command)) and advice (e.g. around(String command)).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What I understand is that
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Since the execution flow is
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; new A().execute(&amp;quot;ls -lah&amp;quot;) [Main.java] -&amp;gt; public void execute(String c) [A.java]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; therefore, execution of the method `new A().execute(&amp;quot;ls -alh&amp;quot;)' triggers the around() advice, which passes in a value `ls -lah' (as the variable command). That value `ls -alh' passes to pointcut p(), which also takes a variable named command. And that pointcut p() tries to capture the execution of a method specified as `* example.A.execute(String)' and its argument must be `command.'
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is this explanation correct?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I found out there is something not right for me, but I am not aware the part that I do not understand.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I appreciate any advice.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you very much.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Send instant messages to your online friends &lt;a href=&quot;http://uk.messenger.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://uk.messenger.yahoo.com&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;aspectj-users@eclipse.org
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Newbie-question-about-paramter-exposure.-tp26077620p26230259.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26229210</id>
	<title>Re: A transaction question</title>
	<published>2009-11-06T02:21:24Z</published>
	<updated>2009-11-06T02:21:24Z</updated>
	<author>
		<name>neo anderson</name>
	</author>
	<content type="html">Thank you very much. Now I am able to obtain EntityManager whilst method setEntityManager get called. 
&lt;br&gt;&lt;br&gt;But a new question: how can I assign the captured variable e.g. EntityManager to the variable in an Aspect? For instance, 
&lt;br&gt;&lt;br&gt;... aspect AbstractionTransaction ...{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void around(EntityManager manager): obtainEntityManager(manager) &amp;&amp; cflow(tx()){
&lt;br&gt;System.out.println(&amp;quot;manager:&amp;quot;+manager); // manager instance is not null
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager = manager; // but assign to the member of aspect seemingly does not work
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; proceed(manager);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;My AbstractTransaction aspect contains a variable manager and I would like to assign when the setEntityManager get called. Because in the example of Aspectj in Action, the method intercepted will return Connection, which is different from the method I have. Is there any chance to assign the variable so that I can apply entitymanager to the pointcut when scope() is executed? Or what is the right way to do this?
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object around(): scope(){
&lt;br&gt;System.out.println(&amp;quot;===========&amp;gt; EntityManager:&amp;quot;+manager); // after assigned, it is still null
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result = proceed();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;Sorry if this question is too newbie. I search on the internet and read again the book Aspectj in Action, but seems there is no such explain. 
&lt;br&gt;&lt;br&gt;Thanks for patiently answer my question. 
&lt;br&gt;&lt;br&gt;I appreciate it. 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Andy Clement wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;The method you are intercepting (setEntityManager) has a void return
&lt;br&gt;type, so your advice should too. &amp;nbsp;The proceed() call you are using
&lt;br&gt;will ensure your replacement is passed to the setEntityManager call.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/11/4 neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Mark &amp; Andy. Thanks for your reply. I really appreciate your help.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I change to use args, but now it thorws message:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [warning] advice defined in example.AbstractTransaction has not been applied
&lt;br&gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I check the syntax and read the example in e.g.
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The way to capture the EntityManager looks correct.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public pointcut(EntityManager manager): call(*
&lt;br&gt;&amp;gt; AccountDao.setEntityManager(EntityManger)) &amp;&amp; args(manager);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there any place I may go wrong? I test to move the .aj files and compile
&lt;br&gt;&amp;gt; .java source. Everthing works fine. I am confused.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I appreciate any suggestion.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you very much.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Mark Cooke-6 wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt; It's been a while since I've used AspectJ in anger but as no-one else has
&lt;br&gt;&amp;gt;&amp;gt; replied yet...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'd say you probably want &amp;quot;args(manager)&amp;quot; instead of &amp;quot;target(manager)&amp;quot; in
&lt;br&gt;&amp;gt;&amp;gt; the obtainEntityManager pointcut.
&lt;br&gt;&amp;gt;&amp;gt; The target of the call will be an AccountDAO, not an EntityManager.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; See
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; HTH!
&lt;br&gt;&amp;gt;&amp;gt; Mark.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; --- On Wed, 4/11/09, neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; From: neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Subject: [aspectj-users] A transaction question
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; To: aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Date: Wednesday, 4 November, 2009, 12:09
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I am learning how to modulize transaction using aspectj,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but encounter a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; problem that EntityManager I try to capture is always null.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The compiler
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; issues message saying that the advice can not be applied.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; as below:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ... advice defined in example.AbstractTransaction has not
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; been applied
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; What should I change so that I can capture the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; EntityManager while it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; created (whilst calling to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public static void main(String args[]){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         Main m = new Main();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         m.process();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     void process(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         AccountDao dao = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         User u = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         u.setAddress(&amp;quot;123
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         dao.save(u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dao.list();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private static List&amp;lt;User&amp;gt; database
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.manager =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void save(User user){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; database.add(user);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void list(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         for(User u :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; database){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; User.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private String id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private String name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private String address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public User(String id, String name){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.id = id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.name = name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String getId(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return this.id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String getName(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return this.name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String getAddress(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return this.address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void setAddress(String address){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.address =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String toString(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return &amp;quot;&amp;lt;User
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; createEntityManagerFactory(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         if(null == factory)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private static EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public static EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; createEntityManager(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager = new EntityManager();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public abstract aspect AbstractTransaction
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; percflow(scope()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected abstract pointcut tx();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected pointcut
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; target(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected pointcut scope(): tx()
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     Object around(): scope(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         Object result =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; proceed();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return result;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     EntityManager around(EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager = proceed(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public aspect AccountTransaction extends
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected pointcut tx(): execution(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.Main.process());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Sent from the AspectJ - users mailing list archive at
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the AspectJ - users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;aspectj-users@eclipse.org
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26229210.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26203365</id>
	<title>Re: A transaction question</title>
	<published>2009-11-04T11:42:49Z</published>
	<updated>2009-11-04T11:42:49Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">The method you are intercepting (setEntityManager) has a void return
&lt;br&gt;type, so your advice should too. &amp;nbsp;The proceed() call you are using
&lt;br&gt;will ensure your replacement is passed to the setEntityManager call.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/11/4 neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Mark &amp; Andy. Thanks for your reply. I really appreciate your help.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I change to use args, but now it thorws message:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [error] incompatible return type applying to method-call(void
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [warning] advice defined in example.AbstractTransaction has not been applied
&lt;br&gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I check the syntax and read the example in e.g.
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The way to capture the EntityManager looks correct.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public pointcut(EntityManager manager): call(*
&lt;br&gt;&amp;gt; AccountDao.setEntityManager(EntityManger)) &amp;&amp; args(manager);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is there any place I may go wrong? I test to move the .aj files and compile
&lt;br&gt;&amp;gt; .java source. Everthing works fine. I am confused.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I appreciate any suggestion.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you very much.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Mark Cooke-6 wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt; It's been a while since I've used AspectJ in anger but as no-one else has
&lt;br&gt;&amp;gt;&amp;gt; replied yet...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'd say you probably want &amp;quot;args(manager)&amp;quot; instead of &amp;quot;target(manager)&amp;quot; in
&lt;br&gt;&amp;gt;&amp;gt; the obtainEntityManager pointcut.
&lt;br&gt;&amp;gt;&amp;gt; The target of the call will be an AccountDAO, not an EntityManager.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; See
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; HTH!
&lt;br&gt;&amp;gt;&amp;gt; Mark.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; --- On Wed, 4/11/09, neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; From: neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Subject: [aspectj-users] A transaction question
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Date: Wednesday, 4 November, 2009, 12:09
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I am learning how to modulize transaction using aspectj,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but encounter a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; problem that EntityManager I try to capture is always null.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The compiler
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; issues message saying that the advice can not be applied.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; as below:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ... advice defined in example.AbstractTransaction has not
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; been applied
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; What should I change so that I can capture the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; EntityManager while it is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; created (whilst calling to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public static void main(String args[]){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         Main m = new Main();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         m.process();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     void process(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         AccountDao dao = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         User u = new
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         u.setAddress(&amp;quot;123
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         dao.save(u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; dao.list();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private static List&amp;lt;User&amp;gt; database
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.manager =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void save(User user){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; database.add(user);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void list(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         for(User u :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; database){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; User.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private String id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private String name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private String address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public User(String id, String name){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.id = id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.name = name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String getId(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return this.id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String getName(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return this.name;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String getAddress(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return this.address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public void setAddress(String address){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         this.address =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; address;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public String toString(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return &amp;quot;&amp;lt;User
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public static EntityManagerFactory
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; createEntityManagerFactory(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         if(null == factory)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return factory;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private static EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     public static EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; createEntityManager(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager = new EntityManager();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public abstract aspect AbstractTransaction
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; percflow(scope()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected abstract pointcut tx();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected pointcut
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; target(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected pointcut scope(): tx()
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     Object around(): scope(){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         Object result =
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; proceed();
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return result;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     EntityManager around(EntityManager
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; manager = proceed(manager);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; public aspect AccountTransaction extends
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; AbstractTransaction{
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     protected pointcut tx(): execution(*
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; example.Main.process());
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; View this message in context:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Sent from the AspectJ - users mailing list archive at
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26203290.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the AspectJ - users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26203365&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26203365.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26203290</id>
	<title>Re: A transaction question</title>
	<published>2009-11-04T11:39:12Z</published>
	<updated>2009-11-04T11:39:12Z</updated>
	<author>
		<name>neo anderson</name>
	</author>
	<content type="html">Hi Mark &amp; Andy. Thanks for your reply. I really appreciate your help. 
&lt;br&gt;&lt;br&gt;I change to use args, but now it thorws message:
&lt;br&gt;&lt;br&gt;[error] incompatible return type applying to method-call(void example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;&lt;br&gt;[error] incompatible return type applying to method-call(void example.AccountDao.setEntityManager(example.EntityManager))
&lt;br&gt;dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&lt;br&gt;[warning] advice defined in example.AbstractTransaction has not been applied [Xlint:adviceDidNotMatch]
&lt;br&gt;&lt;br&gt;I check the syntax and read the example in e.g. &lt;a href=&quot;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://books.google.com.tw/books?id=AKuBlJGl7iUC&amp;pg=PA54&amp;lpg=PA54&amp;dq=aspectj+call+args&amp;source=bl&amp;ots=58KGnyCZiN&amp;sig=5gNdHoekFrDXJne3pVe6UO5tiYQ&amp;hl=zh-TW&amp;ei=kNbxSqTEBumgjAfdnp2WAQ&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=6&amp;ved=0CB0Q6AEwBQ#v=onepage&amp;q=4-2%20capturing%20the%20parameter%20values%20passed%20on%20a%20method%20call&amp;f=false&lt;/a&gt;&lt;br&gt;&lt;br&gt;The way to capture the EntityManager looks correct. 
&lt;br&gt;&lt;br&gt;public pointcut(EntityManager manager): call(* AccountDao.setEntityManager(EntityManger)) &amp;&amp; args(manager);
&lt;br&gt;&lt;br&gt;Is there any place I may go wrong? I test to move the .aj files and compile .java source. Everthing works fine. I am confused.
&lt;br&gt;&lt;br&gt;I appreciate any suggestion. 
&lt;br&gt;&lt;br&gt;Thank you very much.
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Mark Cooke-6 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;It's been a while since I've used AspectJ in anger but as no-one else has replied yet...
&lt;br&gt;&lt;br&gt;I'd say you probably want &amp;quot;args(manager)&amp;quot; instead of &amp;quot;target(manager)&amp;quot; in the obtainEntityManager pointcut.
&lt;br&gt;The target of the call will be an AccountDAO, not an EntityManager.
&lt;br&gt;&lt;br&gt;See &lt;a href=&quot;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH!
&lt;br&gt;Mark.
&lt;br&gt;&lt;br&gt;--- On Wed, 4/11/09, neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; From: neo anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;
&lt;br&gt;&amp;gt; Subject: [aspectj-users] A transaction question
&lt;br&gt;&amp;gt; To: aspectj-users@eclipse.org
&lt;br&gt;&amp;gt; Date: Wednesday, 4 November, 2009, 12:09
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am learning how to modulize transaction using aspectj,
&lt;br&gt;&amp;gt; but encounter a
&lt;br&gt;&amp;gt; problem that EntityManager I try to capture is always null.
&lt;br&gt;&amp;gt; The compiler
&lt;br&gt;&amp;gt; issues message saying that the advice can not be applied.
&lt;br&gt;&amp;gt; as below:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ... advice defined in example.AbstractTransaction has not
&lt;br&gt;&amp;gt; been applied
&lt;br&gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What should I change so that I can capture the
&lt;br&gt;&amp;gt; EntityManager while it is
&lt;br&gt;&amp;gt; created (whilst calling to
&lt;br&gt;&amp;gt; AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;     public static void main(String args[]){
&lt;br&gt;&amp;gt;         Main m = new Main();
&lt;br&gt;&amp;gt;         m.process();
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt;     void process(){
&lt;br&gt;&amp;gt;         AccountDao dao = new
&lt;br&gt;&amp;gt; AccountDao();
&lt;br&gt;&amp;gt;     
&lt;br&gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;         User u = new
&lt;br&gt;&amp;gt; User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;         u.setAddress(&amp;quot;123
&lt;br&gt;&amp;gt; Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;         dao.save(u);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;        
&lt;br&gt;&amp;gt; dao.list();    
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private static List&amp;lt;User&amp;gt; database
&lt;br&gt;&amp;gt; = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void
&lt;br&gt;&amp;gt; setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;         this.manager =
&lt;br&gt;&amp;gt; manager;
&lt;br&gt;&amp;gt;     }    
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void save(User user){
&lt;br&gt;&amp;gt;        
&lt;br&gt;&amp;gt; database.add(user);    
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void list(){
&lt;br&gt;&amp;gt;         for(User u :
&lt;br&gt;&amp;gt; database){
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);   
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;         }
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; User.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;     private String id;
&lt;br&gt;&amp;gt;     private String name;
&lt;br&gt;&amp;gt;     private String address;
&lt;br&gt;&amp;gt;     public User(String id, String name){
&lt;br&gt;&amp;gt;         this.id = id;
&lt;br&gt;&amp;gt;         this.name = name;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String getId(){
&lt;br&gt;&amp;gt;         return this.id;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String getName(){
&lt;br&gt;&amp;gt;         return this.name;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String getAddress(){
&lt;br&gt;&amp;gt;         return this.address;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void setAddress(String address){
&lt;br&gt;&amp;gt;         this.address =
&lt;br&gt;&amp;gt; address;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String toString(){
&lt;br&gt;&amp;gt;         return &amp;quot;&amp;lt;User
&lt;br&gt;&amp;gt; [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;     private static EntityManagerFactory
&lt;br&gt;&amp;gt; factory;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public static EntityManagerFactory
&lt;br&gt;&amp;gt; createEntityManagerFactory(){
&lt;br&gt;&amp;gt;         if(null == factory)
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;         return factory;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private static EntityManager manager;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public static EntityManager
&lt;br&gt;&amp;gt; createEntityManager(){
&lt;br&gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; manager = new EntityManager();
&lt;br&gt;&amp;gt;         }
&lt;br&gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public abstract aspect AbstractTransaction
&lt;br&gt;&amp;gt; percflow(scope()){
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt;     
&lt;br&gt;&amp;gt;     protected abstract pointcut tx();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     protected pointcut
&lt;br&gt;&amp;gt; obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager))
&lt;br&gt;&amp;gt; &amp;&amp; target(manager);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     protected pointcut scope(): tx()
&lt;br&gt;&amp;gt; &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     Object around(): scope(){
&lt;br&gt;&amp;gt;        
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;         Object result =
&lt;br&gt;&amp;gt; proceed();
&lt;br&gt;&amp;gt;         return result;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     EntityManager around(EntityManager
&lt;br&gt;&amp;gt; manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; manager = proceed(manager);
&lt;br&gt;&amp;gt;         
&lt;br&gt;&amp;gt;         }
&lt;br&gt;&lt;br&gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public aspect AccountTransaction extends
&lt;br&gt;&amp;gt; AbstractTransaction{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     protected pointcut tx(): execution(*
&lt;br&gt;&amp;gt; example.Main.process());
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the AspectJ - users mailing list archive at
&lt;br&gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;aspectj-users@eclipse.org
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26203290.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26201878</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-04T10:21:00Z</published>
	<updated>2009-11-04T10:21:00Z</updated>
	<author>
		<name>Dave Whittaker</name>
	</author>
	<content type="html">Huh, I would have sworn I had tried that in the past and it hadn't &amp;nbsp;
&lt;br&gt;worked. &amp;nbsp;Thanks for the tip.
&lt;br&gt;&lt;br&gt;On Nov 2, 2009, at 5:53 PM, Andy Clement wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; but that adds in a declare statement
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Just to say, if you annotate the ITD, that will be on the introduced
&lt;br&gt;&amp;gt; target method - you don't need an additional 'declare @method'.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; From a Roo project:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;@javax.persistence.Id
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; @javax 
&lt;br&gt;&amp;gt; .persistence 
&lt;br&gt;&amp;gt; .GeneratedValue(strategy=javax.persistence.GenerationType.AUTO)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;@javax.persistence.Column(name=&amp;quot;id&amp;quot;)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;private java.lang.Long Pet.id;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers,
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/11/2 Dave Whittaker &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dave@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Just thought I'd throw in here with a case where I've ran into &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; problems with
&lt;br&gt;&amp;gt;&amp;gt; this... JPA. &amp;nbsp;If you have common fields you want to inject into an &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; entity
&lt;br&gt;&amp;gt;&amp;gt; you might try to do something like
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; private String CommonInterface.commonField
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; And expect at runtime that will result in a db column named &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; common_field, or
&lt;br&gt;&amp;gt;&amp;gt; whatever else your naming strategy comes up with. &amp;nbsp;Sure you could &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; use the
&lt;br&gt;&amp;gt;&amp;gt; @Column annotation and explicitly give it a name, but that adds in &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; a declare
&lt;br&gt;&amp;gt;&amp;gt; statement and it is definitely a bit confusing when you first run &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; across the
&lt;br&gt;&amp;gt;&amp;gt; issue. &amp;nbsp;JPA is not the only framework to do this type of reflection &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; these
&lt;br&gt;&amp;gt;&amp;gt; days, Seam's @In injection is another one that tries to determine a &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; value
&lt;br&gt;&amp;gt;&amp;gt; based on the name of the field.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Of course i imagine this was done to avoid naming collisions when you
&lt;br&gt;&amp;gt;&amp;gt; receive fields from multiple ITDs and I'm not sure I see a better &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; solution.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Nov 2, 2009, at 5:03 PM, Andrew Eisenberg wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; expected to be directly referenced in the source code. &amp;nbsp;It is only
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; needed for the byte code (i.e., you should not be concerned with &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; it).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; All you need to know is that the declaration declares an Integer &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; field
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 'id' on MyClass that is private to the aspect (ie- it is not
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; accessible anywhere outside the aspect).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Unless you require knowledge about the byte code, the byte code name
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; should not be of concern to you. &amp;nbsp;However, if you do require &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; knowledge
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; about the byte code, please explain what that is and perhaps we can
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; help you.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; --a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I have an intertype declaration like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; private Integer MyClass.id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; attribute.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; How to do it?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; PS: Sorry for my poor English. It isn't my native language :).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26201878&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26201878.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26199716</id>
	<title>Re: A transaction question</title>
	<published>2009-11-04T08:33:01Z</published>
	<updated>2009-11-04T08:33:01Z</updated>
	<author>
		<name>Mark Cooke-6</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;It's been a while since I've used AspectJ in anger but as no-one else has replied yet...
&lt;br&gt;&lt;br&gt;I'd say you probably want &amp;quot;args(manager)&amp;quot; instead of &amp;quot;target(manager)&amp;quot; in the obtainEntityManager pointcut.
&lt;br&gt;The target of the call will be an AccountDAO, not an EntityManager.
&lt;br&gt;&lt;br&gt;See &lt;a href=&quot;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.eclipse.org/aspectj/doc/released/progguide/semantics-joinPoints.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH!
&lt;br&gt;Mark.
&lt;br&gt;&lt;br&gt;--- On Wed, 4/11/09, neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199716&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199716&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: [aspectj-users] A transaction question
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199716&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Date: Wednesday, 4 November, 2009, 12:09
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am learning how to modulize transaction using aspectj,
&lt;br&gt;&amp;gt; but encounter a
&lt;br&gt;&amp;gt; problem that EntityManager I try to capture is always null.
&lt;br&gt;&amp;gt; The compiler
&lt;br&gt;&amp;gt; issues message saying that the advice can not be applied.
&lt;br&gt;&amp;gt; as below:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ... advice defined in example.AbstractTransaction has not
&lt;br&gt;&amp;gt; been applied
&lt;br&gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What should I change so that I can capture the
&lt;br&gt;&amp;gt; EntityManager while it is
&lt;br&gt;&amp;gt; created (whilst calling to
&lt;br&gt;&amp;gt; AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;     public static void main(String args[]){
&lt;br&gt;&amp;gt;         Main m = new Main();
&lt;br&gt;&amp;gt;         m.process();
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt;     void process(){
&lt;br&gt;&amp;gt;         AccountDao dao = new
&lt;br&gt;&amp;gt; AccountDao();
&lt;br&gt;&amp;gt;     
&lt;br&gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;         User u = new
&lt;br&gt;&amp;gt; User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;         u.setAddress(&amp;quot;123
&lt;br&gt;&amp;gt; Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;         dao.save(u);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;        
&lt;br&gt;&amp;gt; dao.list();    
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private static List&amp;lt;User&amp;gt; database
&lt;br&gt;&amp;gt; = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void
&lt;br&gt;&amp;gt; setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;         this.manager =
&lt;br&gt;&amp;gt; manager;
&lt;br&gt;&amp;gt;     }    
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void save(User user){
&lt;br&gt;&amp;gt;        
&lt;br&gt;&amp;gt; database.add(user);    
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void list(){
&lt;br&gt;&amp;gt;         for(User u :
&lt;br&gt;&amp;gt; database){
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);   
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;         }
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; User.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;     private String id;
&lt;br&gt;&amp;gt;     private String name;
&lt;br&gt;&amp;gt;     private String address;
&lt;br&gt;&amp;gt;     public User(String id, String name){
&lt;br&gt;&amp;gt;         this.id = id;
&lt;br&gt;&amp;gt;         this.name = name;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String getId(){
&lt;br&gt;&amp;gt;         return this.id;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String getName(){
&lt;br&gt;&amp;gt;         return this.name;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String getAddress(){
&lt;br&gt;&amp;gt;         return this.address;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public void setAddress(String address){
&lt;br&gt;&amp;gt;         this.address =
&lt;br&gt;&amp;gt; address;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public String toString(){
&lt;br&gt;&amp;gt;         return &amp;quot;&amp;lt;User
&lt;br&gt;&amp;gt; [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;     private static EntityManagerFactory
&lt;br&gt;&amp;gt; factory;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public static EntityManagerFactory
&lt;br&gt;&amp;gt; createEntityManagerFactory(){
&lt;br&gt;&amp;gt;         if(null == factory)
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;         return factory;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private static EntityManager manager;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     public static EntityManager
&lt;br&gt;&amp;gt; createEntityManager(){
&lt;br&gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; manager = new EntityManager();
&lt;br&gt;&amp;gt;         }
&lt;br&gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public abstract aspect AbstractTransaction
&lt;br&gt;&amp;gt; percflow(scope()){
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     private EntityManager manager;
&lt;br&gt;&amp;gt;     
&lt;br&gt;&amp;gt;     protected abstract pointcut tx();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     protected pointcut
&lt;br&gt;&amp;gt; obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager))
&lt;br&gt;&amp;gt; &amp;&amp; target(manager);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     protected pointcut scope(): tx()
&lt;br&gt;&amp;gt; &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     Object around(): scope(){
&lt;br&gt;&amp;gt;        
&lt;br&gt;&amp;gt; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;         Object result =
&lt;br&gt;&amp;gt; proceed();
&lt;br&gt;&amp;gt;         return result;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     EntityManager around(EntityManager
&lt;br&gt;&amp;gt; manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;         if(null == manager){
&lt;br&gt;&amp;gt;            
&lt;br&gt;&amp;gt; manager = proceed(manager);
&lt;br&gt;&amp;gt;         
&lt;br&gt;&amp;gt;         }
&lt;/div&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;         return manager;
&lt;br&gt;&amp;gt;     }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; public aspect AccountTransaction extends
&lt;br&gt;&amp;gt; AbstractTransaction{
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;     protected pointcut tx(): execution(*
&lt;br&gt;&amp;gt; example.Main.process());
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the AspectJ - users mailing list archive at
&lt;br&gt;&amp;gt; Nabble.com.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199716&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199716&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26199716.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26199130</id>
	<title>Re: A transaction question</title>
	<published>2009-11-04T08:03:11Z</published>
	<updated>2009-11-04T08:03:11Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">Just a quick observation:
&lt;br&gt;&lt;br&gt;&amp;nbsp;protected pointcut obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;example.AccountDao.setEntityManager(EntityManager)) &amp;&amp; target(manager);
&lt;br&gt;&lt;br&gt;shouldn't that be:
&lt;br&gt;&lt;br&gt;&amp;nbsp;protected pointcut obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;example.AccountDao.setEntityManager(EntityManager)) &amp;&amp; args(manager);
&lt;br&gt;&lt;br&gt;As the EntityManager is the argument to the method call and not the
&lt;br&gt;target of the call (the target of the call being AccountDao)?
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/11/4 neo anderson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199130&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;javadeveloper999@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am learning how to modulize transaction using aspectj, but encounter a
&lt;br&gt;&amp;gt; problem that EntityManager I try to capture is always null. The compiler
&lt;br&gt;&amp;gt; issues message saying that the advice can not be applied. as below:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ... advice defined in example.AbstractTransaction has not been applied
&lt;br&gt;&amp;gt; [Xlint:adviceDidNotMatch]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What should I change so that I can capture the EntityManager while it is
&lt;br&gt;&amp;gt; created (whilst calling to AccountDao.setEntityManager(..))?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for help.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Main.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;        public static void main(String args[]){
&lt;br&gt;&amp;gt;                Main m = new Main();
&lt;br&gt;&amp;gt;                m.process();
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;        void process(){
&lt;br&gt;&amp;gt;                AccountDao dao = new AccountDao();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;gt;                User u = new User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;gt;                u.setAddress(&amp;quot;123 Test Road, London.&amp;quot;);
&lt;br&gt;&amp;gt;                dao.save(u);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                dao.list();
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; AccountDao.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import java.util.List;
&lt;br&gt;&amp;gt; import java.util.ArrayList;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class AccountDao{
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        private EntityManager manager;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        private static List&amp;lt;User&amp;gt; database = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public void setEntityManager(EntityManager manager){
&lt;br&gt;&amp;gt;                this.manager = manager;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public void save(User user){
&lt;br&gt;&amp;gt;                database.add(user);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public void list(){
&lt;br&gt;&amp;gt;                for(User u : database){
&lt;br&gt;&amp;gt;                        System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);
&lt;br&gt;&amp;gt;                }
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; User.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class User{
&lt;br&gt;&amp;gt;        private String id;
&lt;br&gt;&amp;gt;        private String name;
&lt;br&gt;&amp;gt;        private String address;
&lt;br&gt;&amp;gt;        public User(String id, String name){
&lt;br&gt;&amp;gt;                this.id = id;
&lt;br&gt;&amp;gt;                this.name = name;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public String getId(){
&lt;br&gt;&amp;gt;                return this.id;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public String getName(){
&lt;br&gt;&amp;gt;                return this.name;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public String getAddress(){
&lt;br&gt;&amp;gt;                return this.address;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public void setAddress(String address){
&lt;br&gt;&amp;gt;                this.address = address;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public String toString(){
&lt;br&gt;&amp;gt;                return &amp;quot;&amp;lt;User [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; PersistenceCreator.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class PersistenceCreator{
&lt;br&gt;&amp;gt;        private static EntityManagerFactory factory;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public static EntityManagerFactory createEntityManagerFactory(){
&lt;br&gt;&amp;gt;                if(null == factory)
&lt;br&gt;&amp;gt;                        factory = new EntityManagerFactory();
&lt;br&gt;&amp;gt;                return factory;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; EntityManagerFactory.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class EntityManagerFactory{
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        private static EntityManager manager;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public static EntityManager createEntityManager(){
&lt;br&gt;&amp;gt;                if(null == manager){
&lt;br&gt;&amp;gt;                        manager = new EntityManager();
&lt;br&gt;&amp;gt;                }
&lt;br&gt;&amp;gt;                return manager;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; EntityManager.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class EntityManager{
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; AbstractTransaction.aj
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public abstract aspect AbstractTransaction percflow(scope()){
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        private EntityManager manager;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        protected abstract pointcut tx();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        protected pointcut obtainEntityManager(EntityManager manager): call(*
&lt;br&gt;&amp;gt; example.AccountDao.setEntityManager(EntityManager)) &amp;&amp; target(manager);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        protected pointcut scope(): tx() &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        Object around(): scope(){
&lt;br&gt;&amp;gt;                System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null
&lt;br&gt;&amp;gt;                Object result = proceed();
&lt;br&gt;&amp;gt;                return result;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        EntityManager around(EntityManager manager): obtainEntityManager(manager)
&lt;br&gt;&amp;gt; &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;gt;                if(null == manager){
&lt;br&gt;&amp;gt;                        manager = proceed(manager);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                }
&lt;br&gt;&amp;gt;                return manager;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; AccountTransaction.aj
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect AccountTransaction extends AbstractTransaction{
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        protected pointcut tx(): execution(* example.Main.process());
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/A-transaction-question-tp26195112p26195112.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the AspectJ - users mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199130&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26199130&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26199130.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26198178</id>
	<title>Problems with inter type declaring @PersistenceContext annotated EntityManager attribute in interface</title>
	<published>2009-11-04T07:22:25Z</published>
	<updated>2009-11-04T07:22:25Z</updated>
	<author>
		<name>db-27</name>
	</author>
	<content type="html">Hi all,&lt;br&gt;&lt;br&gt;I have an aspect like that:&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;declare parents: MyClass1 || MyClass2 implements HasEntityManager;&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;@PersistenceContext&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;private EntityManager HasEntityManager.entityManager;&lt;/span&gt;&lt;br&gt;

&lt;br&gt;However, when I start my app in Glassfish, I get:&lt;br&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;SEVERE: Injection method name must start with &amp;quot;set&amp;quot;&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt; symbol: javax.persistence.PersistenceContext&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt; location: public static void edu.tcc.t2.infra.RepositoryJPA.ajc$interFieldInit$edu_tcc_t2_infra_RepositoryJPA$edu_tcc_t2_infra_HasEntityManager$entityManager(edu.tcc.t2.infra.HasEntityManager)&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;br&gt;I&amp;#39;m using field-based annotation, so, it couldn&amp;#39;t happen.&lt;br&gt;Anyone knows how to solve it?&lt;br&gt;&lt;br&gt;Thanks.&lt;br&gt;&lt;br&gt;PS: MyClass1 and MyClass2 are JSF managed beans.&lt;br&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26198178&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Problems-with-inter-type-declaring-%40PersistenceContext-annotated-EntityManager-attribute-in-interface-tp26198178p26198178.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26195112</id>
	<title>A transaction question</title>
	<published>2009-11-04T04:09:41Z</published>
	<updated>2009-11-04T04:09:41Z</updated>
	<author>
		<name>neo anderson</name>
	</author>
	<content type="html">I am learning how to modulize transaction using aspectj, but encounter a problem that EntityManager I try to capture is always null. The compiler issues message saying that the advice can not be applied. as below:
&lt;br&gt;&lt;br&gt;... advice defined in example.AbstractTransaction has not been applied [Xlint:adviceDidNotMatch]
&lt;br&gt;&lt;br&gt;What should I change so that I can capture the EntityManager while it is created (whilst calling to AccountDao.setEntityManager(..))?
&lt;br&gt;&lt;br&gt;Thanks for help.
&lt;br&gt;&lt;br&gt;Main.java
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public class Main{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static void main(String args[]){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Main m = new Main();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; m.process();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void process(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountDao dao = new AccountDao();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.setEntityManager(PersistenceCreator.createEntityManagerFactory().createEntityManager());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; User u = new User(&amp;quot;1&amp;quot;, &amp;quot;Smith&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; u.setAddress(&amp;quot;123 Test Road, London.&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.save(u);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dao.list();	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;AccountDao.java
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;import java.util.List;
&lt;br&gt;import java.util.ArrayList;
&lt;br&gt;&lt;br&gt;&lt;br&gt;public class AccountDao{
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private static List&amp;lt;User&amp;gt; database = new ArrayList&amp;lt;User&amp;gt;();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setEntityManager(EntityManager manager){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.manager = manager;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }	
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void save(User user){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; database.add(user);	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void list(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(User u : database){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&amp;quot;&amp;gt;&amp;gt;&amp;gt;[AccountDao.java]&amp;quot;+u);	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;User.java
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public class User{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private String id;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private String name;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private String address;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public User(String id, String name){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.id = id;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.name = name;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getId(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.id;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getName(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.name;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getAddress(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return this.address;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setAddress(String address){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.address = address;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String toString(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return &amp;quot;&amp;lt;User [id:&amp;quot;+id+&amp;quot;][name:&amp;quot;+name+&amp;quot;][address:&amp;quot;+address+&amp;quot;]&amp;gt;&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;PersistenceCreator.java
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public class PersistenceCreator{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private static EntityManagerFactory factory;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static EntityManagerFactory createEntityManagerFactory(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == factory)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; factory = new EntityManagerFactory();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return factory;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;EntityManagerFactory.java
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public class EntityManagerFactory{
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private static EntityManager manager;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static EntityManager createEntityManager(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == manager){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; manager = new EntityManager();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return manager;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;EntityManager.java
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public class EntityManager{
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;AbstractTransaction.aj
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public abstract aspect AbstractTransaction percflow(scope()){
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private EntityManager manager;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected abstract pointcut tx();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected pointcut obtainEntityManager(EntityManager manager): call(* example.AccountDao.setEntityManager(EntityManager)) &amp;&amp; target(manager);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected pointcut scope(): tx() &amp;&amp; !cflowbelow(tx());
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object around(): scope(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&amp;quot;EntityManager:&amp;quot;+manager);// always null 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object result = proceed();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EntityManager around(EntityManager manager): obtainEntityManager(manager) &amp;&amp; cflow(tx()){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(null == manager){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; manager = proceed(manager);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return manager;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;AccountTransaction.aj
&lt;br&gt;&lt;br&gt;package example;
&lt;br&gt;&lt;br&gt;public aspect AccountTransaction extends AbstractTransaction{
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected pointcut tx(): execution(* example.Main.process());
&lt;br&gt;}</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/A-transaction-question-tp26195112p26195112.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26181802</id>
	<title>RE: FW: NoSuchMethodError: aspectOf()</title>
	<published>2009-11-03T07:53:40Z</published>
	<updated>2009-11-03T07:53:40Z</updated>
	<author>
		<name>Roger Huang-2</name>
	</author>
	<content type="html">Hi Andy,
&lt;br&gt;Thank you for the detailed explanation. &amp;nbsp;My aspect works now.
&lt;br&gt;Thanks,
&lt;br&gt;Roger 
&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;Sent: Sunday, November 01, 2009 7:49 PM
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [aspectj-users] FW: NoSuchMethodError: aspectOf()
&lt;br&gt;&lt;br&gt;Hi Roger,
&lt;br&gt;&lt;br&gt;There are three paths to think about with AspectJ:
&lt;br&gt;&lt;br&gt;classpath: for resolving references found in any of the code the compiler/weaver are processing. &amp;nbsp;This path is not searched for aspects, and the contents of it are not woven and not copied to the output folder.
&lt;br&gt;inpath: input .class files for weaving. &amp;nbsp;Contents of this path *are* woven and *are* copied to the output folder, it is also searched for aspects.
&lt;br&gt;aspectpath: input aspect .class files for weaving. Contents of this path are not woven and are not copied to the output folder, but it is searched for aspects.
&lt;br&gt;&lt;br&gt;Your annotation style aspect is compiled by javac and then passed in via aspectpath. &amp;nbsp;Unfortunately as I have written above, the contents of aspect path are not woven - so your aspect is never 'finished off'.
&lt;br&gt;&lt;br&gt;You have a few options:
&lt;br&gt;1) compile the aspect with iajc rather than javac.
&lt;br&gt;2) after compiling with javac, add a step to pass it through iajc to finish it off.
&lt;br&gt;3) pass it on inpath to your existing iajc call.
&lt;br&gt;&lt;br&gt;Each has pros/cons. &amp;nbsp;(1) you may have written the aspect using annotations in the first place to avoid using iajc initially. (2) adds extra compile step to your process. (3) the woven aspect will go into the output folder. &amp;nbsp;So the aspect class files will be 'mixed up' with your woven application.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/31 Roger Huang &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rhuang@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you very much for looking at my problem.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes I included the aspect in my call to iajc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Below is a portion of my build.xml (target Pdm.war) and the output of 
&lt;br&gt;&amp;gt; &amp;quot;ant Pdm.war&amp;quot;.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Login.java is my aspect expressed in @AspectJ notation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;             &amp;lt;target name=&amp;quot;Pdm.war&amp;quot; depends=&amp;quot;prepare&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- compile core concern classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;javac
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     srcdir   =&amp;quot;${dir.dm}/src&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     destdir 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/java/classes&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset dir=&amp;quot;${dir.dm}/lib&amp;quot;
&lt;br&gt;&amp;gt; includes=&amp;quot;*.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset 
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.dm}/lib/crystal&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                             &amp;lt;include 
&lt;br&gt;&amp;gt; name=&amp;quot;CrystalCommon2.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                             &amp;lt;include 
&lt;br&gt;&amp;gt; name=&amp;quot;CrystalReportsRuntime.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;/fileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset 
&lt;br&gt;&amp;gt; file=&amp;quot;${dir.build}/servlet.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;/javac&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- jar the core concern classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     basedir 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/java/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; destfile=&amp;quot;${dir.build}/java/DMCoreConcerns.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         /&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- compile the aspect classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;javac
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     srcdir 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.dm}/src-aspects-aspectj&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     destdir =&amp;quot;${dir.build}/aspects/classes/&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     debug  =&amp;quot;true&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset 
&lt;br&gt;&amp;gt; dir=&amp;quot;${log4j.dir}&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                             &amp;lt;include 
&lt;br&gt;&amp;gt; name=&amp;quot;log4j-1.2.8.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;/fileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;pathelement 
&lt;br&gt;&amp;gt; location=&amp;quot;${dir.build}/java/DMCoreConcerns.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;/javac&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- jar the aspect classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     basedir 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/aspects/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; destfile=&amp;quot;${dir.build}/aspects/DMAspects.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         /&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- Weave the core concern classes with the 
&lt;br&gt;&amp;gt; aspects
&lt;br&gt;&amp;gt; --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;aspectj:iajc
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     inpath 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/java/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     aspectPath 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/aspects/DMAspects.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     destDir 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/WEB-INF/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     classpath 
&lt;br&gt;&amp;gt; =&amp;quot;${aspectj.lib.dir}/aspectjrt.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     source             =&amp;quot;1.5&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     XlintFile 
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/xlint.properties&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     verbose           =&amp;quot;true&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     showWeaveInfo=&amp;quot;true&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         /&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- Create the war --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;jar jarfile=&amp;quot;${dir.dist}/PdmWar/Pdm.war&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;fileset 
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.dm}/WebFiles&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/lib&amp;quot;
&lt;br&gt;&amp;gt; prefix=&amp;quot;WEB-INF/lib&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;include 
&lt;br&gt;&amp;gt; name=&amp;quot;*.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;include 
&lt;br&gt;&amp;gt; name=&amp;quot;*.zip&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;exclude 
&lt;br&gt;&amp;gt; name=&amp;quot;sapjco.*&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/zipfileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset 
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.dm}/lib/crystal&amp;quot;            prefix=&amp;quot;WEB-INF/lib&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/config&amp;quot;
&lt;br&gt;&amp;gt;                  prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.mappingFiles}&amp;quot;
&lt;br&gt;&amp;gt; prefix=&amp;quot;WEB-INF/classes&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;patternset 
&lt;br&gt;&amp;gt; refid=&amp;quot;bundledMappingFiles&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;include 
&lt;br&gt;&amp;gt; name=&amp;quot;DST*.xsd&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/zipfileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/PropertyFile&amp;quot;
&lt;br&gt;&amp;gt; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/src&amp;quot;
&lt;br&gt;&amp;gt;                        prefix=&amp;quot;WEB-INF/classes&amp;quot; 
&lt;br&gt;&amp;gt; includes=&amp;quot;**/*.properties&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;fileset            dir=&amp;quot;${dir.build}&amp;quot;
&lt;br&gt;&amp;gt;                                 includes=&amp;quot;WEB-INF/&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;fileset 
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.build}/aspects&amp;quot;       includes=&amp;quot;DMAspects.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset 
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.build}/aspects/classes&amp;quot; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;/jar&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;             &amp;lt;/target&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Buildfile: build.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;      [echo] Release build for Windows XP.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; init:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; prepare:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Pdm.war:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] ajc [-d, C:\DataManager\Trunk\build\WEB-INF\classes, 
&lt;br&gt;&amp;gt; -source, 1.5, -Xlintfile, C:\DataManager\Trunk\build\xlint.properties, 
&lt;br&gt;&amp;gt; -verbose, -showWeaveInfo, -classpath, C:\Program 
&lt;br&gt;&amp;gt; Files\aspectj1.6\lib\aspectjrt.jar,
&lt;br&gt;&amp;gt; -aspectpath, C:\DataManager\Trunk\build\aspects\DMAspects.jar, 
&lt;br&gt;&amp;gt; -inpath, C:\DataManager\Trunk\build\java\classes]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info directory classpath entry does not exist: 
&lt;br&gt;&amp;gt; C:\Program Files\Java\jdk1.5.0_20\jre\lib\i18n.jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info directory classpath entry does not exist: 
&lt;br&gt;&amp;gt; C:\Program Files\Java\jdk1.5.0_20\jre\lib\sunrsasign.jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info zipfile classpath entry does not exist: C:\Program 
&lt;br&gt;&amp;gt; Files\Java\jdk1.5.0_20\jre\classes
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info Pipelining compilation
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info weaver operating in reweavable mode.  Need to 
&lt;br&gt;&amp;gt; verify any required types exist.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] weaveinfo Join point
&lt;br&gt;&amp;gt; 'method-call(com.foo.athens.beans.LoginData
&lt;br&gt;&amp;gt; com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in 
&lt;br&gt;&amp;gt; Type 'com.foo.athens.action.LoginAction' (no debug info available) 
&lt;br&gt;&amp;gt; advised by before advice from 'com.foo.logging.Login' 
&lt;br&gt;&amp;gt; (DMAspects.jar!Login.class(from
&lt;br&gt;&amp;gt; Login.java))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] weaveinfo Join point
&lt;br&gt;&amp;gt; 'method-call(com.foo.athens.beans.LoginData
&lt;br&gt;&amp;gt; com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in 
&lt;br&gt;&amp;gt; Type 'com.foo.athens.action.LoginAction' (no debug info available) 
&lt;br&gt;&amp;gt; advised by after advice from 'com.foo.logging.Login' 
&lt;br&gt;&amp;gt; (DMAspects.jar!Login.class(from
&lt;br&gt;&amp;gt; Login.java))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] weaveinfo Join point
&lt;br&gt;&amp;gt; 'method-call(com.foo.athens.beans.LoginData
&lt;br&gt;&amp;gt; com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in 
&lt;br&gt;&amp;gt; Type 'com.foo.athens.action.LoginAction' (no debug info available) 
&lt;br&gt;&amp;gt; advised by afterThrowing advice from 'com.foo.logging.Login'
&lt;br&gt;&amp;gt; (DMAspects.jar!Login.class(from Login.java))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info woven class com.foo.athens.action.LoginAction 
&lt;br&gt;&amp;gt; (from
&lt;br&gt;&amp;gt; C:\DataManager\Trunk\build\java\classes\com\foo\athens\action\LoginAct
&lt;br&gt;&amp;gt; ion.class)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info Compiler took 3813ms
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [jar] Building jar: 
&lt;br&gt;&amp;gt; C:\DataManager\Trunk\Install\DataManager\PdmWar\Pdm.war
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; BUILD SUCCESSFUL
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Total time: 9 seconds
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Roger Huang
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; 
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Friday, October 30, 2009 5:32 PM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] FW: NoSuchMethodError: aspectOf()
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Roger,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Are you definetly including the aspect itself in the call to iajc?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Annotation style aspects (when @Pointcut/etc are used) can be compiled
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; with javac, but they must be given to the weaver at some point in
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; order for the missing methods to be added - for example 'aspectOf()'.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/30 Roger Huang &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rhuang@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Any ideas why I am get the NoSuchMethodError below?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The method specified by the pointcut is in
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; com.foo.action.LoginAction.execute.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The aspect is defined in com.foo.logging.Login.   (see below)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; My code which is being advised does not call the aspect's aspectOf() 
&lt;br&gt;&amp;gt;&amp;gt; method.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I use build-time bytecode weaving using the ant &amp;lt;iajc&amp;gt; task.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The app is a Struts-based web app.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Dev environment:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Java 1.5
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Ant 1.7.1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; AspectJ 1.6.6
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Roger
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; javax.servlet.ServletException: Servlet execution threw an exception
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         
&lt;br&gt;&amp;gt;&amp;gt; com.hyperformix.athens.filter.AthensLoginFilter.doFilter(Unknown
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; root cause
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; java.lang.NoSuchMethodError:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; com.foo.logging.Login.aspectOf()Lcom/foo/logging/Login;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         com.foo.action.LoginAction.execute(Unknown Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.RequestProcessor.processActionPerform(Reques
&lt;br&gt;&amp;gt;&amp;gt; tProcessor.java:421)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
&lt;br&gt;&amp;gt;&amp;gt; va:226)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.ActionServlet.process(ActionServlet.java:116
&lt;br&gt;&amp;gt;&amp;gt; 4)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         com.foo.athens.filter.AthensLoginFilter.doFilter(Unknown 
&lt;br&gt;&amp;gt;&amp;gt; Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; @Aspect
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; public class Login {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 static Logger log =
&lt;br&gt;&amp;gt;&amp;gt; Logger.getLogger(Login.class.getName());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 String userName;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 String roleName;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 @Pointcut(&amp;quot;call (* com.foo.LoginDAO.login(com.foo. 
&lt;br&gt;&amp;gt;&amp;gt; Data) )
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;&amp; args(data)&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 public void login(Data data) {}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 @Before(&amp;quot;login(data)&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 public void loginBefore(Data data)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 userName = data.getUserName();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 roleName = data.getRoleName();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 BasicConfigurator.configure();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 log.info(&amp;quot;User &amp;quot; + userName + &amp;quot; with 
&lt;br&gt;&amp;gt;&amp;gt; role &amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; + roleName + &amp;quot; about to login&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Roger Huang
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26181802&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/FW%3A-NoSuchMethodError%3A-aspectOf%28%29-tp26137664p26181802.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26172611</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-02T15:36:51Z</published>
	<updated>2009-11-02T15:36:51Z</updated>
	<author>
		<name>db-27</name>
	</author>
	<content type="html">Hi all,&lt;br&gt;&lt;br&gt;Thanks!&lt;br&gt;&lt;br&gt;I want to declare an id attribute in a persistent class (to be used by JPA). But the generated attribute has a long name and mysql doesn&amp;#39;t accept it.&lt;br&gt;&lt;br&gt;I completely forgot the @Column annotation! :) I can use @Column(name=&amp;quot;id&amp;quot;) to solve the problem.&lt;br&gt;

&lt;br&gt;Thanks again! :)&lt;br&gt;&lt;br&gt;--db&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Nov 2, 2009 at 8:53 PM, Andy Clement &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;andrew.clement@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;

&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;&lt;div class=&quot;im&quot;&gt;&amp;gt; but that adds in a declare statement&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;Just to say, if you annotate the ITD, that will be on the introduced&lt;br&gt;
target method - you don&amp;#39;t need an additional &amp;#39;declare @method&amp;#39;.&lt;br&gt;
&lt;br&gt;
&amp;gt;From a Roo project:&lt;br&gt;
    @&lt;a href=&quot;http://javax.persistence.Id&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;javax.persistence.Id&lt;/a&gt;&lt;br&gt;
    @javax.persistence.GeneratedValue(strategy=javax.persistence.GenerationType.AUTO)&lt;br&gt;
    @javax.persistence.Column(name=&amp;quot;id&amp;quot;)&lt;br&gt;
    private java.lang.Long Pet.id;&lt;br&gt;
&lt;br&gt;
cheers,&lt;br&gt;
Andy&lt;br&gt;
&lt;br&gt;
2009/11/2 Dave Whittaker &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dave@...&lt;/a&gt;&amp;gt;:&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&amp;gt; Just thought I&amp;#39;d throw in here with a case where I&amp;#39;ve ran into problems with&lt;br&gt;
&amp;gt; this... JPA.  If you have common fields you want to inject into an entity&lt;br&gt;
&amp;gt; you might try to do something like&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; private String CommonInterface.commonField&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; And expect at runtime that will result in a db column named common_field, or&lt;br&gt;
&amp;gt; whatever else your naming strategy comes up with.  Sure you could use the&lt;br&gt;
&amp;gt; @Column annotation and explicitly give it a name, but that adds in a declare&lt;br&gt;
&amp;gt; statement and it is definitely a bit confusing when you first run across the&lt;br&gt;
&amp;gt; issue.  JPA is not the only framework to do this type of reflection these&lt;br&gt;
&amp;gt; days, Seam&amp;#39;s @In injection is another one that tries to determine a value&lt;br&gt;
&amp;gt; based on the name of the field.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Of course i imagine this was done to avoid naming collisions when you&lt;br&gt;
&amp;gt; receive fields from multiple ITDs and I&amp;#39;m not sure I see a better solution.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; On Nov 2, 2009, at 5:03 PM, Andrew Eisenberg wrote:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; Hi,&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not&lt;br&gt;
&amp;gt;&amp;gt; expected to be directly referenced in the source code.  It is only&lt;br&gt;
&amp;gt;&amp;gt; needed for the byte code (i.e., you should not be concerned with it).&lt;br&gt;
&amp;gt;&amp;gt; All you need to know is that the declaration declares an Integer field&lt;br&gt;
&amp;gt;&amp;gt; &amp;#39;id&amp;#39; on MyClass that is private to the aspect (ie- it is not&lt;br&gt;
&amp;gt;&amp;gt; accessible anywhere outside the aspect).&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; Unless you require knowledge about the byte code, the byte code name&lt;br&gt;
&amp;gt;&amp;gt; should not be of concern to you.  However, if you do require knowledge&lt;br&gt;
&amp;gt;&amp;gt; about the byte code, please explain what that is and perhaps we can&lt;br&gt;
&amp;gt;&amp;gt; help you.&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; --a&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; Hi All,&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; I have an intertype declaration like this:&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; private Integer MyClass.id;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id attribute.&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; How to do it?&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; Thanks!&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; PS: Sorry for my poor English. It isn&amp;#39;t my native language :).&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; _______________________________________________&lt;br&gt;
&amp;gt;&amp;gt; aspectj-users mailing list&lt;br&gt;
&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;br&gt;
&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; _______________________________________________&lt;br&gt;
&amp;gt; aspectj-users mailing list&lt;br&gt;
&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
_______________________________________________&lt;br&gt;
aspectj-users mailing list&lt;br&gt;
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172611&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26172611.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26172094</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-02T14:53:20Z</published>
	<updated>2009-11-02T14:53:20Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">&amp;gt; but that adds in a declare statement
&lt;br&gt;&lt;br&gt;Just to say, if you annotate the ITD, that will be on the introduced
&lt;br&gt;target method - you don't need an additional 'declare @method'.
&lt;br&gt;&lt;br&gt;&amp;gt;From a Roo project:
&lt;br&gt;&amp;nbsp; &amp;nbsp; @javax.persistence.Id
&lt;br&gt;&amp;nbsp; &amp;nbsp; @javax.persistence.GeneratedValue(strategy=javax.persistence.GenerationType.AUTO)
&lt;br&gt;&amp;nbsp; &amp;nbsp; @javax.persistence.Column(name=&amp;quot;id&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; private java.lang.Long Pet.id;
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/11/2 Dave Whittaker &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172094&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dave@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Just thought I'd throw in here with a case where I've ran into problems with
&lt;br&gt;&amp;gt; this... JPA.  If you have common fields you want to inject into an entity
&lt;br&gt;&amp;gt; you might try to do something like
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; private String CommonInterface.commonField
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; And expect at runtime that will result in a db column named common_field, or
&lt;br&gt;&amp;gt; whatever else your naming strategy comes up with.  Sure you could use the
&lt;br&gt;&amp;gt; @Column annotation and explicitly give it a name, but that adds in a declare
&lt;br&gt;&amp;gt; statement and it is definitely a bit confusing when you first run across the
&lt;br&gt;&amp;gt; issue.  JPA is not the only framework to do this type of reflection these
&lt;br&gt;&amp;gt; days, Seam's @In injection is another one that tries to determine a value
&lt;br&gt;&amp;gt; based on the name of the field.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Of course i imagine this was done to avoid naming collisions when you
&lt;br&gt;&amp;gt; receive fields from multiple ITDs and I'm not sure I see a better solution.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Nov 2, 2009, at 5:03 PM, Andrew Eisenberg wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
&lt;br&gt;&amp;gt;&amp;gt; expected to be directly referenced in the source code.  It is only
&lt;br&gt;&amp;gt;&amp;gt; needed for the byte code (i.e., you should not be concerned with it).
&lt;br&gt;&amp;gt;&amp;gt; All you need to know is that the declaration declares an Integer field
&lt;br&gt;&amp;gt;&amp;gt; 'id' on MyClass that is private to the aspect (ie- it is not
&lt;br&gt;&amp;gt;&amp;gt; accessible anywhere outside the aspect).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Unless you require knowledge about the byte code, the byte code name
&lt;br&gt;&amp;gt;&amp;gt; should not be of concern to you.  However, if you do require knowledge
&lt;br&gt;&amp;gt;&amp;gt; about the byte code, please explain what that is and perhaps we can
&lt;br&gt;&amp;gt;&amp;gt; help you.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; --a
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172094&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I have an intertype declaration like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; private Integer MyClass.id;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id attribute.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; How to do it?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; PS: Sorry for my poor English. It isn't my native language :).
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172094&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172094&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172094&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26172094&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26172094.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26171944</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-02T14:38:51Z</published>
	<updated>2009-11-02T14:38:51Z</updated>
	<author>
		<name>Dave Whittaker</name>
	</author>
	<content type="html">Just thought I'd throw in here with a case where I've ran into &amp;nbsp;
&lt;br&gt;problems with this... JPA. &amp;nbsp;If you have common fields you want to &amp;nbsp;
&lt;br&gt;inject into an entity you might try to do something like
&lt;br&gt;&lt;br&gt;private String CommonInterface.commonField
&lt;br&gt;&lt;br&gt;And expect at runtime that will result in a db column named &amp;nbsp;
&lt;br&gt;common_field, or whatever else your naming strategy comes up with. &amp;nbsp; 
&lt;br&gt;Sure you could use the @Column annotation and explicitly give it a &amp;nbsp;
&lt;br&gt;name, but that adds in a declare statement and it is definitely a bit &amp;nbsp;
&lt;br&gt;confusing when you first run across the issue. &amp;nbsp;JPA is not the only &amp;nbsp;
&lt;br&gt;framework to do this type of reflection these days, Seam's @In &amp;nbsp;
&lt;br&gt;injection is another one that tries to determine a value based on the &amp;nbsp;
&lt;br&gt;name of the field.
&lt;br&gt;&lt;br&gt;Of course i imagine this was done to avoid naming collisions when you &amp;nbsp;
&lt;br&gt;receive fields from multiple ITDs and I'm not sure I see a better &amp;nbsp;
&lt;br&gt;solution.
&lt;br&gt;&lt;br&gt;On Nov 2, 2009, at 5:03 PM, Andrew Eisenberg wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
&lt;br&gt;&amp;gt; expected to be directly referenced in the source code. &amp;nbsp;It is only
&lt;br&gt;&amp;gt; needed for the byte code (i.e., you should not be concerned with it).
&lt;br&gt;&amp;gt; All you need to know is that the declaration declares an Integer field
&lt;br&gt;&amp;gt; 'id' on MyClass that is private to the aspect (ie- it is not
&lt;br&gt;&amp;gt; accessible anywhere outside the aspect).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unless you require knowledge about the byte code, the byte code name
&lt;br&gt;&amp;gt; should not be of concern to you. &amp;nbsp;However, if you do require knowledge
&lt;br&gt;&amp;gt; about the byte code, please explain what that is and perhaps we can
&lt;br&gt;&amp;gt; help you.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --a
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171944&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have an intertype declaration like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; private Integer MyClass.id;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:
&lt;br&gt;&amp;gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.
&lt;br&gt;&amp;gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; attribute.
&lt;br&gt;&amp;gt;&amp;gt; How to do it?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; PS: Sorry for my poor English. It isn't my native language :).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171944&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171944&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171944&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26171944.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26171634</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-02T14:12:05Z</published>
	<updated>2009-11-02T14:12:05Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">The name for a public intertype declaration is not mangled - can you
&lt;br&gt;use public in your case?
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/11/2 Andrew Eisenberg &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171634&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;andrew@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
&lt;br&gt;&amp;gt; expected to be directly referenced in the source code.  It is only
&lt;br&gt;&amp;gt; needed for the byte code (i.e., you should not be concerned with it).
&lt;br&gt;&amp;gt; All you need to know is that the declaration declares an Integer field
&lt;br&gt;&amp;gt; 'id' on MyClass that is private to the aspect (ie- it is not
&lt;br&gt;&amp;gt; accessible anywhere outside the aspect).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unless you require knowledge about the byte code, the byte code name
&lt;br&gt;&amp;gt; should not be of concern to you.  However, if you do require knowledge
&lt;br&gt;&amp;gt; about the byte code, please explain what that is and perhaps we can
&lt;br&gt;&amp;gt; help you.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --a
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171634&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have an intertype declaration like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; private Integer MyClass.id;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:
&lt;br&gt;&amp;gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.
&lt;br&gt;&amp;gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id attribute.
&lt;br&gt;&amp;gt;&amp;gt; How to do it?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; PS: Sorry for my poor English. It isn't my native language :).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171634&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171634&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171634&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26171634.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26171660</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-02T14:07:17Z</published>
	<updated>2009-11-02T14:07:17Z</updated>
	<author>
		<name>matthewadams12</name>
	</author>
	<content type="html">If you need access to the value, make sure to introduced the getId()
&lt;br&gt;method in your aspect as well:
&lt;br&gt;&lt;br&gt;public Integer YourThingy.getId() { return id; }
&lt;br&gt;&lt;br&gt;-matthew
&lt;br&gt;&lt;br&gt;On Mon, Nov 2, 2009 at 2:03 PM, Andrew Eisenberg &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;andrew@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
&lt;br&gt;&amp;gt; expected to be directly referenced in the source code.  It is only
&lt;br&gt;&amp;gt; needed for the byte code (i.e., you should not be concerned with it).
&lt;br&gt;&amp;gt; All you need to know is that the declaration declares an Integer field
&lt;br&gt;&amp;gt; 'id' on MyClass that is private to the aspect (ie- it is not
&lt;br&gt;&amp;gt; accessible anywhere outside the aspect).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unless you require knowledge about the byte code, the byte code name
&lt;br&gt;&amp;gt; should not be of concern to you.  However, if you do require knowledge
&lt;br&gt;&amp;gt; about the byte code, please explain what that is and perhaps we can
&lt;br&gt;&amp;gt; help you.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --a
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have an intertype declaration like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; private Integer MyClass.id;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:
&lt;br&gt;&amp;gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.
&lt;br&gt;&amp;gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id attribute.
&lt;br&gt;&amp;gt;&amp;gt; How to do it?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; PS: Sorry for my poor English. It isn't my native language :).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matthew@...&lt;/a&gt;
&lt;br&gt;skype:matthewadams12
&lt;br&gt;yahoo:matthewadams
&lt;br&gt;aol:matthewadams12
&lt;br&gt;google-talk:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matthewadams12@...&lt;/a&gt;
&lt;br&gt;msn:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matthew@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://matthewadams.me&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://matthewadams.me&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.linkedin.com/in/matthewadams&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.linkedin.com/in/matthewadams&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171660&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26171660.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26171535</id>
	<title>Re: Intertype declarations results in too long names</title>
	<published>2009-11-02T14:03:00Z</published>
	<updated>2009-11-02T14:03:00Z</updated>
	<author>
		<name>Andrew Eisenberg</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
&lt;br&gt;expected to be directly referenced in the source code. &amp;nbsp;It is only
&lt;br&gt;needed for the byte code (i.e., you should not be concerned with it).
&lt;br&gt;All you need to know is that the declaration declares an Integer field
&lt;br&gt;'id' on MyClass that is private to the aspect (ie- it is not
&lt;br&gt;accessible anywhere outside the aspect).
&lt;br&gt;&lt;br&gt;Unless you require knowledge about the byte code, the byte code name
&lt;br&gt;should not be of concern to you. &amp;nbsp;However, if you do require knowledge
&lt;br&gt;about the byte code, please explain what that is and perhaps we can
&lt;br&gt;help you.
&lt;br&gt;&lt;br&gt;--a
&lt;br&gt;&lt;br&gt;On Mon, Nov 2, 2009 at 2:45 PM, db &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171535&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;dbconrado@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi All,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have an intertype declaration like this:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; private Integer MyClass.id;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; but, when it was compiled/weaved, this attribute receive the name:
&lt;br&gt;&amp;gt; ajc$interField$mypack_mysubpack_MyAspect$id.
&lt;br&gt;&amp;gt; I want MyClass receive an id attribute and not a ajc$...$id attribute.
&lt;br&gt;&amp;gt; How to do it?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; PS: Sorry for my poor English. It isn't my native language :).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171535&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171535&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26171535.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26171263</id>
	<title>Intertype declarations results in too long names</title>
	<published>2009-11-02T13:45:10Z</published>
	<updated>2009-11-02T13:45:10Z</updated>
	<author>
		<name>db-27</name>
	</author>
	<content type="html">Hi All,&lt;br&gt;&lt;br&gt;I have an intertype declaration like this:&lt;br&gt;&lt;br&gt;private Integer MyClass.id;&lt;br&gt;&lt;br&gt;but, when it was compiled/weaved, this attribute receive the name: ajc$interField$mypack_mysubpack_MyAspect$id.&lt;br&gt;I want MyClass receive an id attribute and not a ajc$...$id attribute.&lt;br&gt;

How to do it?&lt;br&gt;&lt;br&gt;Thanks!&lt;br&gt;&lt;br&gt;PS: Sorry for my poor English. It isn&amp;#39;t my native language :).&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26171263&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Intertype-declarations-results-in-too-long-names-tp26171263p26171263.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26157193</id>
	<title>Re: FW: NoSuchMethodError: aspectOf()</title>
	<published>2009-11-01T17:49:08Z</published>
	<updated>2009-11-01T17:49:08Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">Hi Roger,
&lt;br&gt;&lt;br&gt;There are three paths to think about with AspectJ:
&lt;br&gt;&lt;br&gt;classpath: for resolving references found in any of the code the
&lt;br&gt;compiler/weaver are processing. &amp;nbsp;This path is not searched for
&lt;br&gt;aspects, and the contents of it are not woven and not copied to the
&lt;br&gt;output folder.
&lt;br&gt;inpath: input .class files for weaving. &amp;nbsp;Contents of this path *are*
&lt;br&gt;woven and *are* copied to the output folder, it is also searched for
&lt;br&gt;aspects.
&lt;br&gt;aspectpath: input aspect .class files for weaving. Contents of this
&lt;br&gt;path are not woven and are not copied to the output folder, but it is
&lt;br&gt;searched for aspects.
&lt;br&gt;&lt;br&gt;Your annotation style aspect is compiled by javac and then passed in
&lt;br&gt;via aspectpath. &amp;nbsp;Unfortunately as I have written above, the contents
&lt;br&gt;of aspect path are not woven - so your aspect is never 'finished off'.
&lt;br&gt;&lt;br&gt;You have a few options:
&lt;br&gt;1) compile the aspect with iajc rather than javac.
&lt;br&gt;2) after compiling with javac, add a step to pass it through iajc to
&lt;br&gt;finish it off.
&lt;br&gt;3) pass it on inpath to your existing iajc call.
&lt;br&gt;&lt;br&gt;Each has pros/cons. &amp;nbsp;(1) you may have written the aspect using
&lt;br&gt;annotations in the first place to avoid using iajc initially. (2) adds
&lt;br&gt;extra compile step to your process. (3) the woven aspect will go into
&lt;br&gt;the output folder. &amp;nbsp;So the aspect class files will be 'mixed up' with
&lt;br&gt;your woven application.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/31 Roger Huang &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rhuang@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you very much for looking at my problem.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yes I included the aspect in my call to iajc.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Below is a portion of my build.xml (target Pdm.war) and the output of “ant
&lt;br&gt;&amp;gt; Pdm.war”.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Login.java is my aspect expressed in @AspectJ notation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;             &amp;lt;target name=&amp;quot;Pdm.war&amp;quot; depends=&amp;quot;prepare&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- compile core concern classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;javac
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     srcdir   =&amp;quot;${dir.dm}/src&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     destdir =&amp;quot;${dir.build}/java/classes&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset dir=&amp;quot;${dir.dm}/lib&amp;quot;
&lt;br&gt;&amp;gt; includes=&amp;quot;*.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.dm}/lib/crystal&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                             &amp;lt;include
&lt;br&gt;&amp;gt; name=&amp;quot;CrystalCommon2.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                             &amp;lt;include
&lt;br&gt;&amp;gt; name=&amp;quot;CrystalReportsRuntime.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;/fileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset
&lt;br&gt;&amp;gt; file=&amp;quot;${dir.build}/servlet.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;/javac&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- jar the core concern classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     basedir
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/java/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; destfile=&amp;quot;${dir.build}/java/DMCoreConcerns.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         /&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- compile the aspect classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;javac
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     srcdir
&lt;br&gt;&amp;gt; =&amp;quot;${dir.dm}/src-aspects-aspectj&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     destdir =&amp;quot;${dir.build}/aspects/classes/&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     debug  =&amp;quot;true&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;fileset dir=&amp;quot;${log4j.dir}&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                             &amp;lt;include
&lt;br&gt;&amp;gt; name=&amp;quot;log4j-1.2.8.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;/fileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;pathelement
&lt;br&gt;&amp;gt; location=&amp;quot;${dir.build}/java/DMCoreConcerns.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/classpath&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;/javac&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- jar the aspect classes --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     basedir
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/aspects/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; destfile=&amp;quot;${dir.build}/aspects/DMAspects.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         /&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- Weave the core concern classes with the aspects
&lt;br&gt;&amp;gt; --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;aspectj:iajc
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     inpath
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/java/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     aspectPath
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/aspects/DMAspects.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     destDir
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/WEB-INF/classes&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     classpath
&lt;br&gt;&amp;gt; =&amp;quot;${aspectj.lib.dir}/aspectjrt.jar&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     source             =&amp;quot;1.5&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     XlintFile
&lt;br&gt;&amp;gt; =&amp;quot;${dir.build}/xlint.properties&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     verbose           =&amp;quot;true&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     showWeaveInfo=&amp;quot;true&amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         /&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;!-- Create the war --&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;jar jarfile=&amp;quot;${dir.dist}/PdmWar/Pdm.war&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;fileset
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.dm}/WebFiles&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/lib&amp;quot;
&lt;br&gt;&amp;gt; prefix=&amp;quot;WEB-INF/lib&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;include name=&amp;quot;*.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;include name=&amp;quot;*.zip&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;exclude name=&amp;quot;sapjco.*&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/zipfileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.dm}/lib/crystal&amp;quot;            prefix=&amp;quot;WEB-INF/lib&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/config&amp;quot;
&lt;br&gt;&amp;gt;                  prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.mappingFiles}&amp;quot;
&lt;br&gt;&amp;gt; prefix=&amp;quot;WEB-INF/classes&amp;quot;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;patternset
&lt;br&gt;&amp;gt; refid=&amp;quot;bundledMappingFiles&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                                 &amp;lt;include name=&amp;quot;DST*.xsd&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;/zipfileset&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/PropertyFile&amp;quot;
&lt;br&gt;&amp;gt; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset dir=&amp;quot;${dir.dm}/src&amp;quot;
&lt;br&gt;&amp;gt;                        prefix=&amp;quot;WEB-INF/classes&amp;quot; includes=&amp;quot;**/*.properties&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;fileset            dir=&amp;quot;${dir.build}&amp;quot;
&lt;br&gt;&amp;gt;                                 includes=&amp;quot;WEB-INF/&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;fileset
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.build}/aspects&amp;quot;       includes=&amp;quot;DMAspects.jar&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                     &amp;lt;zipfileset
&lt;br&gt;&amp;gt; dir=&amp;quot;${dir.build}/aspects/classes&amp;quot; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                         &amp;lt;/jar&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;             &amp;lt;/target&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Buildfile: build.xml
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;      [echo] Release build for Windows XP.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; init:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; prepare:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Pdm.war:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] ajc [-d, C:\DataManager\Trunk\build\WEB-INF\classes, -source,
&lt;br&gt;&amp;gt; 1.5, -Xlintfile, C:\DataManager\Trunk\build\xlint.properties, -verbose,
&lt;br&gt;&amp;gt; -showWeaveInfo, -classpath, C:\Program Files\aspectj1.6\lib\aspectjrt.jar,
&lt;br&gt;&amp;gt; -aspectpath, C:\DataManager\Trunk\build\aspects\DMAspects.jar, -inpath,
&lt;br&gt;&amp;gt; C:\DataManager\Trunk\build\java\classes]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info directory classpath entry does not exist: C:\Program
&lt;br&gt;&amp;gt; Files\Java\jdk1.5.0_20\jre\lib\i18n.jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info directory classpath entry does not exist: C:\Program
&lt;br&gt;&amp;gt; Files\Java\jdk1.5.0_20\jre\lib\sunrsasign.jar
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info zipfile classpath entry does not exist: C:\Program
&lt;br&gt;&amp;gt; Files\Java\jdk1.5.0_20\jre\classes
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info Pipelining compilation
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info weaver operating in reweavable mode.  Need to verify any
&lt;br&gt;&amp;gt; required types exist.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; …
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] weaveinfo Join point
&lt;br&gt;&amp;gt; 'method-call(com.foo.athens.beans.LoginData
&lt;br&gt;&amp;gt; com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in Type
&lt;br&gt;&amp;gt; 'com.foo.athens.action.LoginAction' (no debug info available) advised by
&lt;br&gt;&amp;gt; before advice from 'com.foo.logging.Login' (DMAspects.jar!Login.class(from
&lt;br&gt;&amp;gt; Login.java))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] weaveinfo Join point
&lt;br&gt;&amp;gt; 'method-call(com.foo.athens.beans.LoginData
&lt;br&gt;&amp;gt; com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in Type
&lt;br&gt;&amp;gt; 'com.foo.athens.action.LoginAction' (no debug info available) advised by
&lt;br&gt;&amp;gt; after advice from 'com.foo.logging.Login' (DMAspects.jar!Login.class(from
&lt;br&gt;&amp;gt; Login.java))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] weaveinfo Join point
&lt;br&gt;&amp;gt; 'method-call(com.foo.athens.beans.LoginData
&lt;br&gt;&amp;gt; com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in Type
&lt;br&gt;&amp;gt; 'com.foo.athens.action.LoginAction' (no debug info available) advised by
&lt;br&gt;&amp;gt; afterThrowing advice from 'com.foo.logging.Login'
&lt;br&gt;&amp;gt; (DMAspects.jar!Login.class(from Login.java))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info woven class com.foo.athens.action.LoginAction (from
&lt;br&gt;&amp;gt; C:\DataManager\Trunk\build\java\classes\com\foo\athens\action\LoginAction.class)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; …
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [aspectj:iajc] info Compiler took 3813ms
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [jar] Building jar: C:\DataManager\Trunk\Install\DataManager\PdmWar\Pdm.war
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; BUILD SUCCESSFUL
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Total time: 9 seconds
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Roger Huang
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Friday, October 30, 2009 5:32 PM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] FW: NoSuchMethodError: aspectOf()
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Roger,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Are you definetly including the aspect itself in the call to iajc?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Annotation style aspects (when @Pointcut/etc are used) can be compiled
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; with javac, but they must be given to the weaver at some point in
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; order for the missing methods to be added - for example 'aspectOf()'.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/30 Roger Huang &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rhuang@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Any ideas why I am get the NoSuchMethodError below?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The method specified by the pointcut is in
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; com.foo.action.LoginAction.execute.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The aspect is defined in com.foo.logging.Login.   (see below)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; My code which is being advised does not call the aspect’s aspectOf()
&lt;br&gt;&amp;gt;&amp;gt; method.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I use build-time bytecode weaving using the ant &amp;lt;iajc&amp;gt; task.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The app is a Struts-based web app.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Dev environment:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Java 1.5
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Ant 1.7.1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; AspectJ 1.6.6
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Roger
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; javax.servlet.ServletException: Servlet execution threw an exception
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         com.hyperformix.athens.filter.AthensLoginFilter.doFilter(Unknown
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; root cause
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; java.lang.NoSuchMethodError:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; com.foo.logging.Login.aspectOf()Lcom/foo/logging/Login;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         com.foo.action.LoginAction.execute(Unknown Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;         com.foo.athens.filter.AthensLoginFilter.doFilter(Unknown Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; @Aspect
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; public class Login {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 static Logger log =
&lt;br&gt;&amp;gt;&amp;gt; Logger.getLogger(Login.class.getName());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 String userName;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 String roleName;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 @Pointcut(&amp;quot;call (* com.foo.LoginDAO.login(com.foo. Data) )
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;&amp; args(data)&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 public void login(Data data) {}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 @Before(&amp;quot;login(data)&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 public void loginBefore(Data data)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 userName = data.getUserName();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 roleName = data.getRoleName();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 BasicConfigurator.configure();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                                 log.info(&amp;quot;User &amp;quot; + userName + &amp;quot; with role
&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; + roleName + &amp;quot; about to login&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;                 }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Roger Huang
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26157193&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/FW%3A-NoSuchMethodError%3A-aspectOf%28%29-tp26137664p26157193.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26145044</id>
	<title>RE: FW: NoSuchMethodError: aspectOf()</title>
	<published>2009-10-31T11:58:44Z</published>
	<updated>2009-10-31T11:58:44Z</updated>
	<author>
		<name>Roger Huang-2</name>
	</author>
	<content type="html">&lt;html xmlns:v=&quot;urn:schemas-microsoft-com:vml&quot; xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns:m=&quot;http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;meta http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 12 (filtered medium)&quot;&gt;

&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot; /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot; /&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;
&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Hi Andy,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Thank you very much for
looking at my problem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Yes I included the aspect
in my call to iajc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Below is a portion of my
build.xml (target Pdm.war) and the output of &amp;#8220;ant Pdm.war&amp;#8221;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Login.java is my aspect
expressed in @AspectJ notation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in'&gt;

&lt;p class=MsoPlainText style='border:none;padding:0in'&gt;&lt;span style='font-size:
12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target
name=&amp;quot;Pdm.war&amp;quot; depends=&amp;quot;prepare&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--
compile core concern classes --&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;javac
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srcdir&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.dm}/src&amp;quot;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destdir =&amp;quot;${dir.build}/java/classes&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;classpath&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
dir=&amp;quot;${dir.dm}/lib&amp;quot; includes=&amp;quot;*.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
dir=&amp;quot;${dir.dm}/lib/crystal&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include
name=&amp;quot;CrystalCommon2.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include
name=&amp;quot;CrystalReportsRuntime.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fileset&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
file=&amp;quot;${dir.build}/servlet.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/classpath&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/javac&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--
jar the core concern classes --&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jar
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basedir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.build}/java/classes&amp;quot;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destfile=&amp;quot;${dir.build}/java/DMCoreConcerns.jar&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--
compile the aspect classes --&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;javac
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srcdir&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.dm}/src-aspects-aspectj&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destdir =&amp;quot;${dir.build}/aspects/classes/&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug&amp;nbsp; =&amp;quot;true&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;classpath&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
dir=&amp;quot;${log4j.dir}&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include
name=&amp;quot;log4j-1.2.8.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fileset&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;pathelement
location=&amp;quot;${dir.build}/java/DMCoreConcerns.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/classpath&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/javac&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--
jar the aspect classes --&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basedir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.build}/aspects/classes&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destfile=&amp;quot;${dir.build}/aspects/&lt;span style='background:yellow;mso-highlight:yellow'&gt;DMAspects.jar&lt;/span&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--
Weave the core concern classes with the aspects --&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;aspectj:iajc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inpath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.build}/java/classes&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aspectPath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.build}/aspects/&lt;span style='background:yellow;mso-highlight:yellow'&gt;DMAspects.jar&lt;/span&gt;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destDir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.build}/WEB-INF/classes&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; classpath&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${aspectj.lib.dir}/aspectjrt.jar&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;1.5&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XlintFile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;${dir.build}/xlint.properties&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verbose&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;quot;true&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; showWeaveInfo=&amp;quot;true&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--
Create the war --&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jar
jarfile=&amp;quot;${dir.dist}/PdmWar/Pdm.war&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dir=&amp;quot;${dir.dm}/WebFiles&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.dm}/lib&amp;quot; prefix=&amp;quot;WEB-INF/lib&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include
name=&amp;quot;*.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include
name=&amp;quot;*.zip&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exclude
name=&amp;quot;sapjco.*&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/zipfileset&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.dm}/lib/crystal&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefix=&amp;quot;WEB-INF/lib&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.dm}/config&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.mappingFiles}&amp;quot;  prefix=&amp;quot;WEB-INF/classes&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;patternset
refid=&amp;quot;bundledMappingFiles&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include
name=&amp;quot;DST*.xsd&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/zipfileset&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.dm}/PropertyFile&amp;quot; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.dm}/src&amp;quot; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefix=&amp;quot;WEB-INF/classes&amp;quot;
includes=&amp;quot;**/*.properties&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dir=&amp;quot;${dir.build}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; includes=&amp;quot;WEB-INF/&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dir=&amp;quot;${dir.build}/aspects&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; includes=&amp;quot;DMAspects.jar&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;zipfileset
dir=&amp;quot;${dir.build}/aspects/classes&amp;quot; prefix=&amp;quot;WEB-INF/classes&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/jar&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in'&gt;

&lt;p class=MsoPlainText style='border:none;padding:0in'&gt;&lt;span style='font-size:
12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Buildfile: build.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[echo] Release build for Windows XP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;init:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;prepare:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Pdm.war:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] ajc [-d,
C:\DataManager\Trunk\build\WEB-INF\classes, -source, 1.5, -Xlintfile,
C:\DataManager\Trunk\build\xlint.properties, -verbose, -showWeaveInfo,
-classpath, C:\Program Files\aspectj1.6\lib\aspectjrt.jar, -aspectpath,
C:\DataManager\Trunk\build\aspects\DMAspects.jar, -inpath,
C:\DataManager\Trunk\build\java\classes]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info
directory classpath entry does not exist: C:\Program
Files\Java\jdk1.5.0_20\jre\lib\i18n.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info
directory classpath entry does not exist: C:\Program
Files\Java\jdk1.5.0_20\jre\lib\sunrsasign.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info
zipfile classpath entry does not exist: C:\Program
Files\Java\jdk1.5.0_20\jre\classes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info
Pipelining compilation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info weaver
operating in reweavable mode.&amp;nbsp; Need to verify any required types exist.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;#8230;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] weaveinfo
Join point 'method-call(com.foo.athens.beans.LoginData
com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in Type
'com.foo.athens.action.LoginAction' (no debug info available) advised by before
advice from 'com.foo.logging.Login' (DMAspects.jar!Login.class(from
Login.java))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] weaveinfo
Join point 'method-call(com.foo.athens.beans.LoginData
com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))' in Type
'com.foo.athens.action.LoginAction' (no debug info available) advised by after
advice from 'com.foo.logging.Login' (DMAspects.jar!Login.class(from
Login.java))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] weaveinfo
Join point 'method-call(com.foo.athens.beans.LoginData com.foo.athens.dao.LoginDAO.login(com.foo.athens.beans.LoginData))'
in Type 'com.foo.athens.action.LoginAction' (no debug info available) advised
by afterThrowing advice from 'com.foo.logging.Login'
(DMAspects.jar!Login.class(from Login.java))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info woven
class com.foo.athens.action.LoginAction (from
C:\DataManager\Trunk\build\java\classes\com\foo\athens\action\LoginAction.class)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&amp;#8230;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[aspectj:iajc] info
Compiler took 3813ms&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;[jar] Building jar:
C:\DataManager\Trunk\Install\DataManager\PdmWar\Pdm.war&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;BUILD SUCCESSFUL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Total time: 9 seconds&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;
padding:0in 0in 1.0pt 0in'&gt;

&lt;p class=MsoPlainText style='border:none;padding:0in'&gt;&lt;span style='font-size:
12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;span style='font-size:12.0pt'&gt;Roger Huang&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;-----Original Message-----&lt;br&gt;
From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
[mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement&lt;br&gt;
Sent: Friday, October 30, 2009 5:32 PM&lt;br&gt;
To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;br&gt;
Subject: Re: [aspectj-users] FW: NoSuchMethodError: aspectOf()&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;Hi Roger,&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;Are you definetly including the aspect itself in the call
to iajc?&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;Annotation style aspects (when @Pointcut/etc are used)
can be compiled&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;with javac, but they must be given to the weaver at some
point in&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;order for the missing methods to be added - for example
'aspectOf()'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;cheers,&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;Andy&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;2009/10/30 Roger Huang &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rhuang@...&lt;/a&gt;&amp;gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Any ideas why I am get the NoSuchMethodError below?&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; The method specified by the pointcut is in&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; com.foo.action.LoginAction.execute.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; The aspect is defined in
com.foo.logging.Login.&amp;nbsp;&amp;nbsp; (see below)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; My code which is being advised does not call the
aspect&amp;#8217;s aspectOf() method.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; I use build-time bytecode weaving using the ant
&amp;lt;iajc&amp;gt; task.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; The app is a Struts-based web app.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Dev environment:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Java 1.5&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Ant 1.7.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; AspectJ 1.6.6&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Roger&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; javax.servlet.ServletException: Servlet execution
threw an exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
com.hyperformix.athens.filter.AthensLoginFilter.doFilter(Unknown&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; root cause&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; java.lang.NoSuchMethodError:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
com.foo.logging.Login.aspectOf()Lcom/foo/logging/Login;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
com.foo.action.LoginAction.execute(Unknown Source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
com.foo.athens.filter.AthensLoginFilter.doFilter(Unknown Source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; @Aspect&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; public class Login {&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
static Logger log = Logger.getLogger(Login.class.getName());&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
String userName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
String roleName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
@Pointcut(&amp;quot;call (* com.foo.LoginDAO.login(com.foo. Data) )&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &amp;amp;&amp;amp; args(data)&amp;quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
public void login(Data data) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
@Before(&amp;quot;login(data)&amp;quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
public void loginBefore(Data data)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
userName = data.getUserName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
roleName = data.getRoleName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
BasicConfigurator.configure();&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
log.info(&amp;quot;User &amp;quot; + userName + &amp;quot; with role &amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; + roleName + &amp;quot; about to login&amp;quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; Roger Huang&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; _______________________________________________&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; aspectj-users mailing list&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;
https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&amp;gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;_______________________________________________&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;aspectj-users mailing list&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoPlainText&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26145044&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/FW%3A-NoSuchMethodError%3A-aspectOf%28%29-tp26137664p26145044.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26137814</id>
	<title>Re: FW: NoSuchMethodError: aspectOf()</title>
	<published>2009-10-30T15:31:48Z</published>
	<updated>2009-10-30T15:31:48Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">Hi Roger,
&lt;br&gt;&lt;br&gt;Are you definetly including the aspect itself in the call to iajc?
&lt;br&gt;Annotation style aspects (when @Pointcut/etc are used) can be compiled
&lt;br&gt;with javac, but they must be given to the weaver at some point in
&lt;br&gt;order for the missing methods to be added - for example 'aspectOf()'.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/30 Roger Huang &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26137814&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rhuang@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Any ideas why I am get the NoSuchMethodError below?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The method specified by the pointcut is in
&lt;br&gt;&amp;gt; com.foo.action.LoginAction.execute.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The aspect is defined in com.foo.logging.Login.   (see below)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; My code which is being advised does not call the aspect’s aspectOf() method.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I use build-time bytecode weaving using the ant &amp;lt;iajc&amp;gt; task.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The app is a Struts-based web app.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Dev environment:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Java 1.5
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Ant 1.7.1
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; AspectJ 1.6.6
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Roger
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; javax.servlet.ServletException: Servlet execution threw an exception
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;         com.hyperformix.athens.filter.AthensLoginFilter.doFilter(Unknown
&lt;br&gt;&amp;gt; Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; root cause
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; java.lang.NoSuchMethodError:
&lt;br&gt;&amp;gt; com.foo.logging.Login.aspectOf()Lcom/foo/logging/Login;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;         com.foo.action.LoginAction.execute(Unknown Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;         javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;         com.foo.athens.filter.AthensLoginFilter.doFilter(Unknown Source)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; @Aspect
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class Login {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 static Logger log = Logger.getLogger(Login.class.getName());
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 String userName;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 String roleName;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 @Pointcut(&amp;quot;call (* com.foo.LoginDAO.login(com.foo. Data) )
&lt;br&gt;&amp;gt; &amp;&amp; args(data)&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 public void login(Data data) {}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 @Before(&amp;quot;login(data)&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 public void loginBefore(Data data)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                 userName = data.getUserName();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                 roleName = data.getRoleName();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                 BasicConfigurator.configure();
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                                 log.info(&amp;quot;User &amp;quot; + userName + &amp;quot; with role &amp;quot;
&lt;br&gt;&amp;gt; + roleName + &amp;quot; about to login&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;                 }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Roger Huang
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26137814&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26137814&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/FW%3A-NoSuchMethodError%3A-aspectOf%28%29-tp26137664p26137814.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26137664</id>
	<title>FW: NoSuchMethodError: aspectOf()</title>
	<published>2009-10-30T15:17:18Z</published>
	<updated>2009-10-30T15:17:18Z</updated>
	<author>
		<name>Roger Huang-2</name>
	</author>
	<content type="html">&lt;html xmlns:v=&quot;urn:schemas-microsoft-com:vml&quot; xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns:m=&quot;http://schemas.microsoft.com/office/2004/12/omml&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 12 (filtered medium)&quot;&gt;

&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;1026&quot; /&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;
  &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;1&quot; /&gt;
 &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;
&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;Any
ideas why I am get the NoSuchMethodError below?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;The
method specified by the pointcut is in com.foo.action.LoginAction.execute.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;The
aspect is defined in com.foo.logging.Login.&lt;span style='color:#1F497D'&gt;&amp;nbsp;&amp;nbsp; (see
below)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;My
code which is being advised does not call the aspect&amp;#8217;s aspectOf() method.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='color:#1F497D'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;I
use build-time bytecode weaving using the ant &amp;lt;iajc&amp;gt; task.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:12.0pt'&gt;The
app is a Struts-based web app.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style='border-top:solid windowtext 1.0pt;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:none;padding:1.0pt 0in 1.0pt 0in'&gt;

&lt;p class=MsoNormal&gt;Dev environment:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Java 1.5&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Ant 1.7.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;AspectJ 1.6.6&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Roger&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;div style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 0in 1.0pt 0in'&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;javax.servlet.ServletException: Servlet execution
threw an exception&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
com.hyperformix.athens.filter.AthensLoginFilter.doFilter(Unknown Source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='mso-margin-top-alt:5.0pt;margin-right:0in;margin-bottom:
5.0pt;margin-left:0in;text-autospace:none'&gt;&lt;b&gt;&lt;span style='font-size:12.0pt;
font-family:&quot;Times New Roman&quot;,&quot;serif&quot;'&gt;root cause&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;'&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;java.lang.NoSuchMethodError:
com.foo.logging.Login.aspectOf()Lcom/foo/logging/Login;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
com.foo.action.LoginAction.execute(Unknown Source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;
font-family:&quot;Courier New&quot;'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; com.foo.athens.filter.AthensLoginFilter.doFilter(Unknown
Source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;div style='border-top:solid windowtext 1.0pt;border-left:none;border-bottom:
solid windowtext 1.0pt;border-right:none;padding:1.0pt 0in 1.0pt 0in'&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;@Aspect&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;public class Login {&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
static Logger log = Logger.getLogger(Login.class.getName());&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
String userName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
String roleName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
@Pointcut(&amp;quot;call (* com.foo.LoginDAO.login(com.foo. Data) ) &amp;amp;&amp;amp;
args(data)&amp;quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
public void login(Data data) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
@Before(&amp;quot;login(data)&amp;quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
public void loginBefore(Data data)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
userName = data.getUserName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
roleName = data.getRoleName();&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
BasicConfigurator.configure();&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
log.info(&amp;quot;User &amp;quot; + userName + &amp;quot; with role &amp;quot; + roleName +
&amp;quot; about to login&amp;quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;'&gt;Roger
Huang&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26137664&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/FW%3A-NoSuchMethodError%3A-aspectOf%28%29-tp26137664p26137664.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26096313</id>
	<title>Re: Constructor ITD question: introduce no-arg ctor  instead of letting JDO/JPA enhancer do it?</title>
	<published>2009-10-28T08:05:37Z</published>
	<updated>2009-10-28T08:05:37Z</updated>
	<author>
		<name>matthewadams12</name>
	</author>
	<content type="html">Hi Simone,
&lt;br&gt;&lt;br&gt;I'm aware of the fact that you can't use type patterns when declaring
&lt;br&gt;an ITD. &amp;nbsp;I had already tried injecting a no-arg constructor to a
&lt;br&gt;marker interface and using declare parents, and that didn't work. &amp;nbsp;The
&lt;br&gt;aspect I tried is:
&lt;br&gt;&lt;br&gt;import javax.persistence.Entity;
&lt;br&gt;public aspect NoArgConstructorMixin {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static interface HasNoArgConstructor {}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare parents : ((@Entity *)) implements HasNoArgConstructor;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public HasNoArgConstructor.new() {}
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;The ajc compiler error is:
&lt;br&gt;error at public HasNoArgConstructor.new() {}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;^^^^^^^^^^^^^^^^^^^^^^^
&lt;br&gt;C:\dev\svnrepos\itsj\linx2\trunk\case\case-model\src\main\aspect\org\piercecountywa\linx\casemanagement\model\aspects\NoArgConstructorMixin.aj:11:0::0
&lt;br&gt;can't define constructors on interfaces
&lt;br&gt;&lt;br&gt;This is what I expect -- constructors don't make sense on interfaces.
&lt;br&gt;Am I doing something wrong in the definition of the aspect?
&lt;br&gt;&lt;br&gt;I've also confirmed that it's not an OpenJPA enhancer error, because
&lt;br&gt;the field initialization code is not placed into the introduced class;
&lt;br&gt;it's in the aspect. &amp;nbsp;If ajc were to introduce the field **with its
&lt;br&gt;initialization code**, it would work. &amp;nbsp;If we manually add a no-arg
&lt;br&gt;constructor then decompile the class, we can see ajc's post-construct
&lt;br&gt;after advice that initialized the introduced fields.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Matthew
&lt;br&gt;&lt;br&gt;On Wed, Oct 28, 2009 at 6:18 AM, Simone Gianni &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26096313&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simoneg@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Matthew,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Matthew Adams wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; =====================
&lt;br&gt;&amp;gt;&amp;gt; // DOES NOT COMPILE
&lt;br&gt;&amp;gt;&amp;gt; public aspect NoArgConstructorMixin {
&lt;br&gt;&amp;gt;&amp;gt;    public ((@Entity *) &amp;&amp; !hasmethod(* new())).new() { // can't
&lt;br&gt;&amp;gt;&amp;gt; introduce constructors with this syntax
&lt;br&gt;&amp;gt;&amp;gt;        // how do I ensure fields are initialized in here?  call super()?
&lt;br&gt;&amp;gt;&amp;gt;    }
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt; =====================
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; you cannot use type patterns when declaring an ITD. The syntax of ITD
&lt;br&gt;&amp;gt; expects a simple type, not a pattern.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So you can write :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public String SomeClass.toString() { ... }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But you cannot write :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public String ((@Entity *)).toString() { ... }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Instead you have to do as you have already done with the Intro interface :
&lt;br&gt;&amp;gt; declare an empty marker interface, then tell AspectJ to inject methods to
&lt;br&gt;&amp;gt; that interface, then use declare parents to place the interface using a type
&lt;br&gt;&amp;gt; pattern.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You should be able to declare also constructors this way.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm also using ApsectJ + OpenJPA enhancer, and I'm not facing the problem
&lt;br&gt;&amp;gt; this problem, but probably I don't have fields initialized calling a static
&lt;br&gt;&amp;gt; method. Since OpenJPA enhances the class AFTER ajc (for me too), it should
&lt;br&gt;&amp;gt; see all the fields and methods that ajc has added to the entity classes
&lt;br&gt;&amp;gt; correctly (it surely does for property).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If the OpenJPA introduced constructor does not take into account the fields
&lt;br&gt;&amp;gt; added by AspectJ then maybe you're hitting a bug in the OpenJPA enhancer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hope this helps,
&lt;br&gt;&amp;gt; Simone
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Simone Gianni            CEO Semeru s.r.l.           Apache Committer
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.simonegianni.it/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.simonegianni.it/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26096313&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26096313&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matthew@...&lt;/a&gt;
&lt;br&gt;skype:matthewadams12
&lt;br&gt;yahoo:matthewadams
&lt;br&gt;aol:matthewadams12
&lt;br&gt;google-talk:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26096313&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matthewadams12@...&lt;/a&gt;
&lt;br&gt;msn:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26096313&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matthew@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://matthewadams.me&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://matthewadams.me&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.linkedin.com/in/matthewadams&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.linkedin.com/in/matthewadams&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26096313&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Constructor-ITD-question%3A-introduce-no-arg-ctor-instead-of-letting-JDO-JPA-enhancer-do-it--tp26085658p26096313.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26094506</id>
	<title>Re: Constructor ITD question: introduce no-arg ctor instead of letting JDO/JPA enhancer do it?</title>
	<published>2009-10-28T06:18:48Z</published>
	<updated>2009-10-28T06:18:48Z</updated>
	<author>
		<name>Simone Gianni-2</name>
	</author>
	<content type="html">Hi Matthew,
&lt;br&gt;&lt;br&gt;&lt;br&gt;Matthew Adams wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; =====================
&lt;br&gt;&amp;gt; // DOES NOT COMPILE
&lt;br&gt;&amp;gt; public aspect NoArgConstructorMixin {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; public ((@Entity *) &amp;&amp; !hasmethod(* new())).new() { // can't
&lt;br&gt;&amp;gt; introduce constructors with this syntax
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // how do I ensure fields are initialized in here? &amp;nbsp;call super()?
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; =====================
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;you cannot use type patterns when declaring an ITD. The syntax of ITD 
&lt;br&gt;expects a simple type, not a pattern.
&lt;br&gt;&lt;br&gt;So you can write :
&lt;br&gt;&lt;br&gt;public String SomeClass.toString() { ... }
&lt;br&gt;&lt;br&gt;But you cannot write :
&lt;br&gt;&lt;br&gt;public String ((@Entity *)).toString() { ... }
&lt;br&gt;&lt;br&gt;Instead you have to do as you have already done with the Intro interface 
&lt;br&gt;: declare an empty marker interface, then tell AspectJ to inject methods 
&lt;br&gt;to that interface, then use declare parents to place the interface using 
&lt;br&gt;a type pattern.
&lt;br&gt;&lt;br&gt;You should be able to declare also constructors this way.
&lt;br&gt;&lt;br&gt;I'm also using ApsectJ + OpenJPA enhancer, and I'm not facing the 
&lt;br&gt;problem this problem, but probably I don't have fields initialized 
&lt;br&gt;calling a static method. Since OpenJPA enhances the class AFTER ajc (for 
&lt;br&gt;me too), it should see all the fields and methods that ajc has added to 
&lt;br&gt;the entity classes correctly (it surely does for property).
&lt;br&gt;&lt;br&gt;If the OpenJPA introduced constructor does not take into account the 
&lt;br&gt;fields added by AspectJ then maybe you're hitting a bug in the OpenJPA 
&lt;br&gt;enhancer.
&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;Simone
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Simone Gianni &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CEO Semeru s.r.l. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Apache Committer
&lt;br&gt;&lt;a href=&quot;http://www.simonegianni.it/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.simonegianni.it/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26094506&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Constructor-ITD-question%3A-introduce-no-arg-ctor-instead-of-letting-JDO-JPA-enhancer-do-it--tp26085658p26094506.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26094330</id>
	<title>Re: Mixin not recognized</title>
	<published>2009-10-28T06:07:07Z</published>
	<updated>2009-10-28T06:07:07Z</updated>
	<author>
		<name>Simone Gianni-2</name>
	</author>
	<content type="html">Hi Simeon,
&lt;br&gt;it seems like Eclipse is opening your aspect with the plain Java editor 
&lt;br&gt;instead of the AspectJ editor. I usually use .aj extension for aspects 
&lt;br&gt;to have Eclipse open them with the right editor. Otherwise, right click 
&lt;br&gt;on the file and select the AspectJ editor to open the file.
&lt;br&gt;&lt;br&gt;The fact that errors does not appear in the problems view is because 
&lt;br&gt;Eclipse uses two different approaches for finding errors : one is based 
&lt;br&gt;on builders, and is what the problems view and the package explorer 
&lt;br&gt;decorations report, which are reported during project build; the other 
&lt;br&gt;is the inline editor problems, that are computed as you type. In this 
&lt;br&gt;case, there are no &amp;quot;real&amp;quot; errors, so the AspectJ builder does not report 
&lt;br&gt;any error to the problem view, but the editor is the java one and does 
&lt;br&gt;not understands AspectJ syntax, reporting these &amp;quot;inline&amp;quot; errors.
&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;Simone
&lt;br&gt;&lt;br&gt;Leyzerzon, Simeon wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I'm trying to create a mixin inside an AJ project in MyEclipse:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public interface IDaoMixin {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static aspect Impl {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ....
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setJdbcTemplate(JdbcTemplate template);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; and it gives me the following:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Multiple markers at this line
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - Syntax error on token &amp;quot;aspect&amp;quot;, class
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;expected
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - aspect cannot be resolved to a type
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - The interface IDaoMixin cannot define an
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;initializer
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What ccould be a problem here? &amp;nbsp;What's interesting, is that the Problems view in Eclipse doesn't register a problem, it only appears inside the editor.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Here's the .project file:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;projectDescription&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;GlobalMarketAnalytics&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;comment&amp;gt;&amp;lt;/comment&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;projects&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/projects&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildSpec&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildCommand&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;org.eclipse.ajdt.core.ajbuilder&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;arguments&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/arguments&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildCommand&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildCommand&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;arguments&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/arguments&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildCommand&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildCommand&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;com.genuitec.eclipse.springframework.springbuilder&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;arguments&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/arguments&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildCommand&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildSpec&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;natures&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;org.eclipse.ajdt.ui.ajnature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;com.genuitec.eclipse.springframework.springnature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;com.genuitec.eclipse.ast.deploy.core.deploymentnature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;org.eclipse.jdt.core.javanature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/natures&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;/projectDescription&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you in advance.
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26094330&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Simone Gianni &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CEO Semeru s.r.l. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Apache Committer
&lt;br&gt;&lt;a href=&quot;http://www.simonegianni.it/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.simonegianni.it/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26094330&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Mixin-not-recognized-tp26088475p26094330.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26088475</id>
	<title>Mixin not recognized</title>
	<published>2009-10-27T19:41:45Z</published>
	<updated>2009-10-27T19:41:45Z</updated>
	<author>
		<name>Leyzerzon, Simeon -2</name>
	</author>
	<content type="html">I'm trying to create a mixin inside an AJ project in MyEclipse:
&lt;br&gt;&lt;br&gt;public interface IDaoMixin {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static aspect Impl {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ....
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void setJdbcTemplate(JdbcTemplate template);
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;and it gives me the following:
&lt;br&gt;&lt;br&gt;Multiple markers at this line
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - Syntax error on token &amp;quot;aspect&amp;quot;, class
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;expected
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - aspect cannot be resolved to a type
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - The interface IDaoMixin cannot define an
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;initializer
&lt;br&gt;&lt;br&gt;What ccould be a problem here? &amp;nbsp;What's interesting, is that the Problems view in Eclipse doesn't register a problem, it only appears inside the editor.
&lt;br&gt;&lt;br&gt;Here's the .project file:
&lt;br&gt;&lt;br&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&lt;br&gt;&amp;lt;projectDescription&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;GlobalMarketAnalytics&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;comment&amp;gt;&amp;lt;/comment&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;projects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/projects&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildSpec&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildCommand&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;org.eclipse.ajdt.core.ajbuilder&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;arguments&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/arguments&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildCommand&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildCommand&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;arguments&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/arguments&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildCommand&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;buildCommand&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;name&amp;gt;com.genuitec.eclipse.springframework.springbuilder&amp;lt;/name&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;arguments&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/arguments&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildCommand&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/buildSpec&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;natures&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;org.eclipse.ajdt.ui.ajnature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;com.genuitec.eclipse.springframework.springnature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;com.genuitec.eclipse.ast.deploy.core.deploymentnature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;nature&amp;gt;org.eclipse.jdt.core.javanature&amp;lt;/nature&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/natures&amp;gt;
&lt;br&gt;&amp;lt;/projectDescription&amp;gt;
&lt;br&gt;&lt;br&gt;Thank you in advance.
&lt;br&gt;Simeon
&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088475&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Mixin-not-recognized-tp26088475p26088475.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26088114</id>
	<title>RE: declare @method syntax - is composite signature allowed??</title>
	<published>2009-10-27T18:55:19Z</published>
	<updated>2009-10-27T18:55:19Z</updated>
	<author>
		<name>Leyzerzon, Simeon -2</name>
	</author>
	<content type="html">To anwser your question:
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&lt;br&gt;&amp;gt; seems odd. &amp;nbsp;I wonder what set of join points are matched by each variant and how they overlap.
&lt;br&gt;&lt;br&gt;&lt;br&gt;These are the join points for each individual declaration:
&lt;br&gt;&lt;br&gt;1. &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql1(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql2(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql3(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql4(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql5(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql6(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.setSql7(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsBaseDao.setJdbcTemplate(JdbcTemplate)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsBaseDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrChartDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaFilterDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrChartDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaHeadCountReportDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaFilterDao.setSql(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaFilterDao.setData(IDataBuffer)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DetailsSummaryGmaDao.setSql1(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.setSql1(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.setSql2(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.setSql3(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.setSql4(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.setSql5(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseBaseDao.setJdbcTemplate(JdbcTemplate)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseBaseDao.setSql(String)
&lt;br&gt;&lt;br&gt;2. &amp;nbsp;declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getSql1()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getSql2()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getSql3()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getSql4()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getSql5()
&lt;br&gt;&lt;br&gt;3. &amp;nbsp;declare @method: public * *..I*Dao+.getSql(..): @NonCacheable;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsBaseDao.getSql()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrChartDao.getSql()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrDao.getSql()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrChartDao.getSql()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaHeadCountReportDao.getSql()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaFilterDao.getSql()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseBaseDao.getSql()
&lt;br&gt;&lt;br&gt;4. &amp;nbsp;declare @method: public * *..I*Dao+.getJdbc*(..): @NonCacheable;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsBaseDao.getJdbcTemplate()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseBaseDao.getJdbcTemplate()
&lt;br&gt;&lt;br&gt;5. &amp;nbsp;declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.getSavingsChartDataBuffer(String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavingsDao.getDAPGridDataBuffer(String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ISavingsDao.getSavingsChartDataBuffer(String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ISavingsDao.getDAPGridDataBuffer(String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SummaryGmaDao.getSummaryDatagridsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ISummaryGmaDao.getSummaryDatagridsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrReportDao.getMBRReportDataBuffer(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrReportDao.isMBRReportExist(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrReportDao.deleteMBRReport(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrReportDao.insertMBRReport(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrDao.getGmaExpenseMbrDataBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrChartDao.getGmaExpenseMbrDataBuffer(String,String,String,String,String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaMbrChartDao.getGmaExpenseMbrMetaDataBuffer(String,String,String,String,String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaHeadCountReportDao.getHeadCountReportDataBuffer(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaHeadCountReportDao.isHeadCountReportExist(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaHeadCountReportDao.deleteHeadCountReport(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaHeadCountReportDao.insertHeadCountReport(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaFilterDao.getGmaFilterDataBuffer(String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaChartFilterDao.getGmaChartFilterDataBuffer(String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaChartFilterDao.getHCChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaChartFilterDao.getHCLineChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaChartFilterDao.getRegionDrillChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IGmaChartFilterDao.getRegionTrendDrillChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IExecutiveSummaryGmaDao.getExecutiveSummaryDatagridsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IDetailsSummaryGmaDao.getDetailsSummaryGridDaoBuffer(String,String,String,int,int,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrReportDao.getMBRReportDataBuffer(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrReportDao.isMBRReportExist(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrReportDao.deleteMBRReport(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrReportDao.insertMBRReport(MBRReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrDao.getGmaExpenseMbrDataBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrChartDao.getGmaExpenseMbrDataBuffer(String,String,String,String,String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaMbrChartDao.getGmaExpenseMbrMetaDataBuffer(String,String,String,String,String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaHeadCountReportDao.deleteHeadCountReport(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaHeadCountReportDao.getHeadCountReportDataBuffer(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaHeadCountReportDao.insertHeadCountReport(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaHeadCountReportDao.isHeadCountReportExist(HeadCountReportObject)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaFilterDao.getGmaFilterDataBuffer(String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaChartFilterDao.getGmaChartFilterDataBuffer(String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaChartFilterDao.getHCChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaChartFilterDao.getHCLineChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaChartFilterDao.getRegionDrillChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GmaChartFilterDao.getRegionTrendDrillChartsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FooGmaDao.getExecutiveSummaryDatagridsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExecutiveSummaryGmaDao.getExecutiveSummaryDatagridsDaoBuffer(String,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DetailsSummaryGmaDao.getDetailsSummaryGridDaoBuffer(String,String,String,int,int,String,String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IExpenseDao.getExpenseChartDataBuffer(String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IExpenseDao.getExpenseTreeGridDataBuffer(String,String,String,String,String,String,int)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IExpenseDao.getExpensePopUpGridDataBuffer(String,String,String,String,String,int,int,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IExpenseDao.getExpenseDetailGridDataBuffer(String,String,String,String,String,int,int)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IExpenseDao.getExpenseFilterDataBuffer(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getExpenseFilterDataBuffer(String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getExpenseChartDataBuffer(String,String,String,String,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getExpenseTreeGridDataBuffer(String,String,String,String,String,String,int)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getExpensePopUpGridDataBuffer(String,String,String,String,String,int,int,String,String)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ExpenseDao.getExpenseDetailGridDataBuffer(String,String,String,String,String,int,int)
&lt;br&gt;&lt;br&gt;Simeon
&lt;br&gt;&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Leyzerzon, Simeon [ICG-IT]
&lt;br&gt;Sent: Tuesday, October 27, 2009 5:17 PM
&lt;br&gt;To: '&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;'
&lt;br&gt;Subject: RE: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&lt;br&gt;It would be easier to investigate if each of the declaration allowed for some identifier, otherwise they look the same in Eclipse AJDT. &amp;nbsp;Apologies in advance if this already exists and I'm just anaware of it, this is really my first stab in the new territory. &amp;nbsp;I could create a sample project and perhaps post it if that'd help looking into what's going on. &amp;nbsp;What'd you suggest?
&lt;br&gt;&lt;br&gt;Once again, appreciate your help!!
&lt;br&gt;Simeon
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;Sent: Tuesday, October 27, 2009 3:44 PM
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&lt;br&gt;The algorithm used in situations like this is a kind of iterate to a fixed point - starting with what you specify. &amp;nbsp;However I doubt we make guarantees if the declare @methods interact with each other and are specified in different source aspects.
&lt;br&gt;&lt;br&gt;&amp;gt; public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&lt;br&gt;seems odd. &amp;nbsp;I wonder what set of join points are matched by each variant and how they overlap.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Ah, looks like the following properly excludes the getSql() calls:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.getSql(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; so apparently in this case &amp;nbsp;public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm not sure it's by design on not ;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Leyzerzon,
&lt;br&gt;&amp;gt; Simeon [ICG-IT]
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 2:55 PM
&lt;br&gt;&amp;gt; To: '&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;'
&lt;br&gt;&amp;gt; Subject: RE: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; No, I haven't defined another marker interface as you correctly spotted so that's what was breaking it. &amp;nbsp;So NPE is gone, my bad.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But now, after the following aspect:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; is applied to something like this class:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class ExpenseBaseDao implements IGmaBaseDao {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public String getSql() {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return sql;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; in the CrossRef view I'm seeing
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; both for getSql:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CachingIntroduction.declare @method:
&lt;br&gt;&amp;gt; !@com.citi.gdos.smart.applib.service.cache.NonCacheable public *
&lt;br&gt;&amp;gt; *..I*Dao+.*(..) : @Cacheable(modelId = &amp;quot;fooModel&amp;quot;)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CachingIntroduction.declare @method: public *
&lt;br&gt;&amp;gt; *..I*Dao+.getSql*(..) : @NonCacheable
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Does it mean getSql() is annotated as both @Cacheable and @NonCacheable, could I apply some precedence here?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 11:29 AM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hey,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Any NPE from the compiler is a bug. &amp;nbsp;I presume you have defined the
&lt;br&gt;&amp;gt; Setter annotation? (ie. it must exist as a definition in order to
&lt;br&gt;&amp;gt; succeed)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I raised this problem as
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Due to it failing in the hierarchy building code, it may behave better on the command line where the model does not get constructed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers,
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks for responding. &amp;nbsp;I tried the approach you are suggesting, unfortunately I'm getting the following:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; java.lang.NullPointerException
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder.visit(AsmH
&lt;br&gt;&amp;gt;&amp;gt; i
&lt;br&gt;&amp;gt;&amp;gt; erarchyBuilder.java:548) at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.t
&lt;br&gt;&amp;gt;&amp;gt; r
&lt;br&gt;&amp;gt;&amp;gt; averse(MethodDeclaration.java:214)
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.tra
&lt;br&gt;&amp;gt;&amp;gt; v
&lt;br&gt;&amp;gt;&amp;gt; erse(TypeDeclaration.java:1246) at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDecl
&lt;br&gt;&amp;gt;&amp;gt; a ration.traverse(Compilatio ... oBuildJob.run(AutoBuildJob.java:238)
&lt;br&gt;&amp;gt;&amp;gt; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Compile error: NullPointerException thrown: null
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here's the aspect I'm using:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; package com.citi.gdos.smart.applib.service.cache;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; import org.springmodules.cache.annotations.Cacheable;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Am I doing something wrong? &amp;nbsp;Do I need a nightly build perhaps for this to work?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt;&amp;gt; Sent: Tuesday, October 27, 2009 9:58 AM
&lt;br&gt;&amp;gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi Simeon,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This restriction you've uncovered was actually only recently raised as this enhancement:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; To support it I need to change the serialized form of the attributes - I try not to do this often but for other reasons (optimization) I may be changing the format in 1.6.7 so I will be looking at it in that timeframe.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; a clunky approach might be:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;&amp;gt; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; but I know that's not great...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009/10/26 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I have a hierarchy of DAO classes into which I'm introducing an @Cacheable annotation via something like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The problem is, we need to filter out more than is specified by this one signature pattern, and I'm not sure that a composite pattern is allowed in this type of expression. &amp;nbsp;When I tried something like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm getting compile errors saying:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Syntax error on token &amp;quot;&amp;&amp;&amp;quot;, &amp;quot;;&amp;quot; expected
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I also tried to define composite pointcuts representing the joint points I'm interested in (basically I want to exclude 'jdbcTemplate' and 'slq' Spring specific setters from the places where annotation is introduced) but declaration syntax doesn't seem to like it either.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; What would be a good approach in the use case I described?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm using compile time weaving via Ant. &amp;nbsp;AspectJ version is 1.6
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you in advance,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=19&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=20&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=21&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=22&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=23&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=24&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=25&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26088114&amp;i=26&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/declare-%40method-syntax---is-composite-signature-allowed---tp26067271p26088114.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26085658</id>
	<title>Constructor ITD question: introduce no-arg ctor instead of letting JDO/JPA enhancer do it?</title>
	<published>2009-10-27T14:33:11Z</published>
	<updated>2009-10-27T14:33:11Z</updated>
	<author>
		<name>matthewadams12</name>
	</author>
	<content type="html">I'm having some trouble getting around a problem I'm having with field
&lt;br&gt;initialization and a persistence enhancer (OpenJPA's, but any JDO or
&lt;br&gt;JPA enhancer will suffer this problem). &amp;nbsp;The build process is to first
&lt;br&gt;compile with ajc, then enhance, which adds a no-arg constructor.
&lt;br&gt;Problem is, since the enhancer adds the constructor **after** ajc
&lt;br&gt;compilation, introduced fields are not initialized.
&lt;br&gt;&lt;br&gt;Is there a way to introduce a constructor to any class with a given
&lt;br&gt;annotation that doesn't already have a no-arg constructor of any
&lt;br&gt;visibility such that field initialization takes place? &amp;nbsp;This would
&lt;br&gt;prevent the enhancer from adding a no-arg constructor after aspect
&lt;br&gt;compilation.
&lt;br&gt;&lt;br&gt;JPA Example where a UUID field is being introduced with its field
&lt;br&gt;initialization inlined:
&lt;br&gt;&lt;br&gt;=====================
&lt;br&gt;@Entity
&lt;br&gt;public class Foo {
&lt;br&gt;&amp;nbsp; &amp;nbsp; @Id protected Long id;
&lt;br&gt;&amp;nbsp; &amp;nbsp; // ...
&lt;br&gt;}
&lt;br&gt;=====================
&lt;br&gt;public interface HasUuid { UUID getUuid(); }
&lt;br&gt;=====================
&lt;br&gt;public aspect HasUuidMixin {
&lt;br&gt;&amp;nbsp; &amp;nbsp; public static interface Intro extends HasUuid {}
&lt;br&gt;&amp;nbsp; &amp;nbsp; declare parents: &amp;nbsp;(@Entity *) implements Intro;
&lt;br&gt;&amp;nbsp; &amp;nbsp; private UUID Intro.uuid = UUID.randomUUID();
&lt;br&gt;&amp;nbsp; &amp;nbsp; public UUID Intro.getUuid() { return uuid; }
&lt;br&gt;}
&lt;br&gt;=====================
&lt;br&gt;// DOES NOT COMPILE
&lt;br&gt;public aspect NoArgConstructorMixin {
&lt;br&gt;&amp;nbsp; &amp;nbsp; public ((@Entity *) &amp;&amp; !hasmethod(* new())).new() { // can't
&lt;br&gt;introduce constructors with this syntax
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // how do I ensure fields are initialized in here? &amp;nbsp;call super()?
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;=====================
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Matthew
&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085658&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Constructor-ITD-question%3A-introduce-no-arg-ctor-instead-of-letting-JDO-JPA-enhancer-do-it--tp26085658p26085658.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26085367</id>
	<title>RE: declare @method syntax - is composite signature allowed??</title>
	<published>2009-10-27T14:17:26Z</published>
	<updated>2009-10-27T14:17:26Z</updated>
	<author>
		<name>Leyzerzon, Simeon -2</name>
	</author>
	<content type="html">It would be easier to investigate if each of the declaration allowed for some identifier, otherwise they look the same in Eclipse AJDT. &amp;nbsp;Apologies in advance if this already exists and I'm just anaware of it, this is really my first stab in the new territory. &amp;nbsp;I could create a sample project and perhaps post it if that'd help looking into what's going on. &amp;nbsp;What'd you suggest?
&lt;br&gt;&lt;br&gt;Once again, appreciate your help!!
&lt;br&gt;Simeon
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;Sent: Tuesday, October 27, 2009 3:44 PM
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&lt;br&gt;The algorithm used in situations like this is a kind of iterate to a fixed point - starting with what you specify. &amp;nbsp;However I doubt we make guarantees if the declare @methods interact with each other and are specified in different source aspects.
&lt;br&gt;&lt;br&gt;&amp;gt; public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&lt;br&gt;seems odd. &amp;nbsp;I wonder what set of join points are matched by each variant and how they overlap.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Ah, looks like the following properly excludes the getSql() calls:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.getSql(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; so apparently in this case &amp;nbsp;public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm not sure it's by design on not ;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Leyzerzon,
&lt;br&gt;&amp;gt; Simeon [ICG-IT]
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 2:55 PM
&lt;br&gt;&amp;gt; To: '&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;'
&lt;br&gt;&amp;gt; Subject: RE: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; No, I haven't defined another marker interface as you correctly spotted so that's what was breaking it. &amp;nbsp;So NPE is gone, my bad.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But now, after the following aspect:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; is applied to something like this class:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class ExpenseBaseDao implements IGmaBaseDao {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public String getSql() {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return sql;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; in the CrossRef view I'm seeing
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; both for getSql:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CachingIntroduction.declare @method:
&lt;br&gt;&amp;gt; !@com.citi.gdos.smart.applib.service.cache.NonCacheable public *
&lt;br&gt;&amp;gt; *..I*Dao+.*(..) : @Cacheable(modelId = &amp;quot;fooModel&amp;quot;)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CachingIntroduction.declare @method: public *
&lt;br&gt;&amp;gt; *..I*Dao+.getSql*(..) : @NonCacheable
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Does it mean getSql() is annotated as both @Cacheable and @NonCacheable, could I apply some precedence here?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 11:29 AM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hey,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Any NPE from the compiler is a bug. &amp;nbsp;I presume you have defined the
&lt;br&gt;&amp;gt; Setter annotation? (ie. it must exist as a definition in order to
&lt;br&gt;&amp;gt; succeed)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I raised this problem as
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Due to it failing in the hierarchy building code, it may behave better on the command line where the model does not get constructed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers,
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks for responding. &amp;nbsp;I tried the approach you are suggesting, unfortunately I'm getting the following:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; java.lang.NullPointerException
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder.visit(AsmH
&lt;br&gt;&amp;gt;&amp;gt; i
&lt;br&gt;&amp;gt;&amp;gt; erarchyBuilder.java:548) at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.t
&lt;br&gt;&amp;gt;&amp;gt; r
&lt;br&gt;&amp;gt;&amp;gt; averse(MethodDeclaration.java:214)
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.tra
&lt;br&gt;&amp;gt;&amp;gt; v
&lt;br&gt;&amp;gt;&amp;gt; erse(TypeDeclaration.java:1246) at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDecl
&lt;br&gt;&amp;gt;&amp;gt; a ration.traverse(Compilatio ... oBuildJob.run(AutoBuildJob.java:238)
&lt;br&gt;&amp;gt;&amp;gt; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Compile error: NullPointerException thrown: null
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here's the aspect I'm using:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; package com.citi.gdos.smart.applib.service.cache;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; import org.springmodules.cache.annotations.Cacheable;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Am I doing something wrong? &amp;nbsp;Do I need a nightly build perhaps for this to work?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt;&amp;gt; Sent: Tuesday, October 27, 2009 9:58 AM
&lt;br&gt;&amp;gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi Simeon,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This restriction you've uncovered was actually only recently raised as this enhancement:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; To support it I need to change the serialized form of the attributes - I try not to do this often but for other reasons (optimization) I may be changing the format in 1.6.7 so I will be looking at it in that timeframe.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; a clunky approach might be:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;&amp;gt; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; but I know that's not great...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009/10/26 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I have a hierarchy of DAO classes into which I'm introducing an @Cacheable annotation via something like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The problem is, we need to filter out more than is specified by this one signature pattern, and I'm not sure that a composite pattern is allowed in this type of expression. &amp;nbsp;When I tried something like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm getting compile errors saying:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Syntax error on token &amp;quot;&amp;&amp;&amp;quot;, &amp;quot;;&amp;quot; expected
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I also tried to define composite pointcuts representing the joint points I'm interested in (basically I want to exclude 'jdbcTemplate' and 'slq' Spring specific setters from the places where annotation is introduced) but declaration syntax doesn't seem to like it either.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; What would be a good approach in the use case I described?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm using compile time weaving via Ant. &amp;nbsp;AspectJ version is 1.6
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you in advance,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=19&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=20&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=21&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26085367&amp;i=22&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/declare-%40method-syntax---is-composite-signature-allowed---tp26067271p26085367.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26083881</id>
	<title>Re: declare @method syntax - is composite signature  allowed??</title>
	<published>2009-10-27T12:43:40Z</published>
	<updated>2009-10-27T12:43:40Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">The algorithm used in situations like this is a kind of iterate to a
&lt;br&gt;fixed point - starting with what you specify. &amp;nbsp;However I doubt we make
&lt;br&gt;guarantees if the declare @methods interact with each other and are
&lt;br&gt;specified in different source aspects.
&lt;br&gt;&lt;br&gt;&amp;gt; public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&lt;br&gt;seems odd. &amp;nbsp;I wonder what set of join points are matched by each
&lt;br&gt;variant and how they overlap.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Ah, looks like the following properly excludes the getSql() calls:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;gt;        declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;gt;        declare @method: public * *..I*Dao+.getSql(..): @NonCacheable;
&lt;br&gt;&amp;gt;        declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;                 @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; so apparently in this case  public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm not sure it's by design on not ;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Leyzerzon, Simeon [ICG-IT]
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 2:55 PM
&lt;br&gt;&amp;gt; To: '&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;'
&lt;br&gt;&amp;gt; Subject: RE: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; No, I haven't defined another marker interface as you correctly spotted so that's what was breaking it.  So NPE is gone, my bad.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But now, after the following aspect:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;gt;        declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;gt;        declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;                 @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; is applied to something like this class:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class ExpenseBaseDao implements IGmaBaseDao {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public String getSql() {
&lt;br&gt;&amp;gt;                return sql;
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; in the CrossRef view I'm seeing
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; both for getSql:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;            CachingIntroduction.declare @method: !@com.citi.gdos.smart.applib.service.cache.NonCacheable public * *..I*Dao+.*(..) : @Cacheable(modelId = &amp;quot;fooModel&amp;quot;)
&lt;br&gt;&amp;gt;            CachingIntroduction.declare @method: public * *..I*Dao+.getSql*(..) : @NonCacheable
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Does it mean getSql() is annotated as both @Cacheable and @NonCacheable, could I apply some precedence here?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 11:29 AM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hey,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Any NPE from the compiler is a bug.  I presume you have defined the Setter annotation? (ie. it must exist as a definition in order to
&lt;br&gt;&amp;gt; succeed)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I raised this problem as &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Due to it failing in the hierarchy building code, it may behave better on the command line where the model does not get constructed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; cheers,
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks for responding.  I tried the approach you are suggesting, unfortunately I'm getting the following:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; java.lang.NullPointerException
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder.visit(AsmHi
&lt;br&gt;&amp;gt;&amp;gt; erarchyBuilder.java:548) at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.tr
&lt;br&gt;&amp;gt;&amp;gt; averse(MethodDeclaration.java:214)
&lt;br&gt;&amp;gt;&amp;gt; at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.trav
&lt;br&gt;&amp;gt;&amp;gt; erse(TypeDeclaration.java:1246) at
&lt;br&gt;&amp;gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDecla
&lt;br&gt;&amp;gt;&amp;gt; ration.traverse(Compilatio ... oBuildJob.run(AutoBuildJob.java:238)
&lt;br&gt;&amp;gt;&amp;gt; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Compile error: NullPointerException thrown: null
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here's the aspect I'm using:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; package com.citi.gdos.smart.applib.service.cache;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; import org.springmodules.cache.annotations.Cacheable;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;        declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;&amp;gt;                @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Am I doing something wrong?  Do I need a nightly build perhaps for this to work?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt;&amp;gt; Sent: Tuesday, October 27, 2009 9:58 AM
&lt;br&gt;&amp;gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hi Simeon,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This restriction you've uncovered was actually only recently raised as this enhancement:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; To support it I need to change the serialized form of the attributes - I try not to do this often but for other reasons (optimization) I may be changing the format in 1.6.7 so I will be looking at it in that timeframe.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;                public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;                        @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; a clunky approach might be:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;&amp;gt; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; but I know that's not great...
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 2009/10/26 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I have a hierarchy of DAO classes into which I'm introducing an @Cacheable annotation via something like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;                public * *..I*Dao+.*(..) :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;                        @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; The problem is, we need to filter out more than is specified by this one signature pattern, and I'm not sure that a composite pattern is allowed in this type of expression.  When I tried something like this:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;                public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;                        @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm getting compile errors saying:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Syntax error on token &amp;quot;&amp;&amp;&amp;quot;, &amp;quot;;&amp;quot; expected
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I also tried to define composite pointcuts representing the joint points I'm interested in (basically I want to exclude 'jdbcTemplate' and 'slq' Spring specific setters from the places where annotation is introduced) but declaration syntax doesn't seem to like it either.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; What would be a good approach in the use case I described?
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm using compile time weaving via Ant.  AspectJ version is 1.6
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Thank you in advance,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083881&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/declare-%40method-syntax---is-composite-signature-allowed---tp26067271p26083881.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26083407</id>
	<title>RE: declare @method syntax - is composite signature allowed??</title>
	<published>2009-10-27T12:12:56Z</published>
	<updated>2009-10-27T12:12:56Z</updated>
	<author>
		<name>Leyzerzon, Simeon -2</name>
	</author>
	<content type="html">Ah, looks like the following properly excludes the getSql() calls:
&lt;br&gt;&lt;br&gt;public aspect CachingIntroduction {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.getSql(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;so apparently in this case &amp;nbsp;public * *..I*Dao+.getSql*(..) != public * *..I*Dao+.getSql(..).
&lt;br&gt;&lt;br&gt;I'm not sure it's by design on not ;)
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Simeon
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Leyzerzon, Simeon [ICG-IT]
&lt;br&gt;Sent: Tuesday, October 27, 2009 2:55 PM
&lt;br&gt;To: '&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;'
&lt;br&gt;Subject: RE: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&lt;br&gt;Andy,
&lt;br&gt;&lt;br&gt;No, I haven't defined another marker interface as you correctly spotted so that's what was breaking it. &amp;nbsp;So NPE is gone, my bad.
&lt;br&gt;&lt;br&gt;But now, after the following aspect:
&lt;br&gt;&lt;br&gt;public aspect CachingIntroduction {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;is applied to something like this class:
&lt;br&gt;&lt;br&gt;&lt;br&gt;public class ExpenseBaseDao implements IGmaBaseDao {
&lt;br&gt;&lt;br&gt;...
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getSql() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return sql;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;...
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;in the CrossRef view I'm seeing
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;both for getSql:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CachingIntroduction.declare @method: !@com.citi.gdos.smart.applib.service.cache.NonCacheable public * *..I*Dao+.*(..) : @Cacheable(modelId = &amp;quot;fooModel&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CachingIntroduction.declare @method: public * *..I*Dao+.getSql*(..) : @NonCacheable
&lt;br&gt;&lt;br&gt;Does it mean getSql() is annotated as both @Cacheable and @NonCacheable, could I apply some precedence here?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Simeon
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;Sent: Tuesday, October 27, 2009 11:29 AM
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&lt;br&gt;Hey,
&lt;br&gt;&lt;br&gt;Any NPE from the compiler is a bug. &amp;nbsp;I presume you have defined the Setter annotation? (ie. it must exist as a definition in order to
&lt;br&gt;succeed)
&lt;br&gt;&lt;br&gt;I raised this problem as &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&lt;/a&gt;&lt;br&gt;&lt;br&gt;Due to it failing in the hierarchy building code, it may behave better on the command line where the model does not get constructed.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for responding. &amp;nbsp;I tried the approach you are suggesting, unfortunately I'm getting the following:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; java.lang.NullPointerException
&lt;br&gt;&amp;gt; at
&lt;br&gt;&amp;gt; org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder.visit(AsmHi
&lt;br&gt;&amp;gt; erarchyBuilder.java:548) at
&lt;br&gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.tr
&lt;br&gt;&amp;gt; averse(MethodDeclaration.java:214)
&lt;br&gt;&amp;gt; at
&lt;br&gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.trav
&lt;br&gt;&amp;gt; erse(TypeDeclaration.java:1246) at
&lt;br&gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDecla
&lt;br&gt;&amp;gt; ration.traverse(Compilatio ... oBuildJob.run(AutoBuildJob.java:238)
&lt;br&gt;&amp;gt; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Compile error: NullPointerException thrown: null
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Here's the aspect I'm using:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package com.citi.gdos.smart.applib.service.cache;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import org.springmodules.cache.annotations.Cacheable;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Am I doing something wrong? &amp;nbsp;Do I need a nightly build perhaps for this to work?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 9:58 AM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Simeon,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This restriction you've uncovered was actually only recently raised as this enhancement:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To support it I need to change the serialized form of the attributes - I try not to do this often but for other reasons (optimization) I may be changing the format in 1.6.7 so I will be looking at it in that timeframe.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; a clunky approach might be:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; but I know that's not great...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/26 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; I have a hierarchy of DAO classes into which I'm introducing an @Cacheable annotation via something like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The problem is, we need to filter out more than is specified by this one signature pattern, and I'm not sure that a composite pattern is allowed in this type of expression. &amp;nbsp;When I tried something like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm getting compile errors saying:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Syntax error on token &amp;quot;&amp;&amp;&amp;quot;, &amp;quot;;&amp;quot; expected
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I also tried to define composite pointcuts representing the joint points I'm interested in (basically I want to exclude 'jdbcTemplate' and 'slq' Spring specific setters from the places where annotation is introduced) but declaration syntax doesn't seem to like it either.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What would be a good approach in the use case I described?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm using compile time weaving via Ant. &amp;nbsp;AspectJ version is 1.6
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thank you in advance,
&lt;br&gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083407&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/declare-%40method-syntax---is-composite-signature-allowed---tp26067271p26083407.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26083091</id>
	<title>RE: declare @method syntax - is composite signature allowed??</title>
	<published>2009-10-27T11:55:17Z</published>
	<updated>2009-10-27T11:55:17Z</updated>
	<author>
		<name>Leyzerzon, Simeon -2</name>
	</author>
	<content type="html">Andy,
&lt;br&gt;&lt;br&gt;No, I haven't defined another marker interface as you correctly spotted so that's what was breaking it. &amp;nbsp;So NPE is gone, my bad.
&lt;br&gt;&lt;br&gt;But now, after the following aspect:
&lt;br&gt;&lt;br&gt;public aspect CachingIntroduction {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.set*(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: public * *..I*Dao+.getSql*(..): @NonCacheable;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; declare @method: !@NonCacheable public * *..I*Dao+.*(..):
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&lt;br&gt;}
&lt;br&gt;&lt;br&gt;is applied to something like this class:
&lt;br&gt;&lt;br&gt;&lt;br&gt;public class ExpenseBaseDao implements IGmaBaseDao {
&lt;br&gt;&lt;br&gt;...
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public String getSql() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return sql;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;...
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;in the CrossRef view I'm seeing
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;both for getSql:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CachingIntroduction.declare @method: !@com.citi.gdos.smart.applib.service.cache.NonCacheable public * *..I*Dao+.*(..) : @Cacheable(modelId = &amp;quot;fooModel&amp;quot;)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CachingIntroduction.declare @method: public * *..I*Dao+.getSql*(..) : @NonCacheable
&lt;br&gt;&lt;br&gt;Does it mean getSql() is annotated as both @Cacheable and @NonCacheable, could I apply some precedence here?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Simeon
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;Sent: Tuesday, October 27, 2009 11:29 AM
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&lt;br&gt;Hey,
&lt;br&gt;&lt;br&gt;Any NPE from the compiler is a bug. &amp;nbsp;I presume you have defined the Setter annotation? (ie. it must exist as a definition in order to
&lt;br&gt;succeed)
&lt;br&gt;&lt;br&gt;I raised this problem as &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&lt;/a&gt;&lt;br&gt;&lt;br&gt;Due to it failing in the hierarchy building code, it may behave better on the command line where the model does not get constructed.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for responding. &amp;nbsp;I tried the approach you are suggesting, unfortunately I'm getting the following:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; java.lang.NullPointerException
&lt;br&gt;&amp;gt; at
&lt;br&gt;&amp;gt; org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder.visit(AsmHi
&lt;br&gt;&amp;gt; erarchyBuilder.java:548) at
&lt;br&gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.tr
&lt;br&gt;&amp;gt; averse(MethodDeclaration.java:214)
&lt;br&gt;&amp;gt; at
&lt;br&gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.trav
&lt;br&gt;&amp;gt; erse(TypeDeclaration.java:1246) at
&lt;br&gt;&amp;gt; org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDecla
&lt;br&gt;&amp;gt; ration.traverse(Compilatio ... oBuildJob.run(AutoBuildJob.java:238)
&lt;br&gt;&amp;gt; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Compile error: NullPointerException thrown: null
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Here's the aspect I'm using:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package com.citi.gdos.smart.applib.service.cache;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import org.springmodules.cache.annotations.Cacheable;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Am I doing something wrong? &amp;nbsp;Do I need a nightly build perhaps for this to work?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;
&lt;br&gt;&amp;gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 9:58 AM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Simeon,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This restriction you've uncovered was actually only recently raised as this enhancement:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To support it I need to change the serialized form of the attributes - I try not to do this often but for other reasons (optimization) I may be changing the format in 1.6.7 so I will be looking at it in that timeframe.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; a clunky approach might be:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; but I know that's not great...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/26 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; I have a hierarchy of DAO classes into which I'm introducing an @Cacheable annotation via something like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The problem is, we need to filter out more than is specified by this one signature pattern, and I'm not sure that a composite pattern is allowed in this type of expression. &amp;nbsp;When I tried something like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm getting compile errors saying:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Syntax error on token &amp;quot;&amp;&amp;&amp;quot;, &amp;quot;;&amp;quot; expected
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I also tried to define composite pointcuts representing the joint points I'm interested in (basically I want to exclude 'jdbcTemplate' and 'slq' Spring specific setters from the places where annotation is introduced) but declaration syntax doesn't seem to like it either.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What would be a good approach in the use case I described?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm using compile time weaving via Ant. &amp;nbsp;AspectJ version is 1.6
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thank you in advance,
&lt;br&gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26083091&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/declare-%40method-syntax---is-composite-signature-allowed---tp26067271p26083091.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26081713</id>
	<title>Re: Newbie question about paramter exposure.</title>
	<published>2009-10-27T10:23:27Z</published>
	<updated>2009-10-27T10:23:27Z</updated>
	<author>
		<name>neo anderson</name>
	</author>
	<content type="html">Just want to practise to see if I understand it correctly.
&lt;br&gt;&lt;br&gt;The point of interest 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; A.execute(&amp;quot;ls -alh&amp;quot;) 
&lt;br&gt;&lt;br&gt;is reached. 
&lt;br&gt;&lt;br&gt;That point of interest is specified in 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; execution(* example.A.execute(String)) &amp;&amp; args(command); 
&lt;br&gt;&lt;br&gt;So the parameter value being passed in (i.e. ls -alh) is bound to the command 
&lt;br&gt;parameter in the pointcut p(String command). Thus the value of `command' (in pointcut p(String command)) now can be replaced with &amp;quot;ls -alh&amp;quot; (whilst method's executing).
&lt;br&gt;&lt;br&gt;And because an advice around(String command) is attached to the pointcut p(String command), when the method execution join point occurs, it becomes
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object advice(String command): p(&amp;quot;ls -alh&amp;quot;){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;And then when advice is invoked 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object advice(&amp;quot;ls -alh&amp;quot;): p(&amp;quot;ls -alh&amp;quot;){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;Am I correct to the above explanation? 
&lt;br&gt;&lt;br&gt;I discover my problem is because after reading the book e.g. Aspectj in Action, I still do not understand very well about the flow that goes between joint points, pointcuts and advices. In a traditional method call, I understand (maybe not precisely) that in the class Main, when executing `new A().execute(&amp;quot;ls -alh&amp;quot;)', the value `ls -alh' will pass in to the execute() method of the class A; therefore, in the execute() function of the class A, the variable `command' can be replaced using the value `ls -alh' and gets printed using System.out.println() method in execution. 
&lt;br&gt;&lt;br&gt;But concept of aop looks like not the same way; so it makes me confused.
&lt;br&gt;&lt;br&gt;Please correct me if anything goes wrong. 
&lt;br&gt;&lt;br&gt;Thanks for your help. 
&lt;br&gt;&lt;br&gt;I really appreciate it.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Andy Clement wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;&lt;br&gt;Your description is ok:
&lt;br&gt;&lt;br&gt;&amp;gt; therefore, execution of the method `new A().execute(&amp;quot;ls -alh&amp;quot;)' triggers the around() advice, which passes in a value `ls -lah' (as the variable command). That value `ls -alh' passes to
&lt;br&gt;&amp;gt; pointcut p(), which also takes a variable named command. And that pointcut p() tries to capture the execution of a method specified as `* example.A.execute(String)' and its argument
&lt;br&gt;&amp;gt; must be `command.'
&lt;br&gt;&lt;br&gt;let me write it another way to see if that helps. &amp;nbsp;Think about the
&lt;br&gt;events that occur when the program runs:
&lt;br&gt;Main.main() starts executing
&lt;br&gt;it calls the Main() constructor
&lt;br&gt;it calls the process() method
&lt;br&gt;Main.process() method starts executing
&lt;br&gt;it calls the A() constructor
&lt;br&gt;it calls the execute(&amp;quot;ls -alh&amp;quot;) method
&lt;br&gt;A.execute(&amp;quot;ls -alh&amp;quot;) &amp;nbsp;method starts executing *
&lt;br&gt;it accesses the field System.out
&lt;br&gt;it calls the method println()
&lt;br&gt;&lt;br&gt;all those are the joinpoints in your program flow and your pointcut is
&lt;br&gt;choosing the one you are interested in. &amp;nbsp;You have used 'execution(*
&lt;br&gt;execute(String))' which has selected the one I've marked * above. &amp;nbsp;In
&lt;br&gt;your pointcut you've also said you are interested in the parameter
&lt;br&gt;when the method executes, so you have used 'args' to bind it - so when
&lt;br&gt;the program runs and your point of interest is reached, the parameter
&lt;br&gt;value being passed in is bound to the command parameter in your
&lt;br&gt;pointcut. &amp;nbsp;You have chosen to have around() advice attached to that
&lt;br&gt;pointcut so when the method-execution join point occurs, your around
&lt;br&gt;advice is invoked with the bound parameter value. &amp;nbsp;Unlike a regular
&lt;br&gt;method call, the weaving infrastructure is looking after binding the
&lt;br&gt;pointcut/advice parameter for you.
&lt;br&gt;&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;2009/10/27 Neo Anderson &amp;lt;javadeveloper999@yahoo.co.uk&amp;gt;:
&lt;br&gt;&amp;gt; Hi
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am newbie to aspectj and have a question regarding to the usage of parameters exposed in the pointcut, advice, etc. Following is the source code:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package aspectj;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect P{
&lt;br&gt;&amp;gt;        public pointcut p(String command): execution(* example.A.execute(String)) &amp;&amp; args(command);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        Object around(String command): p(command){
&lt;br&gt;&amp;gt;                System.out.println(&amp;quot;around() advice : command:&amp;quot;+command);
&lt;br&gt;&amp;gt;                return proceed(command);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class A{
&lt;br&gt;&amp;gt;        public void execute(String c){
&lt;br&gt;&amp;gt;                System.out.println(&amp;quot;[A.java][execute] command:&amp;quot;+c);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package example;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public class Main{
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        public static void main(String args[]){
&lt;br&gt;&amp;gt;                new Main().process();
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        void process(){
&lt;br&gt;&amp;gt;                new A().execute(&amp;quot;ls -alh&amp;quot;);
&lt;br&gt;&amp;gt;        }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The output :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; around() advice : command:ls -alh
&lt;br&gt;&amp;gt; [A.java][execute] command:ls -alh
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thought I can get the code worked, I do not know how to explain the parameter exposed in the pointcut (e.g. p(String command)) and advice (e.g. around(String command)).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What I understand is that
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Since the execution flow is
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; new A().execute(&amp;quot;ls -lah&amp;quot;) [Main.java] -&amp;gt; public void execute(String c) [A.java]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; therefore, execution of the method `new A().execute(&amp;quot;ls -alh&amp;quot;)' triggers the around() advice, which passes in a value `ls -lah' (as the variable command). That value `ls -alh' passes to pointcut p(), which also takes a variable named command. And that pointcut p() tries to capture the execution of a method specified as `* example.A.execute(String)' and its argument must be `command.'
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Is this explanation correct?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I found out there is something not right for me, but I am not aware the part that I do not understand.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I appreciate any advice.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you very much.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Send instant messages to your online friends &lt;a href=&quot;http://uk.messenger.yahoo.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://uk.messenger.yahoo.com&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; aspectj-users@eclipse.org
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;aspectj-users@eclipse.org
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Newbie-question-about-paramter-exposure.-tp26077620p26081713.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26079736</id>
	<title>Re: declare @method syntax - is composite signature  allowed??</title>
	<published>2009-10-27T08:29:03Z</published>
	<updated>2009-10-27T08:29:03Z</updated>
	<author>
		<name>Andy Clement</name>
	</author>
	<content type="html">Hey,
&lt;br&gt;&lt;br&gt;Any NPE from the compiler is a bug. &amp;nbsp;I presume you have defined the
&lt;br&gt;Setter annotation? (ie. it must exist as a definition in order to
&lt;br&gt;succeed)
&lt;br&gt;&lt;br&gt;I raised this problem as &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=293457&lt;/a&gt;&lt;br&gt;&lt;br&gt;Due to it failing in the hierarchy building code, it may behave better
&lt;br&gt;on the command line where the model does not get constructed.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;Andy
&lt;br&gt;&lt;br&gt;2009/10/27 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Andy,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for responding.  I tried the approach you are suggesting, unfortunately I'm getting the following:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; java.lang.NullPointerException
&lt;br&gt;&amp;gt; at org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder.visit(AsmHierarchyBuilder.java:548)
&lt;br&gt;&amp;gt; at org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:214)
&lt;br&gt;&amp;gt; at org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1246)
&lt;br&gt;&amp;gt; at org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(Compilatio ... oBuildJob.run(AutoBuildJob.java:238)
&lt;br&gt;&amp;gt; at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Compile error: NullPointerException thrown: null
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Here's the aspect I'm using:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; package com.citi.gdos.smart.applib.service.cache;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; import org.springmodules.cache.annotations.Cacheable;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; public aspect CachingIntroduction {
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;        declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt;                @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Am I doing something wrong?  Do I need a nightly build perhaps for this to work?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users-bounces@...&lt;/a&gt;] On Behalf Of Andy Clement
&lt;br&gt;&amp;gt; Sent: Tuesday, October 27, 2009 9:58 AM
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Re: [aspectj-users] declare @method syntax - is composite signature allowed??
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hi Simeon,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This restriction you've uncovered was actually only recently raised as this enhancement:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=287613&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To support it I need to change the serialized form of the attributes - I try not to do this often but for other reasons (optimization) I may be changing the format in 1.6.7 so I will be looking at it in that timeframe.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;                public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;                        @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; a clunky approach might be:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; declare @method: public * *..I*Dao+.set*(..): @Setter; declare @method: !@Setter public * *..I*Dao+.*(..):
&lt;br&gt;&amp;gt; @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; but I know that's not great...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andy
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 2009/10/26 Leyzerzon, Simeon &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;simeon.leyzerzon@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; I have a hierarchy of DAO classes into which I'm introducing an @Cacheable annotation via something like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;                public * *..I*Dao+.*(..) :
&lt;br&gt;&amp;gt;&amp;gt;                        @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The problem is, we need to filter out more than is specified by this one signature pattern, and I'm not sure that a composite pattern is allowed in this type of expression.  When I tried something like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; declare @method :
&lt;br&gt;&amp;gt;&amp;gt;                public * *..I*Dao+.*(..) &amp;&amp; !public * *..I*Dao+.set*(..):
&lt;br&gt;&amp;gt;&amp;gt;                        @Cacheable(modelId=&amp;quot;fooModel&amp;quot;);
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm getting compile errors saying:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Syntax error on token &amp;quot;&amp;&amp;&amp;quot;, &amp;quot;;&amp;quot; expected
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I also tried to define composite pointcuts representing the joint points I'm interested in (basically I want to exclude 'jdbcTemplate' and 'slq' Spring specific setters from the places where annotation is introduced) but declaration syntax doesn't seem to like it either.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What would be a good approach in the use case I described?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm using compile time weaving via Ant.  AspectJ version is 1.6
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Thank you in advance,
&lt;br&gt;&amp;gt;&amp;gt; Simeon
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; aspectj-users mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;_______________________________________________
&lt;br&gt;aspectj-users mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26079736&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;aspectj-users@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/aspectj-users&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://dev.eclipse.org/mailman/listinfo/aspectj-users&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/declare-%40method-syntax---is-composite-signature-allowed---tp26067271p26079736.html" />
</entry>

</feed>
