Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package morfologik-stemming for openSUSE:Factory checked in at 2023-05-04 17:10:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/morfologik-stemming (Old) and /work/SRC/openSUSE:Factory/.morfologik-stemming.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "morfologik-stemming" Thu May 4 17:10:07 2023 rev:2 rq:1084301 version:2.1.9 Changes: -------- --- /work/SRC/openSUSE:Factory/morfologik-stemming/morfologik-stemming.changes 2020-03-04 09:38:59.401876881 +0100 +++ /work/SRC/openSUSE:Factory/.morfologik-stemming.new.1533/morfologik-stemming.changes 2023-05-04 17:10:19.644278141 +0200 @@ -1,0 +2,13 @@ +Wed May 3 09:41:01 UTC 2023 - Fridrich Strba <fst...@suse.com> + +- Upgrade to version 2.1.9 + * Changes: + + PR #114: improve run-on suggestions for camel case words + + GH-102: Update vulnerable jcommander dependency + * Version upgrade needed to be able to build against + beust-jcommander 1.82 +- Removed patch: + * 0001-Restore-Java-8-compatibility.patch + + Fixes by using the --release option + +------------------------------------------------------------------- Old: ---- 0001-Restore-Java-8-compatibility.patch 2.1.6.tar.gz New: ---- 2.1.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ morfologik-stemming.spec ++++++ --- /var/tmp/diff_new_pack.wXARSN/_old 2023-05-04 17:10:20.184281303 +0200 +++ /var/tmp/diff_new_pack.wXARSN/_new 2023-05-04 17:10:20.188281326 +0200 @@ -1,7 +1,7 @@ # # spec file for package morfologik-stemming # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,15 +17,15 @@ Name: morfologik-stemming -Version: 2.1.6 +Version: 2.1.9 Release: 0 Summary: Morfologik stemming library License: BSD-3-Clause URL: https://morfologik.blogspot.com/ Source0: https://github.com/morfologik/morfologik-stemming/archive/%{version}.tar.gz -Patch0: 0001-Restore-Java-8-compatibility.patch -Patch1: morfologik-stemming-binaryinput.patch +Patch0: morfologik-stemming-binaryinput.patch BuildRequires: fdupes +BuildRequires: java-devel >= 1.8 BuildRequires: maven-local BuildRequires: mvn(com.beust:jcommander) BuildRequires: mvn(com.carrotsearch:hppc) @@ -46,7 +46,6 @@ %prep %setup -q %patch0 -p1 -%patch1 -p1 find . -name "*.class" -print -delete find . -name "*.jar" -print -delete @@ -72,8 +71,9 @@ # Test skipped for unavailable test deps %{mvn_build} -f -- \ %if %{?pkg_vcmp:%pkg_vcmp java-devel >= 9}%{!?pkg_vcmp:0} - -Dmaven.compiler.release=7 \ + -Dmaven.compiler.release=8 \ %endif + -Dsource=8 \ -Dproject.build.sourceEncoding=UTF-8 %install ++++++ 2.1.6.tar.gz -> 2.1.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/CHANGES.txt new/morfologik-stemming-2.1.9/CHANGES.txt --- old/morfologik-stemming-2.1.6/CHANGES.txt 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/CHANGES.txt 2022-04-26 13:45:10.000000000 +0200 @@ -5,6 +5,33 @@ For an up-to-date CHANGES file see https://github.com/morfologik/morfologik-stemming/blob/master/CHANGES +======================= morfologik-stemming 2.1.9 ======================= + +Other Changes + + * PR #114: improve run-on suggestions for camel case words (Jaume Ortolà ) + +======================= morfologik-stemming 2.1.8 ======================= + +Other Changes + + * GH-112: Add automatic module name to all JARs. + * Upgrade selected build dependencies. + +======================= morfologik-stemming 2.1.7 ======================= + +Bug Fixes + + * PR #103: fix distance value in the result of `Speller.findReplacementCandidates` + (Daniel Naber). + + * GH-102: upgrade jcommander to newest version. (Dawid Weiss) + +Other Changes + + * PR #103: introduce `Speller.replaceRunOnWordCandidates()` which returns + `CandidateData` (Daniel Naber). + ======================= morfologik-stemming 2.1.6 ======================= Other Changes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-fsa/pom.xml new/morfologik-stemming-2.1.9/morfologik-fsa/pom.xml --- old/morfologik-stemming-2.1.6/morfologik-fsa/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-fsa/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -8,7 +8,7 @@ <parent> <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <relativePath>../pom.xml</relativePath> </parent> @@ -20,6 +20,7 @@ <properties> <forbiddenapis.signaturefile>../etc/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> + <project.moduleId>org.carrot2.morfologik.fsa</project.moduleId> </properties> <build> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-fsa-builders/pom.xml new/morfologik-stemming-2.1.9/morfologik-fsa-builders/pom.xml --- old/morfologik-stemming-2.1.6/morfologik-fsa-builders/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-fsa-builders/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -8,7 +8,7 @@ <parent> <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <relativePath>../pom.xml</relativePath> </parent> @@ -20,6 +20,7 @@ <properties> <forbiddenapis.signaturefile>../etc/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> + <project.moduleId>org.carrot2.morfologik.fsa_builders</project.moduleId> </properties> <dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-polish/pom.xml new/morfologik-stemming-2.1.9/morfologik-polish/pom.xml --- old/morfologik-stemming-2.1.6/morfologik-polish/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-polish/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -8,7 +8,7 @@ <parent> <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <relativePath>../pom.xml</relativePath> </parent> @@ -20,6 +20,7 @@ <properties> <forbiddenapis.signaturefile>../etc/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> + <project.moduleId>org.carrot2.morfologik.polish</project.moduleId> </properties> <dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-speller/pom.xml new/morfologik-stemming-2.1.9/morfologik-speller/pom.xml --- old/morfologik-stemming-2.1.6/morfologik-speller/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-speller/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -8,7 +8,7 @@ <parent> <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <relativePath>../pom.xml</relativePath> </parent> @@ -20,6 +20,7 @@ <properties> <forbiddenapis.signaturefile>../etc/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> + <project.moduleId>org.carrot2.morfologik.speller</project.moduleId> </properties> <dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-speller/src/main/java/morfologik/speller/Speller.java new/morfologik-stemming-2.1.9/morfologik-speller/src/main/java/morfologik/speller/Speller.java --- old/morfologik-stemming-2.1.6/morfologik-speller/src/main/java/morfologik/speller/Speller.java 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-speller/src/main/java/morfologik/speller/Speller.java 2022-04-26 13:45:10.000000000 +0200 @@ -55,9 +55,9 @@ private int wordLen; /* length of word being processed */ private char[] wordProcessed; /* word being processed */ - private Map<Character, List<char[]>> replacementsAnyToOne = new HashMap<Character, List<char[]>>(); - private Map<String, List<char[]>> replacementsAnyToTwo = new HashMap<String, List<char[]>>(); - private Map<String, List<String>> replacementsTheRest = new HashMap<String, List<String>>(); + private Map<Character, List<char[]>> replacementsAnyToOne = new HashMap<>(); + private Map<String, List<char[]>> replacementsAnyToTwo = new HashMap<>(); + private Map<String, List<String>> replacementsTheRest = new HashMap<>(); private boolean containsSeparators = true; @@ -147,7 +147,7 @@ // the new key is the target of the replacement pair if (s.length() == 1) { if (!replacementsAnyToOne.containsKey(s.charAt(0))) { - List<char[]> charList = new ArrayList<char[]>(); + List<char[]> charList = new ArrayList<>(); charList.add(entry.getKey().toCharArray()); replacementsAnyToOne.put(s.charAt(0), charList); } else { @@ -158,7 +158,7 @@ // the new key is the target of the replacement pair else if (s.length() == 2) { if (!replacementsAnyToTwo.containsKey(s)) { - List<char[]> charList = new ArrayList<char[]>(); + List<char[]> charList = new ArrayList<>(); charList.add(entry.getKey().toCharArray()); replacementsAnyToTwo.put(s, charList); } else { @@ -166,7 +166,7 @@ } } else { if (!replacementsTheRest.containsKey(entry.getKey())) { - List<String> charList = new ArrayList<String>(); + List<String> charList = new ArrayList<>(); charList.add(s); replacementsTheRest.put(entry.getKey(), charList); } else { @@ -321,10 +321,10 @@ * * @param original * The original misspelled word. - * @return The list of suggested pairs, as space-concatenated strings. + * @return The list of suggested pairs, as CandidateData with space-concatenated strings. */ - public List<String> replaceRunOnWords(final String original) { - final List<String> candidates = new ArrayList<String>(); + public List<CandidateData> replaceRunOnWordCandidates(final String original) { + final List<CandidateData> candidates = new ArrayList<>(); String wordToCheck = original; if (!dictionaryMetadata.getInputConversionPairs().isEmpty()) { wordToCheck = DictionaryLookup.applyReplacements(original, dictionaryMetadata.getInputConversionPairs()); @@ -335,7 +335,9 @@ // chop from left to right final String prefix = wordToCheck.substring(0, i); final String suffix = wordToCheck.substring(i); - if (isInDictionary(suffix)) { + if (isInDictionary(suffix) + // camel case words: e.g. GreatElephant + || (!isNotCapitalizedWord(suffix) && isInDictionary(suffix.toLowerCase(locale)))) { if (isInDictionary(prefix)) { addReplacement(candidates, prefix + " " + suffix); } else if (Character.isUpperCase(prefix.charAt(0)) && isInDictionary(prefix.toLowerCase(locale))) { @@ -348,16 +350,53 @@ return candidates; } - private void addReplacement(List<String> candidates, String replacement) { + /** + * Propose suggestions for misspelled run-on words. This algorithm is inspired + * by spell.cc in s_fsa package by Jan Daciuk. + * + * @param original + * The original misspelled word. + * @return The list of suggested pairs, as space-concatenated strings. + */ + public List<String> replaceRunOnWords(final String original) { + final List<CandidateData> candidateData = replaceRunOnWordCandidates(original); + final List<String> candidates = new ArrayList<>(); + for (CandidateData candidate : candidateData) { + candidates.add(candidate.word); + } + return candidates; + } + + private void addReplacement(List<CandidateData> candidates, String replacement) { if (dictionaryMetadata.getOutputConversionPairs().isEmpty()) { - candidates.add(replacement); + candidates.add(new CandidateData(replacement, 1)); } else { - candidates.add(DictionaryLookup.applyReplacements(replacement, - dictionaryMetadata.getOutputConversionPairs())); + candidates.add(new CandidateData(DictionaryLookup.applyReplacements(replacement, + dictionaryMetadata.getOutputConversionPairs()), 1)); } } /** + * Find similar words even if the original word is a correct word that exists in the dictionary + * + * @param word The original word. + * @return A list of suggested candidate replacements. + */ + public ArrayList<CandidateData> findSimilarWordCandidates(String word) { + return findReplacementCandidates(word, true); + } + + public ArrayList<String> findSimilarWords(String word) { + final List<CandidateData> result = findSimilarWordCandidates(word); + final ArrayList<String> resultSuggestions = new ArrayList<>(result.size()); + for (CandidateData cd : result) { + resultSuggestions.add(cd.getWord()); + } + return resultSuggestions; + } + + + /** * Find suggestions by using K. Oflazer's algorithm. See Jan Daciuk's s_fsa * package, spell.cc for further explanation. * @@ -367,13 +406,14 @@ public ArrayList<String> findReplacements(String word) { final List<CandidateData> result = findReplacementCandidates(word); - final ArrayList<String> resultSuggestions = new ArrayList<String>(result.size()); + final ArrayList<String> resultSuggestions = new ArrayList<>(result.size()); for (CandidateData cd : result) { resultSuggestions.add(cd.getWord()); } return resultSuggestions; } + /** * Find and return suggestions by using K. Oflazer's algorithm. See Jan Daciuk's s_fsa * package, spell.cc for further explanation. This method is identical to @@ -383,15 +423,19 @@ * @return A list of suggested candidate replacements. */ public ArrayList<CandidateData> findReplacementCandidates(String word) { + return findReplacementCandidates(word, false); + } + + private ArrayList<CandidateData> findReplacementCandidates(String word, boolean evenIfWordInDictionary) { if (!dictionaryMetadata.getInputConversionPairs().isEmpty()) { word = DictionaryLookup.applyReplacements(word, dictionaryMetadata.getInputConversionPairs()); } // candidate strings, including same additional data such as edit distance from the original word. - List<CandidateData> candidates = new ArrayList<CandidateData>(); + List<CandidateData> candidates = new ArrayList<>(); - if (word.length() > 0 && word.length() < MAX_WORD_LENGTH && !isInDictionary(word)) { - List<String> wordsToCheck = new ArrayList<String>(); + if (word.length() > 0 && word.length() < MAX_WORD_LENGTH && (!isInDictionary(word) || evenIfWordInDictionary)) { + List<String> wordsToCheck = new ArrayList<>(); if (replacementsTheRest != null && word.length() > 1) { for (final String wordChecked : getAllReplacements(word, 0, 0)) { if (isInDictionary(wordChecked)) { @@ -445,13 +489,13 @@ Collections.sort(candidates); // Apply replacements, prune duplicates while preserving the candidate order. - final Set<String> words = new HashSet<String>(); + final Set<String> words = new HashSet<>(); final ArrayList<CandidateData> result = new ArrayList<>(candidates.size()); for (final CandidateData cd : candidates) { String replaced = DictionaryLookup.applyReplacements(cd.getWord(), dictionaryMetadata.getOutputConversionPairs()); // Add only the first occurrence of a given word. - if (words.add(replaced)) { - result.add(new CandidateData(replaced, cd.distance)); + if (words.add(replaced) && !replaced.equals(word)) { + result.add(new CandidateData(replaced, cd.origDistance)); } } @@ -633,7 +677,6 @@ * @param candIndex (TODO: javadoc?) * @return Cut-off edit distance. Remarks: See Oflazer. */ - public int cuted(final int depth, final int wordIndex, final int candIndex) { final int l = Math.max(0, depth - effectEditDistance); // min chars from word to consider - 1 final int u = Math.min(wordLen - 1 - (wordIndex - depth), depth + effectEditDistance); // max chars from word to @@ -807,9 +850,7 @@ * * @return boolean value that answers this question in a deep and meaningful * way. - * * @since 1.9 - * */ public boolean convertsCase() { return dictionaryMetadata.isConvertingCase(); @@ -905,18 +946,20 @@ */ public final class CandidateData implements Comparable<CandidateData> { private final String word; + private final int origDistance; private final int distance; CandidateData(final String word, final int distance) { this.word = word; + this.origDistance = distance; this.distance = distance * FREQ_RANGES + FREQ_RANGES - getFrequency(word) - 1; } - final String getWord() { + public final String getWord() { return word; } - final int getDistance() { + public final int getDistance() { return distance; } @@ -925,5 +968,10 @@ // Assume no overflow. return Integer.compare(this.distance, cd.getDistance()); } + + @Override + public String toString() { + return word + '/' + distance; + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-speller/src/test/java/morfologik/speller/SpellerTest.java new/morfologik-stemming-2.1.9/morfologik-speller/src/test/java/morfologik/speller/SpellerTest.java --- old/morfologik-stemming-2.1.6/morfologik-speller/src/test/java/morfologik/speller/SpellerTest.java 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-speller/src/test/java/morfologik/speller/SpellerTest.java 2022-04-26 13:45:10.000000000 +0200 @@ -40,6 +40,9 @@ Assertions.assertThat(spell.replaceRunOnWords("abaka")).isEmpty(); Assertions.assertThat(spell.replaceRunOnWords("abakaabace")).contains("abaka abace"); Assertions.assertThat(spell.replaceRunOnWords("Abakaabace")).contains("Abaka abace"); + Assertions.assertThat(spell.replaceRunOnWords("AbakaAbace")).contains("Abaka Abace"); + Assertions.assertThat(spell.replaceRunOnWords("abakaAbace")).contains("abaka Abace"); + // Test on an morphological dictionary - should work as well final URL url1 = getClass().getResource("test-infix.dict"); @@ -51,6 +54,10 @@ final URL url2 = getClass().getResource("single-char-word.dict"); final Speller spell2 = new Speller(Dictionary.read(url2)); assertTrue(spell2.replaceRunOnWords("alot").contains("a lot")); + assertTrue(spell2.replaceRunOnWords("Alot").contains("A lot")); + assertTrue(spell2.replaceRunOnWords("ALot").contains("A Lot")); + assertTrue(spell2.replaceRunOnWords("LotAmusement").contains("Lot Amusement")); + //TODO? assertTrue(spell2.replaceRunOnWords("LOTAMUSEMENT").contains("LOT AMUSEMENT")); assertTrue(spell2.replaceRunOnWords("aalot").contains("aa lot")); assertTrue(spell2.replaceRunOnWords("aamusement").contains("a amusement")); assertTrue(spell2.replaceRunOnWords("clot").isEmpty()); @@ -165,6 +172,21 @@ assertTrue(reps.get(5).equals("dist")); assertTrue(reps.get(6).equals("gist")); } + + @Test + public void testFindSimilarWords() throws IOException { + final URL url = getClass().getResource("dict-with-freq.dict"); + final Speller spell = new Speller(Dictionary.read(url)); + + List<String> reps = spell.findSimilarWords("fist"); + assertTrue(reps.toString().equals("[list, mist, dist, gist, wist, hist]")); + reps = spell.findSimilarWords("mist"); + assertTrue(reps.toString().equals("[list, fist, dist, gist, wist, hist]")); + reps = spell.findSimilarWords("Fist"); + assertTrue(reps.toString().equals("[fist, list, mist, dist, gist, wist, hist]")); + reps = spell.findSimilarWords("licit"); + assertTrue(reps.toString().equals("[list, fist, mist, dist, gist, wist, hist]")); + } @Test public void testConcurrentReplacements() throws IOException { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-stemming/pom.xml new/morfologik-stemming-2.1.9/morfologik-stemming/pom.xml --- old/morfologik-stemming-2.1.6/morfologik-stemming/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-stemming/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -8,7 +8,7 @@ <parent> <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <relativePath>../pom.xml</relativePath> </parent> @@ -20,6 +20,7 @@ <properties> <forbiddenapis.signaturefile>../etc/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> + <project.moduleId>org.carrot2.morfologik.stemming</project.moduleId> </properties> <dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-tools/pom.xml new/morfologik-stemming-2.1.9/morfologik-tools/pom.xml --- old/morfologik-stemming-2.1.6/morfologik-tools/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-tools/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -8,7 +8,7 @@ <parent> <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <relativePath>../pom.xml</relativePath> </parent> @@ -20,6 +20,7 @@ <properties> <forbiddenapis.signaturefile>../etc/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> + <project.moduleId>org.carrot2.morfologik.tools</project.moduleId> </properties> <dependencies> @@ -44,7 +45,7 @@ <dependency> <groupId>com.beust</groupId> <artifactId>jcommander</artifactId> - <version>1.48</version> + <version>1.78</version> </dependency> </dependencies> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-tools/src/main/java/morfologik/tools/CliTool.java new/morfologik-stemming-2.1.9/morfologik-tools/src/main/java/morfologik/tools/CliTool.java --- old/morfologik-stemming-2.1.6/morfologik-tools/src/main/java/morfologik/tools/CliTool.java 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-tools/src/main/java/morfologik/tools/CliTool.java 2022-04-26 13:45:10.000000000 +0200 @@ -178,13 +178,13 @@ private static void helpDisplayCommandOptions(PrintStream pw, String command, JCommander jc) { StringBuilder sb = new StringBuilder(); jc = jc.getCommands().get(command); - jc.usage(sb, ""); + jc.getUsageFormatter().usage(sb, ""); pw.print(sb); } private static void helpDisplayCommandOptions(PrintStream pw, JCommander jc) { StringBuilder sb = new StringBuilder(); - jc.usage(sb, ""); + jc.getUsageFormatter().usage(sb, ""); pw.print(sb); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/morfologik-tools/src/main/java/morfologik/tools/CustomParameterConverters.java new/morfologik-stemming-2.1.9/morfologik-tools/src/main/java/morfologik/tools/CustomParameterConverters.java --- old/morfologik-stemming-2.1.6/morfologik-tools/src/main/java/morfologik/tools/CustomParameterConverters.java 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/morfologik-tools/src/main/java/morfologik/tools/CustomParameterConverters.java 2022-04-26 13:45:10.000000000 +0200 @@ -1,11 +1,11 @@ package morfologik.tools; -import java.nio.file.Path; -import java.nio.file.Paths; - import com.beust.jcommander.IStringConverter; import com.beust.jcommander.IStringConverterFactory; +import java.nio.file.Path; +import java.nio.file.Paths; + class CustomParameterConverters implements IStringConverterFactory { public static class PathConverter implements IStringConverter<Path> { @Override @@ -13,12 +13,11 @@ return Paths.get(value); } } - - @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override - public <T> Class<? extends IStringConverter<T>> getConverter(Class<T> forType) { + public Class<? extends IStringConverter<?>> getConverter(Class<?> forType) { if (forType.equals(Path.class)) { - return (Class) PathConverter.class; + return PathConverter.class; } return null; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/morfologik-stemming-2.1.6/pom.xml new/morfologik-stemming-2.1.9/pom.xml --- old/morfologik-stemming-2.1.6/pom.xml 2019-05-11 14:36:25.000000000 +0200 +++ new/morfologik-stemming-2.1.9/pom.xml 2022-04-26 13:45:10.000000000 +0200 @@ -7,7 +7,7 @@ <groupId>org.carrot2</groupId> <artifactId>morfologik-parent</artifactId> - <version>2.1.6</version> + <version>2.1.9</version> <packaging>pom</packaging> <name>Morfologik (parent POM)</name> @@ -51,11 +51,13 @@ <properties> <version.assertj>2.2.0</version.assertj> <version.hppc>0.7.2</version.hppc> - <version.junit>4.12</version.junit> + <version.junit>4.13.1</version.junit> <version.randomizedtesting>2.5.2</version.randomizedtesting> + <version.maven-compiler-plugin>3.8.1</version.maven-compiler-plugin> <version.maven-enforcer-plugin>1.4.1</version.maven-enforcer-plugin> <version.maven-clean-plugin>2.6.1</version.maven-clean-plugin> + <version.maven-jar-plugin>3.2.0</version.maven-jar-plugin> </properties> <modules> @@ -139,7 +141,20 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> - <version>2.5</version> + <version>${version.maven-jar-plugin}</version> + <configuration> + <archive> + <addMavenDescriptor>false</addMavenDescriptor> + <manifestEntries> + <Project-GroupId>${project.groupId}</Project-GroupId> + <Project-ArtifactId>${project.artifactId}</Project-ArtifactId> + <Project-Version>${project.version}</Project-Version> + <Project-Name>${project.name}</Project-Name> + + <Automatic-Module-Name>${project.moduleId}</Automatic-Module-Name> + </manifestEntries> + </archive> + </configuration> </plugin> <plugin> @@ -163,7 +178,11 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>3.3</version> + <version>${version.maven-compiler-plugin}</version> + <configuration> + <source>${maven.compiler.source}</source> + <target>${maven.compiler.target}</target> + </configuration> </plugin> <plugin> @@ -175,7 +194,7 @@ <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> - <version>3.3.0</version> + <version>5.1.2</version> <extensions>true</extensions> </plugin> @@ -196,6 +215,11 @@ <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <configuration> <rules> @@ -303,7 +327,7 @@ </activation> <properties> - <version.forbiddenapis>2.3</version.forbiddenapis> + <version.forbiddenapis>2.7</version.forbiddenapis> <forbiddenapis.signaturefile>src/forbidden-apis/signatures.txt</forbiddenapis.signaturefile> </properties> @@ -572,7 +596,7 @@ <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> - <version>1.9.4</version> + <version>1.10.11</version> </dependency> </dependencies> </plugin> @@ -656,14 +680,14 @@ <distributionManagement> <snapshotRepository> - <id>sonatype-nexus-snapshots</id> - <name>Sonatype Nexus Snapshots</name> - <url>https://oss.sonatype.org/content/repositories/snapshots</url> + <id>sonatype-nexus-snapshots</id> + <name>Sonatype Nexus Snapshots</name> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> - <id>sonatype-nexus-staging</id> - <name>Sonatype Nexus Releases</name> - <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> + <id>sonatype-nexus-staging</id> + <name>Sonatype Nexus Releases</name> + <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2</url> </repository> </distributionManagement>