Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package plexus-i18n for openSUSE:Factory checked in at 2026-09-29 17:49:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/plexus-i18n (Old) and /work/SRC/openSUSE:Factory/.plexus-i18n.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plexus-i18n" Tue Sep 29 17:49:37 2026 rev:7 rq:1381217 version:1.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/plexus-i18n/plexus-i18n.changes 2025-10-07 18:31:51.462302587 +0200 +++ /work/SRC/openSUSE:Factory/.plexus-i18n.new.383539/plexus-i18n.changes 2026-09-29 17:51:04.797464617 +0200 @@ -1,0 +2,21 @@ +Mon Sep 28 13:51:21 UTC 2026 - Fridrich Strba <[email protected]> + +- Upgrade to version 1.2.0 + * New features and improvements + + Establish an automatic module name + * Maintenance + + Rewrite README with usage, status and version guidance + * Build + + Update parent to plexus 27 + + Draft release notes on push to master + * Dependency updates + + Bump org.codehaus.plexus:plexus from 24 to 26 + + Bump org.codehaus.plexus:plexus-testing from 2.0.1 to 2.1.0 +- Changes of version 1.1.0 + * Maintenance update + + Bump org.codehaus.plexus:plexus from 23 to 24 + + Bump org.codehaus.plexus:plexus-testing to 2.0.1 + + Fix DefaultI18N to prevent fallback to JVM default locale + + JUnit Jupiter best practices + +------------------------------------------------------------------- Old: ---- plexus-i18n-1.0.0-source-release.zip New: ---- plexus-i18n-1.2.0-source-release.zip ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ plexus-i18n.spec ++++++ --- /var/tmp/diff_new_pack.WwMkgC/_old 2026-09-29 17:51:05.650500237 +0200 +++ /var/tmp/diff_new_pack.WwMkgC/_new 2026-09-29 17:51:05.651500279 +0200 @@ -1,7 +1,7 @@ # # spec file for package plexus-i18n # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %global parent plexus %global subname i18n Name: %{parent}-%{subname} -Version: 1.0.0 +Version: 1.2.0 Release: 0 Summary: Plexus I18N Component License: Apache-2.0 ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.WwMkgC/_old 2026-09-29 17:51:05.687501782 +0200 +++ /var/tmp/diff_new_pack.WwMkgC/_new 2026-09-29 17:51:05.690501907 +0200 @@ -1,6 +1,6 @@ -mtime: 1759840445 -commit: f8aaec59a39147c3d294e14e17c20a8d4915387eafc33f3443ebaeffc0e90ade -url: https://src.opensuse.org/java-packages/plexus-i18n.git -revision: f8aaec59a39147c3d294e14e17c20a8d4915387eafc33f3443ebaeffc0e90ade +mtime: 1790603847 +commit: af4e95a7b962979f722138c7e4b7c4aec8f43b98bf57aaae1c568acb5b55e9cf +url: https://src.opensuse.org/java-packages/plexus-i18n +revision: af4e95a7b962979f722138c7e4b7c4aec8f43b98bf57aaae1c568acb5b55e9cf projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-09-28 15:57:27.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ plexus-i18n-1.0.0-source-release.zip -> plexus-i18n-1.2.0-source-release.zip ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/.gitignore new/plexus-i18n-1.2.0/.gitignore --- old/plexus-i18n-1.0.0/.gitignore 2025-08-25 21:59:26.000000000 +0200 +++ new/plexus-i18n-1.2.0/.gitignore 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -target/ -.project -.classpath -.settings/ -bin -*.iml -.idea diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/README.md new/plexus-i18n-1.2.0/README.md --- old/plexus-i18n-1.0.0/README.md 2025-08-25 21:59:26.000000000 +0200 +++ new/plexus-i18n-1.2.0/README.md 2026-08-19 14:42:50.000000000 +0200 @@ -1,8 +1,54 @@ -Plexus-I18N -=========== +# Plexus I18N -[](http://www.apache.org/licenses/) -[](https://search.maven.org/artifact/org.codehaus.plexus/plexus-i18n) -[](https://github.com/codehaus-plexus/plexus-i18n/actions) +[](https://central.sonatype.com/artifact/org.codehaus.plexus/plexus-i18n) +[](https://github.com/codehaus-plexus/plexus-i18n/actions) +[](https://www.apache.org/licenses/LICENSE-2.0) -The canonical git repository is located at https://github.com/codehaus-plexus/plexus-i18n +Looks up localised messages from `ResourceBundle`s, with a default bundle and locale so callers don't have to pass them every time. Used by Maven reporting plugins to localise generated report text — `maven-project-info-reports-plugin`, `maven-surefire-report-plugin`, `maven-checkstyle-plugin`, `maven-pmd-plugin` and `maven-site-plugin` among them. + +It is a thin convenience layer over `java.util.ResourceBundle`, not a translation framework. + +## Status + +Maintained, but quiet by design — the API is small, stable and finished. Expect dependency updates and build maintenance rather than new features. + +Versions before `1.0.0` were published as `1.0-beta-*` for many years; `1.0.0` and `1.1.0` (November 2025) are the same component with the beta label dropped. If you are still on a `1.0-beta-*` version, moving to `1.1.0` should need no code changes. + +## Using it + +```xml +<dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-i18n</artifactId> + <version>1.1.0</version> +</dependency> +``` + +Check the badge above for the current version. + +```java +@Inject +I18N i18n; + +String greeting = i18n.getString("report.title"); +String inFrench = i18n.getString("report.title", Locale.FRENCH); +String fromBundle = i18n.getString("my-bundle", Locale.FRENCH, "report.title"); +``` + +`I18N` is a JSR-330 singleton, so any [Eclipse Sisu](https://www.eclipse.org/sisu/) or Guice context can inject it. No Plexus container is involved — that was retired long ago, despite the name. + +## Requirements + +Java 8 or later. + +## Documentation + +- [Project site](https://codehaus-plexus.github.io/plexus-i18n/) +- [Javadoc](https://javadoc.io/doc/org.codehaus.plexus/plexus-i18n) +- [Release notes](https://github.com/codehaus-plexus/plexus-i18n/releases) + +## Contributing + +See [CONTRIBUTING.md](https://github.com/codehaus-plexus/.github/blob/master/CONTRIBUTING.md). In short: `mvn verify` builds, and run `mvn spotless:apply` before pushing or CI will fail on formatting. + +Please report security vulnerabilities privately — see [SECURITY.md](https://github.com/codehaus-plexus/.github/blob/master/SECURITY.md), not a public issue. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/pom.xml new/plexus-i18n-1.2.0/pom.xml --- old/plexus-i18n-1.0.0/pom.xml 2025-08-25 21:59:26.000000000 +0200 +++ new/plexus-i18n-1.2.0/pom.xml 2026-08-19 14:42:50.000000000 +0200 @@ -5,19 +5,21 @@ <parent> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus</artifactId> - <version>23</version> + <version>27</version> <relativePath /> </parent> <artifactId>plexus-i18n</artifactId> - <version>1.0.0</version> + <version>1.2.0</version> <name>Plexus I18N Component</name> + <description>Looks up localised messages from resource bundles, with a default bundle and + locale.</description> <scm> <connection>scm:git:https://github.com/codehaus-plexus/plexus-i18n.git</connection> <developerConnection>${project.scm.connection}</developerConnection> - <tag>plexus-i18n-1.0.0</tag> + <tag>plexus-i18n-1.2.0</tag> <url>https://github.com/codehaus-plexus/plexus-i18n</url> </scm> <issueManagement> @@ -33,7 +35,7 @@ <properties> <slf4jVersion>1.7.36</slf4jVersion> - <project.build.outputTimestamp>2025-08-25T21:59:26Z</project.build.outputTimestamp> + <project.build.outputTimestamp>2026-08-19T14:42:50Z</project.build.outputTimestamp> </properties> <dependencies> @@ -56,7 +58,7 @@ <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-testing</artifactId> - <version>1.6.0</version> + <version>2.2.0</version> <scope>test</scope> </dependency> </dependencies> @@ -65,6 +67,17 @@ <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestEntries> + <Automatic-Module-Name>org.codehaus.plexus.i18n</Automatic-Module-Name> + </manifestEntries> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-scm-publish-plugin</artifactId> <configuration> <content>${project.reporting.outputDirectory}</content> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/src/main/java/org/codehaus/plexus/i18n/DefaultI18N.java new/plexus-i18n-1.2.0/src/main/java/org/codehaus/plexus/i18n/DefaultI18N.java --- old/plexus-i18n-1.0.0/src/main/java/org/codehaus/plexus/i18n/DefaultI18N.java 2025-08-25 21:59:26.000000000 +0200 +++ new/plexus-i18n-1.2.0/src/main/java/org/codehaus/plexus/i18n/DefaultI18N.java 2026-08-19 14:42:50.000000000 +0200 @@ -298,7 +298,10 @@ if (rb == null) { bundlesByLocale = (bundlesByLocale == null ? new HashMap<>(3) : new HashMap<>(bundlesByLocale)); try { - rb = ResourceBundle.getBundle(bundleName, locale); + rb = ResourceBundle.getBundle( + bundleName, + locale, + ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_DEFAULT)); } catch (MissingResourceException e) { rb = findBundleByLocale(bundleName, locale, bundlesByLocale); if (rb == null) { @@ -371,7 +374,10 @@ */ private ResourceBundle getBundleIgnoreException(String bundleName, Locale locale) { try { - return ResourceBundle.getBundle(bundleName, locale); + return ResourceBundle.getBundle( + bundleName, + locale, + ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_DEFAULT)); } catch (MissingResourceException ignored) { return null; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/src/test/java/org/codehaus/plexus/i18n/DefaultI18NTest.java new/plexus-i18n-1.2.0/src/test/java/org/codehaus/plexus/i18n/DefaultI18NTest.java --- old/plexus-i18n-1.0.0/src/test/java/org/codehaus/plexus/i18n/DefaultI18NTest.java 2025-08-25 21:59:26.000000000 +0200 +++ new/plexus-i18n-1.2.0/src/test/java/org/codehaus/plexus/i18n/DefaultI18NTest.java 2026-08-19 14:42:50.000000000 +0200 @@ -73,7 +73,7 @@ * @author <a href="mailto:[email protected]">Jason van Zyl</a> */ @PlexusTest -public class DefaultI18NTest { +class DefaultI18NTest { @Inject private I18N i18n; @@ -84,7 +84,7 @@ } @Test - public void testLocalization() { + void localization() { String s0 = i18n.getString(null, null, "key1"); assertEquals("[] value1", s0, "Unable to retrieve localized text for locale: default"); @@ -110,7 +110,7 @@ Locale.setDefault(Locale.FRENCH); try { String s7 = i18n.getString("org.codehaus.plexus.i18n.i18n", Locale.ENGLISH, "key1"); - assertEquals("[fr] value1", s7, "Not picking up new default locale: fr"); + assertEquals("[] value1", s7, "Should not fall back to default locale, use root bundle instead"); String s8 = i18n.getString("org.codehaus.plexus.i18n.i18n", Locale.ITALIAN, "key1"); assertEquals("[it] value1", s8, "Unable to retrieve localized properties for locale: it"); @@ -121,7 +121,7 @@ } @Test - public void testLocalizedMessagesWithFormatting() { + void localizedMessagesWithFormatting() { // Format methods String s6 = i18n.format("org.codehaus.plexus.i18n.i18n", null, "thanks.message", "jason"); @@ -137,8 +137,29 @@ } @Test - public void testLocalizedMessagesWithNonStandardLocale() { + void localizedMessagesWithNonStandardLocale() { String s0 = i18n.getString("name", new Locale("xx")); assertEquals("plexus", s0); } + + @Test + void noFallbackToDefaultLocale() { + // Save the current default locale + Locale oldDefault = Locale.getDefault(); + + try { + // Set default locale to German + Locale.setDefault(Locale.GERMAN); + + // Request a locale that doesn't have a bundle (Hebrew - Israel) + // Expected: should get the root bundle with "[] value1" + // Bug: currently gets the German bundle with "[de] value1" + String result = i18n.getString("org.codehaus.plexus.i18n.i18n", new Locale("iw", "IL"), "key1"); + + assertEquals("[] value1", result, "Should get root bundle, not default locale bundle"); + } finally { + // Restore the original default locale + Locale.setDefault(oldDefault); + } + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/src/test/java/org/codehaus/plexus/i18n/I18NTokenizerTest.java new/plexus-i18n-1.2.0/src/test/java/org/codehaus/plexus/i18n/I18NTokenizerTest.java --- old/plexus-i18n-1.0.0/src/test/java/org/codehaus/plexus/i18n/I18NTokenizerTest.java 2025-08-25 21:59:26.000000000 +0200 +++ new/plexus-i18n-1.2.0/src/test/java/org/codehaus/plexus/i18n/I18NTokenizerTest.java 2026-08-19 14:42:50.000000000 +0200 @@ -67,9 +67,9 @@ * @author <a href="mailto:[email protected]">Jason van Zyl</a> * @version $Id: I18NTokenizerTest.java 831 2004-06-16 17:01:12Z jvanzyl $ */ -public class I18NTokenizerTest { +class I18NTokenizerTest { @Test - public void testLocaleTokenizer() { + void localeTokenizer() { I18NTokenizer tok = new I18NTokenizer("en, es;q=0.8, zh-TW;q=0.1"); Locale locale = tok.next(); assertEquals("en", locale.getLanguage(), "Either wrong language or order parsing: " + locale); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plexus-i18n-1.0.0/src/test/resources/org/codehaus/plexus/i18n/i18n_de.properties new/plexus-i18n-1.2.0/src/test/resources/org/codehaus/plexus/i18n/i18n_de.properties --- old/plexus-i18n-1.0.0/src/test/resources/org/codehaus/plexus/i18n/i18n_de.properties 1970-01-01 01:00:00.000000000 +0100 +++ new/plexus-i18n-1.2.0/src/test/resources/org/codehaus/plexus/i18n/i18n_de.properties 2026-08-19 14:42:50.000000000 +0200 @@ -0,0 +1,4 @@ +key1 = [de] value1 +thanks.message = Danke {0}! +thanks.message1 = Danke {0} {1}! +thanks.message2 = Danke {0} {1}! ++++++ plexus-i18n-build.xml ++++++ --- /var/tmp/diff_new_pack.WwMkgC/_old 2026-09-29 17:51:05.956513015 +0200 +++ /var/tmp/diff_new_pack.WwMkgC/_new 2026-09-29 17:51:05.962513266 +0200 @@ -14,7 +14,7 @@ <property name="project.artifactId" value="plexus-i18n"/> <property name="project.groupId" value="org.codehaus.plexus"/> - <property name="project.version" value="1.0.0"/> + <property name="project.version" value="1.2.0"/> <property name="build.finalName" value="${project.artifactId}-${project.version}"/> <property name="build.dir" value="target"/> @@ -127,6 +127,7 @@ basedir="${build.outputDir}" excludes="**/package.html"> <manifest> + <attribute name="Automatic-Module-Name" value="org.codehaus.plexus.i18n"/> <attribute name="JavaPackages-ArtifactId" value="${project.artifactId}"/> <attribute name="JavaPackages-GroupId" value="${project.groupId}"/> <attribute name="JavaPackages-Version" value="${project.version}"/>
