You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by ma...@apache.org on 2024/07/15 09:01:12 UTC

(opennlp) branch OPENNLP-1596-Modernize-immutable-collection-creation created (now 6e2b3cf9)

This is an automated email from the ASF dual-hosted git repository.

mawiesne pushed a change to branch OPENNLP-1596-Modernize-immutable-collection-creation
in repository https://gitbox.apache.org/repos/asf/opennlp.git


      at 6e2b3cf9 OPENNLP-1596 Modernize immutable collection creation

This branch includes the following new commits:

     new 6e2b3cf9 OPENNLP-1596 Modernize immutable collection creation

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(opennlp) 01/01: OPENNLP-1596 Modernize immutable collection creation

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mawiesne pushed a commit to branch OPENNLP-1596-Modernize-immutable-collection-creation
in repository https://gitbox.apache.org/repos/asf/opennlp.git

commit 6e2b3cf9d92a0b725a6da065223ef7afd09f4b93
Author: Martin Wiesner <ma...@hs-heilbronn.de>
AuthorDate: Mon Jul 15 10:58:51 2024 +0200

    OPENNLP-1596 Modernize immutable collection creation
---
 .../lemmatizer/MorfologikLemmatizer.java           |  3 +-
 .../java/opennlp/tools/doccat/DocumentSample.java  | 11 +---
 .../formats/brat/AnnotationConfiguration.java      |  4 +-
 .../tools/formats/brat/EventAnnotation.java        |  4 +-
 .../opennlp/tools/formats/muc/MucElementNames.java | 14 ++---
 .../tools/formats/muc/MucNameContentHandler.java   | 21 +-------
 .../ontonotes/OntoNotesNameSampleStream.java       |  3 +-
 .../java/opennlp/tools/lemmatizer/LemmaSample.java |  9 ++--
 .../tools/namefind/NameFinderEventStream.java      |  6 +--
 .../java/opennlp/tools/namefind/NameSample.java    |  2 +-
 .../tools/namefind/NameSampleTypeFilter.java       |  2 +-
 .../java/opennlp/tools/tokenize/TokenSample.java   |  2 +-
 .../java/opennlp/uima/normalizer/Normalizer.java   | 59 +++++++++-------------
 .../uima/util/AnnotationComboIteratorTest.java     |  2 -
 14 files changed, 43 insertions(+), 99 deletions(-)

diff --git a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/MorfologikLemmatizer.java b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/MorfologikLemmatizer.java
index 6a3b8db1..42d4ecb4 100644
--- a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/MorfologikLemmatizer.java
+++ b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/lemmatizer/MorfologikLemmatizer.java
@@ -20,7 +20,6 @@ package opennlp.morfologik.lemmatizer;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
@@ -71,7 +70,7 @@ public class MorfologikLemmatizer implements Lemmatizer {
         lemmas.add(asString(wordData.getStem()));
       }
     }
