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

mawiesne pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opennlp.git


The following commit(s) were added to refs/heads/main by this push:
     new 2720a1b5 OPENNLP-1728: Improve JavaDoc of opennlp.tools.models package 
(#772)
2720a1b5 is described below

commit 2720a1b545733db1a798362ee83ff1df9e34ec18
Author: Martin Wiesner <[email protected]>
AuthorDate: Fri Apr 25 17:32:20 2025 +0200

    OPENNLP-1728: Improve JavaDoc of opennlp.tools.models package (#772)
---
 .../tools/models/AbstractClassPathModelFinder.java | 15 ++++++++-----
 .../java/opennlp/tools/models/ClassPathModel.java  | 18 +++++++++++++++
 .../opennlp/tools/models/ClassPathModelEntry.java  |  2 +-
 .../opennlp/tools/models/ClassPathModelFinder.java | 10 +++++++--
 .../opennlp/tools/models/ClassPathModelLoader.java |  8 ++++++-
 .../models/classgraph/ClassgraphModelFinder.java   | 26 ++++++++++++++--------
 .../models/simple/SimpleClassPathModelFinder.java  |  6 ++---
 7 files changed, 63 insertions(+), 22 deletions(-)

diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/AbstractClassPathModelFinder.java
 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/AbstractClassPathModelFinder.java
index ea2b4c4c..b31128dd 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/AbstractClassPathModelFinder.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/AbstractClassPathModelFinder.java
@@ -24,9 +24,15 @@ import java.util.Optional;
 import java.util.Set;
 
 /**
- * Enables the detection of OpenNLP models in the classpath. By default, this 
class will search
- * for JAR files starting with "opennlp-models-*". This wildcard pattern can 
be adjusted by
- * using the alternative constructor of this class.
+ * A base implementation of a {@link ClassPathModelFinder} for the detection of
+ * OpenNLP models in the classpath. By default, {@link 
AbstractClassPathModelFinder} will scan for
+ * JAR files starting with "opennlp-models-*".
+ * <p>
+ * This search mask can be adjusted by using the one argument
+ * {@link AbstractClassPathModelFinder#AbstractClassPathModelFinder(String) 
constructor}.
+ * Wildcard search is supported by using asterisk symbol.
+ *
+ * @see ClassPathModelFinder
  */
 public abstract class AbstractClassPathModelFinder implements 
ClassPathModelFinder {
 
@@ -76,8 +82,7 @@ public abstract class AbstractClassPathModelFinder implements 
ClassPathModelFind
   }
 
   /**
-   * @apiNote 
-   * Subclasses can implement this method to provide additional context to
+   * @apiNote Subclasses can implement this method to provide additional 
context to
    * {@link AbstractClassPathModelFinder#getMatchingURIs(String, Object)}.
    *
    * @return A context information object. May be {@code null}.
diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModel.java 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModel.java
index f22fb901..d50f4580 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModel.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModel.java
@@ -18,6 +18,24 @@ package opennlp.tools.models;
 
 import java.util.Properties;
 
+/**
+ * A record that holds the binary representation of an OpenNLP model and 
related properties.
+ *
+ * @param properties  The common and specific properties of a model.
+ * @param model       The binary form of a model read from the classpath.
+ *
+ * @implNote To convert a model back to its object form, the {@code model 
bytes} can be read
+ *           via a {@link java.io.ByteArrayInputStream}:
+ *           <pre>{@code
+ *           try (InputStream baos = new ByteArrayInputStream(model)) {
+ *             SentenceModel sModel = new SentenceModel(baos);
+ *           }
+ *           }</pre>
+ *           as long as you make sure the model matches its type by using
+ *           its name or other, more specific properties.
+ *           
+ * @see opennlp.tools.util.model.BaseModel
+ */
 public record ClassPathModel(Properties properties, byte[] model) {
 
   /**
diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelEntry.java
 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelEntry.java
index 7a34432e..3fa04a4c 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelEntry.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelEntry.java
@@ -20,7 +20,7 @@ import java.net.URI;
 import java.util.Optional;
 
 /**
- * Encapsulates a classpath entry that is associated with an {@link URI model 
URI}
+ * Encapsulates a classpath entry that is associated with a {@link URI model 
URI}
  * and optional {@code properties}.
  * 
  * @param model A valid {@link URI} associated with the model's location.
diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelFinder.java
 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelFinder.java
index 6b0358ff..9e502e4a 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelFinder.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelFinder.java
@@ -18,16 +18,22 @@ package opennlp.tools.models;
 
 import java.util.Set;
 
+/**
+ * Describes a scanner which detects OpenNLP specific model files in an 
applications's classpath.
+ * If compatible models are present at runtime, each discovered element is 
made available
+ * as {@link ClassPathModelEntry}.
+ */
 public interface ClassPathModelFinder {
 
   String OPENNLP_MODEL_JAR_PREFIX = "opennlp-models-*.jar";
 
   /**
-   * Finds OpenNLP models within the classpath.
+   * Finds OpenNLP models available within an applications's classpath.
    *
    * @param reloadCache {@code true}, if the internal cache should explicitly 
be reloaded,
    *                    {@code false} otherwise.
-   * @return A Set of {@link ClassPathModelEntry model entries}. It might be 
empty if none were found.
+   * @return A {@link Set} of {@link ClassPathModelEntry model entries}.
+   *         It might be empty, if none were found.
    */
   Set<ClassPathModelEntry> findModels(boolean reloadCache);
 }
diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelLoader.java
 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelLoader.java
index 1b67bb2d..2e51b664 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelLoader.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/ClassPathModelLoader.java
@@ -22,7 +22,11 @@ import java.util.Objects;
 import java.util.Properties;
 
 /**
- * Responsible for loading OpenNLP models from the classpath.
+ * Responsible for loading OpenNLP models from the classpath via {@link 
ClassPathModelEntry entries}.
+ * If models could be loaded successfully, those are provided as {@link 
ClassPathModel model references}.
+ *
+ * @see ClassPathModel
+ * @see ClassPathModelEntry
  */
 public class ClassPathModelLoader {
 
@@ -30,6 +34,8 @@ public class ClassPathModelLoader {
    * Loads a {@link ClassPathModel} from a {@link ClassPathModelEntry}
    *
    * @param entry A valid {@link ClassPathModelEntry}, it must not be {@code 
null}.
+   *              Moreover, it is validated that the {@link 
ClassPathModelEntry#model() binary data}
+   *              and {@link ClassPathModelEntry#properties() meta-data} are 
not {@code null}.
    * @return A {@link ClassPathModel} containing the model resources.
    * @throws IOException thrown if something went wrong during reading 
resources from the classpath.
    */
diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/classgraph/ClassgraphModelFinder.java
 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/classgraph/ClassgraphModelFinder.java
index 13dae921..c440945c 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/classgraph/ClassgraphModelFinder.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/classgraph/ClassgraphModelFinder.java
@@ -28,13 +28,20 @@ import opennlp.tools.models.AbstractClassPathModelFinder;
 import opennlp.tools.models.ClassPathModelFinder;
 
 /**
- * Enables the detection of OpenNLP models in the classpath via classgraph.
- * By default, this class will search for JAR files starting with 
"opennlp-models-*".
- * This wildcard pattern can be adjusted by using the alternative constructor 
of this class.
+ * Enables the detection of OpenNLP models in the classpath via
+ * <a href="https://github.com/classgraph/classgraph";>Classgraph</a>.
+ * <p>
+ * By default, this implementation will search for JAR files starting with 
"opennlp-models-*".
+ * This search mask can be adjusted by using the one argument
+ * {@link ClassgraphModelFinder#ClassgraphModelFinder(String) constructor}. 
Wildcard search is supported
+ * by using asterisk symbol.
  *
- * @implNote This implementation relies on the <a 
href="https://github.com/classgraph/classgraph";>Classgraph</a> library.
- * When using this class, you have to take care of <i>Classgraph</i> being in 
the classpath
- * of your application, as it is declared as an optional dependency for 
<i>opennlp-tools-models</i>.
+ * @implNote {@link ClassgraphModelFinder} relies on the <a 
href="https://github.com/classgraph/classgraph";>
+ *   Classgraph</a> library. For this reason, you have to take care of 
<i>Classgraph</i> being present
+ *   in the classpath of your application, as - by default - it is declared as 
{@code optional} dependency of
+ *   <i>opennlp-tools-models</i>.
+ *
+ * @see ClassPathModelFinder
  */
 public class ClassgraphModelFinder extends AbstractClassPathModelFinder 
implements ClassPathModelFinder {
 
@@ -46,7 +53,7 @@ public class ClassgraphModelFinder extends 
AbstractClassPathModelFinder implemen
   }
 
   /**
-   * @param modelJarPrefix The leafnames of the jars that should be canned 
(e.g. "opennlp.jar").
+   * @param modelJarPrefix The leafnames of the jars that should be scanned 
(e.g. "opennlp.jar").
    *                       May contain a wildcard glob ("opennlp-*.jar"). It 
must not be {@code null}.
    */
   public ClassgraphModelFinder(String modelJarPrefix) {
@@ -64,11 +71,12 @@ public class ClassgraphModelFinder extends 
AbstractClassPathModelFinder implemen
   }
 
   /**
-   * Attempts to obtain {@link URI URIs} from the classpath.
+   * Attempts to obtain {@link URI URIs} from the classpath for the specified 
{@code wildcardPattern}
+   * and {@code context}.
    * 
    * @param wildcardPattern The pattern to use for scanning. Must not be 
{@code null}.
    * @param context         An object holding context information. It might be 
{@code null}.
-   * @return A list of matching classpath {@link URI URIs}. It may be empty if 
nothing is found.
+   * @return A list of matching classpath {@link URI URIs} which  may be empty 
if nothing is found.
    */
   @Override
   protected List<URI> getMatchingURIs(String wildcardPattern, Object context) {
diff --git 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/simple/SimpleClassPathModelFinder.java
 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/simple/SimpleClassPathModelFinder.java
index bfe9902a..ebc7da9f 100644
--- 
a/opennlp-tools-models/src/main/java/opennlp/tools/models/simple/SimpleClassPathModelFinder.java
+++ 
b/opennlp-tools-models/src/main/java/opennlp/tools/models/simple/SimpleClassPathModelFinder.java
@@ -151,10 +151,8 @@ public class SimpleClassPathModelFinder extends 
AbstractClassPathModelFinder imp
   private List<URI> getURIsFromJar(URL fileUrl, boolean isWindows) throws 
IOException {
     final List<URI> uris = new ArrayList<>();
     final URL jarUrl = new URL(JAR + ":" +
-        (isWindows
-            ? fileUrl.toString().replace("\\", "/")
-            : fileUrl.toString())
-        + "!/");
+        (isWindows ? fileUrl.toString().replace("\\", "/")
+            : fileUrl.toString()) + "!/");
     final JarURLConnection jarConnection = (JarURLConnection) 
jarUrl.openConnection();
     try (JarFile jarFile = jarConnection.getJarFile()) {
       final Enumeration<JarEntry> entries = jarFile.entries();

Reply via email to