[jboss-cvs] JBossAS SVN: r71180 - projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Mar 23 21:21:05 EDT 2008


Author: flavia.rainone at jboss.com
Date: 2008-03-23 21:21:05 -0400 (Sun, 23 Mar 2008)
New Revision: 71180

Modified:
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/AllSearcher.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ConjunctiveSearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/DisjunctiveSearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/EmptySearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/JoinPointGraph.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ParsedSearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/PointcutDelegateSearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyImpl.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyParser.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/Searcher.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SimpleSearchKey.java
   projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/TreeInsertionUtil.java
Log:
[JBAOP-508] Refactoring.

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/AllSearcher.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/AllSearcher.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/AllSearcher.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -52,9 +52,9 @@
    public AllSearcher()
    {
       this.allMethodExecutions = new BehaviorSearcher("* *(*)",
-            SearchKeyParser.EMPTY_ATTRIBUTES, SearchKeyParser.EMPTY_EXCEPTIONS, null, true);
+            ParsedSearchKey.EMPTY_ATTRIBUTES, ParsedSearchKey.EMPTY_EXCEPTIONS, null, true);
       this.allMethodExecutions.setSearchType(BehaviorSearcher.SearchType.EXECUTION);
-      this.allFieldAccesses = new FieldSearcher("*", SearchKeyParser.EMPTY_ATTRIBUTES, null);
+      this.allFieldAccesses = new FieldSearcher("*", ParsedSearchKey.EMPTY_ATTRIBUTES, null);
       this.allFieldAccesses.setSearchType(FieldSearcher.SearchType.ALL);
    }
 

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ConjunctiveSearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ConjunctiveSearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ConjunctiveSearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -34,81 +34,77 @@
  */
 public class ConjunctiveSearchKey extends ParsedSearchKey
 {
-   private ParsedSearchKey searchKey1;
-   private ParsedSearchKey searchKey2;
+   private SearchKey searchKey1;
+   private SearchKey searchKey2;
    
-   public ConjunctiveSearchKey(ParsedSearchKey searchKey1, ParsedSearchKey searchKey2)
+   public ConjunctiveSearchKey(SearchKey searchKey1, ParsedSearchKey searchKey2)
    {
       this.searchKey1 = searchKey1;
       this.searchKey2 = searchKey2;
    }
 
-   public void addTypeRestriction(TypeFilter typeRestriction)
+   public void addTypeFilter(TypeFilter typeRestriction)
    {
-      searchKey2.addTypeRestriction(typeRestriction);
+      ((ParsedSearchKey) searchKey2).addTypeFilter(typeRestriction);
    }
 
-   public void addWithinRestriction(WithinSearcher withinRestriction)
+   public void addWithinSearcher(WithinSearcher withinRestriction)
    {
-      searchKey2.addWithinRestriction(withinRestriction);
+      ((ParsedSearchKey) searchKey2).addWithinSearcher(withinRestriction);
    }
 
-   public String getClassExpression()
+   public boolean hasSearcher()
    {
-      return searchKey2.getClassExpression();
+      return ((ParsedSearchKey) searchKey2).hasSearcher();
    }
 
    public void setClassExpression(String className, boolean instanceOf)
    {
-      searchKey2.setClassExpression(className, instanceOf);
+      ((ParsedSearchKey) searchKey2).setClassExpression(className, instanceOf);
    }
 
-   public void setClassNodeSearcher(Searcher<ClassNode> classNodeSearcher)
+   public void setSearcher(Searcher<ClassNode> classNodeSearcher)
    {
-      searchKey2.setClassNodeSearcher(classNodeSearcher);
+      ((ParsedSearchKey) searchKey2).setSearcher(classNodeSearcher);
    }
 
-   public void addNegativeSearchKey(ParsedSearchKey searchKey)
+   public void addNegativeSearchKey(SearchKey searchKey)
    {
-      searchKey2.addNegativeSearchKey(searchKey);
+      ((ParsedSearchKey) searchKey2).addNegativeSearchKey(searchKey);
    }
 
    public ParsedSearchKey finishParsing()
    {
-      this.searchKey2 = this.searchKey2.finishParsing();
+      this.searchKey2 = ((ParsedSearchKey) searchKey2).finishParsing();
       return this;
    }
 
    public Object getLastAddedElement()
    {
-      return this.searchKey2.getLastAddedElement();
+      return ((ParsedSearchKey) searchKey2).getLastAddedElement();
    }
 
    public void merge(SimpleSearchKey simpleSearchKey)
    {
-      this.searchKey2.merge(simpleSearchKey);
+      ((ParsedSearchKey) searchKey2).merge(simpleSearchKey);
    }
 
    public void replaceNegativeSearchKey(ParsedSearchKey searchKey)
    {
-      this.searchKey2.replaceNegativeSearchKey(searchKey);
+      ((ParsedSearchKey) searchKey2).replaceNegativeSearchKey(searchKey);
    }
 
-   public void replaceTypeRestriction(TypeFilter restriction)
+   public void replaceTypeFilter(TypeFilter restriction)
    {
-      this.searchKey2.replaceTypeRestriction(restriction);
+      ((ParsedSearchKey) searchKey2).replaceTypeFilter(restriction);
    }
 
-   public void replaceWithinRestriction(WithinSearcher restriction)
+   public void replaceWithinSearcher(WithinSearcher restriction)
    {
-      this.searchKey2.replaceWithinRestriction(restriction);
+      ((ParsedSearchKey) searchKey2).replaceWithinSearcher(restriction);
    }
 
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#search(org.jboss.aop.joinpoint.graph.tree.Tree, java.util.Collection)
-    */
-   @Override
-   void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
+   public void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
    {
       Set<JoinPointInfo> firstResult = new HashSet<JoinPointInfo>();
       this.searchKey1.search(classTree, firstResult);

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/DisjunctiveSearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/DisjunctiveSearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/DisjunctiveSearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -32,78 +32,77 @@
  */
 public class DisjunctiveSearchKey extends ParsedSearchKey
 {
-   private ParsedSearchKey searchKey1;
-   private ParsedSearchKey searchKey2;
+   private SearchKey searchKey1;
+   private SearchKey searchKey2;
    
-   public DisjunctiveSearchKey(ParsedSearchKey searchKey1, ParsedSearchKey searchKey2)
+   public DisjunctiveSearchKey(SearchKey searchKey1, SearchKey searchKey2)
    {
       this.searchKey1 = searchKey1;
       this.searchKey2 = searchKey2;
    }
 
-   public void addTypeRestriction(TypeFilter typeRestriction)
+   public void addTypeFilter(TypeFilter typeRestriction)
    {
-      searchKey2.addTypeRestriction(typeRestriction);
+      ((ParsedSearchKey) searchKey2).addTypeFilter(typeRestriction);
    }
 
-   public void addWithinRestriction(WithinSearcher withinRestriction)
+   public void addWithinSearcher(WithinSearcher withinRestriction)
    {
-      searchKey2.addWithinRestriction(withinRestriction);
+      ((ParsedSearchKey) searchKey2).addWithinSearcher(withinRestriction);
    }
 
-   public String getClassExpression()
+   public boolean hasSearcher()
    {
-      return searchKey2.getClassExpression();
+      return ((ParsedSearchKey) searchKey2).hasSearcher();
    }
 
    public void setClassExpression(String className, boolean instanceOf)
    {
-      searchKey2.setClassExpression(className, instanceOf);
+      ((ParsedSearchKey) searchKey2).setClassExpression(className, instanceOf);
    }
 
-   public void setClassNodeSearcher(Searcher<ClassNode> classNodeSearcher)
+   public void setSearcher(Searcher<ClassNode> classNodeSearcher)
    {
-      searchKey2.setClassNodeSearcher(classNodeSearcher);
+      ((ParsedSearchKey) searchKey2).setSearcher(classNodeSearcher);
    }
 
-   public void addNegativeSearchKey(ParsedSearchKey searchKey)
+   public void addNegativeSearchKey(SearchKey searchKey)
    {
-      searchKey2.addNegativeSearchKey(searchKey);
+      ((ParsedSearchKey) searchKey2).addNegativeSearchKey(searchKey);
    }
 
-   public ParsedSearchKey finishParsing()
+   public SearchKey finishParsing()
    {
-      this.searchKey2 = this.searchKey2.finishParsing();
+      this.searchKey2 = ((ParsedSearchKey) searchKey2).finishParsing();
       return this;
    }
 
    public Object getLastAddedElement()
    {
-      return this.searchKey2.getLastAddedElement();
+      return ((ParsedSearchKey) searchKey2).getLastAddedElement();
    }
 
    public void merge(SimpleSearchKey simpleSearchKey)
    {
-      this.searchKey2.merge(simpleSearchKey);
+      ((ParsedSearchKey) searchKey2).merge(simpleSearchKey);
    }
 
    public void replaceNegativeSearchKey(ParsedSearchKey searchKey)
    {
-      this.searchKey2.replaceNegativeSearchKey(searchKey);
+      ((ParsedSearchKey) searchKey2).replaceNegativeSearchKey(searchKey);
    }
 
-   public void replaceTypeRestriction(TypeFilter restriction)
+   public void replaceTypeFilter(TypeFilter restriction)
    {
-      this.searchKey2.replaceTypeRestriction(restriction);
+      ((ParsedSearchKey) searchKey2).replaceTypeFilter(restriction);
    }
 
-   public void replaceWithinRestriction(WithinSearcher restriction)
+   public void replaceWithinSearcher(WithinSearcher restriction)
    {
-      this.searchKey2.replaceWithinRestriction(restriction);
+      ((ParsedSearchKey) searchKey2).replaceWithinSearcher(restriction);
    }
 
-   @Override
-   void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
+   public void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
    {
       this.searchKey1.search(classTree, result);
       this.searchKey2.search(classTree, result);

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/EmptySearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/EmptySearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/EmptySearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -27,117 +27,17 @@
 import org.jboss.aop.joinpoint.graph.tree.Tree;
 
 /**
+ * Searchs for nothing.
+ * 
+ * This search key is used when a parsed search key has incompatible restrictions,
+ * resulting in a search key that will find nothing in the end. 
+ * 
  * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
- *
  */
-class EmptySearchKey extends ParsedSearchKey
+class EmptySearchKey extends SearchKey
 {
-   public void addNegativeSearchKey(ParsedSearchKey searchKey)
+   public void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
    {
-   }
-
-   public void addTypeRestriction(TypeFilter typeRestriction)
-   {
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#addWithinRestriction(org.jboss.aop.joinpoint.graph.WithinSearcher)
-    */
-   public void addWithinRestriction(WithinSearcher withinRestriction)
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#getClassExpression()
-    */
-   public String getClassExpression()
-   {
-      // TODO Auto-generated method stub
-      return null;
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#getLastAddedElement()
-    */
-   public Object getLastAddedElement()
-   {
-      // TODO Auto-generated method stub
-      return null;
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#parsed()
-    */
-   public void parsed()
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#replaceNegativeSearchKey(org.jboss.aop.joinpoint.graph.ParsedSearchKey)
-    */
-   public void replaceNegativeSearchKey(ParsedSearchKey searchKey)
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#replaceTypeRestriction(org.jboss.aop.joinpoint.graph.TypeFilter)
-    */
-   public void replaceTypeRestriction(TypeFilter restriction)
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#replaceWithinRestriction(org.jboss.aop.joinpoint.graph.WithinSearcher)
-    */
-   public void replaceWithinRestriction(WithinSearcher restriction)
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#setClassExpression(java.lang.String, boolean)
-    */
-   public void setClassExpression(String className, boolean instanceOf)
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#setClassNodeSearcher(org.jboss.aop.joinpoint.graph.ClassNodeSearcher)
-    */
-   public void setClassNodeSearcher(Searcher<ClassNode> classNodeSearcher)
-   {
-      // TODO Auto-generated method stub
-
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#finishParsing()
-    */
-   public ParsedSearchKey finishParsing()
-   {
-      // TODO Auto-generated method stub
-      return null;
-   }
-
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#merge(org.jboss.aop.joinpoint.graph.SearchKeyImpl)
-    */
-   public void merge(SimpleSearchKey simpleSearchKey){}
-
-   @Override
-   void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
-   {
       // do nothing  
    }
 }
\ No newline at end of file

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/JoinPointGraph.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/JoinPointGraph.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/JoinPointGraph.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -36,6 +36,7 @@
 import org.jboss.aop.MethodByConInfo;
 import org.jboss.aop.MethodByMethodInfo;
 import org.jboss.aop.MethodInfo;
+import org.jboss.aop.joinpoint.JoinPointRegistry;
 import org.jboss.aop.joinpoint.graph.tree.Tree;
 
 /**
@@ -43,7 +44,7 @@
  * 
  * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
  */
-public class JoinPointGraph
+public class JoinPointGraph implements JoinPointRegistry
 {
    private static final JoinPointGraph INSTANCE = new JoinPointGraph();
    

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ParsedSearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ParsedSearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/ParsedSearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -1,25 +1,81 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
 package org.jboss.aop.joinpoint.graph;
 
+import java.util.ArrayList;
 import java.util.Collection;
 
-import org.jboss.aop.JoinPointInfo;
-import org.jboss.aop.joinpoint.graph.tree.Tree;
+import org.jboss.aop.pointcut.ast.ASTAttribute;
+import org.jboss.aop.pointcut.ast.ASTException;
 
 
+/**
+ * SearchKey used during search key parsing.
+ * 
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
 abstract class ParsedSearchKey extends SearchKey
 {
-   abstract String getClassExpression();
-	
-   abstract void setClassExpression(String className, boolean instanceOf);
-   abstract void addTypeRestriction(TypeFilter typeRestriction);
-   abstract void addWithinRestriction(WithinSearcher withinRestriction);
-   abstract void setClassNodeSearcher(Searcher<ClassNode> classNodeSearcher);
-   abstract void addNegativeSearchKey(ParsedSearchKey searchKey);
+   static final Collection<ASTAttribute> EMPTY_ATTRIBUTES = new ArrayList<ASTAttribute>(0);
+   static final Collection<ASTException> EMPTY_EXCEPTIONS = new ArrayList<ASTException>(0);
+   
+   
+   /**
+    * Indicates whether this parsed search key has a main searcher defined. If it has
+    * not, then this search key is partially filled, and has only filters and
+    * auxiliary searchers defined.
+    * 
+    * @return {@code true} if this parsed search key has a main searcher defined
+    */
+   abstract boolean hasSearcher();
+   
+   /**
+    * Defines the class search expression.
+    * 
+    * @param classExpression the class search expression. May contain wildcards, and
+    *                        may also start with {@code '@'} to indicate a metadata
+    *                        search
+    * @param instanceOf      if {@code true}, indicates that this search key should
+    *                        search for all classes that match
+    *                        {@code classExpression}, and for their subclasses as
+    *                        well.
+    */
+   abstract void setClassExpression(String classExpression, boolean instanceOf);
+   
+   /**
+    * 
+    * @param classNodeSearcher
+    */
+   abstract void setSearcher(Searcher<ClassNode> classNodeSearcher);
+   
+   
+   abstract void addTypeFilter(TypeFilter typeFilter);
+   abstract void addWithinSearcher(WithinSearcher withinSearcher);
+   
+   abstract void addNegativeSearchKey(SearchKey searchKey);
    abstract Object getLastAddedElement();
-   abstract void replaceTypeRestriction(TypeFilter restriction);
-   abstract void replaceWithinRestriction(WithinSearcher restriction);
+   abstract void replaceTypeFilter(TypeFilter typeFilter);
+   abstract void replaceWithinSearcher(WithinSearcher restriction);
    abstract void replaceNegativeSearchKey(ParsedSearchKey searchKey);
    abstract void merge(SimpleSearchKey simpleSearchKey);
-   abstract ParsedSearchKey finishParsing();
-   abstract void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result);
+   abstract SearchKey finishParsing();
 }
\ No newline at end of file

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/PointcutDelegateSearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/PointcutDelegateSearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/PointcutDelegateSearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -47,6 +47,11 @@
    {
       this.pointcut = pointcut;
    }
+   
+   public boolean hasSearcher()
+   {
+      throw new RuntimeException("UNEXPECTED");
+   }
 
    /* (non-Javadoc)
     * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#finishParsing()
@@ -54,41 +59,28 @@
    @Override
    ParsedSearchKey finishParsing()
    {
-      // TODO Auto-generated method stub
-      return null;
+      throw new RuntimeException("UNEXPECTED");
    }
 
-   @Override
-   String getClassExpression()
-   {
-      return "*";
-   }
-
    /* (non-Javadoc)
     * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#setClassExpression(java.lang.String, boolean)
     */
    @Override
    void setClassExpression(String className, boolean instanceOf)
    {
-      // TODO Auto-generated method stub
-      
+      throw new RuntimeException("UNEXPECTED");
    }
 
    /* (non-Javadoc)
     * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#setClassNodeSearcher(org.jboss.aop.joinpoint.graph.ClassNodeSearcher)
     */
    @Override
-   void setClassNodeSearcher(Searcher<ClassNode> classNodeSearcher)
+   void setSearcher(Searcher<ClassNode> classNodeSearcher)
    {
-      // TODO Auto-generated method stub
-      
+      throw new RuntimeException("UNEXPECTED");
    }
 
-   /* (non-Javadoc)
-    * @see org.jboss.aop.joinpoint.graph.ParsedSearchKey#search(org.jboss.aop.joinpoint.graph.tree.Tree, java.util.Collection)
-    */
-   @Override
-   void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
+   public void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
    {
       Collection<ClassNode> allClasses = classTree.search("*");
       for (ClassNode classNode: allClasses)

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -21,11 +21,15 @@
  */
 package org.jboss.aop.joinpoint.graph;
 
+import org.jboss.aop.joinpoint.graph.tree.Tree;
+
 /**
+ * The {@JoinPointGraph} search key.
+ * 
  * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
- *
  */
-public class SearchKey
+public abstract class SearchKey implements Searcher<Tree<ClassNode>>
 {
+   // make sure it does not get extended
    SearchKey(){}
 }
\ No newline at end of file

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyImpl.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyImpl.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyImpl.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -34,7 +34,7 @@
 class SearchKeyImpl extends SimpleSearchKey
 {
    private String classExpression;
-   private Searcher<ClassNode> classNodeSearcher;
+   private Searcher<ClassNode> searcher;
    
    
    public void search(Tree<ClassNode> classTree, Collection<JoinPointInfo> result)
@@ -43,61 +43,51 @@
       classTree.search(classExpression, classes);
       outer: for (ClassNode classNode: classes)
       {
-         for (TypeFilter restriction: typeRestrictions)
+         for (TypeFilter restriction: typeFilters)
          {
             if (!restriction.accept(classNode.getRepresentedClass(), classNode.getAdvisor()))
             {
                continue outer;
             }
          }
-         classNodeSearcher.search(classNode, result);
+         searcher.search(classNode, result);
       }
    }
    
-   public String getClassExpression()
-   {
-      return this.classExpression;
-   }
-   
-   
    public void setClassExpression(String className, boolean instanceOf)
    {
       this.classExpression = instanceOf? className + "+": className;
    }
    
-   Searcher<ClassNode> getClassNodeSearcher()
+   public void setSearcher(Searcher<ClassNode> searcher)
    {
-      return classNodeSearcher;
+      super.lastElementAdded = searcher;
+      this.searcher = searcher;
    }
 
-   public void setClassNodeSearcher(Searcher<ClassNode> classNodeSearcher)
+   public SearchKey finishParsing()
    {
-      this.classNodeSearcher = classNodeSearcher;
-   }
-
-   public ParsedSearchKey finishParsing()
-   {
-      if (this.withinRestrictions != null)
+      if (this.withinSearchers != null)
       {
          if (this.classExpression == null)
          {
             this.classExpression = "*";
             BehaviorSearcher behaviourSearcher =
-               new BehaviorSearcher("*", SearchKeyParser.EMPTY_ATTRIBUTES,
-                     SearchKeyParser.EMPTY_EXCEPTIONS, null, true);
+               new BehaviorSearcher("*", ParsedSearchKey.EMPTY_ATTRIBUTES,
+                     ParsedSearchKey.EMPTY_EXCEPTIONS, null, true);
             behaviourSearcher.setSearchType(BehaviorSearcher.SearchType.CALL);
             ((CallSearcher) behaviourSearcher.getInternalSearcher()).
-               setWithinRestrictionList(this.withinRestrictions);
-            this.classNodeSearcher = behaviourSearcher;
+               setWithinRestrictionList(this.withinSearchers);
+            this.searcher = behaviourSearcher;
             return this;
          }
-         if (this.classNodeSearcher instanceof BehaviorSearcher &&
-            ((BehaviorSearcher) this.classNodeSearcher).getInternalSearcher()
+         if (this.searcher instanceof BehaviorSearcher &&
+            ((BehaviorSearcher) this.searcher).getInternalSearcher()
             instanceof CallSearcher)
          {
             CallSearcher callSearcher = (CallSearcher) ((BehaviorSearcher)
-                  this.classNodeSearcher).getInternalSearcher();
-            callSearcher.setWithinRestrictionList(this.withinRestrictions);
+                  this.searcher).getInternalSearcher();
+            callSearcher.setWithinRestrictionList(this.withinSearchers);
             return this;
          }
          return new EmptySearchKey();
@@ -106,17 +96,17 @@
       {
          this.classExpression = "*";
          BehaviorSearcher behaviourSearcher =
-            new BehaviorSearcher("*", SearchKeyParser.EMPTY_ATTRIBUTES,
-                  SearchKeyParser.EMPTY_EXCEPTIONS, null, true);
+            new BehaviorSearcher("*", ParsedSearchKey.EMPTY_ATTRIBUTES,
+                  ParsedSearchKey.EMPTY_EXCEPTIONS, null, true);
          behaviourSearcher.setSearchType(BehaviorSearcher.SearchType.ALL);
-         this.classNodeSearcher = behaviourSearcher;
+         this.searcher = behaviourSearcher;
          SearchKeyImpl fieldSearchKey = new SearchKeyImpl();
          fieldSearchKey.classExpression = "*";
          FieldSearcher fieldSearcher = new FieldSearcher("*",
-               SearchKeyParser.EMPTY_ATTRIBUTES, null);
+               ParsedSearchKey.EMPTY_ATTRIBUTES, null);
          fieldSearcher.setSearchType(FieldSearcher.SearchType.ALL);
-         fieldSearchKey.classNodeSearcher = fieldSearcher;
-         fieldSearchKey.typeRestrictions = this.typeRestrictions;
+         fieldSearchKey.searcher = fieldSearcher;
+         fieldSearchKey.typeFilters = this.typeFilters;
          fieldSearchKey.negativeSearchKeys = this.negativeSearchKeys;
          return new DisjunctiveSearchKey(this, fieldSearchKey);
       }
@@ -124,8 +114,13 @@
       {
          this.classExpression = this.classExpression.substring(0,
                classExpression.length() - 1);
-         this.classNodeSearcher = new SubtypeSearcher(this.classNodeSearcher);
+         this.searcher = new SubtypeSearcher(this.searcher);
       }
       return this;
    }
+
+   boolean hasSearcher()
+   {
+      return this.searcher != null;
+   }
 }
\ No newline at end of file

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyParser.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyParser.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SearchKeyParser.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -21,7 +21,6 @@
  */
 package org.jboss.aop.joinpoint.graph;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 
@@ -74,19 +73,21 @@
 {
    private static SearchKeyParser INSTANCE = new SearchKeyParser();
    
-   static final Collection<ASTAttribute> EMPTY_ATTRIBUTES = new ArrayList<ASTAttribute>(0);
-   static final Collection<ASTException> EMPTY_EXCEPTIONS = new ArrayList<ASTException>(0);
-   
-   public static SearchKey parse(PointcutExpression pointcutExpression)
+   public static SearchKey parse(Pointcut pointcut)
    {
-      return INSTANCE.visit(pointcutExpression.getParsedExpression(), null);
+      if (pointcut instanceof PointcutExpression)
+      {
+         return INSTANCE.visit(((PointcutExpression) pointcut).getParsedExpression(),
+               null);
+      }
+      return new PointcutDelegateSearchKey(pointcut);
    }
    
    private SearchKeyParser() {}
    
    /* START AST NODE ***************************************************************/
    
-   public ParsedSearchKey visit(ASTStart node, Object data)
+   public SearchKey visit(ASTStart node, Object data)
    {
       ParsedSearchKey searchKey = new SearchKeyImpl();
       searchKey = this.visitSubNode(node, searchKey);
@@ -100,7 +101,7 @@
       ParsedSearchKey searchKey = (ParsedSearchKey) data;
       ParsedSearchKey result = (ParsedSearchKey)
          node.jjtGetChild(0).jjtAccept(this,  new SearchKeyImpl());
-      if (result.getClassExpression() == null && result instanceof SearchKeyImpl)
+      if (!result.hasSearcher() && result instanceof SearchKeyImpl)
       {
          searchKey.merge((SearchKeyImpl) result);
          return searchKey;
@@ -156,11 +157,11 @@
       {
          if (result instanceof TypeFilter)
          {
-            searchKey.addTypeRestriction((TypeFilter) result);
+            searchKey.addTypeFilter((TypeFilter) result);
          }
          else if (result instanceof WithinSearcher)
          {
-            searchKey.addWithinRestriction((WithinSearcher) result);
+            searchKey.addWithinSearcher((WithinSearcher) result);
          }
          else // result intanceof ParsedSearchKey
          {
@@ -181,7 +182,7 @@
                searchKey.getLastAddedElement() != null &&
                   searchKey.getLastAddedElement() instanceof TypeFilter)
          {
-            searchKey.replaceTypeRestriction(new DisjunctiveTypeFilter(
+            searchKey.replaceTypeFilter(new DisjunctiveTypeFilter(
                   (TypeFilter) searchKey.getLastAddedElement(),
                   (TypeFilter) result));
             return searchKey;
@@ -190,25 +191,24 @@
                searchKey.getLastAddedElement() != null &&
                searchKey.getLastAddedElement() instanceof WithinSearcher)
          {
-            searchKey.replaceWithinRestriction(new DisjunctiveWithinSearcher(
+            searchKey.replaceWithinSearcher(new DisjunctiveWithinSearcher(
                   (WithinSearcher)  searchKey.getLastAddedElement(),
                   (WithinSearcher)  result));
             return searchKey;
          }
          else if(result instanceof ParsedSearchKey)
          {
-            ParsedSearchKey resultSearchKey = (ParsedSearchKey) result;
             return new DisjunctiveSearchKey(searchKey.finishParsing(), (ParsedSearchKey) result);
          }
          else // partially filled ParsedSearchKey
          {
             if (result instanceof TypeFilter)
             {
-               newSearchKey.addTypeRestriction((TypeFilter) result);
+               newSearchKey.addTypeFilter((TypeFilter) result);
             }
             else
             {
-               newSearchKey.addWithinRestriction((WithinSearcher) result);
+               newSearchKey.addWithinSearcher((WithinSearcher) result);
             }
             return new DisjunctiveSearchKey(searchKey.finishParsing(), newSearchKey);
          }
@@ -226,12 +226,12 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
       this.setClassExpression(key, node.getClazz());
-      key.setClassNodeSearcher(AllSearcher.getInstance());
+      key.setSearcher(AllSearcher.getInstance());
       return returnValue;
    }
 
@@ -240,14 +240,14 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
       FieldSearcher searcher = (FieldSearcher) node.jjtGetChild(0).jjtAccept(this,
             key);
       searcher.setSearchType(FieldSearcher.SearchType.READ);
-      key.setClassNodeSearcher(searcher);
+      key.setSearcher(searcher);
       return returnValue;
    }
 
@@ -255,14 +255,14 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
       FieldSearcher searcher = (FieldSearcher) node.jjtGetChild(0).jjtAccept(this,
             key);
       searcher.setSearchType(FieldSearcher.SearchType.WRITE);
-      key.setClassNodeSearcher(searcher);
+      key.setSearcher(searcher);
       return returnValue;
    }
 
@@ -270,14 +270,14 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
       FieldSearcher searcher = (FieldSearcher) node.jjtGetChild(0).jjtAccept(this,
             key);
       searcher.setSearchType(FieldSearcher.SearchType.ALL);
-      key.setClassNodeSearcher(searcher);
+      key.setSearcher(searcher);
       return returnValue;
    }
 
@@ -288,14 +288,14 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
       BehaviorSearcher searcher = (BehaviorSearcher) node.jjtGetChild(0)
             .jjtAccept(this, key);
       searcher.setSearchType(BehaviorSearcher.SearchType.CONSTRUCTION);
-      key.setClassNodeSearcher(searcher);
+      key.setSearcher(searcher);
       return returnValue;
    }
    
@@ -306,14 +306,14 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
       BehaviorSearcher searcher = (BehaviorSearcher) node.jjtGetChild(0)
             .jjtAccept(this, key);
       searcher.setSearchType(BehaviorSearcher.SearchType.EXECUTION);
-      key.setClassNodeSearcher(searcher);
+      key.setSearcher(searcher);
       return returnValue;
    }
 
@@ -324,7 +324,7 @@
    {
       ParsedSearchKey key = (ParsedSearchKey) data;
       ParsedSearchKey returnValue = null;
-      if (key.getClassExpression() != null)
+      if (key.hasSearcher())
       {
          returnValue = key = new SearchKeyImpl();
       }
@@ -332,7 +332,7 @@
             .jjtAccept(this, key);
       searcher.setSearchType(BehaviorSearcher.SearchType.CALL);
       
-      key.setClassNodeSearcher(searcher);
+      key.setSearcher(searcher);
       return returnValue;
    }
    
@@ -344,11 +344,11 @@
       StringBuffer callerExpression = new StringBuffer();
       callerExpression.append("*");
       ClassExpression restriction = appendType(node.getClazz(), callerExpression);
-      callerExpression.append(".(*)");
+      callerExpression.append(".*(*)");
       if (restriction != null)
       {
          return WithinSearcherFactory.create(callerExpression.toString(),
-                  EMPTY_ATTRIBUTES, EMPTY_EXCEPTIONS,
+                  ParsedSearchKey.EMPTY_ATTRIBUTES, ParsedSearchKey.EMPTY_EXCEPTIONS,
                   new TargetTypeFilter(restriction));
       }
       return WithinSearcherFactory.create(callerExpression.toString());
@@ -361,18 +361,12 @@
 
    public Object visit(ASTHas node, Object data)
    {
-      SimpleNode n = (SimpleNode) node.jjtGetChild(0);
-      ParsedSearchKey searchKey = (ParsedSearchKey) data;
-      searchKey.addTypeRestriction(new HasBehaviorFilter(n));
-      return null;
+      return new HasBehaviorFilter((SimpleNode) node.jjtGetChild(0));
    }
 
    public Object visit(ASTHasField node, Object data)
    {
-      ASTField astField = (ASTField) node.jjtGetChild(0);
-      ParsedSearchKey searchKey = (ParsedSearchKey) data;
-      searchKey.addTypeRestriction(new HasFieldFilter(astField));
-      return null;
+      return new HasFieldFilter((ASTField) node.jjtGetChild(0));
    }
 
    
@@ -580,7 +574,8 @@
             expression.append('*');
             if (behaviourFilter != null)
             {
-               behaviourFilter = new ConjunctiveBehaviorFilter(behaviourFilter, new OverridenMethodFilter(identifier));
+               behaviourFilter = new ConjunctiveBehaviorFilter(behaviourFilter,
+                     new OverridenMethodFilter(identifier));
             }
             else
             {
@@ -606,8 +601,6 @@
       return behaviourFilter;
    }
 
-
-   
    private ClassExpression appendType(ClassExpression type, StringBuffer buffer)
    {
       // check return type
@@ -648,7 +641,7 @@
       Typedef typedef = TypedefParser.getTypedef(classExpression);
       String expression = TypedefParser.parse(typedef);
       searchKey.setClassExpression(expression, false);
-      searchKey.addTypeRestriction(new TypedefFilter(typedef));
+      searchKey.addTypeFilter(new TypedefFilter(typedef));
    }
 
    private BehaviorFilter printParameters(StringBuffer expression,
@@ -663,8 +656,8 @@
       BehaviorFilter beforeWildcardFilter = null;
       Iterator<ASTParameter> iterator = parameters.iterator();
 
-      for (ASTParameter parameter = iterator.next(); iterator.hasNext(); parameter = iterator
-            .next(), currentIndex++)
+      for (ASTParameter parameter = iterator.next(); iterator.hasNext();
+            parameter = iterator.next(), currentIndex++)
       {
          // found wildcard
          if (parameter.isAnyZeroOrMoreParameters())
@@ -728,7 +721,7 @@
    }
 
    
-   /**** OTHER METHODS ****/
+   /* OTHER METHODS ****************************************************************/
    
    public Object visit(SimpleNode node, Object data)
    {

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/Searcher.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/Searcher.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/Searcher.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -32,14 +32,15 @@
  *
  * @param <N> the target of the searcher
  */
-interface Searcher<N extends Node>
+interface Searcher<T>
 {
    /**
-    * Performs a search on {@code node}, adding the search result to
+    * Performs a search on {@code target}, adding the search result to
     * {@code searchResult}.
     * 
-    * @param node          a node in the graph
+    * @param target        the target of the search, may be a node or a tree in the
+    *                      graph
     * @param searchResult  collection to where the search result will be added.
     */
-   public void search(N node, Collection<JoinPointInfo> searchResult);
+   public void search(T target, Collection<JoinPointInfo> searchResult);
 }
\ No newline at end of file

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SimpleSearchKey.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SimpleSearchKey.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/SimpleSearchKey.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -22,54 +22,46 @@
 package org.jboss.aop.joinpoint.graph;
 
 import java.util.ArrayList;
-import java.util.Collection;
 
 /**
+ * A search key that does not wraps an internal search key.
+ * 
  * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
- *
  */
 abstract class SimpleSearchKey extends ParsedSearchKey
 {
-   protected ArrayList<TypeFilter> typeRestrictions;
-   protected ArrayList<WithinSearcher> withinRestrictions;
-   protected ArrayList<ParsedSearchKey> negativeSearchKeys;
-   private Object lastElementAdded = null;
+   protected ArrayList<TypeFilter> typeFilters;
+   protected ArrayList<WithinSearcher> withinSearchers;
+   protected ArrayList<SearchKey> negativeSearchKeys;
+   protected Object lastElementAdded = null;
    
-   public void addTypeRestriction(TypeFilter typeRestriction)
+   
+   public void addTypeFilter(TypeFilter typeRestriction)
    {
-      if (typeRestrictions == null)
+      if (typeFilters == null)
       {
-         typeRestrictions = new ArrayList<TypeFilter>(1);
+         typeFilters = new ArrayList<TypeFilter>(1);
       }
-      typeRestrictions.add(typeRestriction);
+      typeFilters.add(typeRestriction);
       lastElementAdded = typeRestriction;
    }
    
-   public Collection<TypeFilter> getTypeRestrictions()
-   {
-      return this.typeRestrictions;
-   }
    
-   public void addWithinRestriction(WithinSearcher withinRestriction)
+   public void addWithinSearcher(WithinSearcher withinSearcher)
    {
-      if (withinRestrictions == null)
+      if (withinSearchers == null)
       {
-         withinRestrictions = new ArrayList<WithinSearcher>(1);
+         withinSearchers = new ArrayList<WithinSearcher>(1);
       }
-      withinRestrictions.add(withinRestriction);
-      lastElementAdded = withinRestriction;
+      withinSearchers.add(withinSearcher);
+      lastElementAdded = withinSearcher;
    }
    
-   Collection<WithinSearcher> getWithinRestrictions()
+   public void addNegativeSearchKey(SearchKey searchKey)
    {
-      return this.withinRestrictions;
-   }
-   
-   public void addNegativeSearchKey(ParsedSearchKey searchKey)
-   {
       if (this.negativeSearchKeys != null)
       {
-         this.negativeSearchKeys = new ArrayList<ParsedSearchKey>(1);
+         this.negativeSearchKeys = new ArrayList<SearchKey>(1);
       }
       this.negativeSearchKeys.add(searchKey);
       this.lastElementAdded = searchKey;
@@ -80,43 +72,46 @@
       return this.lastElementAdded;
    }
 
-   public void replaceTypeRestriction(TypeFilter restriction)
+   public void replaceTypeFilter(TypeFilter typeFilter)
    {
-      this.typeRestrictions.set(typeRestrictions.size() -1, restriction);
+      this.typeFilters.set(typeFilters.size() -1, typeFilter);
+      this.lastElementAdded = typeFilter;
    }
 
-   public void replaceWithinRestriction(WithinSearcher restriction)
+   public void replaceWithinSearcher(WithinSearcher withinSearcher)
    {
-      this.withinRestrictions.set(withinRestrictions.size() -1, restriction);
+      this.withinSearchers.set(withinSearchers.size() -1, withinSearcher);
+      this.lastElementAdded = withinSearcher;
    }
    
    public void replaceNegativeSearchKey(ParsedSearchKey searchKey)
    {
       this.negativeSearchKeys.set(negativeSearchKeys.size() -1, searchKey);
+      this.lastElementAdded = searchKey;
    }
    
    public void merge(SimpleSearchKey simpleSearchKey)
    {
-      if (simpleSearchKey.typeRestrictions != null)
+      if (simpleSearchKey.typeFilters != null)
       {
-         if (this.typeRestrictions == null)
+         if (this.typeFilters == null)
          {
-            this.typeRestrictions = simpleSearchKey.typeRestrictions;
+            this.typeFilters = simpleSearchKey.typeFilters;
          }
          else
          {
-            this.typeRestrictions.addAll(simpleSearchKey.typeRestrictions);
+            this.typeFilters.addAll(simpleSearchKey.typeFilters);
          }
       }
-      if (simpleSearchKey.withinRestrictions != null)
+      if (simpleSearchKey.withinSearchers != null)
       {
-         if (this.withinRestrictions == null)
+         if (this.withinSearchers == null)
          {
-            this.withinRestrictions = simpleSearchKey.withinRestrictions;
+            this.withinSearchers = simpleSearchKey.withinSearchers;
          }
          else
          {
-            this.withinRestrictions.addAll(simpleSearchKey.withinRestrictions);
+            this.withinSearchers.addAll(simpleSearchKey.withinSearchers);
          }
       }
       if (simpleSearchKey.negativeSearchKeys != null)
@@ -130,5 +125,6 @@
             this.negativeSearchKeys.addAll(simpleSearchKey.negativeSearchKeys);
          }
       }
+      lastElementAdded = null;
    }
 }
\ No newline at end of file

Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/TreeInsertionUtil.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/TreeInsertionUtil.java	2008-03-24 01:19:16 UTC (rev 71179)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/joinpoint/graph/TreeInsertionUtil.java	2008-03-24 01:21:05 UTC (rev 71180)
@@ -66,8 +66,7 @@
          finally
          {
             TEMP_KEYS.clear();
-         }
-         
+         }  
       }
    }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list