-    return Collections.unmodifiableList(new ArrayList<>(lemmas));
+    return List.copyOf(lemmas);
   }
 
   private String asString(CharSequence tag) {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
index b64adb43..95d7b120 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
@@ -17,7 +17,6 @@
 
 package opennlp.tools.doccat;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -57,13 +56,8 @@ public class DocumentSample implements Sample {
     Objects.requireNonNull(text, "text must not be null");
 
     this.category = Objects.requireNonNull(category, "category must not be null");
-    this.text = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(text)));
-
-    if (extraInformation == null) {
-      this.extraInformation = Collections.emptyMap();
-    } else {
-      this.extraInformation = extraInformation;
-    }
+    this.text = List.of(text);
+    this.extraInformation = Objects.requireNonNullElse(extraInformation, Collections.emptyMap());
   }
 
   /**
@@ -117,7 +111,6 @@ public class DocumentSample implements Sample {
     }
 
     if (obj instanceof DocumentSample a) {
-
       return getCategory().equals(a.getCategory())
           && Arrays.equals(getText(), a.getText());
     }
diff --git a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotationConfiguration.java b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotationConfiguration.java
index 35e7221e..b1c7703f 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotationConfiguration.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/AnnotationConfiguration.java
@@ -25,7 +25,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -42,8 +41,7 @@ public class AnnotationConfiguration {
   private final Map<String, String> typeToClassMap;
 
   public AnnotationConfiguration(Map<String, String> typeToClassMap) {
-
-    this.typeToClassMap = Collections.unmodifiableMap(new HashMap<>(typeToClassMap));
+    this.typeToClassMap = Map.copyOf(typeToClassMap);
   }
 
   public String getTypeClass(String type) {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/EventAnnotation.java b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/EventAnnotation.java
index 96495698..387b8b09 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/brat/EventAnnotation.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/brat/EventAnnotation.java
@@ -17,8 +17,6 @@
 
 package opennlp.tools.formats.brat;
 
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
@@ -31,7 +29,7 @@ public class EventAnnotation extends BratAnnotation {
     super(id, type);
 
     this.eventTrigger = Objects.requireNonNull(eventTrigger);
-    this.arguments = Collections.unmodifiableMap(new HashMap<>(arguments));
+    this.arguments = Map.copyOf(arguments);
   }
 
   public String getEventTrigger() {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucElementNames.java b/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucElementNames.java
index 6574fd04..23eb09f2 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucElementNames.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucElementNames.java
@@ -17,8 +17,6 @@
 
 package opennlp.tools.formats.muc;
 
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 class MucElementNames {
@@ -32,13 +30,11 @@ class MucElementNames {
   static final Set<String> CONTENT_ELEMENTS;
 
   static {
-    Set<String> contentElementNames = new HashSet<>();
-    contentElementNames.add(MucElementNames.HEADLINE_ELEMENT);
-    contentElementNames.add(MucElementNames.DATELINE_ELEMENT);
-    contentElementNames.add(MucElementNames.DD_ELEMENT);
-    contentElementNames.add(MucElementNames.SENTENCE_ELEMENT);
-
-    CONTENT_ELEMENTS = Collections.unmodifiableSet(contentElementNames);
+    CONTENT_ELEMENTS = Set.of(
+            MucElementNames.HEADLINE_ELEMENT,
+            MucElementNames.DATELINE_ELEMENT,
+            MucElementNames.DD_ELEMENT,
+            MucElementNames.SENTENCE_ELEMENT);
   }
 
   private MucElementNames() {
diff --git a/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java b/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
index 284a20b7..79734229 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/muc/MucNameContentHandler.java
@@ -19,8 +19,6 @@ package opennlp.tools.formats.muc;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -43,23 +41,8 @@ public class MucNameContentHandler extends SgmlParser.ContentHandler {
   private static final Set<String> EXPECTED_TYPES;
 
   static {
-    Set<String> types = new HashSet<>();
-
-    types.add("PERSON");
-    types.add("ORGANIZATION");
-    types.add("LOCATION");
-    types.add("DATE");
-    types.add("TIME");
-    types.add("MONEY");
-    types.add("PERCENT");
-
-    EXPECTED_TYPES = Collections.unmodifiableSet(types);
-
-    Set<String> nameElements = new HashSet<>();
-    nameElements.add(ENTITY_ELEMENT_NAME);
-    nameElements.add(TIME_ELEMENT_NAME);
-    nameElements.add(NUM_ELEMENT_NAME);
-    NAME_ELEMENT_NAMES = Collections.unmodifiableSet(nameElements);
+    EXPECTED_TYPES = Set.of("PERSON", "ORGANIZATION", "LOCATION", "DATE", "TIME", "MONEY", "PERCENT");
+    NAME_ELEMENT_NAMES = Set.of(ENTITY_ELEMENT_NAME, TIME_ELEMENT_NAME, NUM_ELEMENT_NAME);
   }
 
   private final Tokenizer tokenizer;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java b/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
index bff97661..8dc09af8 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/formats/ontonotes/OntoNotesNameSampleStream.java
@@ -37,8 +37,7 @@ import opennlp.tools.util.StringUtil;
 /**
  * Name Sample Stream parser for the OntoNotes 4.0 corpus.
  */
