aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Release 1.9.21.1V1_9_21_1Alexander Kriegisch2024-02-1428-28/+28
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Release notes for 1.9.21.1Alexander Kriegisch2024-02-141-3/+55
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Bump JDT Core to 1.9.21.1Alexander Kriegisch2024-02-132-2/+2
| | | | | | Eclipse Compiler 8398f6c1210ec3 (13Feb2024) - Java21 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add tests for underscores in pointcuts on Java 21+Alexander Kriegisch2024-02-133-0/+100
| | | | | | | See also: https://github.com/eclipse-aspectj/eclipse.jdt.core/commit/5d2f2aecd2 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* ITD inner type tests: replace '_' by '__'Alexander Kriegisch2024-02-1335-97/+90
| | | | | | | | | Classes and methods named '_' are no longer allowed in ECJ, obviously also not for old target versions like 1.5. This probably is due to the added support for unnamed patterns and classes in the latest upstream JDT Core merge. Therefore, we simply rename '_' to '__'. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* AjCompilerOptions: Increment irritant levels to GROUP4Alexander Kriegisch2024-02-121-9/+9
| | | | | | | | Needs eclipse-aspectj/eclipse.jdt.core#ed6050bb. See also eclipse-jdt/eclipse.jdt.core#2006. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Adjust AjASTConverter to JDT Core StringLiteralConcatenation changesAlexander Kriegisch2024-02-121-2/+3
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Update Java 21 string patterns tests after JDT Core bugfixAlexander Kriegisch2024-02-121-6/+2
| | | | | | | https://github.com/eclipse-jdt/eclipse.jdt.core/issues/1719 was fixed. Change test to expect the correct strings for processed string pattern. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* ajc1921.xml: Add AspectJ version hint to #279 test caseAlexander Kriegisch2024-02-091-1/+1
| | | | | | | | "same class woven concurrently in parallel-capable classloader". Relates to #279. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add implementation note and JDK-8325536 link to Aj.preProcessAlexander Kriegisch2024-02-091-0/+5
| | | | | | | | See https://bugs.openjdk.org/browse/JDK-8325536. Relates to #277. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Factor out some anonymous IWeaveRequestor classes to inner classesAlexander Kriegisch2024-02-082-60/+55
| | | | | | Drive-by cosmetics in the context of #279. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Store only weaved class names in the generatedClasses mapUri Simchoni2024-02-082-16/+2
| | | | | | | | | | | | | | | The generatedClasses map contained both keys of woven classes that had generated classes associated with them, and the keys of the generated classes themselves. It seems like this map is never consulted for the generated class key - the generated class is generated from within the context of woven class loading / retransformation, and thus no transform event is generated for it by the JVM. Because of that, we do not need to guard against re-weaving it. Other uses of generatedClasses map are for full/empty tests, where the woven class key is sufficient. This change simplifies deletion of a class because we do not have to look for its associated generated classes. Relates to #279.
* Remove WeavingAdaptor.couldWeave()Uri Simchoni2024-02-081-9/+1
| | | | | | | | | | | | WeavingAdaptor.couldWeave() tested two things: whether this specific class (by its name) should be excluded from weaving, and whether the class has generated classes associated with it (in which case we avoid weaving to avoid re-creating those generated classes). However, if the class has generated classes associated, couldWeave() is not called at all because of the new wovenWithGeneratedClass() test, so we have only the name test which is now called directly. Relates to #279.
* Use previous weaving result if classes were generated during weavingUri Simchoni2024-02-081-1/+24
| | | | | | | | | | | | | | | | | | | | | | A parallel-capable class loader might load the same class multiple times in multiple threads, see https://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html. In this scenario, the JVM instrumentation mechanism invokes the AspectJ weaver twice on the same class. In simple weaving scenarios, this would just cause weaving logic to run multiple times and produce the same result for each thread, but if the weaver is generating new classes, it is undesirable to generate those classes multiple times. To avoid this, the generatedClasses map in WeavingAdaptor keeps track of classes for which inner classes were generated and avoids re-weaving them. However, before this change, if a class was found in the generated map, the weaver would return the un-woven bytes, which would cause AspectJ not to work for some of the threads. This change returns the woven bytes instead of re-running weaving. Fixes #279.
* Change value of woven class in generatedClasses mapUri Simchoni2024-02-081-1/+1
| | | | | | | | Store the woven class and not a generated (inner) class as value of the woven class name. This has no effect in this commit, because the value is not consulted at all, but will be used later on. Relates to #279.
* IT reproducing GitHub issue 279Alexander Kriegisch2024-02-089-2/+151
| | | | | | | | | Test "same class woven concurrently in parallel-capable classloader" reproduces #279. Originally taken and modified from: https://gitlab.com/urisimchoni/aspectj-parallel-issue Co-authored-by: Uri Simchoni <urisimchoni@gmail.com> Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Replace old by new AspectJ GitHub URLAlexander Kriegisch2024-02-0822-72/+72
| | | | | | github.com/eclipse/org.aspectj -> github.com/eclipse-aspectj/aspectj Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add javadoc links to ClassFileTransformer::transformAlexander Kriegisch2024-02-072-0/+4
| | | | | | Relates to #277. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Weaver returns null instead of original bytes for unwoven classesAlexander Kriegisch2024-02-077-36/+58
| | | | | | | | | | | | | | | | | | This change makes sense independently of #277, but also enables using - cp "my.jar;aspectjweaver.jar" -XX:+AllowArchivingWithJavaAgent -javaagent:aspectjweaver.jar while creating a CDS archive. Afterward, the application can be run in its woven state from the CDS archive even without '-javaagent', because the byte code was archived in its woven state ("poor man's AJC"). See https://github.com/eclipse-aspectj/aspectj/issues/277#issuecomment-1931142753 for details. Fixes #277. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Bulk update GitHub actionsAlexander Kriegisch2024-02-071-13/+9
| | | | | | | coactions/setup-xvfb no longer seems to be necessary, because XVFB is now pre-installed on Linux. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Workaround for non-English javadoc generationAlexander Kriegisch2024-02-011-0/+12
| | | | | | | | | | | | On my workstation, more recent JDKs generate partly German javadocs. Background: Avoid non-English javadoc generation. Due to https://bugs.openjdk.org/browse/JDK-8222793 reoccurring at least in JDKs 19-21 and also being broken in some older JDKs, we cannot rely on just setting the locale parameter, but also need the 'user.language' and 'user.country' parameters in 'additionalJOptions' as a workaround. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* DRY: Centralise common Maven Javadoc configurationAlexander Kriegisch2024-02-015-44/+16
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix some javadoc links in ADOCsAlexander Kriegisch2024-02-013-5/+5
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Unpack asm-commons during javadoc generationAlexander Kriegisch2024-02-012-2/+2
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Always use ":leveloffset: +1" with ":doctype: book"Alexander Kriegisch2024-02-01108-948/+965
| | | | | | | | | Headlines per ADOC file should start at level 1, not 2. Adjusting the level offset for books helps to avoid warnings when including book chapters, but still allows to also use the chapters as stand-alone documents. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Remove some old files relating to AspectJ Debugger ajdbAlexander Kriegisch2024-02-0112-1608/+0
| | | | | | | | If ajdb ever existed and was part of the product, it must have been 20+ years ago. There are still some references to it in old release notes and unused Ant and text files, but that is OK for now. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Update InstallContext.onWindowsPro for Windows 11+Alexander Kriegisch2024-01-291-3/+4
| | | | | | | | | The matcher is more future-proof now, as long as Windows names stay "Windows Server.*" and "Windows [1-8][0-9]?". This is not beautiful, but a quick drive-by improvement. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Bump asciidoctor-maven-plugin to 2.2.5Alexander Kriegisch2024-01-291-7/+1
| | | | | | | getting rid of JRuby dependency workaround for https://github.com/asciidoctor/asciidoctor-maven-plugin/issues/553 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Remove unnecessary agent manifest entries from aspectjmatcher POMAlexander Kriegisch2024-01-291-5/+0
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Workaround for defining classes during LTWAlexander Kriegisch2024-01-2929-223/+395
| | | | | | | | | | | | | | | | | | | | | | | | | Overhaul ClassLoaderWeavingAdaptor to use statically initialised Unsafe instances and method handles pointing to their 'defineClass' methods. Those now work universally on JDKs 8-21. In older JDKs, the method used to be in sun.misc.Unsafe, in more recent ones on jdk.internal.misc.Unsafe. It is challenging to fetch instances, especially as reflection protection and module boundaries have been increased in the JDK progressively. But finally, a solution was adapted from Byte Buddy (BB). Kudos to BB author Rafael Winterhalter. The previous solution to use ClassLoader::defineClass and require '--add-opens' is no longer necessary for the first time since it became necessary in AspectJ 1.9.7 with Java 16 support. Add org.ow2.asm:asm-common as a dependency everywhere org.ow2.asm:asm was used before. Maybe that is too many places, but no worse than before. Add missing dependency on loadtime to aspectjweaver. This kept a build like "mvn install -am -pl aspectjweaver" from picking up changed loadtime classes. Fixes #117. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Update AJDT update site URLs after project terminationAlexander Kriegisch2024-01-211-6/+6
| | | | | | | | AJDT is now part of the AspectJ project. Hence, both repository and download area have moved to other URLs. See also: https://gitlab.eclipse.org/eclipsefdn/emo-team/emo/-/issues/475#note_1612124 Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix typo in BUILD.mdAlexander Kriegisch2024-01-071-1/+1
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Attach installer to CI buildAlexander Kriegisch2024-01-071-0/+9
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Delete obsolete filesAlexander Kriegisch2024-01-0725-483/+0
| | | | | | | | | | | | | - Redundant copies of HTML files used in AspectJ installer, which already exist as resource files in module 'build' - Null-sized AspectJ library JARs which probably were used to trigger certain build steps in the former Ant build - BridgeVersion.java.txt, which has been replaced by a regular org.aspectj.bridge.Version class which can dynamically determine versions from a properties file instead of relying on them being hard-coded into the template. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Update assemblies to include AspectJ licenceAlexander Kriegisch2024-01-0611-21/+21
| | | | | | | | | | | | | | | | | | | | | | The former HTML file was moved up one directory level and converted to asciidoc format. Therefore, include the ADOC file from the correct location now. Alternatively, we could have included the generated HTML from the aj-build/dist/docs/doc directory, but that would have meant adding a dependency to the 'docs' module to several other modules for this one file. Actually, asciidoc has become a widely used and accepted format for documentation and is human-readable by design. Therefore, it is OK to include the ADOC file. The important thing is that the licence information - is contained in each published artifact, - can be found easily, - its content is human-readable. All these requirements are still met with this change. Arguably, ADOC is easier to read than HTML and does not even need a web browser. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix docs links to example source codeAlexander Kriegisch2024-01-061-5/+3
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* CI build: fix "create docs" stepAlexander Kriegisch2024-01-061-1/+1
| | | | | | | | Like the javadocs in aspectjrt and aspectjweaver (if the releas profile is active), for docs also copy the docs in the package phase to the aj-dist directory. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Replace HTML content of readme-lib-module.adoc by asciidocAlexander Kriegisch2024-01-061-49/+17
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Rename readme-lib-module.html to .adocAlexander Kriegisch2024-01-061-0/+0
| | | | | | | In the next step, the content, which is still HTML at this point, is going to be converted. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Remove obsolete DocBook build config in favour of AsciidoctorAlexander Kriegisch2024-01-067-825/+9
| | | | | | | | | | | | Along with the Ant and Maven build configs, downloads of - DocBook DTD, - DocBook XSL, - FOP, - Batik, - Saxon also become obsolete. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add local Maven site to 'distributionManagement'Alexander Kriegisch2024-01-061-0/+5
| | | | | | | | | If we ever decide to add Maven site docs to the AspectJ website, now we can deploy them locally using 'mvn site:deploy' and publish them on a web server or even incorporate them into the binary distribution in the installer's belly. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Add runtime and weaver API javadocs to installer againAlexander Kriegisch2024-01-063-3/+65
| | | | | | Closes #271. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Docs: Create separate CSS files, do not embed into HTMLAlexander Kriegisch2024-01-061-1/+10
| | | | | | | | | | | TODO: There still is one set of CSS files per subdirectory due to the way the docs directories are organised. It would be better to have them just once. But to achieve that, the ADOC-to-HTML conversion would have to be changed, e.g. using one central directory for images and reorganisation of the overall directory structure and build options. See https://github.com/asciidoctor/asciidoctor-maven-plugin/issues/729. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Bugfix: AspectJ installer extracts text files as US-ASCIIAlexander Kriegisch2024-01-061-4/+6
| | | | | | | | | | | When extracting text or HTML files, special characters like German umlauts "ÄÖÜäöüß" or copyright symbol "©" were destroyed while unpacking the installer archive. As our files in Git SCM are all UTF-8, the installer now also uses UTF-8 to read and write text files. Fixes #270. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Minor changes in IDE.mdAlexander Kriegisch2024-01-061-14/+16
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Rename doc generation profiles, making Asciidoctor the defaultAlexander Kriegisch2024-01-061-4/+4
| | | | | | | The Docbook etc. Ant task profile is now called 'create-docs-LEGACY' and will go away with the cut-over to the new doc generator logic. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Asciidoc: Create PDFs from multi-page guidesAlexander Kriegisch2024-01-063-16/+155
| | | | | | | | | | | | | | | | | | Using Asciidoctor Maven, we now produce PDFs (which are also linked to from the main documentation index page) for - Programming Guide, - AspectJ 5 Developer's Notebook, - Development Environment Guide, - Problem Diagnosis Guide, - AspectJ Design Overview. Attention! PDF generation alone takes 3+ minutes, almost 4 minutes including asciidoc to HTML conversion. Just deactivate the 'create-docs' profile if you do not need docs during the build. Closes #272. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Replace docs GIFs by PNGsAlexander Kriegisch2024-01-0616-20/+19
| | | | | | | | | | | | Follow-up on previous rename-only commit. This time, the binaries are real PNGs. The asciidoc and other references to them have also been replaced. File figures_classes.png in the teaching materials also was rotated by 90° to display it correctly. Background: The Asciidoctor PDF back-end cannot handle GIFs directly without an additional Ruby Gem. It is easier to only use PNGs and JPEGs. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Rename docs GIF to PNGAlexander Kriegisch2024-01-0610-0/+0
| | | | | | | | | | The files are still GIFs for now. In the next steps after the rename, they will be replaced by real PNGs. Background: The Asciidoctor PDF back-end cannot handle GIFs directly without an additional Ruby Gem. It is easier to only use PNGs and JPEGs. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
* Fix some broken/invalid ADOC linksAlexander Kriegisch2024-01-064-6/+6
| | | | Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>