From 7dde370e88c1f51efc7fcfddcadf851cef807c92 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Mon, 13 Oct 2025 18:49:40 -0400 Subject: [PATCH 01/10] upgrade to 151 Signed-off-by: Pranav Gaikwad --- Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index c6a291e..1d53937 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM registry.access.redhat.com/ubi9/ubi AS jdtls-download WORKDIR /jdtls -RUN curl -s -o jdtls.tar.gz https://download.eclipse.org/jdtls/milestones/1.38.0/jdt-language-server-1.38.0-202408011337.tar.gz &&\ +RUN curl -s -o jdtls.tar.gz https://download.eclipse.org/jdtls/milestones/1.51.0/jdt-language-server-1.51.0-202510022025.tar.gz &&\ tar -xvf jdtls.tar.gz --no-same-owner &&\ chmod 755 /jdtls/bin/jdtls &&\ rm -rf jdtls.tar.gz @@ -14,7 +14,6 @@ FROM registry.access.redhat.com/ubi9/ubi AS fernflower RUN dnf install -y maven-openjdk17 wget --setopt=install_weak_deps=False && dnf clean all && rm -rf /var/cache/dnf RUN wget --quiet https://github.com/JetBrains/intellij-community/archive/refs/tags/idea/231.9011.34.tar.gz -O intellij-community.tar && tar xf intellij-community.tar intellij-community-idea-231.9011.34/plugins/java-decompiler/engine && rm -rf intellij-community.tar WORKDIR /intellij-community-idea-231.9011.34/plugins/java-decompiler/engine -RUN export JAVA_HOME=/usr/lib/jvm/java-17-openjdk RUN ./gradlew build -x test && rm -rf /root/.gradle RUN mkdir /output && cp ./build/libs/fernflower.jar /output @@ -35,8 +34,8 @@ RUN DOWNLOAD_URL=$(wget --quiet -O - https://api.github.com/repos/konveyor/maven FROM registry.access.redhat.com/ubi9/ubi-minimal # Java 1.8 is required for backwards compatibility with older versions of Gradle -RUN microdnf install -y python39 java-1.8.0-openjdk-devel java-17-openjdk-devel tar gzip zip --nodocs --setopt=install_weak_deps=0 && microdnf clean all && rm -rf /var/cache/dnf -ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk +RUN microdnf install -y python39 java-1.8.0-openjdk-devel java-21-openjdk-devel tar gzip zip --nodocs --setopt=install_weak_deps=0 && microdnf clean all && rm -rf /var/cache/dnf +ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk # Specify Java 1.8 home for usage with gradle wrappers ENV JAVA8_HOME /usr/lib/jvm/java-1.8.0-openjdk RUN curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz && \ From 4779bd066271d2dc06077bfd950debcde658d7c7 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Mon, 13 Oct 2025 18:50:04 -0400 Subject: [PATCH 02/10] fix bug with duplicate symbols from type and import Signed-off-by: Pranav Gaikwad --- .../tackle/core/internal/symbol/DefaultSymbolProvider.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/DefaultSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/DefaultSymbolProvider.java index b8bda7a..5eb0bdb 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/DefaultSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/DefaultSymbolProvider.java @@ -40,14 +40,14 @@ public List get(SearchMatch match) throws CoreException { if (specificSymbols == null || specificSymbols.isEmpty()) { continue; } - symbols.addAll(specificSymbols); - logInfo("got Symbols: " + symbols.size()); + logInfo("got Symbols: " + specificSymbols.size()); // Have to handle here, the search matches can not ballon // for now this will be fine if (this.maxResults != 0 && symbols.size() >= this.maxResults) { return symbols; } + break; // break here to avoid Type and IMPORT providers returning duplicate matches } return symbols; } From 88dea52d7c3dceac5f19a97eaaf7fb2d9c12c6d4 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Mon, 13 Oct 2025 18:50:43 -0400 Subject: [PATCH 03/10] make sure compilation unit isn't closed during getLocation Signed-off-by: Pranav Gaikwad --- .../internal/SymbolInformationTypeRequestor.java | 2 +- .../internal/symbol/AnnotationSymbolProvider.java | 6 ++++-- .../symbol/ConstructorCallSymbolProvider.java | 14 +++++++++----- .../internal/symbol/MethodCallSymbolProvider.java | 6 ++++-- .../core/internal/symbol/SymbolProvider.java | 15 ++++++++++++--- .../core/internal/symbol/TypeSymbolProvider.java | 6 ++++-- 6 files changed, 34 insertions(+), 15 deletions(-) diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/SymbolInformationTypeRequestor.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/SymbolInformationTypeRequestor.java index 89522aa..da31188 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/SymbolInformationTypeRequestor.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/SymbolInformationTypeRequestor.java @@ -85,7 +85,7 @@ public void acceptSearchMatch(SearchMatch match) throws CoreException { ((WithMaxResults) symbolProvider).setMaxResultes(this.maxResults); } - logInfo("getting match: " + match + "with provider: " + symbolProvider); + logInfo("getting match: " + match + "with provider: " + symbolProvider + " for query: " + this.query); List symbols = Optional.ofNullable(symbolProvider.get(match)).orElse(new ArrayList<>()); this.symbols.addAll(symbols); } diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/AnnotationSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/AnnotationSymbolProvider.java index e2365bc..aecf365 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/AnnotationSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/AnnotationSymbolProvider.java @@ -128,8 +128,10 @@ public List get(SearchMatch match) throws CoreException { } } if (unit != null && unit.isWorkingCopy()) { - unit.discardWorkingCopy(); - unit.close(); + synchronized (SymbolProvider.LOCATION_LOCK) { + unit.discardWorkingCopy(); + unit.close(); + } } } else { if (annotationQuery != null) { diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/ConstructorCallSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/ConstructorCallSymbolProvider.java index f73e5c1..ca9f5a7 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/ConstructorCallSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/ConstructorCallSymbolProvider.java @@ -72,12 +72,16 @@ public List get(SearchMatch match) throws CoreException { CompilationUnit cu = (CompilationUnit) astParser.createAST(null); CustomASTVisitor visitor = new CustomASTVisitor(query, match, QueryLocation.CONSTRUCTOR_CALL); // Under tests, resolveConstructorBinding will return null if there are problems - cu.accept(visitor); - if (visitor.symbolMatches()) { - symbols.add(symbol); + cu.accept(visitor); + if (visitor.symbolMatches()) { + symbols.add(symbol); + } + if (unit != null && unit.isWorkingCopy()) { + synchronized (SymbolProvider.LOCATION_LOCK) { + unit.discardWorkingCopy(); + unit.close(); } - unit.discardWorkingCopy(); - unit.close(); + } } else { symbols.add(symbol); } diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java index 8826eda..0cf7f88 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java @@ -79,8 +79,10 @@ public List get(SearchMatch match) { symbols.add(symbol); } } - unit.discardWorkingCopy(); - unit.close(); + synchronized (SymbolProvider.LOCATION_LOCK) { + unit.discardWorkingCopy(); + unit.close(); + } } else { symbols.add(symbol); } diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java index b86a5d5..09a1033 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java @@ -31,6 +31,7 @@ import org.eclipse.lsp4j.SymbolKind; public interface SymbolProvider { public static final int MAX_PROBLEMS_TO_LOG = 10; + Object LOCATION_LOCK = new Object(); List get(SearchMatch match) throws CoreException; @@ -98,7 +99,11 @@ default Location getLocation(IJavaElement element, SearchMatch match) throws Jav ICompilationUnit compilationUnit = (ICompilationUnit) element.getAncestor(IJavaElement.COMPILATION_UNIT); if (compilationUnit != null) { logInfo("found compliation unit for match: " + match); - return JDTUtils.toLocation(compilationUnit, match.getOffset(), match.getLength()); + synchronized (LOCATION_LOCK) { + Location location = JDTUtils.toLocation(compilationUnit, match.getOffset(), match.getLength()); + logInfo("Returning location: " + location + " for match: " + match); + return location; + } } IClassFile cf = (IClassFile) element.getAncestor(IJavaElement.CLASS_FILE); if (cf != null) { @@ -131,7 +136,9 @@ default Location getLocation(IJavaElement element, SearchMatch match) throws Jav } Range range = null; try { - range = toRange(cf, match.getOffset(), match.getLength()); + synchronized (LOCATION_LOCK) { + range = toRange(cf, match.getOffset(), match.getLength()); + } } catch (Exception e) { JavaLanguageServerPlugin.logException("Error generating range for class ", e); return null; @@ -143,7 +150,9 @@ default Location getLocation(IJavaElement element, SearchMatch match) throws Jav try { // This casting is safe or is assumed to be safer because the ToString on SearchMatch does it logInfo("defaulting to regular toLocation for match: " + match); - return JDTUtils.toLocation(element); + synchronized (LOCATION_LOCK) { + return JDTUtils.toLocation(element); + } } catch (Exception e) { JavaLanguageServerPlugin.logException("Unable to determine location for the element " + element, e); return null; diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java index df3ff1e..113185b 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java @@ -101,8 +101,10 @@ public List get(SearchMatch match) { } } } - compilationUnit.discardWorkingCopy(); - compilationUnit.close(); + synchronized (SymbolProvider.LOCATION_LOCK) { + compilationUnit.discardWorkingCopy(); + compilationUnit.close(); + } if (!isAccurate) { return null; } From b5c6fb84b83b74e90cb9eba6dceb0989c045e8fa Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Tue, 14 Oct 2025 10:13:02 -0400 Subject: [PATCH 04/10] make sure unit is not null before closing Signed-off-by: Pranav Gaikwad --- .../core/internal/symbol/MethodCallSymbolProvider.java | 8 +++++--- .../tackle/core/internal/symbol/TypeSymbolProvider.java | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java index 0cf7f88..c78f60c 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/MethodCallSymbolProvider.java @@ -79,9 +79,11 @@ public List get(SearchMatch match) { symbols.add(symbol); } } - synchronized (SymbolProvider.LOCATION_LOCK) { - unit.discardWorkingCopy(); - unit.close(); + if (unit != null) { + synchronized (SymbolProvider.LOCATION_LOCK) { + unit.discardWorkingCopy(); + unit.close(); + } } } else { symbols.add(symbol); diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java index 113185b..0f69f50 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/TypeSymbolProvider.java @@ -101,9 +101,11 @@ public List get(SearchMatch match) { } } } - synchronized (SymbolProvider.LOCATION_LOCK) { - compilationUnit.discardWorkingCopy(); - compilationUnit.close(); + if (compilationUnit != null) { + synchronized (SymbolProvider.LOCATION_LOCK) { + compilationUnit.discardWorkingCopy(); + compilationUnit.close(); + } } if (!isAccurate) { return null; From bf6b1a4b7c3b892b03051f36b46c6c917445ac22 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Tue, 14 Oct 2025 10:20:39 -0400 Subject: [PATCH 05/10] make sure that qualification matches considers fqn usage without import and queries like (A|B|C) Signed-off-by: Pranav Gaikwad --- .../io/konveyor/tackle/core/internal/symbol/SymbolProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java index 09a1033..86a340c 100644 --- a/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java +++ b/java-analyzer-bundle.core/src/main/java/io/konveyor/tackle/core/internal/symbol/SymbolProvider.java @@ -207,7 +207,7 @@ default boolean queryQualificationMatches(String query, IJavaElement matchedElem // should consider parameter here // e.g. java.nio.file.Paths.get(String)/java.nio.file.Paths.get(*) -> java.nio.file.Paths.get // Remove any parentheses and their contents - query = query.replaceAll("\\(.*\\)", ""); + query = query.replaceAll("\\([^|]*\\)", ""); query = query.replaceAll("(? Date: Thu, 11 Dec 2025 13:40:11 -0500 Subject: [PATCH 06/10] :ghost: update p2 repos, upgrade to JavaSE-21 as a target platform Signed-off-by: Pranav Gaikwad --- Dockerfile | 27 +++++++++---------- .../META-INF/MANIFEST.MF | 2 +- java-analyzer-bundle.site/category.xml | 12 ++++----- .../META-INF/MANIFEST.MF | 2 +- .../java-analyzer-bundle.target | 10 +++---- pom.xml | 19 ++++++++----- 6 files changed, 38 insertions(+), 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1d53937..4bff3cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,9 +7,6 @@ RUN curl -s -o jdtls.tar.gz https://download.eclipse.org/jdtls/milestones/1.51.0 COPY jdtls-bin-override/jdtls.py /jdtls/bin/jdtls.py -FROM registry.access.redhat.com/ubi9/ubi AS maven-index -COPY hack/maven.default.index /maven.default.index - FROM registry.access.redhat.com/ubi9/ubi AS fernflower RUN dnf install -y maven-openjdk17 wget --setopt=install_weak_deps=False && dnf clean all && rm -rf /var/cache/dnf RUN wget --quiet https://github.com/JetBrains/intellij-community/archive/refs/tags/idea/231.9011.34.tar.gz -O intellij-community.tar && tar xf intellij-community.tar intellij-community-idea-231.9011.34/plugins/java-decompiler/engine && rm -rf intellij-community.tar @@ -18,14 +15,15 @@ RUN ./gradlew build -x test && rm -rf /root/.gradle RUN mkdir /output && cp ./build/libs/fernflower.jar /output FROM registry.access.redhat.com/ubi9/ubi AS addon-build -RUN dnf install -y maven-openjdk17 && dnf clean all && rm -rf /var/cache/dnf +RUN dnf install -y java-21-openjdk-devel wget zip --nodocs --setopt=install_weak_deps=0 && dnf clean all && rm -rf /var/cache/dnf +RUN curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz && \ + tar -xzf /tmp/apache-maven.tar.gz -C /usr/local/ && \ + rm /tmp/apache-maven.tar.gz WORKDIR /app COPY ./ /app/ -ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk -RUN mvn clean install -DskipTests=true - -FROM registry.access.redhat.com/ubi9/ubi-minimal AS index-download -RUN microdnf install -y wget zip && microdnf clean all && rm -rf /var/cache/dnf +ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk +RUN /usr/local/apache-maven-3.9.11/bin/mvn clean install -DskipTests=true +# Download maven index data WORKDIR /maven-index-data RUN DOWNLOAD_URL=$(wget --quiet -O - https://api.github.com/repos/konveyor/maven-search-index/releases/latest | grep '"browser_download_url".*maven-index-data.*\.zip' | sed -E 's/.*"browser_download_url": "([^"]+)".*/\1/') && \ wget --quiet ${DOWNLOAD_URL} -O maven-index-data.zip && \ @@ -38,23 +36,22 @@ RUN microdnf install -y python39 java-1.8.0-openjdk-devel java-21-openjdk-devel ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk # Specify Java 1.8 home for usage with gradle wrappers ENV JAVA8_HOME /usr/lib/jvm/java-1.8.0-openjdk -RUN curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz && \ - tar -xzf /tmp/apache-maven.tar.gz -C /usr/local/ && \ - ln -s /usr/local/apache-maven-3.9.11/bin/mvn /usr/bin/mvn && \ - rm /tmp/apache-maven.tar.gz ENV M2_HOME /usr/local/apache-maven-3.9.11 # Copy "download sources" gradle task. This is needed to download project sources. RUN mkdir /root/.gradle COPY ./gradle/build.gradle /usr/local/etc/task.gradle COPY ./gradle/build-v9.gradle /usr/local/etc/task-v9.gradle +# Copy the maven index text file used to filter out open source libraries +COPY hack/maven.default.index /usr/local/etc/maven.default.index COPY --from=jdtls-download /jdtls /jdtls/ +COPY --from=addon-build /usr/local/apache-maven-3.9.11/ /usr/local/apache-maven-3.9.11/ +RUN ln -s /usr/local/apache-maven-3.9.11/bin/mvn /usr/bin/mvn COPY --from=addon-build /root/.m2/repository/io/konveyor/tackle/java-analyzer-bundle.core/1.0.0-SNAPSHOT/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar /jdtls/plugins/ COPY --from=addon-build /root/.m2/repository/io/konveyor/tackle/java-analyzer-bundle.core/1.0.0-SNAPSHOT/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar /jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar COPY --from=fernflower /output/fernflower.jar /bin/fernflower.jar -COPY --from=maven-index /maven.default.index /usr/local/etc/maven.default.index -COPY --from=index-download /maven-index-data/central.archive-metadata.txt /usr/local/etc/maven-index.txt +COPY --from=addon-build /maven-index-data/central.archive-metadata.txt /usr/local/etc/maven-index.txt RUN ln -sf /root/.m2 /.m2 && chgrp -R 0 /root && chmod -R g=u /root CMD [ "/jdtls/bin/jdtls" ] diff --git a/java-analyzer-bundle.core/META-INF/MANIFEST.MF b/java-analyzer-bundle.core/META-INF/MANIFEST.MF index c143308..80f8fe2 100644 --- a/java-analyzer-bundle.core/META-INF/MANIFEST.MF +++ b/java-analyzer-bundle.core/META-INF/MANIFEST.MF @@ -11,4 +11,4 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.lsp4j, org.eclipse.m2e.jdt Bundle-ActivationPolicy: lazy -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 diff --git a/java-analyzer-bundle.site/category.xml b/java-analyzer-bundle.site/category.xml index 50203eb..d23de00 100644 --- a/java-analyzer-bundle.site/category.xml +++ b/java-analyzer-bundle.site/category.xml @@ -1,17 +1,17 @@ - + - + - + - + - - + + diff --git a/java-analyzer-bundle.test/META-INF/MANIFEST.MF b/java-analyzer-bundle.test/META-INF/MANIFEST.MF index 39ec46d..6b98ffc 100644 --- a/java-analyzer-bundle.test/META-INF/MANIFEST.MF +++ b/java-analyzer-bundle.test/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: java-analyzer-bundle Test Fragment Bundle-SymbolicName: java-analyzer-bundle.test Bundle-Version: 1.0.0.qualifier Fragment-Host: java-analyzer-bundle.core;bundle-version="1.0.0" -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.jdt.junit4.runtime;bundle-version="1.1.0", org.apache.commons.io, org.apache.commons.lang3, diff --git a/java-analyzer-bundle.tp/java-analyzer-bundle.target b/java-analyzer-bundle.tp/java-analyzer-bundle.target index 219276e..b20db48 100644 --- a/java-analyzer-bundle.tp/java-analyzer-bundle.target +++ b/java-analyzer-bundle.tp/java-analyzer-bundle.target @@ -2,12 +2,12 @@ - - + @@ -56,7 +56,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -72,5 +72,5 @@ - + diff --git a/pom.xml b/pom.xml index 904c474..2efcda1 100644 --- a/pom.xml +++ b/pom.xml @@ -15,8 +15,8 @@ UTF-8 UTF-8 - 3.0.1 - 3.0.1 + 4.0.7 + 4.0.7 scm:git:https://github.com/konveyor/java-analyzer-bundle.git true @@ -41,10 +41,17 @@ target-platform-configuration ${tycho.version} - JavaSE-17 - p2 - consider - true + JavaSE-21 + + + linux + gtk + x86_64 + + + + + io.konveyor.tackle From 52c5dabc14ff27d7e339537519c3d8f8506bbdeb Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Thu, 11 Dec 2025 14:56:26 -0500 Subject: [PATCH 07/10] upgrade java version in workflow Signed-off-by: Pranav Gaikwad --- .github/workflows/integration-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 165062a..7473588 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -16,7 +16,7 @@ jobs: - name: Set up JDK 17 uses: actions/setup-java@v5 with: - java-version: '17' + java-version: '21' distribution: 'temurin' cache: maven @@ -43,7 +43,7 @@ jobs: - name: Set up JDK 17 uses: actions/setup-java@v4 with: - java-version: '17' + java-version: '21' distribution: 'temurin' cache: maven From b900843b47672c8e40ce25c1a31131ef51c8c821 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Sat, 13 Dec 2025 07:36:19 -0500 Subject: [PATCH 08/10] removed environment specific step Signed-off-by: Pranav Gaikwad --- pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pom.xml b/pom.xml index 2efcda1..5cf74fe 100644 --- a/pom.xml +++ b/pom.xml @@ -42,13 +42,6 @@ ${tycho.version} JavaSE-21 - - - linux - gtk - x86_64 - - From 5b4459f542388d3e3486ebdff93227b2a095a9f3 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Thu, 18 Dec 2025 10:28:03 -0500 Subject: [PATCH 09/10] removing resolver, pomDependencies, ignoreTychoRepositories options Signed-off-by: Pranav Gaikwad --- pom.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pom.xml b/pom.xml index 5cf74fe..52bbb41 100644 --- a/pom.xml +++ b/pom.xml @@ -42,9 +42,6 @@ ${tycho.version} JavaSE-21 - - - io.konveyor.tackle From 4ac85bf3cb0a8bf0c57d27b884bea75f6cc410f2 Mon Sep 17 00:00:00 2001 From: Pranav Gaikwad Date: Thu, 18 Dec 2025 10:55:04 -0500 Subject: [PATCH 10/10] upgrade maven version because apparently the 3.9.11 is not available anymore beginning 12/16/2025, wth Signed-off-by: Pranav Gaikwad --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4bff3cf..0bc4d0e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,13 +16,13 @@ RUN mkdir /output && cp ./build/libs/fernflower.jar /output FROM registry.access.redhat.com/ubi9/ubi AS addon-build RUN dnf install -y java-21-openjdk-devel wget zip --nodocs --setopt=install_weak_deps=0 && dnf clean all && rm -rf /var/cache/dnf -RUN curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz && \ +RUN curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/3.9.12/binaries/apache-maven-3.9.12-bin.tar.gz && \ tar -xzf /tmp/apache-maven.tar.gz -C /usr/local/ && \ rm /tmp/apache-maven.tar.gz WORKDIR /app COPY ./ /app/ ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk -RUN /usr/local/apache-maven-3.9.11/bin/mvn clean install -DskipTests=true +RUN /usr/local/apache-maven-3.9.12/bin/mvn clean install -DskipTests=true # Download maven index data WORKDIR /maven-index-data RUN DOWNLOAD_URL=$(wget --quiet -O - https://api.github.com/repos/konveyor/maven-search-index/releases/latest | grep '"browser_download_url".*maven-index-data.*\.zip' | sed -E 's/.*"browser_download_url": "([^"]+)".*/\1/') && \ @@ -36,7 +36,7 @@ RUN microdnf install -y python39 java-1.8.0-openjdk-devel java-21-openjdk-devel ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk # Specify Java 1.8 home for usage with gradle wrappers ENV JAVA8_HOME /usr/lib/jvm/java-1.8.0-openjdk -ENV M2_HOME /usr/local/apache-maven-3.9.11 +ENV M2_HOME /usr/local/apache-maven-3.9.12 # Copy "download sources" gradle task. This is needed to download project sources. RUN mkdir /root/.gradle @@ -46,8 +46,8 @@ COPY ./gradle/build-v9.gradle /usr/local/etc/task-v9.gradle COPY hack/maven.default.index /usr/local/etc/maven.default.index COPY --from=jdtls-download /jdtls /jdtls/ -COPY --from=addon-build /usr/local/apache-maven-3.9.11/ /usr/local/apache-maven-3.9.11/ -RUN ln -s /usr/local/apache-maven-3.9.11/bin/mvn /usr/bin/mvn +COPY --from=addon-build /usr/local/apache-maven-3.9.12/ /usr/local/apache-maven-3.9.12/ +RUN ln -s /usr/local/apache-maven-3.9.12/bin/mvn /usr/bin/mvn COPY --from=addon-build /root/.m2/repository/io/konveyor/tackle/java-analyzer-bundle.core/1.0.0-SNAPSHOT/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar /jdtls/plugins/ COPY --from=addon-build /root/.m2/repository/io/konveyor/tackle/java-analyzer-bundle.core/1.0.0-SNAPSHOT/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar /jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar COPY --from=fernflower /output/fernflower.jar /bin/fernflower.jar