[prev in list] [next in list] [prev in thread] [next in thread]
List: jboss-cvs-commits
Subject: [jboss-cvs] jboss-aop/src/main/org/jboss/aop Advisable.java AspectManager.java AspectXmlLoader.java
From: Bill Burke <patriot1burke () users ! sourceforge ! net>
Date: 2003-05-31 5:48:24
[Download RAW message or body]
User: patriot1burke
Date: 03/05/30 22:48:24
Modified: src/main/org/jboss/aop Advisable.java AspectManager.java
AspectXmlLoader.java InterceptorPointcut.java
IntroductionPointcut.java
Removed: src/main/org/jboss/aop MetaDataInterceptorPointcut.java
Log:
added metadata pointcuts for introductions.
Revision Changes Path
1.11 +3 -1 jboss-aop/src/main/org/jboss/aop/Advisable.java
Index: Advisable.java
===================================================================
RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/Advisable.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Advisable.java 29 May 2003 15:30:21 -0000 1.10
+++ Advisable.java 31 May 2003 05:48:23 -0000 1.11
@@ -16,7 +16,7 @@
* Registered with AspectManager, this class is used to mark a class or classes as \
advisable
*
* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
- * @version $Revision: 1.10 $
+ * @version $Revision: 1.11 $
*
* @see AspectManager
*/
@@ -74,6 +74,8 @@
public boolean matches(String classname)
{
+ if (classExpr == null) return false;
+ if (classname == null) return false;
Matcher m = classExpr.matcher(classname);
return m.matches();
}
1.39 +8 -36 jboss-aop/src/main/org/jboss/aop/AspectManager.java
Index: AspectManager.java
===================================================================
RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/AspectManager.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- AspectManager.java 29 May 2003 15:30:21 -0000 1.38
+++ AspectManager.java 31 May 2003 05:48:23 -0000 1.39
@@ -39,7 +39,7 @@
* to do that.
*
* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
- * @version $Revision: 1.38 $
+ * @version $Revision: 1.39 $
*/
public class AspectManager
implements Translator
@@ -468,18 +468,14 @@
{
continue;
}
- if (pointcut instanceof MetaDataInterceptorPointcut)
+ if (pointcut instanceof InterceptorPointcut)
{
- MetaDataInterceptorPointcut meta = \
(MetaDataInterceptorPointcut)pointcut;
- if (advisor.getMetaDataGroups().contains(meta.getGroup()))
+ InterceptorPointcut interceptor = (InterceptorPointcut)pointcut;
+ if (interceptor.matches(advisor, classname))
{
- meta.addAdvisor(advisor);
+ interceptor.addAdvisor(advisor);
}
}
- else if (pointcut.matches(classname))
- {
- pointcut.addAdvisor(advisor);
- }
}
}
}
@@ -492,7 +488,7 @@
while (it.hasNext())
{
IntroductionPointcut pointcut = (IntroductionPointcut)it.next();
- if (pointcut.matches(classname))
+ if (pointcut.matches(advisor, classname))
{
pointcut.addAdvisor(advisor);
}
@@ -554,31 +550,7 @@
while (it.hasNext())
{
Advisor advisor = (Advisor)it.next();
- if (pointcut.matches(advisor.getName()))
- {
- pointcut.addAdvisor(advisor);
- }
- }
- }
- synchronized(pointcuts)
- {
- pointcuts.put(pointcut.getName(), pointcut);
- }
- }
-
- /**
- * Add an interceptor pointcut with a given name
- */
- public synchronized void \
addMetaDataInterceptorPointcut(MetaDataInterceptorPointcut pointcut)
- {
- removeInterceptorPointcut(pointcut.getName());
- synchronized (advisors)
- {
- Iterator it = advisors.values().iterator();
- while (it.hasNext())
- {
- Advisor advisor = (Advisor)it.next();
- if (advisor.getMetaDataGroups().contains(pointcut.getGroup()))
+ if (pointcut.matches(advisor, advisor.getName()))
{
pointcut.addAdvisor(advisor);
}
@@ -807,7 +779,7 @@
while (it.hasNext())
{
Advisor advisor = (Advisor)it.next();
- if (pointcut.matches(advisor.getName()))
+ if (pointcut.matches(advisor, advisor.getName()))
{
pointcut.addAdvisor(advisor);
}
1.25 +22 -22 jboss-aop/src/main/org/jboss/aop/AspectXmlLoader.java
Index: AspectXmlLoader.java
===================================================================
RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/AspectXmlLoader.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- AspectXmlLoader.java 29 May 2003 15:30:21 -0000 1.24
+++ AspectXmlLoader.java 31 May 2003 05:48:23 -0000 1.25
@@ -40,7 +40,7 @@
/**
*
* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
- * @version $Revision: 1.24 $
+ * @version $Revision: 1.25 $
*/
public class AspectXmlLoader
{
@@ -191,11 +191,6 @@
throw new RuntimeException("Neither a group or class attribute is defined \
to this <interceptor-pointcut>"); }
- if (group != null && classExpr != null)
- {
- throw new RuntimeException("Cannot use both a group and class attribute \
to define an <interceptor-pointcut>");
- }
-
String fieldFilter = pointcut.getAttribute("fieldFilter");
String name = getName(pointcut, "pointcut: " + classExpr);
if (fieldFilter == null) fieldFilter = "";
@@ -206,19 +201,11 @@
String[] intrs = (String[])interceptors.toArray(new \
String[interceptors.size()]);
- if (classExpr != null)
- {
- InterceptorPointcut pcut = new InterceptorPointcut(name, classExpr, \
intrs,
- \
InterceptorFilter.parseString(fieldFilter),
- \
InterceptorFilter.parseString(methodFilter),
- \
InterceptorFilter.parseString(constructorFilter));
- AspectManager.instance().addInterceptorPointcut(pcut);
- }
- else
- {
- MetaDataInterceptorPointcut pcut = new MetaDataInterceptorPointcut(name, \
group, intrs);
- AspectManager.instance().addMetaDataInterceptorPointcut(pcut);
- }
+ InterceptorPointcut pcut = new InterceptorPointcut(name, classExpr, group, \
intrs, + \
InterceptorFilter.parseString(fieldFilter), + \
InterceptorFilter.parseString(methodFilter), + \
InterceptorFilter.parseString(constructorFilter)); + \
AspectManager.instance().addInterceptorPointcut(pcut); }
public static void undeployInterceptorStack(Element element) throws Exception
@@ -354,7 +341,7 @@
String name = getName(pointcut, "container-pointcut: " + container);
String[] intrs = (String[])interceptors.toArray(new \
String[interceptors.size()]);
- InterceptorPointcut pcut = new InterceptorPointcut(name, container, intrs, \
0, 0, 0); + InterceptorPointcut pcut = new InterceptorPointcut(name, container, \
null, intrs, 0, 0, 0); AspectManager.instance().addContainerPointcut(pcut);
}
@@ -372,9 +359,22 @@
}
public static void deployIntroductionPointcut(Element pointcut) throws \
Exception {
- String classExpr = pointcut.getAttribute("class");
String name = getName(pointcut, "introduction-pointcut");
+ String classExpr = pointcut.getAttribute("class");
+ if (classExpr != null && classExpr.trim().equals(""))
+ {
+ classExpr = null;
+ }
+ String group = pointcut.getAttribute("group");
+ if (group != null && group.trim().equals(""))
+ {
+ group = null;
+ }
+ if (group == null && classExpr == null)
+ {
+ throw new RuntimeException("Neither a group or class attribute is defined \
to this <introduction-pointcut>"); + }
String intfs = XmlHelper.getOptionalChildContent(pointcut, "interfaces");
String[] ifaces = null;
if (intfs != null)
@@ -389,7 +389,7 @@
ifaces = (String[])interfaces.toArray(new String[interfaces.size()]);
}
- IntroductionPointcut pcut = new IntroductionPointcut(name, classExpr, \
ifaces); + IntroductionPointcut pcut = new IntroductionPointcut(name, \
classExpr, group, ifaces); Iterator it = XmlHelper.getChildrenByTagName(pointcut, \
"mixin"); while (it.hasNext())
{
1.13 +18 -2 jboss-aop/src/main/org/jboss/aop/InterceptorPointcut.java
Index: InterceptorPointcut.java
===================================================================
RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/InterceptorPointcut.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- InterceptorPointcut.java 29 May 2003 15:30:22 -0000 1.12
+++ InterceptorPointcut.java 31 May 2003 05:48:23 -0000 1.13
@@ -17,7 +17,7 @@
* Registered with AspectManager.
*
* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
- * @version $Revision: 1.12 $
+ * @version $Revision: 1.13 $
*
* @see AspectManager
*
@@ -25,6 +25,7 @@
public class InterceptorPointcut extends Advisable
{
protected String name;
+ protected String group;
protected ArrayList advisors = new ArrayList();
// NOTE!!
// Keep references as strings so that
@@ -43,15 +44,17 @@
*
* @see InterceptorFilter
*/
- public InterceptorPointcut(String name, String expr, String[] factories,
+ public InterceptorPointcut(String name, String expr, String group, String[] \
factories,
int fieldFilter, int methodFilter, int \
constructorFilter) {
super(expr, fieldFilter, methodFilter, constructorFilter);
this.name = name;
+ this.group = group;
interceptorFactories = factories;
}
public String getName() { return name; }
+ public String getGroup() { return group; }
public String[] getInterceptorFactories() { return interceptorFactories; }
public void addAdvisor(Advisor advisor)
@@ -82,6 +85,19 @@
public int hashCode()
{
return name.hashCode();
+ }
+
+ public boolean matches(Advisor advisor, String classname)
+ {
+ if (expr != null)
+ {
+ if (!matches(classname)) return false;
+ }
+ if (group != null)
+ {
+ if (!advisor.getMetaDataGroups().contains(group)) return false;
+ }
+ return true;
}
}
1.8 +17 -2 jboss-aop/src/main/org/jboss/aop/IntroductionPointcut.java
Index: IntroductionPointcut.java
===================================================================
RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/IntroductionPointcut.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- IntroductionPointcut.java 26 May 2003 04:22:31 -0000 1.7
+++ IntroductionPointcut.java 31 May 2003 05:48:23 -0000 1.8
@@ -15,7 +15,7 @@
*
*
* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
- * @version $Revision: 1.7 $
+ * @version $Revision: 1.8 $
*
*/
public class IntroductionPointcut extends Advisable
@@ -39,18 +39,21 @@
}
protected String name;
+ protected String group;
protected ArrayList advisors = new ArrayList();
protected String[] interfaces;
protected ArrayList mixins = new ArrayList();
- public IntroductionPointcut(String name, String expr, String[] interfaces)
+ public IntroductionPointcut(String name, String expr, String group, String[] \
interfaces) {
super(expr, 0, 0, 0);
this.name = name;
+ this.group = group;
this.interfaces = interfaces;
}
public String getName() { return name; }
+ public String getGroup() { return group; }
public String[] getInterfaces() { return interfaces; }
public ArrayList getMixins() { return mixins; }
@@ -85,4 +88,16 @@
return name.hashCode();
}
+ public boolean matches(Advisor advisor, String classname)
+ {
+ if (expr != null)
+ {
+ if (!matches(classname)) return false;
+ }
+ if (group != null)
+ {
+ if (!advisor.getMetaDataGroups().contains(group)) return false;
+ }
+ return true;
+ }
}
-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
jboss-cvs-commits mailing list
jboss-cvs-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-cvs-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic