blob: 6dd7bd23ca1f63b3b9d79c498c45a83990f22b22 [file] [log] [blame]
<!--*****************************************************************************************************************************
/*******************************************************************************
* 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 definition file with
<!DOCTYPE aspectj PUBLIC
"-//AspectJ//DTD 1.5.0//EN"
"http://www.eclipse.org/aspectj/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://www.eclipse.org/aspectj/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 | dump)*
)>
<!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
>
<!--*****************************************************************************************************************************
dump
*********************************************************************************************************************************
[dump] control post-weaving dump to the "./_dump" folder (debugging purpose only)
@within defines a type pattern
(it is not a startWith)
******************************************************************************************************************************-->
<!ELEMENT dump EMPTY>
<!ATTLIST dump
within CDATA #REQUIRED
>
<!--*****************************************************************************************************************************
aspects
*********************************************************************************************************************************
[aspects] defines a set of aspects
Note: include only include among Union{aspect, concrete-aspect} WITHIN THIS SOLE aop.xml
******************************************************************************************************************************-->
<!ELEMENT aspects (
(aspect | exclude | include | concrete-aspect)*
)>
<!--*****************************************************************************************************************************
aspect
*********************************************************************************************************************************
[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
precedence CDATA #IMPLIED
>
<!--*****************************************************************************************************************************
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
>