diff options
author | Alexander Kriegisch <Alexander@Kriegisch.name> | 2024-01-04 08:13:04 +0700 |
---|---|---|
committer | Alexander Kriegisch <Alexander@Kriegisch.name> | 2024-01-06 10:09:11 +0100 |
commit | 0065b755292708d6fd27c067564ecef2b10ede04 (patch) | |
tree | 2a88188271fe2910fd26c5b8536f39fabe111168 /docs/pdguide | |
parent | ba6058a4007f937c3d32a6022446edaa149a0d1d (diff) | |
download | aspectj-0065b755292708d6fd27c067564ecef2b10ede04.tar.gz aspectj-0065b755292708d6fd27c067564ecef2b10ede04.zip |
Delete 50+ XML DocBook resource files
in favour of the already existing asciidoc ones.
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'docs/pdguide')
-rw-r--r-- | docs/pdguide/ajcore.xml | 198 | ||||
-rw-r--r-- | docs/pdguide/aspectj-docs.css | 89 | ||||
-rw-r--r-- | docs/pdguide/ltwdump.xml | 73 | ||||
-rw-r--r-- | docs/pdguide/messages.xml | 385 | ||||
-rw-r--r-- | docs/pdguide/pdguide.xml | 76 | ||||
-rw-r--r-- | docs/pdguide/pointcuts.xml | 162 | ||||
-rw-r--r-- | docs/pdguide/trace.xml | 186 |
7 files changed, 0 insertions, 1169 deletions
diff --git a/docs/pdguide/ajcore.xml b/docs/pdguide/ajcore.xml deleted file mode 100644 index 7207df3cc..000000000 --- a/docs/pdguide/ajcore.xml +++ /dev/null @@ -1,198 +0,0 @@ -<chapter id="ajcore" xreflabel="AspectJ Core Files"> - <title>AspectJ Core Files</title> - - <sect1 id="ajcore-introduction"> - <title>Introduction</title> - - <para> When the compiler terminates abnormally, either because a particular kind of message was - issued or an exception was thrown, an AspectJ core file will be produced. You will - find it the working directory of the compiler and it will have a name that contains - the date and time that the file was produced - e.g. <literal>ajcore.20060810.173655.626.txt</literal>. The file contains details - of the problem such as the exception thrown as well as information about the - environment such as operating system and Java version. When submitting a bug, - include this file whenever it is available.</para> - - <sect2 id="configuration" xreflabel="configuration"> - <title>Configuring dump files</title> - - <para> By default AspectJ will only create an <literal>ajcore</literal> file - when an unexpected exception is thrown by the weaver or an - <literal>abort</literal> message is - issued. However it is possible to disable this feature or enable files to - be produced under different circumstances. The table below lists the System - properties that can be used to configure <literal>ajcore</literal> files. </para> - <informaltable> - <tgroup cols="3"> - <thead> - <row> - <entry>Property</entry> - <entry>Default</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry> - <literal>org.aspectj.weaver.Dump.exception</literal> - </entry> - <entry> - <literal>true</literal> - </entry> - <entry> - Generate an <literal>ajcore</literal> files when an exception thrown. - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.weaver.Dump.condition</literal> - </entry> - <entry> - <literal>abort</literal> - </entry> - <entry> - Message kind for which to generate <literal>ajcore</literal> - e.g. <literal>error</literal>. - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.dump.directory</literal> - </entry> - <entry> - <literal>none</literal> - </entry> - <entry> - The directory used for ajcore files. - </entry> - </row> - </tbody> - </tgroup> - </informaltable> - </sect2> - - <sect2 id="ajcore-examples" xreflabel="AJCore File Examples"> - <title>AJCore File Examples</title> - - <para> Below is an extract from an <literal>ajcore</literal> file. You will see - details of the dump configuration as well as the exception (with stack trace) that - is the source of the problem and any messages issued by the compiler. Most importantly - the exact version of AspectJ is included. </para> - <programlisting><![CDATA[ ----- AspectJ Properties --- -AspectJ Compiler DEVELOPMENT built on Tuesday Jul 25, 2006 at 13:00:09 GMT ----- Dump Properties --- -Dump file: ajcore.20060810.173655.626.txt -Dump reason: java.lang.NoClassDefFoundError -Dump on exception: true -Dump at exit condition: abort ----- Exception Information --- -java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory - at org.aspectj.weaver.tools.CommonsTraceFactory.<init>(CommonsTraceFactory.java:17) - at java.lang.Class.newInstance0(Native Method) - at java.lang.Class.newInstance(Class.java:232) - at org.aspectj.weaver.tools.TraceFactory.<clinit>(TraceFactory.java:35) - at org.aspectj.weaver.World.<clinit>(World.java:114) - at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:679) - at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:224) - at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:164) - at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112) - at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) - at org.aspectj.tools.ajc.Main.run(Main.java:367) - at org.aspectj.tools.ajc.Main.runMain(Main.java:246) - at org.aspectj.tools.ajc.Main.main(Main.java:86) ----- System Properties --- -java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition -sun.boot.library.path=C:\jdk1.3.1_16\jre\bin -java.vm.version=1.3.1_16-b06 -java.vm.vendor=Sun Microsystems Inc. -java.vendor.url=http://java.sun.com/ -path.separator=; -java.vm.name=Java HotSpot(TM) Client VM -file.encoding.pkg=sun.io -java.vm.specification.name=Java Virtual Machine Specification -user.dir=C:\workspaces\org.aspectj\org.aspectj.ant.tests -java.runtime.version=1.3.1_16-b06 -java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment -os.arch=x86 -java.io.tmpdir=C:\DOCUME~1\IBM_user\LOCALS~1\Temp\ -line.separator= - -java.vm.specification.vendor=Sun Microsystems Inc. -java.awt.fonts= -os.name=Windows XP -java.library.path=C:\jdk1.3.1_16\jre\bin;... -java.specification.name=Java Platform API Specification -java.class.version=47.0 -os.version=5.1 -user.home=C:\Documents and Settings\IBM_user -user.timezone=Europe/London -java.awt.printerjob=sun.awt.windows.WPrinterJob -file.encoding=Cp1252 -java.specification.version=1.3 -java.class.path=C:\workspaces\org.aspectj\aj-build\dist\tools\lib\aspectjtools.jar -user.name=IBM_user -java.vm.specification.version=1.0 -java.home=C:\jdk1.3.1_16\jre -user.language=en -java.specification.vendor=Sun Microsystems Inc. -awt.toolkit=sun.awt.windows.WToolkit -java.vm.info=mixed mode -java.version=1.3.1_16 -java.ext.dirs=C:\jdk1.3.1_16\jre\lib\ext -sun.boot.class.path=C:\jdk1.3.1_16\jre\lib\rt.jar;... -java.vendor=Sun Microsystems Inc. -file.separator=\ -java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi -sun.io.unicode.encoding=UnicodeLittle -sun.cpu.endian=little -user.region=GB -sun.cpu.isalist=pentium i486 i386 ----- Command Line --- --d -C:\workspaces\org.aspectj\org.aspectj.ant.tests\IncrementalAjcTaskTest-temp --g:none --deprecation --noExit --warn:-unusedImport --nowarn --XterminateAfterCompilation --preserveAllLocals --proceedOnError --referenceInfo --source -1.3 --target -1.1 --time --verbose --classpath -C:\workspaces\org.aspectj\org.aspectj.ant.tests\..\lib\test\aspectjrt.jar --argfile -C:\workspaces\org.aspectj\taskdefs\testdata\default.lst --messageHolder -org.aspectj.bridge.MessageHandler ----- Full Classpath --- -Empty ----- Compiler Messages --- -abort ABORT -- (NoClassDefFoundError) org/apache/commons/logging/LogFactory -org/apache/commons/logging/LogFactory -java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory - at org.aspectj.weaver.tools.CommonsTraceFactory.<init>(CommonsTraceFactory.java:17) - at java.lang.Class.newInstance0(Native Method) - at java.lang.Class.newInstance(Class.java:232) - at org.aspectj.weaver.tools.TraceFactory.<clinit>(TraceFactory.java:35) - at org.aspectj.weaver.World.<clinit>(World.java:114) - at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:679) - at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:224) - at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:164) - at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112) - at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) - at org.aspectj.tools.ajc.Main.run(Main.java:367) - at org.aspectj.tools.ajc.Main.runMain(Main.java:246) - at org.aspectj.tools.ajc.Main.main(Main.java:86) -]]> </programlisting> - - </sect2> - </sect1> -</chapter> diff --git a/docs/pdguide/aspectj-docs.css b/docs/pdguide/aspectj-docs.css deleted file mode 100644 index 9c2f5d4fc..000000000 --- a/docs/pdguide/aspectj-docs.css +++ /dev/null @@ -1,89 +0,0 @@ -body { - font-family: "Lucida Grande", "Trebuchet MS", sans-serif; - line-height: 1.1em; - } - -h1 { - margin-bottom: 3px; - padding-bottom: 0px; - line-height: 1.1em; -} - -h2 { - font-size: 130%; - font-weight: bold ; - line-height: 16px; - color: #FFFFFF; - background-color: #0080C0; - padding: 5px; -} - -h3 { - font-size: 110%; - font-weight: bold ; - line-height: 14px; - color: #FFFFFF; - background-color: orange; - padding: 5px; -} - -tt { - font-size: 120%; - color: #00AAF0; - } - -tt tt { - font-size: 100%; - } - -.programlisting { - padding-top: 5px; - border: 2px solid #ccc; - background: #eee; - font-size: 120%; - color: #111199; - - } - -.term { - color: #111199; - } - -.variablelist dd { - margin-left: 18px; - padding-left: 20px; - background: url(dd_arrow.gif) no-repeat 0 2px; - } - -.toc dt { - font-size: 110%; - padding-bottom: 0px; - margin-bottom: 5px; - } - -.toc dl dd dt { - font-size: 100%; - } - -.toc dt { - font-size: 100% - margin-bottom: 0; - } - -.informaltable table { - margin-left: 5%; - } - -.informaltable th { - background-color: orange; - padding: 1px; - } - -ul li { - line-height: 1.2em; - } - -.keyword { - font-weight: bold; - color: purple; - }
\ No newline at end of file diff --git a/docs/pdguide/ltwdump.xml b/docs/pdguide/ltwdump.xml deleted file mode 100644 index 72554d043..000000000 --- a/docs/pdguide/ltwdump.xml +++ /dev/null @@ -1,73 +0,0 @@ -<chapter id="ltwdump" xreflabel="Dumping classes during load-time weaving"> - <title>Dumping classes during load-time weaving</title> - - <sect1 id="ltwdump-introduction"> - <title>Introduction</title> - - <para> - Very rarely problems may be encountered with classes that have been - load-time woven. - Symptoms will include incorrect program function or a Java exception such as - <literal>java.lang.VerifyError</literal>. - In these situations it's most helpful to include the offending class - in the bug report. When using load-time weaving the woven classes are - in memory only so to save them to disk configure - <literal>META-INF/aop.xml</literal> to dump the classes (by default - to an <literal>_ajdump</literal> subdirectory of the current working - directory). Also if the input class file is not available - (e.g. it is a generated proxy or has already been instrumented by another agent) - you can configure the weaver to dump the input classes as well. - </para> - <sect2 id="ltw-examples" xreflabel="ltwdump-configuration"> - <title>Configuring bytecode dumping in load-time weaving</title> - <para> - For details of how to configure byte-code dumping, see the - AspectJ Development Environment Guide section on - <ulink url="../devguide/ltw-configuration.html#configuring-load-time-weaving-with-aopxml-files"> - Configuring Load-time Weaving</ulink>. - Following is a simple example. - </para> - </sect2> - - <sect2 id="ltwdump-examples" xreflabel="LTW Dump Examples"> - <title>LTW Dump Examples</title> - - <para> The following <literal>META-INF/aop.xml</literal> will - weave classes in the <literal>com.foo</literal> package (and subpackages) but not - CGLIB generated classes in the <literal>com.foo.bar</literal> package (and subpackages). - It will also ensure all - woven byte-code is dumped both before and after weaving. </para> - <programlisting><![CDATA[ -<aspectj> - <aspects> - <aspect name="ataspectj.EmptyAspect"/> - </aspects> - <weaver options="-verbose -debug"> - <dump within="com.foo.bar..*" beforeandafter="true"/> - <include within="com.foo..*"/> - <exclude within="com.foo.bar..*CGLIB*"/> - </weaver> -</aspectj> -]]></programlisting> - - <para> You should see messages similar to this: </para> - - <programlisting><![CDATA[ -[WeavingURLClassLoader] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT -[WeavingURLClassLoader] info register classloader org.aspectj.weaver.loadtime.WeavingURLClassLoader -[WeavingURLClassLoader] info using configuration /C:/tempMETA-INF/aop.xml -[WeavingURLClassLoader] info register aspect ataspectj.EmptyAspect -[WeavingURLClassLoader] debug not weaving 'com.foo.bar.Test$$EnhancerByCGLIB$$12345' -[WeavingURLClassLoader] debug weaving 'com.foo.bar.Test' -]]></programlisting> - - <para> On disk you would find the following files: </para> - - <programlisting><![CDATA[ -_ajdump/_before/com/foo/bar/Test.class -_ajdump/com/foo/bar/Test.class -]]></programlisting> - - </sect2> - </sect1> -</chapter> diff --git a/docs/pdguide/messages.xml b/docs/pdguide/messages.xml deleted file mode 100644 index 9d2caf0b5..000000000 --- a/docs/pdguide/messages.xml +++ /dev/null @@ -1,385 +0,0 @@ -<chapter id="messages" xreflabel="Messages"> - <title>Messages</title> - - <sect1 id="messages-introduction"> - <title>Introduction</title> - <para> - Messages point out potential problems in the input program; some - are clearly problems (errors), but many more may depend on what - the programmer intends. To keep the noise down the latter are treated - as warnings which can be ignored by the programmer or information - which are hidden. However, when investigating - unexpected behavior it's helpful to show them. This section describes how - to configure messages, presents some problem scenarios when - compiling or doing load-time weaving, and summarizes some of the - more relevant messages. - </para> - <sect2 id="messages-introduction-config" - xreflabel="messages-configuration"> - <title>Configuring Messages</title> - <para> - The compiler offers <literal>-verbose</literal>, - <literal>-warning</literal>, and <literal>-XLint</literal> options - when invoked using the command-line, Ant, or embedded in an IDE. - All options are listed in the AspectJ Development Environment Guide - sections for - <ulink url="../devguide/ajc-ref.html">Ajc</ulink> and - <ulink url="../devguide/antTasks-iajc.html">Ant Tasks</ulink>. - The <ulink url="../devguide/ltw.html">Load-time Weaving</ulink> - section describes how to use XML configuration files and - system properties to pass options to the weaver. (You can also - pass options to the weaver using system properties in build- - time weaving.) - The <literal>-verbose</literal> option has the effect of including - messages level "info", which are normally ignored. - Both <literal>warning</literal> and <literal>XLint</literal> - enable you to identify specific messages to emit, but warning - messages tend to be the same provided by the underlying Eclipse - JDT (Java) compiler, while XLint messages are emitted by the - AspectJ compiler or weaver. Obviously, during load-time weaving - only weaver messages will be emitted. Similarly, if aspects - are compiled but not woven, then only compiler messages will be - emitted. However, the usual case for the compiler/weaver working - at build time is to emit both compiler and weaver messages. - </para> - - <para> The tables below list some options, System Properties (for LTW only) and Java 5 annotations - used to control AspectJ messages. The method - of configuration depends on your environment so please refer to the relevant - documentation for - <ulink url="../devguide/ajc-ref.html">ajc</ulink>, - <ulink url="../devguide/antTasks.html">Ant</ulink> or - <ulink url="../devguide/ltw-configuration.html#weaver-options">LTW</ulink>. - </para> - - <para> - <informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>Option</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry> - <literal>-verbose</literal> - </entry> - <entry> - Show informational messages including AspectJ version - and build date. - </entry> - </row> - <row> - <entry> - <literal>-debug</literal> - </entry> - <entry> - (Load-time weaving only). Show debugging messages such as - which classes are being woven or those that are excluded. - (This is not related to the compiler -g option to - include debug information in the output .class files.) - </entry> - </row> - <row> - <entry> - <literal>-showWeaveInfo</literal> - </entry> - <entry> - Show weaving messages. - </entry> - </row> - <row> - <entry> - <literal>-Xlint</literal> - </entry> - <entry> - Control level of lint messages. - </entry> - </row> - <row> - <entry> - <literal>messageHolderClass</literal>/ - <literal>-XmessageHolderClass:</literal> - </entry> - <entry> - In Ant tasks and LTW respectively specify the class to receive all messages. - See - <ulink url="../devguide/antTasks-iajc.html#antTasks-iajc-options"> - iajc task options</ulink> or - <ulink url="../devguide/ltw-configuration.html#weaver-options"> - Weaver Options</ulink>. - </entry> - </row> - -<!-- We need full javadoc for this API - <row> - <entry> - <literal>org.aspectj.tools.Main.setMessageHolder(..)</literal> - </entry> - <entry> - Programmatic access for setting the message holder - outside of Ant. - </entry> - </row> ---> - </tbody> - </tgroup> - </informaltable> - </para> - - <para> - <informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>System Property</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry> - <literal>aj.weaving.verbose</literal> - </entry> - <entry> - Show informational messages including AspectJ version and build date - (same as <literal>-verbose</literal> option). - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.weaver.showWeaveInfo</literal> - </entry> - <entry> - Show weaving messages - (same as <literal>-showWeaveInfo</literal> option). - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.weaving.messages</literal> - </entry> - <entry> - Set this system property to enable tracing of all compiler - messages. See <xref linkend="trace-configuration"/>. - </entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - - <para> - <informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>Annotation</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry> - <literal>@SuppressAjWarnings</literal> - </entry> - <entry> - Include this is Java 5 code to suppress AspectJ - warnings associated with the next line of code. - </entry> - </row> - </tbody> - </tgroup> - </informaltable> - </para> - - </sect2> - </sect1> - <sect1 id="messages-scenarios"> - <title>Message scenarios</title> - - <sect2 id="messages-scenarios-ct"> - <title>Compile-time weaving scenarios</title> - <sect3 id="messages-scenarios-ct-adviceNotWoven"> - <title>Advice not woven</title> - <para>This means that the pointcut for the advice did not match, - and it should be debugged as described in - <xref linkend="pointcuts"/>.</para> - </sect3> - </sect2> - - <sect2 id="messages-scenarios-ltw"> - <title>Load-time weaving scenarios</title> - - <para> You can use <literal>META-INF/aop.xml</literal> to control which - messages are produced during LTW. The following example will produce - basic informational messages about the lifecyle of the weaver in - addition to any warning or error messages. </para> - - <programlisting><![CDATA[ -<aspectj> - <weaver options="-verbose"> - </weaver> -</aspectj> -]]></programlisting> - - <para>The messages indicate which <literal>META-INF/aop.xml</literal> - configurations file(s) are being used. Each message is also preceeded by the - name of the defining class loader associated with weaver. You can use this - information in a large system to distinguish between different applications each - of which will typically have its own class loader. </para> - - <programlisting><![CDATA[ -[AppClassLoader@92e78c] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT -[AppClassLoader@92e78c] info register classloader sun.misc.Launcher$AppClassLoader@92e78c -[AppClassLoader@92e78c] info using configuration /C:/temp/META-INF/aop.xml -[AppClassLoader@92e78c] info using configuration /C:/temp/META-INF/aop-ajc.xml -[AppClassLoader@92e78c] info register aspect ExceptionHandler -[AppClassLoader@92e78c] info processing reweavable type ExceptionHandler: ExceptionHandler.aj -]]></programlisting> - - <sect3 id="messages-scenarios-ltw-adviceNotWoven"> - <title>Advice not woven</title> - <para> It is often difficult to determine, especially when using load-time weaving (LTW), - why advice has not been woven. Here is a quick guide to the messages to - look for. Firstly if you use the <literal>-verbose</literal> option you - should see the following message when your aspect is registered: </para> - - <programlisting><![CDATA[ -info register aspect MyAspect -]]></programlisting> - - <para> Secondly if you use the <literal>-debug</literal> option you should - see a message indicating that you class is being woven: </para> - - <programlisting><![CDATA[ -debug weaving 'HelloWorld' -]]></programlisting> - - <para> However this does not mean that advice has actually been woven into - your class; it says that the class has been passed to the weaver. To determine - whether your pointcuts match you can use the <literal>-showWeaveInfo</literal> - option which will cause a message to be issued each time a join point is woven: </para> - - <programlisting><![CDATA[ -weaveinfo Join point 'method-execution(void HelloWorld.main(java.lang.String[]))' ... -]]></programlisting> - - <para>If advice is woven at this join point you should get the - corresponding message.</para> - </sect3> - </sect2> - </sect1> - - <sect1 id="messages-xlint"> - <title>Lint messages</title> - <para> - The table below lists some useful <literal>-Xlint</literal> messages. </para> - <informaltable> - <tgroup cols="3"> - <thead> - <row> - <entry>Message</entry> - <entry>Default</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry> - <literal>aspectExcludedByConfiguration</literal> - </entry> - <entry> - <literal>ignore</literal> - </entry> - <entry> - If an aspect is not being woven, despite being - registered, it could be that it has been excluded - by either an <literal>include</literal> or <literal>exclude</literal> - element in the - <literal>aspects</literal> section of <literal>META-INF/aop.xml</literal>. - Enable this message to determine whether an aspect has - been excluded. - </entry> - </row> - <row> - <entry> - <literal>adviceDidNotMatch</literal> - </entry> - <entry> - <literal>warning</literal> - </entry> - <entry> - Issued when advice did not potentially affect any join points. - This means the corresponding pointcut did not match any join - points in the program. This may be valid e.g., in library - aspects or code picking up error conditions, but often the - programmer simply made a mistake in the pointcut. The best - approach is to debug the pointcut. - </entry> - </row> - <row> - <entry> - <literal>invalidAbsoluteTypeName</literal> - </entry> - <entry> - <literal>warning</literal> - </entry> - <entry> - Issued when an exact type in a pointcut does not match any type - in the system. Note that this can interact with the rules for - resolving simple types, which permit unqualified names if they - are imported. - </entry> - </row> - <row> - <entry> - <literal>typeNotExposedToWeaver</literal> - </entry> - <entry> - <literal>warning</literal> - </entry> - <entry> - This means that a type which could be affected by an aspect - is not available for weaving. This happens when a class on - the classpath should be woven. - </entry> - </row> - <row> - <entry> - <literal>runtimeExceptionNotSoftened</literal> - </entry> - <entry> - <literal>warning</literal> - </entry> - <entry> - Before AspectJ 5, declare soft used to soften runtime exceptions - (unnecessarily). Since then, it does not but does issue this - warning in case the programmer did intend for the exception - to be wrapped. - </entry> - </row> - <row> - <entry> - <literal>unmatchedSuperTypeInCall</literal> - </entry> - <entry> - <literal>warning</literal> - </entry> - <entry> - Issued when a call pointcut specifies a defining type which - is not matched at the call site (where the declared type of - the reference is used, not the actual runtime type). Most - people should use - 'target(Foo) && call(void foo())' - instead. - </entry> - </row> - </tbody> - </tgroup> - </informaltable> - </sect1> - -</chapter> diff --git a/docs/pdguide/pdguide.xml b/docs/pdguide/pdguide.xml deleted file mode 100644 index 619f54052..000000000 --- a/docs/pdguide/pdguide.xml +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> - -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1//EN" - "../../lib/docbook/docbook-dtd/docbookx.dtd" -[ -<!ENTITY messages SYSTEM "messages.xml"> -<!ENTITY pointcuts SYSTEM "pointcuts.xml"> -<!ENTITY trace SYSTEM "trace.xml"> -<!ENTITY ajcore SYSTEM "ajcore.xml"> -<!ENTITY ltwdump SYSTEM "ltwdump.xml"> -]> - -<book> - <bookinfo> - <title>The AspectJ<superscript>tm</superscript> Problem Diagnosis Guide</title> - - <authorgroup> - <author> - <othername>the AspectJ Team</othername> - </author> - </authorgroup> - - <legalnotice> - <para>Copyright (c) 2006 IBM Corporation and others. - 2006 Contributors. - All rights reserved. - </para> - </legalnotice> - - <abstract> - <para> - This guide describes how to configure the AspectJ compiler/weaver to provide - information for diagnosing problems in the input programs, the - compiler/weaver or its configuration. - </para> - <para> - The AspectJ compiler and weaver can provide lots of information for diagnosing - problems in building AspectJ programs. For problems in the input program, - there are a number of default warning and error messages, as well as many - configurable "lint" messages, all of which can be emitted normally, - logged using standard facilities, or intercepted programmatically. - These are discussed in <xref linkend="messages"/>. Since most errors - relate to writing pointcuts incorrectly, there is a section on - <xref linkend="pointcuts"/>. - </para> - <para> - For problems with the compiler/weaver itself there are three facilities - that enable the AspectJ developers to resolve bugs even when it is - too hard to deliver a reproducible test case: - <orderedlist> - <listitem><para><xref linkend="trace"/> can be enabled to track progress up to the time of a failure;</para></listitem> - <listitem><para><xref linkend="ajcore"/> can give a relatively complete picture of the state of - the world at the time of a failure; and </para></listitem> - <listitem><para><xref linkend="ltwdump"/> is a way to capture both - input and output classes during load-time weaving. - </para></listitem> - </orderedlist> - </para> - <para> - This guide describes how to configure messages to get the right information - and how to configure traces, dumps, and core files. Although the compiler/weaver - operates in roughly three modes (from the command-line, embedded in an IDE, - and enabled as load-time weaving), the principles are basically the same for - all modes. The differences lie in how to set up diagnostics and what - information is likely to be relevant. - </para> - </abstract> - </bookinfo> - - &messages; - &pointcuts; - &ajcore; - &trace; - <wdump; - -</book> diff --git a/docs/pdguide/pointcuts.xml b/docs/pdguide/pointcuts.xml deleted file mode 100644 index ecf3cf662..000000000 --- a/docs/pdguide/pointcuts.xml +++ /dev/null @@ -1,162 +0,0 @@ -<chapter id="pointcuts" xreflabel="Debugging Pointcuts"> - <title>Debugging Pointcuts</title> - <sect1 id="pointcuts-introduction"> - <title>Introduction</title> - - <para> - This section describes how to write and debug pointcuts - using the usual approach of iteration and decomposition. - New users are often stumped when their advice does not match. - That means the pointcut doesn't match; they rewrite the - pointcut and it still doesn't match, with no new information. - This can be frustrating if each iteration involves building, - deploying, and testing a complex application. Learning to - break it down, particularly into parts that can be checked - at compile-time, can save a lot of time. - </para> - </sect1> - - <sect1 id="pointcuts-debugging"> - <title>Debugging pointcuts</title> - <para> -Go at it top-down and then bottom-up. Top-down, draft significant -aspects by first writing the comments to specify responsibilities. -Advice responsibility usually takes the form, "When X, do Y." -Pointcut responsibility for "When X" often takes the form, -"When [join points] [in locations] [are ...]". These []'s often -translate to named pointcuts (like `libraryCalls() && within(Client) -&& args(Context)`) which form a semantic bridge to the plain-text -meaning in a comment (e.g., `// when the client passes only context into -the library`). -This gets you to a point where you can debug the parts of the -pointcut independently. - </para> - <para> -Bottom up (to build each part), consider each primitive pointcut -designator (PCD), then the composition, and then any implicit -constraints: - <orderedlist> - <listitem><para> -What kinds of join points should it match? (constructor-call? -field-get?)? This translates to using the kinded pointcuts -(`call(..)`, `get(..)`, etc.). - </para></listitem> - <listitem><para> -Are these restricted to being lexically within something? This -translates to using `within{code}(..)`. If this is true, it should -always be used, to speed up weaving. - </para></listitem> - <listitem><para> -What runtime constraints and context should be true and available at -each join point? This translates to `this()`, `target()`, `args()`, -`cflow{below}()` and `if(..)`. - </para></listitem> - <listitem><para> -Are there any advice or implementation limitations at issue? This -involves knowing the few constraints on AspectJ imposed by Java bytecode -as listed in the AspectJ Programming Guide section on - <ulink url="../progguide/implementation.html">Implementation Notes</ulink>. - </para></listitem> - </orderedlist> - </para> - <para> - It's much faster to iterate a pointcut at compile-time - using declare warning (even better, some errors are identified - at parse-time in the latest versions of AJDT). - Start with the parts of the pointcut - that are staticly-determinable (i.e., they do not involve - the runtime PCD's listed above). If compiles themselves - take too long because of all the AspectJ weaving, then - try to only include the debugging aspect with the prototype - pointcut, and limit the scope using <literal>within(..)</literal>. - </para> - <para> - Some mistakes in primitive pointcuts: - <itemizedlist> -<listitem><para> -`this(Foo) && execution(static * *(..))`: There is no `this` in a static -context, so `this()` or `target()` should not be used in a static -context or when targetting a static context (respectively). This -happens most often when you want to say things like "all calls to Foo from Bar" -and you only pick out calls to instance methods of Foo -or you try to pick out calls from static methods of Bar. -</para></listitem> -<listitem><para> -`target(Foo) && call(new(..)`: This will never match. In -constructor-call join points, there is no target because the object -has not been created yet. -</para></listitem> -<listitem><para> -`call(* Foo.*(..))`: `Foo` refers to the compile-time type of the -invoking reference, not the implementing class. In Java before 1.4, -the compile-time type was rendered as the defining type, not the -reference type; this was corrected in 1.4 (as shown when using ajc -with the -1.4 flag) Most people should use `target(Foo) && call(...)`. -</para></listitem> -<listitem><para> -`execution(* Foo.bar(..))`: An execution join point for Foo is -always within Foo, so this won't pick out any overrides of bar(..). -Use `target(Foo) && execution(* bar(..))` for instance methods. -</para></listitem> -<listitem><para> -`within(Foo)`: anonymous types are not known at weave-time to be -within the lexically-enclosing type (a limitation of Java bytecode). -</para></listitem> - </itemizedlist> - </para> - <para> - Some mistakes in composition: - <itemizedlist> -<listitem><para> -`call(* foo(Bar, Foo)) && args(Foo)`: This will never match. -The parameters in `args(..)` are position-dependent, so `args(Foo)` only picks - out join points where there is only one argument possible, of type Foo. -Use the indeterminate-arguments operator '..' as needed, e.g., `args(Foo, ..)`. -</para></listitem> -<listitem><para> -`call(* foo()) && execution(* foo())`: This will never match. Each -pointcut must be true at each join point matched. For a union of different -kinds of join points (here, call or execution), use '||'. -E.g., to match both method-call and field-get join points, use - `call(* ...) || get(...)`. -</para></listitem> -</itemizedlist> - </para> - <para> - Some mistakes in implicit advice constraints: - <itemizedlist> -<listitem><para> -`after () returning (Foo foo) : ...`: after advice can bind the -returned object or exception thrown. That effectively acts like -`target()`, `this()`, or `args()` in restricting when the advice -runs based on the runtime type of the bound object, even though it is -not explicitly part of the pointcut. -</para></listitem> -</itemizedlist> - </para> - <para> - Some mistakes in implementation requirements: - <itemizedlist> -<listitem><para> -`ajc` has to control the code for a join point in order to implement -the join point. This translates to an implicit `within({code under -the control of the compiler})` for all join points, with additional -caveat for some join points. Take exception handlers, for example: -there is no way to be sure from the bytecode where the original handler -ends, so `ajc` can't implement after advice on handler join points. -(Since these are on a per-join-point basis, they should be considered -for each corresponding primitive pointcut designator.) Unlike the -mistakes with the primitive PCDs above, the compiler will emit an -error for these caveats. -</para></listitem> -<listitem><para> -`call(@SuperAnnotation Subclass.meth()`: Annotations are not inherited -by default, so e.g., if the pointcut specifies an annotation, then -subclass implementations of that method will not be matched. -</para></listitem> -</itemizedlist> - </para> - - - </sect1> -</chapter> diff --git a/docs/pdguide/trace.xml b/docs/pdguide/trace.xml deleted file mode 100644 index 6ff915738..000000000 --- a/docs/pdguide/trace.xml +++ /dev/null @@ -1,186 +0,0 @@ -<chapter id="trace" xreflabel="Tracing"> - <title>Tracing</title> - - <sect1 id="trace-introduction"> - <title>Introduction</title> - - <para> - The AspectJ developers have instrumented the compiler/weaver with - many "trace" messages for their own debugging use. These remain in - the production releases because tracing helps when it is hard to - isolate the problem in a test case. This sections describes how - to enable tracing so you can provide trace information on bug reports. - </para> - <para> - The usual approach to opening a report on Bugzilla is to describe the symptoms of the - problem and attach a simple testcase. This allows the AspectJ team to try and reproduce the problem in - an attempt to fix it as well as improve the test suite. Unfortunately it may not be possible - to produce such a testcase either because your program is too large or is commercially sensitive. Alternatively - the problem may relate to your specific environment where AspectJ is being used and will not be - reproducible by the AspectJ team. In each of these situations you can produce a - trace of the compiler when the problem occurs instead. This can then be attached to the bug report. </para> - - <sect2 id="trace-configuration" xreflabel="Configuring Tracing"> - <title>Configuring Tracing</title> - - <para> When available (Java 5 or later) AspectJ will use the - <ulink url="http://java.sun.com/j2se/1.5.0/docs/guide/logging/index.html"> - java.util.logging</ulink> infrastructure - configured using a <literal>logging.properties</literal> file. By default only error - and fatal events will be logged but less severe warnings as well as fine-grained - method entry and exit events can be obtained using the appropriate configuration. All - regular compiler messages can also be logged through the infrastructure by setting the - <literal>org.aspectj.weaving.messages</literal> System property. </para> - - <para> If you are running the AspectJ compiler/weaver under JDK 1.4 or earlier, - AspectJ will use a simple built-in trace - infrastructure that logs to stderr. This is enabled by setting the - <literal>org.aspectj.weaving.tracing.enabled</literal> System property. You may also override - the default behaviour or provide your own trace implementation using the - <literal>org.aspectj.weaving.tracing.factory</literal> System property. </para> - - <para> The table below lists the System properties that can be used to configure tracing. </para> - <informaltable> - <tgroup cols="2"> - <thead> - <row> - <entry>Property</entry> - <entry>Description</entry> - </row> - </thead> - <tbody> - <row> - <entry> - <literal>org.aspectj.tracing.debug</literal> - </entry> - <entry> - Enable simple debugging of the trace infrastructure itself. - <para> Default: <literal>false</literal>. </para> - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.tracing.enabled</literal> - </entry> - <entry> - Enable the built-in AspectJ trace infrastructure. - <para> Default: <literal>false</literal>. </para> - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.tracing.factory</literal> - </entry> - <entry> - Select trace infrastructure. Specify the fully qualified class name - of the <literal>org.aspectj.weaver.tools.TraceFactory</literal> - interface to use a custom infrastructure. Specify a value of - <literal>default</literal> to force AspectJ to use it's - built-in infrastructure. - </entry> - </row> - <row> - <entry> - <literal>org.aspectj.tracing.messages</literal> - </entry> - <entry> - Enable tracing of compiler messages. The kind of messages logged - is determined by the selected trace infrastructure not the message - configuration. - <para> Default: <literal>false</literal>. </para> - </entry> - </row> - </tbody> - </tgroup> - </informaltable> - </sect2> - - <sect2 id="trace-examples" xreflabel="trace-examples"> - <title>Examples</title> - - <para> Using <literal>-Dorg.aspectj.tracing.factory=default</literal> - to force AspectJ to use its internal infrastructure, - <literal>-Dorg.aspectj.tracing.enabled=true</literal> to turn it on and - <literal>-Dorg.aspectj.tracing.messages=true</literal> to include messages - running a simple HelloWorld with LTW will generate tracing to stderr. Below - is an extract from that trace with method arguments removed. - You will notice the millisecond time stamp, - thread id and indication of entry/exit/event or message type for each line - of trace. - </para> - <programlisting><![CDATA[ -15:44:18.630 main > org.aspectj.weaver.loadtime.Aj.<init> -15:44:18.660 main < org.aspectj.weaver.loadtime.Aj.<init> -15:44:18.660 main > org.aspectj.weaver.loadtime.Aj.preProcess -15:44:18.660 main - org.aspectj.weaver.loadtime.Aj.preProcess -15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init> -15:44:18.730 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init> -15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize -15:44:18.821 main I [AppClassLoader@92e78c] info AspectJ Weaver Version DEVELOPMENT ... -15:44:18.821 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions -15:44:18.821 main I [AppClassLoader@92e78c] info register classloader ... -15:44:18.821 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions -15:44:18.841 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions -15:44:18.841 main I [AppClassLoader@92e78c] info using configuration ... -15:44:18.891 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions -15:44:19.021 main > org.aspectj.weaver.World$TypeMap.<init> -15:44:19.021 main < org.aspectj.weaver.World$TypeMap.<init> -15:44:19.021 main > org.aspectj.weaver.CrosscuttingMembersSet.<init> -15:44:19.021 main < org.aspectj.weaver.CrosscuttingMembersSet.<init> -15:44:19.021 main > org.aspectj.weaver.Lint.<init> -15:44:19.021 main < org.aspectj.weaver.Lint.<init> -15:44:19.021 main > org.aspectj.weaver.World.<init> -15:44:19.111 main < org.aspectj.weaver.World.<init> -15:44:19.201 main > org.aspectj.weaver.bcel.BcelWeaver.<init> -15:44:19.201 main < org.aspectj.weaver.bcel.BcelWeaver.<init> -15:44:19.201 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions -15:44:19.211 main > org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode -15:44:19.351 main < org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode -15:44:19.351 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects -15:44:19.351 main I [AppClassLoader@92e78c] info register aspect Aspect -15:44:19.351 main > org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect -15:44:19.501 main - org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass -15:44:19.632 main > org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect -15:44:19.792 main < org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect -15:44:19.792 main < org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect -15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects -15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions -15:44:19.792 main > org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave -15:44:19.822 main < org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave -15:44:19.822 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete... -15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete... -15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize -15:44:19.822 main > org.aspectj.weaver.tools.WeavingAdaptor.weaveClass -... -]]></programlisting> - - <para> Alternatively when running under Java 5 the <literal>logging.properties</literal> - file below could be used to configure Java Logging. The resulting - file, just containing trace for the - <literal>org.aspectj.weaver.loadtime</literal> package, will be - written to <literal>java0.log</literal> in your <literal>user.home</literal> directory. - </para> - - <programlisting><![CDATA[ -handlers= java.util.logging.FileHandler - -.level= INFO - -java.util.logging.FileHandler.pattern = %h/java%u.log -java.util.logging.FileHandler.count = 1 -java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter -java.util.logging.FileHandler.level = FINER - -org.aspectj.weaver.loadtime.level = FINER -]]></programlisting> - - <para> - By setting the System property <literal>-Dorg.aspectj.tracing.debug=true</literal> - you should see a message confirming which trace infrastructure is being used. - </para> - <programlisting><![CDATA[ -TraceFactory.instance=org.aspectj.weaver.tools.Jdk14TraceFactory@12dacd1 -]]></programlisting> - </sect2> - </sect1> -</chapter> |