From 26010caea8a2c6753e76d811b1b8b2857c164426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 17 Dec 2024 09:05:36 +0200 Subject: [PATCH 1/5] Mandate Lucene 10 Reduce chances for surprises at runtime. --- ua/org.eclipse.help.base/META-INF/MANIFEST.MF | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ua/org.eclipse.help.base/META-INF/MANIFEST.MF b/ua/org.eclipse.help.base/META-INF/MANIFEST.MF index 25da284e04a..b46769a9222 100644 --- a/ua/org.eclipse.help.base/META-INF/MANIFEST.MF +++ b/ua/org.eclipse.help.base/META-INF/MANIFEST.MF @@ -43,9 +43,9 @@ Require-Bundle: org.eclipse.ant.core;bundle-version="[3.2.200,4.0.0)";resolution org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)", org.eclipse.help;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, org.eclipse.core.net;bundle-version="[1.2.200,2.0.0)", - org.apache.lucene.analysis-common;bundle-version="[9.5.0,11.0.0)", - org.apache.lucene.core;bundle-version="[9.5.0,11.0.0)", - org.apache.lucene.analysis-smartcn;bundle-version="[9.5.0,11.0.0)" + org.apache.lucene.analysis-common;bundle-version="[10.0.0,11.0.0)", + org.apache.lucene.core;bundle-version="[10.0.0,11.0.0)", + org.apache.lucene.analysis-smartcn;bundle-version="[10.0.0,11.0.0)" Import-Package: org.eclipse.equinox.http.jetty;resolution:=optional Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy From cdc19583e5aedd80bde3200e017d0d66f61c8125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 17 Dec 2024 09:07:12 +0200 Subject: [PATCH 2/5] Move o.e.help.base to Java 21 It's already transitive dependency through Lucene. --- ua/org.eclipse.help.base/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 6 +++--- ua/org.eclipse.help.base/META-INF/MANIFEST.MF | 4 ++-- ua/org.eclipse.help.base/pom.xml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ua/org.eclipse.help.base/.classpath b/ua/org.eclipse.help.base/.classpath index 3ea5f9c25bf..d8aaaec59b0 100644 --- a/ua/org.eclipse.help.base/.classpath +++ b/ua/org.eclipse.help.base/.classpath @@ -1,6 +1,6 @@ - + diff --git a/ua/org.eclipse.help.base/.settings/org.eclipse.jdt.core.prefs b/ua/org.eclipse.help.base/.settings/org.eclipse.jdt.core.prefs index ebff8e3b3c6..bd80bdb60e3 100644 --- a/ua/org.eclipse.help.base/.settings/org.eclipse.jdt.core.prefs +++ b/ua/org.eclipse.help.base/.settings/org.eclipse.jdt.core.prefs @@ -7,9 +7,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.compliance=21 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -101,7 +101,7 @@ org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.compiler.source=21 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/ua/org.eclipse.help.base/META-INF/MANIFEST.MF b/ua/org.eclipse.help.base/META-INF/MANIFEST.MF index b46769a9222..98f3acecb7d 100644 --- a/ua/org.eclipse.help.base/META-INF/MANIFEST.MF +++ b/ua/org.eclipse.help.base/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %help_base_plugin_name Bundle-SymbolicName: org.eclipse.help.base; singleton:=true -Bundle-Version: 4.4.700.qualifier +Bundle-Version: 4.5.0.qualifier Bundle-Activator: org.eclipse.help.internal.base.HelpBasePlugin Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -47,6 +47,6 @@ Require-Bundle: org.eclipse.ant.core;bundle-version="[3.2.200,4.0.0)";resolution org.apache.lucene.core;bundle-version="[10.0.0,11.0.0)", org.apache.lucene.analysis-smartcn;bundle-version="[10.0.0,11.0.0)" Import-Package: org.eclipse.equinox.http.jetty;resolution:=optional -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy Automatic-Module-Name: org.eclipse.help.base diff --git a/ua/org.eclipse.help.base/pom.xml b/ua/org.eclipse.help.base/pom.xml index b156e66cd2d..6132f9e67a8 100644 --- a/ua/org.eclipse.help.base/pom.xml +++ b/ua/org.eclipse.help.base/pom.xml @@ -18,7 +18,7 @@ org.eclipse.help org.eclipse.help.base - 4.4.700-SNAPSHOT + 4.5.0-SNAPSHOT eclipse-plugin true From 3e416184e412b590923d86822c1b84b01d07433a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 17 Dec 2024 09:15:05 +0200 Subject: [PATCH 3/5] Stop using deprecated Locale constructors --- .../internal/base/IndexToolApplication.java | 6 ++-- .../help/internal/search/DefaultAnalyzer.java | 14 +++++----- .../help/internal/search/QueryBuilder.java | 28 +++++++++++-------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/IndexToolApplication.java b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/IndexToolApplication.java index fbccf485d1a..e8c090c8d07 100644 --- a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/IndexToolApplication.java +++ b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/IndexToolApplication.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2020 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -46,10 +46,10 @@ public synchronized Object start(IApplicationContext context) throws Exception { } Locale locale; if (localeStr.length() >= 5) { - locale = new Locale(localeStr.substring(0, 2), localeStr.substring(3, 5)); + locale = Locale.of(localeStr.substring(0, 2), localeStr.substring(3, 5)); } else { - locale = new Locale(localeStr.substring(0, 2), ""); //$NON-NLS-1$ + locale = Locale.of(localeStr.substring(0, 2), ""); //$NON-NLS-1$ } preindex(directory, locale); } diff --git a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java index 1e907214e66..a77036ec1b5 100644 --- a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java +++ b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/DefaultAnalyzer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2020 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the * accompanying materials are made available under the terms of the Eclipse Public License 2.0 @@ -53,7 +53,7 @@ public DefaultAnalyzer(String localeString) { } if (locale == null && userLocale.getDisplayVariant().length() > 0) { // Check if the locale without variant is supported by BreakIterator - Locale countryLocale = new Locale(userLocale.getLanguage(), userLocale.getCountry()); + Locale countryLocale = Locale.of(userLocale.getLanguage(), userLocale.getCountry()); for (Locale availableLocale : availableLocales) { if (countryLocale.equals(availableLocale)) { locale = countryLocale; @@ -63,7 +63,7 @@ public DefaultAnalyzer(String localeString) { } if (locale == null && userLocale.getCountry().length() > 0) { // Check if at least the language is supported by BreakIterator - Locale language = new Locale(userLocale.getLanguage(), ""); //$NON-NLS-1$ + Locale language = Locale.of(userLocale.getLanguage(), ""); //$NON-NLS-1$ for (Locale availableLocale : availableLocales) { if (language.equals(availableLocale)) { locale = language; @@ -79,7 +79,7 @@ public DefaultAnalyzer(String localeString) { + localeString + ", or Java Virtual Machine needs to be upgraded to version with proper support for locale {0}.", //$NON-NLS-1$ null); - locale = new Locale("en", "US"); //$NON-NLS-1$ //$NON-NLS-2$ + locale = Locale.of("en", "US"); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -95,11 +95,11 @@ private Locale getLocale(String clientLocale) { // break the string into tokens to get the Locale object StringTokenizer locales = new StringTokenizer(clientLocale, "_"); //$NON-NLS-1$ if (locales.countTokens() == 1) - return new Locale(locales.nextToken(), ""); //$NON-NLS-1$ + return Locale.of(locales.nextToken(), ""); //$NON-NLS-1$ else if (locales.countTokens() == 2) - return new Locale(locales.nextToken(), locales.nextToken()); + return Locale.of(locales.nextToken(), locales.nextToken()); else if (locales.countTokens() == 3) - return new Locale(locales.nextToken(), locales.nextToken(), locales.nextToken()); + return Locale.of(locales.nextToken(), locales.nextToken(), locales.nextToken()); else return Locale.getDefault(); } diff --git a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java index 4a198013a92..d5eb8be1831 100644 --- a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java +++ b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/search/QueryBuilder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2016 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -14,7 +14,9 @@ * Sopot Cela - Bug 466829 *******************************************************************************/ package org.eclipse.help.internal.search; -import java.io.*; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -22,12 +24,18 @@ import java.util.Locale; import java.util.StringTokenizer; -import org.apache.lucene.analysis.*; +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; -import org.apache.lucene.index.*; -import org.apache.lucene.search.*; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.BooleanClause; +import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.BooleanQuery.Builder; -import org.eclipse.help.internal.base.*; +import org.apache.lucene.search.BoostQuery; +import org.apache.lucene.search.PhraseQuery; +import org.apache.lucene.search.Query; +import org.eclipse.help.internal.base.BaseHelpSystem; +import org.eclipse.help.internal.base.HelpBasePlugin; /** * Build query acceptable by the search engine. */ @@ -57,10 +65,9 @@ public QueryBuilder(String searchWords, AnalyzerDescriptor analyzerDesc) { this.searchWords = searchWords; String language = analyzerDesc.getLang(); if (language.length() >= 5) { - this.locale = new Locale(language.substring(0, 2), language - .substring(3, 5)); + this.locale = Locale.of(language.substring(0, 2), language.substring(3, 5)); } else { - this.locale = new Locale(language.substring(0, 2), ""); //$NON-NLS-1$ + this.locale = Locale.of(language.substring(0, 2), ""); //$NON-NLS-1$ } this.analyzerDesc = analyzerDesc; this.analyzer = analyzerDesc.getAnalyzer(); @@ -297,8 +304,7 @@ private List getRequiredQueries(List tokens, String[] fi } private Query orQueries(Collection queries) { Builder builder = new BooleanQuery.Builder(); - for (Iterator it = queries.iterator(); it.hasNext();) { - Query q = it.next(); + for (Query q : queries) { builder.add(q, BooleanClause.Occur.SHOULD); } return builder.build(); From 569c2a61528ec61cec20bd0615df8fd0039b1eb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 17 Dec 2024 09:18:30 +0200 Subject: [PATCH 4/5] Do not catch/rethrow ThreadDeath In Java 21 Thread.stop simply throws UnsupportedOperationException and ThreadDeath was thrown only from that method in older JVM versions. --- .../src/org/eclipse/help/internal/base/BaseHelpSystem.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java index 9c5009eff8a..999ea81f38d 100644 --- a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java +++ b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2021 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -332,8 +332,6 @@ public static void runLiveHelp(String pluginID, String className, String arg) { runnableLiveHelp.setDaemon(true); runnableLiveHelp.start(); } - } catch (ThreadDeath td) { - throw td; } catch (Exception e) { } } From 3f20ca22adc5388f9039e29ace0faeccb32d5974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 17 Dec 2024 09:20:39 +0200 Subject: [PATCH 5/5] Use pattern matching in BaseHelpSystem --- .../src/org/eclipse/help/internal/base/BaseHelpSystem.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java index 999ea81f38d..7bc6cf39090 100644 --- a/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java +++ b/ua/org.eclipse.help.base/src/org/eclipse/help/internal/base/BaseHelpSystem.java @@ -324,8 +324,7 @@ public static void runLiveHelp(String pluginID, String className, String arg) { Class c = bundle.loadClass(className); Object o = c.getDeclaredConstructor().newInstance(); //Runnable runnable = null; - if (o instanceof ILiveHelpAction) { - ILiveHelpAction helpExt = (ILiveHelpAction) o; + if (o instanceof ILiveHelpAction helpExt) { if (arg != null) helpExt.setInitializationString(arg); Thread runnableLiveHelp = new Thread(helpExt);