]> source.dussan.org Git - aspectj.git/commitdiff
*** empty log message ***
authoravasseur <avasseur>
Wed, 4 May 2005 14:43:24 +0000 (14:43 +0000)
committeravasseur <avasseur>
Wed, 4 May 2005 14:43:24 +0000 (14:43 +0000)
loadtime/src/aspectj_1_5_0.dtd [new file with mode: 0644]

diff --git a/loadtime/src/aspectj_1_5_0.dtd b/loadtime/src/aspectj_1_5_0.dtd
new file mode 100644 (file)
index 0000000..86bc43d
--- /dev/null
@@ -0,0 +1,137 @@
+<!--*****************************************************************************************************************************
+/*******************************************************************************
+ * Copyright (c) 2005 Contributors.
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Alexandre Vasseur         initial implementation
+ *******************************************************************************/
+AspectJ 5 DTD
+
+To use this DTD, start your defintion file with
+       <!DOCTYPE aspectj PUBLIC
+           "-//AspectJ//DTD 1.5.0//EN"
+           "http://.../dtd/aspectj_1_5_0.dtd">
+
+You can also use the "aliasing DTD" that matchs always the latest release of AspectJ
+<!DOCTYPE aspectj PUBLIC
+    "-//AspectJ//DTD//EN"
+    "http://.../dtd/aspectj.dtd">
+
+To not use this DTD, start your definition file with
+       <?xml version="1.0"?>
+
+******************************************************************************************************************************-->
+
+
+<!--*****************************************************************************************************************************
+aspectj
+*********************************************************************************************************************************
+[aspectj] defines the root element
+******************************************************************************************************************************-->
+<!ELEMENT aspectj (
+    weaver?,
+    aspects?
+)>
+<!--*****************************************************************************************************************************
+weaver
+*********************************************************************************************************************************
+[weaver] defines the weaver configuration
+@options defines a command like line of option
+    When multiple aspectj DD are found, the options are simply toggled
+    TODO: Note: the scope of the options can be ClassLoader aware but should be assumed JVM wide
+******************************************************************************************************************************-->
+<!ELEMENT weaver (
+    (include | exclude)*
+)>
+<!ATTLIST weaver
+    options CDATA #IMPLIED
+>
+<!--*****************************************************************************************************************************
+include
+*********************************************************************************************************************************
+[include] narrows the scope of the weaver
+A class must be matched by ALL the include elements to be exposed to the weaver
+@within defines a type pattern
+    (it is not a startWith)
+******************************************************************************************************************************-->
+<!ELEMENT include EMPTY>
+<!ATTLIST include
+    within CDATA #REQUIRED
+>
+<!--*****************************************************************************************************************************
+exclude
+*********************************************************************************************************************************
+[exclude] narrows the scope of the weaver
+A class must be matched by NONE of the exclude elements to be exposed to the weaver
+@within defines a type pattern
+    (it is not a startWith)
+    TODO should it be called @from: "<exclude from=..>  instead of <exclude within=..>
+    TODO: AND must be written that way and not with the "&&" symbol. Thus NOT and OR exists as well.
+******************************************************************************************************************************-->
+<!ELEMENT exclude EMPTY>
+<!ATTLIST exclude
+    within CDATA #REQUIRED
+>
+<!--*****************************************************************************************************************************
+aspects
+*********************************************************************************************************************************
+[aspects] defines a set of aspects
+TODO we were about to use include but it is already used for weaver scope with "within" which is not relevant
+for aspects. I (AV) decided to use only aspect and provide include= thru name, and exclude= as exclude.
+see sample.
+******************************************************************************************************************************-->
+<!ELEMENT aspects (
+    (aspect | exclude | concrete-aspect)*
+)>
+<!--*****************************************************************************************************************************
+aspect
+TODO: did not used include since already used in weaver/include@within and @within does not makes sense
+*********************************************************************************************************************************
+[aspect] defines an aspect to include
+    @name   FQN of the aspect, nested class must use $
+******************************************************************************************************************************-->
+<!ELEMENT aspect EMPTY>
+<!ATTLIST aspect
+    name CDATA #REQUIRED
+>
+<!--*****************************************************************************************************************************
+exclude
+*********************************************************************************************************************************
+[exclude] defines a set of aspect to exclude
+    @within within pattern (even from other systems / parent classloader)
+SAME AS FOR weaver/exclude
+******************************************************************************************************************************-->
+<!--*****************************************************************************************************************************
+concrete-aspect
+*********************************************************************************************************************************
+[concrete-aspect] defines a concrete aspect from an abstract one
+    @name   FQN of the concrete aspect (use $ for nested class) [will be jit generated]
+    @extends FQN of the abstract aspect (use $ for nested class)
+******************************************************************************************************************************-->
+<!ELEMENT concrete-aspect (
+    pointcut+
+)>
+<!ATTLIST concrete-aspect
+    name CDATA #REQUIRED
+    extends CDATA #REQUIRED
+>
+<!--*****************************************************************************************************************************
+pointcut
+*********************************************************************************************************************************
+[pointcut] defines a concrete pointcut within a concrete aspect from an abstract one
+    @name   name of the abstract pointcut (method name, unique in aspect class hierarchy)
+    @expression pointcut expression
+        Note: for argument binding, the bounded arguments must be present and bounded:
+        <pointcut name="myAdvice(int i)" expression="... AND args(i)"/>
+        TODO: AND must be written that way and not with the "&&" symbol. Thus NOT and OR exists as well.
+******************************************************************************************************************************-->
+<!ELEMENT pointcut EMPTY>
+<!ATTLIST pointcut
+    name CDATA #REQUIRED
+    expression CDATA #REQUIRED
+>