Browse Source

Replace old by new AspectJ GitHub URL

github.com/eclipse/org.aspectj -> github.com/eclipse-aspectj/aspectj

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/V1_9_21_1
Alexander Kriegisch 3 months ago
parent
commit
37bee450be

+ 2
- 2
CONTRIBUTING.md View File

# Contributing to AspectJ # Contributing to AspectJ


AspectJ is a maven project, as such it should import cleanly into your IDE. The project uses github for issue tracking ( https://github.com/eclipse/org.aspectj/issues ).
AspectJ is a maven project, as such it should import cleanly into your IDE. The project uses github for issue tracking ( https://github.com/eclipse-aspectj/aspectj/issues ).


## Working on the codebase ## Working on the codebase




Please contribute via Pull Request against the GitHub repository. Please contribute via Pull Request against the GitHub repository.


Contributors should ensure they have signed the [Eclipse Contributor Agreement](https://accounts.eclipse.org/user/7644/eca/3.1.0), this will be verified by automatic validation that occurs against any Pull Requests.
Contributors should ensure they have signed the [Eclipse Contributor Agreement](https://accounts.eclipse.org/user/7644/eca/3.1.0), this will be verified by automatic validation that occurs against any Pull Requests.

+ 1
- 1
ajdoc/src/main/java/org/aspectj/tools/ajdoc/Main.java View File

/* This section of code handles errors that occur during compilation */ /* This section of code handles errors that occur during compilation */
static final String internalErrorMessage = " \n" static final String internalErrorMessage = " \n"
+ "If this has not already been logged as a bug raised please raise \n" + "If this has not already been logged as a bug raised please raise \n"
+ "a new AspectJ bug at https://github.com/eclipse/org.aspectj/issues \n"
+ "a new AspectJ bug at https://github.com/eclipse-aspectj/aspectj/issues \n"
+ "including the text below. To make the bug a priority, please also \n" + "including the text below. To make the bug a priority, please also \n"
+ "include a test program that can reproduce this problem.\n "; + "include a test program that can reproduce this problem.\n ";



+ 1
- 1
docs/developer/IDE.md View File

generator `ajdoc` (similar to Javadoc) from the command line. generator `ajdoc` (similar to Javadoc) from the command line.


You can find older installer versions until 1.9.6 on the [AspectJ website](https://www.eclipse.org/aspectj/downloads.php), You can find older installer versions until 1.9.6 on the [AspectJ website](https://www.eclipse.org/aspectj/downloads.php),
more recent ones are attached to AspectJ [GitHub releases](https://github.com/eclipse/org.aspectj/releases) as
more recent ones are attached to AspectJ [GitHub releases](https://github.com/eclipse-aspectj/aspectj/releases) as
_aspectj-*jar_. _aspectj-*jar_.


## Biased recommendation ## Biased recommendation

+ 1
- 1
docs/release/JavaVersionCompatibility.adoc View File

= AspectJ Java version compatibility = AspectJ Java version compatibility


For reasons described e.g. in https://github.com/eclipse/org.aspectj/issues/139#issuecomment-1072946123[this comment],
For reasons described e.g. in https://github.com/eclipse-aspectj/aspectj/issues/139#issuecomment-1072946123[this comment],
for AspectJ users it has become a little challenging to find out which minimum AspectJ version is required in order to for AspectJ users it has become a little challenging to find out which minimum AspectJ version is required in order to
process byte code or compile source code using features of a certain Java language version. Since Java 10, this cannot process byte code or compile source code using features of a certain Java language version. Since Java 10, this cannot
be easily concluded from the AspectJ version number anymore, and we are sorry for that. So here is a little overview: be easily concluded from the AspectJ version number anymore, and we are sorry for that. So here is a little overview:

+ 9
- 9
docs/release/README-1.9.19.adoc View File

_Release info: 1.9.19 available 21-Dec-2022_ _Release info: 1.9.19 available 21-Dec-2022_


Please note that Bugzilla for issue management is deprecated and new issues should be filed as Please note that Bugzilla for issue management is deprecated and new issues should be filed as
https://github.com/eclipse/org.aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.19 can be found
https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.19 can be found
here: here:


* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.19[GitHub 1.9.19]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.19[GitHub 1.9.19]
* https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.19[Bugzilla 1.9.19] * https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.19[Bugzilla 1.9.19]


== New features == New features


Please note that the upstream Eclipse Java Compiler (ECJ) which the AspectJ Compiler (AJC) is a fork of still has some Please note that the upstream Eclipse Java Compiler (ECJ) which the AspectJ Compiler (AJC) is a fork of still has some
open issues concerning Java 19 preview feature support, see the list in open issues concerning Java 19 preview feature support, see the list in
https://github.com/eclipse/org.aspectj/issues/184#issuecomment-1272254940[this comment]. AJC therefore inherits the same
https://github.com/eclipse-aspectj/aspectj/issues/184#issuecomment-1272254940[this comment]. AJC therefore inherits the same
problems for the specific cases described in the linked issues. problems for the specific cases described in the linked issues.


== Improvements == Improvements


* Improve condy (constant dynamic) support. Together with some custom compilation or weaving options, this helps to * Improve condy (constant dynamic) support. Together with some custom compilation or weaving options, this helps to
avoid a problem when using JaCoCo together with AspectJ, see avoid a problem when using JaCoCo together with AspectJ, see
https://github.com/eclipse/org.aspectj/issues/170#issuecomment-1214163297[this comment in #170] for more details.
https://github.com/eclipse-aspectj/aspectj/issues/170#issuecomment-1214163297[this comment in #170] for more details.


== Code examples == Code examples


You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were
first supported (possibly as JVM preview features): first supported (possibly as JVM preview features):


* https://github.com/eclipse/org.aspectj/tree/master/tests/features198/java17[Pattern matching for switch (preview 1)]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features199/java18[Pattern matching for switch (preview 2)]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features1919/java19[Pattern matching for switch (preview 3),
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features198/java17[Pattern matching for switch (preview 1)]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features199/java18[Pattern matching for switch (preview 2)]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features1919/java19[Pattern matching for switch (preview 3),
record patterns (preview 1)] record patterns (preview 1)]
* Please note that presently there is no specific sample code for virtual threads and structured concurrency in the * Please note that presently there is no specific sample code for virtual threads and structured concurrency in the
AspectJ code base, because these are just new APIs, no Java language features. You can find sample code for these AspectJ code base, because these are just new APIs, no Java language features. You can find sample code for these
`SOURCE` retention on types, methods, constructors or fields. While declaring such annotations does not make sense to `SOURCE` retention on types, methods, constructors or fields. While declaring such annotations does not make sense to
begin with, at least the AspectJ weaver or compiler should handle the situation gracefully, which now it does by begin with, at least the AspectJ weaver or compiler should handle the situation gracefully, which now it does by
simply ignoring errors caused by it. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=366085[Bugzilla #366085] and simply ignoring errors caused by it. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=366085[Bugzilla #366085] and
https://github.com/eclipse/org.aspectj/pull/196[pull request #196]. Better than this workaround would be for the
https://github.com/eclipse-aspectj/aspectj/pull/196[pull request #196]. Better than this workaround would be for the
compiler or weaver to actually print a warning when meeting source level annotations in declare statements. Hence, compiler or weaver to actually print a warning when meeting source level annotations in declare statements. Hence,
follow-up issue https://github.com/eclipse/org.aspectj/issues/201[#201] was created.
follow-up issue https://github.com/eclipse-aspectj/aspectj/issues/201[#201] was created.
* Remove legacy AspectJ Browser code and documentation. * Remove legacy AspectJ Browser code and documentation.
* Thanks to Andrey Turbanov for several clean code contributions. * Thanks to Andrey Turbanov for several clean code contributions.



+ 9
- 9
docs/release/README-1.9.20.adoc View File

https://github.com/eclipse-aspectj/aspectj/issues/256[AspectJ tracker issue 256]). https://github.com/eclipse-aspectj/aspectj/issues/256[AspectJ tracker issue 256]).


The list of issues addressed for 1.9.20.1 can be found The list of issues addressed for 1.9.20.1 can be found
https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.20.1[here].
https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.20.1[here].


= AspectJ 1.9.20 = AspectJ 1.9.20


_Release info: 1.9.20 available 16-Aug-2023_ _Release info: 1.9.20 available 16-Aug-2023_


Please note that Bugzilla for issue management is deprecated and new issues should be filed as Please note that Bugzilla for issue management is deprecated and new issues should be filed as
https://github.com/eclipse/org.aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.20 can be found
https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.20 can be found
here: here:


* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.20[GitHub 1.9.20]
* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.20.1[GitHub 1.9.20.1]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.20[GitHub 1.9.20]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.20.1[GitHub 1.9.20.1]
* https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.20[Bugzilla 1.9.20] * https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.20[Bugzilla 1.9.20]


== New features == New features


Please note, that the upstream Eclipse Java Compiler (ECJ), which the AspectJ Compiler (AJC) is a fork of, still has Please note, that the upstream Eclipse Java Compiler (ECJ), which the AspectJ Compiler (AJC) is a fork of, still has
some open issues concerning Java 20 preview feature support, see the list in some open issues concerning Java 20 preview feature support, see the list in
https://github.com/eclipse/org.aspectj/issues/184#issuecomment-1272254940[this comment]. AJC therefore inherits the same
https://github.com/eclipse-aspectj/aspectj/issues/184#issuecomment-1272254940[this comment]. AJC therefore inherits the same
problems for the specific cases described in the linked issues. problems for the specific cases described in the linked issues.


== Improvements == Improvements
You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were
first supported (possibly as JVM preview features): first supported (possibly as JVM preview features):


* https://github.com/eclipse/org.aspectj/tree/master/tests/features198/java17[Pattern matching for switch (preview 1)]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features199/java18[Pattern matching for switch (preview 2)]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features1919/java19[Pattern matching for switch (preview 3),
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features198/java17[Pattern matching for switch (preview 1)]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features199/java18[Pattern matching for switch (preview 2)]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features1919/java19[Pattern matching for switch (preview 3),
record patterns (preview 1)] record patterns (preview 1)]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features1920/java20[Pattern matching for switch (preview 4),
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features1920/java20[Pattern matching for switch (preview 4),
record patterns (preview 2)] record patterns (preview 2)]
* Please note that presently there is no specific sample code for virtual threads and structured concurrency in the * Please note that presently there is no specific sample code for virtual threads and structured concurrency in the
AspectJ code base, because these are just new APIs, no Java language features. You can find sample code for these AspectJ code base, because these are just new APIs, no Java language features. You can find sample code for these

+ 3
- 3
docs/release/README-1.9.21.adoc View File

_Release info: 1.9.21 available 11-Dec-2023_ _Release info: 1.9.21 available 11-Dec-2023_


Please note that Bugzilla for issue management is deprecated and new issues should be filed as Please note that Bugzilla for issue management is deprecated and new issues should be filed as
https://github.com/eclipse/org.aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.21 can be found
https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.21 can be found
here: here:


* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.21[GitHub 1.9.21]
* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.21.1[GitHub 1.9.21.1]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.21[GitHub 1.9.21]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.21.1[GitHub 1.9.21.1]
* https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.21[Bugzilla 1.9.21] * https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.21[Bugzilla 1.9.21]


== New features == New features

+ 5
- 5
docs/release/README-1.9.7.adoc View File



Please note, that going forward Bugzilla for issue management is Please note, that going forward Bugzilla for issue management is
deprecated, and new issues should be filed as deprecated, and new issues should be filed as
https://github.com/eclipse/org.aspectj/issues/new[GitHub issues]. The
https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The
list of issues addressed for 1.9.7 can be found list of issues addressed for 1.9.7 can be found
https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.7[here https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.7[here
for Bugzilla] and for Bugzilla] and
https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.7[here
https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.7[here
for GitHub issues]. for GitHub issues].


== New features == New features
respective AspectJ version in which the features were first supported respective AspectJ version in which the features were first supported
(possibly as JVM preview features): (possibly as JVM preview features):


* https://github.com/eclipse/org.aspectj/tree/master/tests/features195/textblock[AspectJ
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features195/textblock[AspectJ
1.9.5: text blocks] 1.9.5: text blocks]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features196/java14[AspectJ
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features196/java14[AspectJ
1.9.6: records, instanceof patterns] 1.9.6: records, instanceof patterns]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features197/java15[AspectJ
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features197/java15[AspectJ
1.9.7: hidden classes, sealed classes] 1.9.7: hidden classes, sealed classes]


== Using LTW on Java 16+ == Using LTW on Java 16+

+ 8
- 8
docs/release/README-1.9.8.adoc View File

_Release info: 1.9.8 available 11-Feb-2022_ _Release info: 1.9.8 available 11-Feb-2022_


Please note, that Bugzilla for issue management is deprecated, and new issues should be filed as Please note, that Bugzilla for issue management is deprecated, and new issues should be filed as
https://github.com/eclipse/org.aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.8 can be found
https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.8 can be found
https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.8[here for Bugzilla] and https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.8[here for Bugzilla] and
https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.8[here for GitHub issues].
https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.8[here for GitHub issues].


== New features == New features


For now, they all default to `false` for backward compatibility. This might change in a future Aspect release, if user For now, they all default to `false` for backward compatibility. This might change in a future Aspect release, if user
feedback is positive and no negative side effects are found. Please try using them as much as you can and report back feedback is positive and no negative side effects are found. Please try using them as much as you can and report back
questions (to the AspectJ users mailing list) or problems (as a GitHub issue), if any. Thanks to Stefan Starke for his questions (to the AspectJ users mailing list) or problems (as a GitHub issue), if any. Thanks to Stefan Starke for his
contribution. See also https://github.com/eclipse/org.aspectj/pull/37[PR #37].
contribution. See also https://github.com/eclipse-aspectj/aspectj/pull/37[PR #37].


== Code examples == Code examples


You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were
first supported (possibly as JVM preview features): first supported (possibly as JVM preview features):


* https://github.com/eclipse/org.aspectj/tree/master/tests/features198/compiler_release[Cross-compilation to legacy JDK]:
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features198/compiler_release[Cross-compilation to legacy JDK]:
An example class which only works correctly on JDK 8 when compiled with `--release 8` due to API changes in An example class which only works correctly on JDK 8 when compiled with `--release 8` due to API changes in
the JDK. Simply `-source 8 -target 8` would not be enough in this case. the JDK. Simply `-source 8 -target 8` would not be enough in this case.
* https://github.com/eclipse/org.aspectj/tree/master/tests/features198/java17[Pattern matching for `switch`]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features198/java17[Pattern matching for `switch`]


== Other changes and bug fixes == Other changes and bug fixes


`aspectjweaver` still only require JRE 8+. `aspectjweaver` still only require JRE 8+.
* Document build profiles and properties in _docs/developer/BUILD.md_ * Document build profiles and properties in _docs/developer/BUILD.md_
* Add a guide for setting up an AspectJ development environment in _docs/developer/IDE.md_ * Add a guide for setting up an AspectJ development environment in _docs/developer/IDE.md_
* Fix https://github.com/eclipse/org.aspectj/issues/105[issue #105]: Compilation fails when using an aspect library via
* Fix https://github.com/eclipse-aspectj/aspectj/issues/105[issue #105]: Compilation fails when using an aspect library via
`-aspectpath` in combination with introducing an annotation via ITD. This was broken since version 1.9.5 and fixed in `-aspectpath` in combination with introducing an annotation via ITD. This was broken since version 1.9.5 and fixed in
1.9.8.RC3. 1.9.8.RC3.
* Fix https://github.com/eclipse/org.aspectj/issues/68[issue #68]: Correctly process class files containing
* Fix https://github.com/eclipse-aspectj/aspectj/issues/68[issue #68]: Correctly process class files containing
https://openjdk.java.net/jeps/309[dynamic class-file constants (JEP 309)], which were introduced in Java 11 and broken https://openjdk.java.net/jeps/309[dynamic class-file constants (JEP 309)], which were introduced in Java 11 and broken
in AspectJ ever since their introduction in 1.9.2. Java itself currently does not use "condy" and neither do other in AspectJ ever since their introduction in 1.9.2. Java itself currently does not use "condy" and neither do other
widespread JVM languages. Byte code engineering libraries like ASM or Byte Buddy and some instrumentation tools like widespread JVM languages. Byte code engineering libraries like ASM or Byte Buddy and some instrumentation tools like
JaCoCo can however produce condy code. Therefore, in order to create a regression test, we actually had to JaCoCo can however produce condy code. Therefore, in order to create a regression test, we actually had to
https://github.com/eclipse/org.aspectj/blob/de63b63d/tests/bugs198/github_68/Generator.java#L50-L61[craft a condy
https://github.com/eclipse-aspectj/aspectj/blob/de63b63d/tests/bugs198/github_68/Generator.java#L50-L61[craft a condy
class with ASM]. class with ASM].
* Thanks to Andrey Turbanov for several clean code contributions and to Dmitry Mikhaylov for fixing a potential * Thanks to Andrey Turbanov for several clean code contributions and to Dmitry Mikhaylov for fixing a potential
concurrency problem. concurrency problem.

+ 12
- 12
docs/release/README-1.9.9.adoc View File



Bugfix release for some compiler options related to the Java Platform Module System (JPMS) which were not working, most Bugfix release for some compiler options related to the Java Platform Module System (JPMS) which were not working, most
importantly `--add-modules`, `--add-exports` and `--add-reads`. See importantly `--add-modules`, `--add-exports` and `--add-reads`. See
https://github.com/eclipse/org.aspectj/issues/145[issue #145].
https://github.com/eclipse-aspectj/aspectj/issues/145[issue #145].


This probably was broken for a long time. AspectJ still is not boasting extensive JPMS support or test coverage, but This probably was broken for a long time. AspectJ still is not boasting extensive JPMS support or test coverage, but
this improvement seems substantial enough to justify a minor release, instead of keeping users waiting for the next this improvement seems substantial enough to justify a minor release, instead of keeping users waiting for the next
_Release info: 1.9.9 available 24-Mar-2022_ _Release info: 1.9.9 available 24-Mar-2022_


Please note that Bugzilla for issue management is deprecated and new issues should be filed as Please note that Bugzilla for issue management is deprecated and new issues should be filed as
https://github.com/eclipse/org.aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.9 can be found
https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.9 can be found
here: here:


* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.9[GitHub 1.9.9]
* https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.9.1[GitHub 1.9.9.1]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.9[GitHub 1.9.9]
* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.9.1[GitHub 1.9.9.1]
* https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.9[Bugzilla 1.9.9] * https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.9[Bugzilla 1.9.9]


== New features == New features
asynchronous proceed, if you do not create the thread in the advice but want to use e.g. an `ExecutorService` with its asynchronous proceed, if you do not create the thread in the advice but want to use e.g. an `ExecutorService` with its
own thread pool. This still is not working in annotation style aspects, only in native syntax ones. own thread pool. This still is not working in annotation style aspects, only in native syntax ones.


See https://github.com/eclipse/org.aspectj/issues/128[issue #128] and
https://github.com/eclipse/org.aspectj/pull/132[pull request #132] for more details.
See https://github.com/eclipse-aspectj/aspectj/issues/128[issue #128] and
https://github.com/eclipse-aspectj/aspectj/pull/132[pull request #132] for more details.


== Code examples == Code examples


You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features were
first supported (possibly as JVM preview features): first supported (possibly as JVM preview features):


* https://github.com/eclipse/org.aspectj/tree/master/tests/features198/java17[Pattern matching for switch, preview 1]
* https://github.com/eclipse/org.aspectj/tree/master/tests/features199/java18[Pattern matching for switch, preview 2]
* https://github.com/eclipse/org.aspectj/tree/master/tests/bugs199/github_128[Asynchronous proceed in native vs.
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features198/java17[Pattern matching for switch, preview 1]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/features199/java18[Pattern matching for switch, preview 2]
* https://github.com/eclipse-aspectj/aspectj/tree/master/tests/bugs199/github_128[Asynchronous proceed in native vs.
annotation style syntax] annotation style syntax]


== Other changes and bug fixes == Other changes and bug fixes
the value of system property `org.aspectj.weaver.openarchives` (1,000 by default). The AspectJ compiler is meant to the value of system property `org.aspectj.weaver.openarchives` (1,000 by default). The AspectJ compiler is meant to
close archives upon cache exhaustion and then re-open them, if it needs them again later. Re-opening was broken, but close archives upon cache exhaustion and then re-open them, if it needs them again later. Re-opening was broken, but
now the compiler works reliably even for cache sizes as small as 20. See now the compiler works reliably even for cache sizes as small as 20. See
https://github.com/eclipse/org.aspectj/issues/125[issue #125].
https://github.com/eclipse-aspectj/aspectj/issues/125[issue #125].
* Improvements for `if()` pointcuts in annotation syntax, see issues * Improvements for `if()` pointcuts in annotation syntax, see issues
https://github.com/eclipse/org.aspectj/issues/115[#115], https://github.com/eclipse/org.aspectj/issues/120[#120],
https://github.com/eclipse/org.aspectj/issues/122[#122].
https://github.com/eclipse-aspectj/aspectj/issues/115[#115], https://github.com/eclipse-aspectj/aspectj/issues/120[#120],
https://github.com/eclipse-aspectj/aspectj/issues/122[#122].
* Thanks to Andrey Turbanov for several clean code contributions. * Thanks to Andrey Turbanov for several clean code contributions.


== AspectJ usage hints == AspectJ usage hints

+ 1
- 1
org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java View File

if ( if (
!Modifier.isStatic(modifiers) && !Modifier.isStatic(modifiers) &&
// Inner classes/aspects of interfaces are implicitly static, // Inner classes/aspects of interfaces are implicitly static,
// see https://github.com/eclipse/org.aspectj/issues/162
// see https://github.com/eclipse-aspectj/aspectj/issues/162
(this.enclosingType.modifiers & ClassFileConstants.AccInterface) == 0 (this.enclosingType.modifiers & ClassFileConstants.AccInterface) == 0
) { ) {
scope.problemReporter().signalError(sourceStart, sourceEnd, "inner aspects must be static"); scope.problemReporter().signalError(sourceStart, sourceEnd, "inner aspects must be static");

+ 1
- 1
org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java View File

if ( if (
!Modifier.isStatic(typeDecl.modifiers) && !Modifier.isStatic(typeDecl.modifiers) &&
// Inner classes/aspects of interfaces are implicitly static, // Inner classes/aspects of interfaces are implicitly static,
// see https://github.com/eclipse/org.aspectj/issues/162
// see https://github.com/eclipse-aspectj/aspectj/issues/162
(typeDecl.enclosingType.modifiers & ClassFileConstants.AccInterface) == 0 (typeDecl.enclosingType.modifiers & ClassFileConstants.AccInterface) == 0
) { ) {
typeDecl.scope.problemReporter().signalError(typeDecl.sourceStart, typeDecl.sourceEnd, typeDecl.scope.problemReporter().signalError(typeDecl.sourceStart, typeDecl.sourceEnd,

+ 1
- 1
org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java View File

FileSystem fileSystem = getLibraryAccess(classpaths, filenames); FileSystem fileSystem = getLibraryAccess(classpaths, filenames);


// Use upstream method to generate '--add-reads', '--add-exports' info and copy it into our FileSystem instance. // Use upstream method to generate '--add-reads', '--add-exports' info and copy it into our FileSystem instance.
// See https://github.com/eclipse/org.aspectj/issues/145.
// See https://github.com/eclipse-aspectj/aspectj/issues/145.
FileSystem fileSystemTemp = buildConfig.getBuildArgParser().getLibraryAccess(); FileSystem fileSystemTemp = buildConfig.getBuildArgParser().getLibraryAccess();
fileSystem.moduleUpdates = fileSystemTemp.moduleUpdates; fileSystem.moduleUpdates = fileSystemTemp.moduleUpdates;
fileSystemTemp.cleanup(); fileSystemTemp.cleanup();

+ 1
- 1
tests/bugs1920/github_162/InterfaceWithInnerClass.java View File

import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;


/** /**
* https://github.com/eclipse/org.aspectj/issues/162
* https://github.com/eclipse-aspectj/aspectj/issues/162
*/ */
public interface InterfaceWithInnerClass { public interface InterfaceWithInnerClass {
public class ImplicitlyStatic { public class ImplicitlyStatic {

+ 1
- 1
tests/bugs1920/github_20/ParenthesisedAJKeywords.java View File

/** /**
* https://github.com/eclipse/org.aspectj/issues/20
* https://github.com/eclipse-aspectj/aspectj/issues/20
*/ */
public class ParenthesisedAJKeywords { public class ParenthesisedAJKeywords {
public static void main(String[] args) { public static void main(String[] args) {

+ 1
- 1
tests/bugs198/github_105/Application.java View File

* This fails in AspectJ 1.9.5 to 1.9.8.RC2 due to a removed safeguard in JDT Core, * This fails in AspectJ 1.9.5 to 1.9.8.RC2 due to a removed safeguard in JDT Core,
* if the aspect is in a separate library on the aspectpath. * if the aspect is in a separate library on the aspectpath.
* <p> * <p>
* See https://github.com/eclipse/org.aspectj/issues/105
* See https://github.com/eclipse-aspectj/aspectj/issues/105
*/ */
@FooAnnotation @FooAnnotation
public class Application { public class Application {

+ 2
- 2
tests/features164/declareMixin/CaseEConcurrent.java View File

// TESTING: multiple instances causing factory invocation multiple times (but is cached correctly) // TESTING: multiple instances causing factory invocation multiple times (but is cached correctly)
// Concurrency fix regression test for https://github.com/eclipse/org.aspectj/issues/198
// Concurrency fix regression test for https://github.com/eclipse-aspectj/aspectj/issues/198
import org.aspectj.lang.annotation.*; import org.aspectj.lang.annotation.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;


} }


// Helper methods 'doSomething' and 'callMe' help to produce byte code similar to what we need in order to fix // Helper methods 'doSomething' and 'callMe' help to produce byte code similar to what we need in order to fix
// https://github.com/eclipse/org.aspectj/issues/198. If necessary, just temporarily uncomment, compile and analyse
// https://github.com/eclipse-aspectj/aspectj/issues/198. If necessary, just temporarily uncomment, compile and analyse
// the byte code, e.g. with JDK tool 'javap -v'. // the byte code, e.g. with JDK tool 'javap -v'.
/* /*
public void doSomething() { public void doSomething() {

+ 1
- 1
tests/src/test/java/org/aspectj/systemtest/ajc164/DeclareMixinTests.java View File

} }


// multiple instances causing factory invocation multiple times (but is cached), concurrent case // multiple instances causing factory invocation multiple times (but is cached), concurrent case
// see https://github.com/eclipse/org.aspectj/issues/198
// see https://github.com/eclipse-aspectj/aspectj/issues/198
public void testCaseEConcurrent() { public void testCaseEConcurrent() {
runTest("casee_concurrent"); runTest("casee_concurrent");
} }

+ 1
- 1
tests/src/test/java/org/aspectj/systemtest/ajc199/Bugs199Tests.java View File

} }


public void testAsyncProceedNestedAroundAdviceThreadPool_gh128() { public void testAsyncProceedNestedAroundAdviceThreadPool_gh128() {
// TODO: future improvement, see https://github.com/eclipse/org.aspectj/issues/141
// TODO: future improvement, see https://github.com/eclipse-aspectj/aspectj/issues/141
// runTest("asynchronous proceed for nested around-advice (@AspectJ, thread pool)"); // runTest("asynchronous proceed for nested around-advice (@AspectJ, thread pool)");
} }



+ 1
- 1
tests/src/test/resources/org/aspectj/systemtest/ajc164/declareMixin.xml View File

<run class="CaseEConcurrent"> <run class="CaseEConcurrent">
<stdout ordered="no"> <stdout ordered="no">
<!-- <!--
Without the concurrency fix from https://github.com/eclipse/org.aspectj/issues/198, each delegate factory
Without the concurrency fix from https://github.com/eclipse-aspectj/aspectj/issues/198, each delegate factory
would be invoked twice would be invoked twice
--> -->
<line text="Delegate factory invoked for CaseEConcurrent instance: a"/> <line text="Delegate factory invoked for CaseEConcurrent instance: a"/>

+ 8
- 8
tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml View File

</run> </run>
</ajc-test> </ajc-test>


<!-- RuntimeException in BcelWeaver, see https://github.com/eclipse/org.aspectj/issues/190 -->
<!-- RuntimeException in BcelWeaver, see https://github.com/eclipse-aspectj/aspectj/issues/190 -->
<ajc-test dir="bugs1920/github_190" vm="1.5" title="switch with Integer.MAX_VALUE case"> <ajc-test dir="bugs1920/github_190" vm="1.5" title="switch with Integer.MAX_VALUE case">
<compile files="SwitchCaseWith_Integer_MAX_VALUE.java" options="-1.5 -showWeaveInfo"> <compile files="SwitchCaseWith_Integer_MAX_VALUE.java" options="-1.5 -showWeaveInfo">
<message kind="weave" text="Join point 'method-execution(java.lang.String SwitchCaseWith_Integer_MAX_VALUE.switchTest(int))'"/> <message kind="weave" text="Join point 'method-execution(java.lang.String SwitchCaseWith_Integer_MAX_VALUE.switchTest(int))'"/>


<!-- <!--
'Syntax error, insert "Expression" to complete Expression' when compiling parenthesised expressions 'Syntax error, insert "Expression" to complete Expression' when compiling parenthesised expressions
containing AspectJ keywords, e.g. '(before)', see https://github.com/eclipse/org.aspectj/issues/20
containing AspectJ keywords, e.g. '(before)', see https://github.com/eclipse-aspectj/aspectj/issues/20
--> -->
<ajc-test dir="bugs1920/github_20" vm="1.5" title="parenthesised expression with AspectJ keyword"> <ajc-test dir="bugs1920/github_20" vm="1.5" title="parenthesised expression with AspectJ keyword">
<compile files="ParenthesisedAJKeywords.java" options="-1.5 -showWeaveInfo"/> <compile files="ParenthesisedAJKeywords.java" options="-1.5 -showWeaveInfo"/>


<!-- <!--
'inner aspects must be static' when compiling an interface with an inner aspect which was not explicitly declared 'inner aspects must be static' when compiling an interface with an inner aspect which was not explicitly declared
static, see https://github.com/eclipse/org.aspectj/issues/162
static, see https://github.com/eclipse-aspectj/aspectj/issues/162
--> -->
<ajc-test dir="bugs1920/github_162" vm="1.5" title="inner aspect of interface is implicitly static"> <ajc-test dir="bugs1920/github_162" vm="1.5" title="inner aspect of interface is implicitly static">
<compile files="InterfaceWithInnerClass.java" options="-1.5 -showWeaveInfo"> <compile files="InterfaceWithInnerClass.java" options="-1.5 -showWeaveInfo">


<!-- <!--
When compiling aspect and target class together, matching works as expected, When compiling aspect and target class together, matching works as expected,
see https://github.com/eclipse/org.aspectj/issues/24
see https://github.com/eclipse-aspectj/aspectj/issues/24
--> -->
<ajc-test dir="bugs1920/github_24" vm="1.5" title="exact array type matching, aspect compiled together with target class"> <ajc-test dir="bugs1920/github_24" vm="1.5" title="exact array type matching, aspect compiled together with target class">
<compile files="ExactlyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo"> <compile files="ExactlyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo">


<!-- <!--
When compiling aspect and target class separately, too many joinpoints are matched, When compiling aspect and target class separately, too many joinpoints are matched,
see https://github.com/eclipse/org.aspectj/issues/24
see https://github.com/eclipse-aspectj/aspectj/issues/24
--> -->
<ajc-test dir="bugs1920/github_24" vm="1.5" title="exact array type matching, aspect compiled separately from target class"> <ajc-test dir="bugs1920/github_24" vm="1.5" title="exact array type matching, aspect compiled separately from target class">
<compile files="ExactlyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar"> <compile files="ExactlyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar">


<!-- <!--
When compiling aspect and target class together, too many joinpoints are matched, When compiling aspect and target class together, too many joinpoints are matched,
see https://github.com/eclipse/org.aspectj/issues/24
see https://github.com/eclipse-aspectj/aspectj/issues/24
--> -->
<ajc-test dir="bugs1920/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled together with target class"> <ajc-test dir="bugs1920/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled together with target class">
<compile files="FuzzilyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo"> <compile files="FuzzilyMatchingAspect.aj MaybeMissingClass.java" options="-1.5 -showWeaveInfo">


<!-- <!--
When compiling aspect and target class separately, too many joinpoints are matched, When compiling aspect and target class separately, too many joinpoints are matched,
see https://github.com/eclipse/org.aspectj/issues/24
see https://github.com/eclipse-aspectj/aspectj/issues/24
--> -->
<ajc-test dir="bugs1920/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled separately from target class"> <ajc-test dir="bugs1920/github_24" vm="1.5" title="fuzzy array type matching, aspect compiled separately from target class">
<compile files="FuzzilyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar"> <compile files="FuzzilyMatchingAspect.aj" options="-1.5 -showWeaveInfo" outjar="aspect.jar">
</ajc-test> </ajc-test>


<!-- <!--
https://github.com/eclipse/org.aspectj/issues/214
https://github.com/eclipse-aspectj/aspectj/issues/214
https://github.com/mojohaus/aspectj-maven-plugin/issues/164 https://github.com/mojohaus/aspectj-maven-plugin/issues/164
Problem with multiple, subsequent weaving steps and '-Xlint:warning' or '-Xlint:unorderedAdviceAtShadow=warning' Problem with multiple, subsequent weaving steps and '-Xlint:warning' or '-Xlint:unorderedAdviceAtShadow=warning'
java.lang.ArrayIndexOutOfBoundsException: 1 java.lang.ArrayIndexOutOfBoundsException: 1

+ 2
- 2
tests/src/test/resources/org/aspectj/systemtest/ajc198/ajc198.xml View File



<suite> <suite>


<!-- https://github.com/eclipse/org.aspectj/issues/68 -->
<!-- https://github.com/eclipse-aspectj/aspectj/issues/68 -->
<ajc-test dir="bugs198/github_68" vm="11" title="correctly weave code using constant-dynamic"> <ajc-test dir="bugs198/github_68" vm="11" title="correctly weave code using constant-dynamic">
<compile files="Application.java MyAspect.aj" options="-11" inpath="condy.jar"/> <compile files="Application.java MyAspect.aj" options="-11" inpath="condy.jar"/>
<run class="Application"> <run class="Application">
</run> </run>
</ajc-test> </ajc-test>


<!-- https://github.com/eclipse/org.aspectj/issues/105 -->
<!-- https://github.com/eclipse-aspectj/aspectj/issues/105 -->
<ajc-test dir="bugs198/github_105" vm="8" title="ITD annotation with mandatory parameter via aspectpath"> <ajc-test dir="bugs198/github_105" vm="8" title="ITD annotation with mandatory parameter via aspectpath">
<compile files="FooAnnotation.java BarAnnotation.java FooAspect.aj" options="-8" outjar="aspect.jar"/> <compile files="FooAnnotation.java BarAnnotation.java FooAspect.aj" options="-8" outjar="aspect.jar"/>
<compile files="Application.java" options="-8" aspectpath="aspect.jar"/> <compile files="Application.java" options="-8" aspectpath="aspect.jar"/>

Loading…
Cancel
Save