From 2fc834af40c1971f981717f35e6d6797bcddc205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Mon, 15 Jun 2026 23:11:01 +0200 Subject: [PATCH 1/3] refactor: migrate Xtend to Java - com.avaloq.tools.ddk.xtext.test.core (Tag) DRAFT CHECKPOINT - DO NOT MERGE until the active-annotation question is resolved. Converts the Tag active annotation (@Active(TagCompilationParticipant)) from Xtend to Java, keeping @Active + the processor + org.eclipse.xtext.xtend.lib, and removes the module's Xtend build infrastructure (.classpath, .project, build.properties, xtend-gen). Local gate (-DskipTests) is green. BLOCKED: Tag is an Xtend active annotation whose macro assigns each @Tag field a unique integer at Xtend-compile time. DDK declares no @Tag fields itself (the consumers are downstream), so DDK CI cannot validate that the macro still fires for a Java-authored @interface. See the PR description for the resolution plan. Co-Authored-By: Claude Opus 4.8 (1M context) --- com.avaloq.tools.ddk.xtext.test.core/.classpath | 5 ----- com.avaloq.tools.ddk.xtext.test.core/.project | 6 ------ .../build.properties | 3 +-- .../tools/ddk/xtext/test/{Tag.xtend => Tag.java} | 13 +++++++------ .../xtend-gen/.gitignore | 0 5 files changed, 8 insertions(+), 19 deletions(-) rename com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/{Tag.xtend => Tag.java} (75%) delete mode 100644 com.avaloq.tools.ddk.xtext.test.core/xtend-gen/.gitignore diff --git a/com.avaloq.tools.ddk.xtext.test.core/.classpath b/com.avaloq.tools.ddk.xtext.test.core/.classpath index 907a12b9cb..71aee59a71 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/.classpath +++ b/com.avaloq.tools.ddk.xtext.test.core/.classpath @@ -1,11 +1,6 @@ - - - - - diff --git a/com.avaloq.tools.ddk.xtext.test.core/.project b/com.avaloq.tools.ddk.xtext.test.core/.project index 326acc3457..a65f2423c0 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/.project +++ b/com.avaloq.tools.ddk.xtext.test.core/.project @@ -20,11 +20,6 @@ - - org.eclipse.xtext.ui.shared.xtextBuilder - - - net.sf.eclipsecs.core.CheckstyleBuilder @@ -44,7 +39,6 @@ org.eclipse.jdt.core.javanature org.eclipse.pde.PluginNature - org.eclipse.xtext.ui.shared.xtextNature net.sourceforge.pmd.eclipse.plugin.pmdNature net.sf.eclipsecs.core.CheckstyleNature edu.umd.cs.findbugs.plugin.eclipse.findbugsNature diff --git a/com.avaloq.tools.ddk.xtext.test.core/build.properties b/com.avaloq.tools.ddk.xtext.test.core/build.properties index ea832598c9..b107977f4e 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/build.properties +++ b/com.avaloq.tools.ddk.xtext.test.core/build.properties @@ -1,4 +1,3 @@ -source.. = src/,\ - xtend-gen/ +source.. = src/ bin.includes = META-INF/,\ . diff --git a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/Tag.xtend b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/Tag.java similarity index 75% rename from com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/Tag.xtend rename to com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/Tag.java index 892e50810b..5cc4a24878 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/Tag.xtend +++ b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/Tag.java @@ -8,19 +8,20 @@ * Contributors: * Avaloq Group AG - initial API and implementation *******************************************************************************/ -package com.avaloq.tools.ddk.xtext.test +package com.avaloq.tools.ddk.xtext.test; -import java.lang.annotation.Retention -import java.lang.annotation.RetentionPolicy -import org.eclipse.xtend.lib.macro.Active +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import org.eclipse.xtend.lib.macro.Active; /** * Initializes global tags in linking tests. * The annotated field must be of integer type. * Usage example: @Tag int MEM_DOC */ -@Active(typeof(TagCompilationParticipant)) +@Active(TagCompilationParticipant.class) @Retention(RetentionPolicy.RUNTIME) -annotation Tag { +public @interface Tag { } diff --git a/com.avaloq.tools.ddk.xtext.test.core/xtend-gen/.gitignore b/com.avaloq.tools.ddk.xtext.test.core/xtend-gen/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 From fcd95f4f0ff1dad2323b80cecd64d24264004e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Tue, 25 Aug 2026 11:32:43 +0100 Subject: [PATCH 2/3] build: bump xtext.test.core to 17.3.2 (content changed vs 19.0.0 baseline) Co-Authored-By: Claude Fable 5 --- com.avaloq.tools.ddk.xtext.test.core/META-INF/MANIFEST.MF | 2 +- com.avaloq.tools.ddk.xtext.test.core/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/com.avaloq.tools.ddk.xtext.test.core/META-INF/MANIFEST.MF b/com.avaloq.tools.ddk.xtext.test.core/META-INF/MANIFEST.MF index 8d850705a8..f39bd1bbc7 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/META-INF/MANIFEST.MF +++ b/com.avaloq.tools.ddk.xtext.test.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.avaloq.tools.ddk.xtext.test.core Bundle-SymbolicName: com.avaloq.tools.ddk.xtext.test.core;singleton:=true -Bundle-Version: 17.3.1.qualifier +Bundle-Version: 17.3.2.qualifier Bundle-Vendor: Avaloq Group AG Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: com.avaloq.tools.ddk.xtext, diff --git a/com.avaloq.tools.ddk.xtext.test.core/pom.xml b/com.avaloq.tools.ddk.xtext.test.core/pom.xml index 37fef2c8b0..55ad4fe33f 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/pom.xml +++ b/com.avaloq.tools.ddk.xtext.test.core/pom.xml @@ -6,7 +6,7 @@ 18.0.1-SNAPSHOT ../ddk-parent - 17.3.1-SNAPSHOT + 17.3.2-SNAPSHOT com.avaloq.tools.ddk.xtext.test.core eclipse-plugin From 662b9aa74db81d01a8cb8164f89d7747736b464a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Tue, 25 Aug 2026 11:51:25 +0100 Subject: [PATCH 3/3] docs: fix Javadoc references to relocated Tag classes Co-Authored-By: Claude Fable 5 --- .../ddk/xtext/test/jupiter/AbstractXtextMarkerBasedTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractXtextMarkerBasedTest.java b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractXtextMarkerBasedTest.java index 4731ae9273..d65185b1ef 100644 --- a/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractXtextMarkerBasedTest.java +++ b/com.avaloq.tools.ddk.xtext.test.core/src/com/avaloq/tools/ddk/xtext/test/jupiter/AbstractXtextMarkerBasedTest.java @@ -260,9 +260,9 @@ protected String addAssertion(final AbstractModelAssertion assertion) { * Creates a mark with the given id. Use this method in tests to insert marks. *

* If the given mark id is 0 then it means that the test was not well configured. All the id-s that are generated by {@link #getTag} start with 1, all the - * global ids start with {@value com.avaloq.tools.asmd.testbase.scoping.TagCompilationParticipant#COUNTER_BASE}. Since it is unlikely to get local ids wrong, + * global ids start with {@value TagCompilationParticipant#COUNTER_BASE}. Since it is unlikely to get local ids wrong, * the most common reason for global ids to be wrong is that they were not initialized. Global ids get initialized with active annotation - * {@link com.avaloq.tools.asmd.testbase.scoping.Tag} that executes {@link com.avaloq.tools.asmd.testbase.scoping.TagCompilationParticipant}. Active + * {@link com.avaloq.tools.ddk.xtext.test.Tag} that executes {@link TagCompilationParticipant}. Active * annotations do not get executed if {@code org.eclipse.xtend.lib} is missing in {@code MANIFEST.MF}. Thus we report this common mistake to the user via an * assertion. *