diff options
-rw-r--r-- | loadtime/src/aspectj_1_5_0.dtd | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/loadtime/src/aspectj_1_5_0.dtd b/loadtime/src/aspectj_1_5_0.dtd new file mode 100644 index 000000000..86bc43d51 --- /dev/null +++ b/loadtime/src/aspectj_1_5_0.dtd @@ -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 +> |