You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

aspectj_1_5_0.dtd 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <!--*****************************************************************************************************************************
  2. /*******************************************************************************
  3. * Copyright (c) 2005 Contributors.
  4. * All rights reserved.
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Public License v1.0
  7. * which accompanies this distribution and is available at
  8. * http://eclipse.org/legal/epl-v10.html
  9. *
  10. * Contributors:
  11. * Alexandre Vasseur initial implementation
  12. *******************************************************************************/
  13. AspectJ 5 DTD
  14. To use this DTD, start your defintion file with
  15. <!DOCTYPE aspectj PUBLIC
  16. "-//AspectJ//DTD 1.5.0//EN"
  17. "http://.../dtd/aspectj_1_5_0.dtd">
  18. You can also use the "aliasing DTD" that matchs always the latest release of AspectJ
  19. <!DOCTYPE aspectj PUBLIC
  20. "-//AspectJ//DTD//EN"
  21. "http://.../dtd/aspectj.dtd">
  22. To not use this DTD, start your definition file with
  23. <?xml version="1.0"?>
  24. ******************************************************************************************************************************-->
  25. <!--*****************************************************************************************************************************
  26. aspectj
  27. *********************************************************************************************************************************
  28. [aspectj] defines the root element
  29. ******************************************************************************************************************************-->
  30. <!ELEMENT aspectj (
  31. weaver?,
  32. aspects?
  33. )>
  34. <!--*****************************************************************************************************************************
  35. weaver
  36. *********************************************************************************************************************************
  37. [weaver] defines the weaver configuration
  38. @options defines a command like line of option
  39. When multiple aspectj DD are found, the options are simply toggled
  40. TODO: Note: the scope of the options can be ClassLoader aware but should be assumed JVM wide
  41. ******************************************************************************************************************************-->
  42. <!ELEMENT weaver (
  43. (include | exclude | dump)*
  44. )>
  45. <!ATTLIST weaver
  46. options CDATA #IMPLIED
  47. >
  48. <!--*****************************************************************************************************************************
  49. include
  50. *********************************************************************************************************************************
  51. [include] narrows the scope of the weaver
  52. A class must be matched by ALL the include elements to be exposed to the weaver
  53. @within defines a type pattern
  54. (it is not a startWith)
  55. ******************************************************************************************************************************-->
  56. <!ELEMENT include EMPTY>
  57. <!ATTLIST include
  58. within CDATA #REQUIRED
  59. >
  60. <!--*****************************************************************************************************************************
  61. exclude
  62. *********************************************************************************************************************************
  63. [exclude] narrows the scope of the weaver
  64. A class must be matched by NONE of the exclude elements to be exposed to the weaver
  65. @within defines a type pattern
  66. (it is not a startWith)
  67. TODO should it be called @from: "<exclude from=..> instead of <exclude within=..>
  68. TODO: AND must be written that way and not with the "&&" symbol. Thus NOT and OR exists as well.
  69. ******************************************************************************************************************************-->
  70. <!ELEMENT exclude EMPTY>
  71. <!ATTLIST exclude
  72. within CDATA #REQUIRED
  73. >
  74. <!--*****************************************************************************************************************************
  75. dump
  76. *********************************************************************************************************************************
  77. [dump] control post-weaving dump to the "./_dump" folder (debugging purpose only)
  78. @within defines a type pattern
  79. (it is not a startWith)
  80. ******************************************************************************************************************************-->
  81. <!ELEMENT dump EMPTY>
  82. <!ATTLIST dump
  83. within CDATA #REQUIRED
  84. >
  85. <!--*****************************************************************************************************************************
  86. aspects
  87. *********************************************************************************************************************************
  88. [aspects] defines a set of aspects
  89. Note: include only include among Union{aspect, concrete-aspect} WITHIN THIS SOLE aop.xml
  90. ******************************************************************************************************************************-->
  91. <!ELEMENT aspects (
  92. (aspect | exclude | include | concrete-aspect)*
  93. )>
  94. <!--*****************************************************************************************************************************
  95. aspect
  96. *********************************************************************************************************************************
  97. [aspect] defines an aspect to include
  98. @name FQN of the aspect, nested class must use $
  99. ******************************************************************************************************************************-->
  100. <!ELEMENT aspect EMPTY>
  101. <!ATTLIST aspect
  102. name CDATA #REQUIRED
  103. scope CDATA #IMPLIED
  104. requires CDATA #IMPLIED
  105. >
  106. <!--*****************************************************************************************************************************
  107. exclude
  108. *********************************************************************************************************************************
  109. [exclude] defines a set of aspect to exclude
  110. @within within pattern (even from other systems / parent classloader)
  111. SAME AS FOR weaver/exclude
  112. ******************************************************************************************************************************-->
  113. <!--*****************************************************************************************************************************
  114. concrete-aspect
  115. *********************************************************************************************************************************
  116. [concrete-aspect] defines a concrete aspect from an abstract one
  117. @name FQN of the concrete aspect (use $ for nested class) [will be jit generated]
  118. @extends FQN of the abstract aspect (use $ for nested class)
  119. ******************************************************************************************************************************-->
  120. <!ELEMENT concrete-aspect (
  121. pointcut+
  122. )>
  123. <!ATTLIST concrete-aspect
  124. name CDATA #REQUIRED
  125. extends CDATA #REQUIRED
  126. precedence CDATA #IMPLIED
  127. perclause CDATA #IMPLIED
  128. >
  129. <!--*****************************************************************************************************************************
  130. pointcut
  131. *********************************************************************************************************************************
  132. [pointcut] defines a concrete pointcut within a concrete aspect from an abstract one
  133. @name name of the abstract pointcut (method name, unique in aspect class hierarchy)
  134. @expression pointcut expression
  135. Note: for argument binding, the bounded arguments must be present and bounded:
  136. <pointcut name="myAdvice(int i)" expression="... AND args(i)"/>
  137. TODO: AND must be written that way and not with the "&&" symbol. Thus NOT and OR exists as well.
  138. ******************************************************************************************************************************-->
  139. <!ELEMENT pointcut EMPTY>
  140. <!ATTLIST pointcut
  141. name CDATA #REQUIRED
  142. expression CDATA #REQUIRED
  143. >