-public class OntoNotesNameSampleStream extends
-    FilterObjectStream<String, NameSample> {
+public class OntoNotesNameSampleStream extends FilterObjectStream<String, NameSample> {
 
   private final Map<String, String> tokenConversionMap;
 
diff --git a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
index 6cb70aa1..3ab1d5a7 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
@@ -17,9 +17,7 @@
 
 package opennlp.tools.lemmatizer;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -60,9 +58,9 @@ public class LemmaSample implements Sample {
 
     validateArguments(tokens.size(), tags.size(), lemmas.size());
 
-    this.tokens = Collections.unmodifiableList(new ArrayList<>(tokens));
-    this.tags = Collections.unmodifiableList(new ArrayList<>(tags));
-    this.lemmas = Collections.unmodifiableList(new ArrayList<>(lemmas));
+    this.tokens = List.copyOf(tokens);
+    this.tags = List.copyOf(tags);
+    this.lemmas = List.copyOf(lemmas);
   }
 
   /**
@@ -120,7 +118,6 @@ public class LemmaSample implements Sample {
     }
 
     if (obj instanceof LemmaSample a) {
-
       return Arrays.equals(getTokens(), a.getTokens())
           && Arrays.equals(getTags(), a.getTags())
           && Arrays.equals(getLemmas(), a.getLemmas());
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderEventStream.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderEventStream.java
index d6361b34..81ffd6d8 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderEventStream.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderEventStream.java
@@ -58,11 +58,7 @@ public class NameFinderEventStream extends opennlp.tools.util.AbstractEventStrea
                                NameContextGenerator contextGenerator, SequenceCodec<String> codec) {
     super(dataStream);
 
-    if (codec == null) {
-      this.codec = new BioCodec();
-    } else {
-      this.codec = codec;
-    }
+    this.codec = Objects.requireNonNullElseGet(codec, BioCodec::new);
     this.contextGenerator = contextGenerator;
     this.contextGenerator.addFeatureGenerator(
         new WindowFeatureGenerator(additionalContextFeatureGenerator, 8, 8));
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
index dd503b7d..db57fce7 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
@@ -66,7 +66,7 @@ public class NameSample implements Sample {
       names = new Span[0];
     }
 
-    this.sentence = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(sentence)));
+    this.sentence = List.of(sentence);
     List<Span> namesList = Arrays.asList(names);
     Collections.sort(namesList);
     this.names = Collections.unmodifiableList(namesList);
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java
index 4b3f6228..bb818553 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSampleTypeFilter.java
@@ -56,7 +56,7 @@ public class NameSampleTypeFilter extends FilterObjectStream<NameSample, NameSam
    */
   public NameSampleTypeFilter(Set<String> types, ObjectStream<NameSample> samples) {
     super(samples);
-    this.types = Collections.unmodifiableSet(new HashSet<>(types));
+    this.types = Set.copyOf(types);
   }
 
   @Override
diff --git a/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java b/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
index a4aca08f..591888b9 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
@@ -53,7 +53,7 @@ public class TokenSample implements Sample {
     Objects.requireNonNull(tokenSpans, "tokenSpans must not be null");
 
     this.text = Objects.requireNonNull(text, "text must not be null");
-    this.tokenSpans = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(tokenSpans)));
+    this.tokenSpans = List.of(tokenSpans);
 
     for (Span tokenSpan : tokenSpans) {
       if (tokenSpan.getStart() < 0 || tokenSpan.getStart() > text.length() ||
diff --git a/opennlp-uima/src/main/java/opennlp/uima/normalizer/Normalizer.java b/opennlp-uima/src/main/java/opennlp/uima/normalizer/Normalizer.java
index c303a02e..f90e6fce 100644
--- a/opennlp-uima/src/main/java/opennlp/uima/normalizer/Normalizer.java
+++ b/opennlp-uima/src/main/java/opennlp/uima/normalizer/Normalizer.java
@@ -20,8 +20,6 @@ package opennlp.uima.normalizer;
 import java.io.IOException;
 import java.io.InputStream;
 import java.text.ParseException;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.uima.UimaContext;
@@ -65,17 +63,10 @@ public class Normalizer extends CasAnnotator_ImplBase {
   private static final Set<String> SUPPORTED_TYPES;
 
   static {
-    Set<String> supportedTypes = new HashSet<>();
-
-    supportedTypes.add(CAS.TYPE_NAME_STRING);
-    supportedTypes.add(CAS.TYPE_NAME_BYTE);
-    supportedTypes.add(CAS.TYPE_NAME_SHORT);
-    supportedTypes.add(CAS.TYPE_NAME_INTEGER);
-    supportedTypes.add(CAS.TYPE_NAME_LONG);
-    supportedTypes.add(CAS.TYPE_NAME_FLOAT);
-    supportedTypes.add(CAS.TYPE_NAME_DOUBLE);
-
-    SUPPORTED_TYPES = Collections.unmodifiableSet(supportedTypes);
+    SUPPORTED_TYPES = Set.of(CAS.TYPE_NAME_STRING,
+            CAS.TYPE_NAME_BYTE, CAS.TYPE_NAME_SHORT,
+            CAS.TYPE_NAME_INTEGER, CAS.TYPE_NAME_LONG,
+            CAS.TYPE_NAME_FLOAT, CAS.TYPE_NAME_DOUBLE);
   }
 
   private UimaContext context;
@@ -100,23 +91,24 @@ public class Normalizer extends CasAnnotator_ImplBase {
   private StringDictionary mLookupDictionary;
 
   /**
-   * Initializes a new instance.
-   * <p>
-   * Note: Use {@link #initialize(UimaContext) } to initialize this instance. Not
-   * use the constructor.
+   * Initializes a {@link Normalizer} instance.
+   *
+   * @apiNote Use {@link #initialize(UimaContext)} to initialize this instance.
+   * Do not use the constructor.
    */
-  public Normalizer() {
+  private Normalizer() {
     // must not be implemented !
   }
 
   /**
-   * Initializes the current instance with the given context.
+   * Initializes the current instance with the given {@link UimaContext context}.
    * <p>
-   * Note: Do all initialization in this method, do not use the constructor.
    * @param context context to initialize
+   * @throws ResourceInitializationException Thrown if errors occurred during initialization of resources.
+   *
+   * @implNote Do all initialization in this method, do not use the constructor.
    */
-  public void initialize(UimaContext context)
-      throws ResourceInitializationException {
+  public void initialize(UimaContext context) throws ResourceInitializationException {
 
     super.initialize(context);
 
@@ -201,8 +193,9 @@ public class Normalizer extends CasAnnotator_ImplBase {
           text = normalizedText;
         }
       }
+      String name = mStructureFeature.getRange().getName();
 
-      if (CAS.TYPE_NAME_STRING.equals(mStructureFeature.getRange().getName())) {
+      if (CAS.TYPE_NAME_STRING.equals(name)) {
         nameAnnotation.setStringValue(mStructureFeature, text);
       } else {
 
@@ -216,24 +209,18 @@ public class Normalizer extends CasAnnotator_ImplBase {
           continue;
         }
 
-        if (CAS.TYPE_NAME_BYTE.equals(mStructureFeature.getRange().getName())) {
+        if (CAS.TYPE_NAME_BYTE.equals(name)) {
           nameAnnotation.setByteValue(mStructureFeature, number.byteValue());
-        } else if (CAS.TYPE_NAME_SHORT.equals(mStructureFeature.getRange()
-            .getName())) {
+        } else if (CAS.TYPE_NAME_SHORT.equals(name)) {
           nameAnnotation.setShortValue(mStructureFeature, number.shortValue());
-        } else if (CAS.TYPE_NAME_INTEGER.equals(mStructureFeature.getRange()
-            .getName())) {
+        } else if (CAS.TYPE_NAME_INTEGER.equals(name)) {
           nameAnnotation.setIntValue(mStructureFeature, number.intValue());
-        } else if (CAS.TYPE_NAME_LONG.equals(mStructureFeature.getRange()
-            .getName())) {
+        } else if (CAS.TYPE_NAME_LONG.equals(name)) {
           nameAnnotation.setLongValue(mStructureFeature, number.longValue());
-        } else if (CAS.TYPE_NAME_FLOAT.equals(mStructureFeature.getRange()
-            .getName())) {
+        } else if (CAS.TYPE_NAME_FLOAT.equals(name)) {
           nameAnnotation.setFloatValue(mStructureFeature, number.floatValue());
-        } else if (CAS.TYPE_NAME_DOUBLE.equals(mStructureFeature.getRange()
-            .getName())) {
-          nameAnnotation
-              .setDoubleValue(mStructureFeature, number.doubleValue());
+        } else if (CAS.TYPE_NAME_DOUBLE.equals(name)) {
+          nameAnnotation.setDoubleValue(mStructureFeature, number.doubleValue());
         }
       }
     }
diff --git a/opennlp-uima/src/test/java/opennlp/uima/util/AnnotationComboIteratorTest.java b/opennlp-uima/src/test/java/opennlp/uima/util/AnnotationComboIteratorTest.java
index b107673f..e3204fe8 100644
--- a/opennlp-uima/src/test/java/opennlp/uima/util/AnnotationComboIteratorTest.java
+++ b/opennlp-uima/src/test/java/opennlp/uima/util/AnnotationComboIteratorTest.java
@@ -39,8 +39,6 @@ public class AnnotationComboIteratorTest {
    * <p>
    * The iterator was either crashing with a NoSuchElementException or it just left
    * out the first token in the next sentence.
-   *
-   * @throws IOException
    */
   @Test
   public void OPENNLP_676() throws IOException {