This is an automated email from the ASF dual-hosted git repository.
rzo1 pushed a commit to branch opennlp-2.x
in repository https://gitbox.apache.org/repos/asf/opennlp.git
The following commit(s) were added to refs/heads/opennlp-2.x by this push:
new 631e04324 GH-1522: Download the 1.5 models from
downloads.sourceforge.net (#1524)
631e04324 is described below
commit 631e043244ba86d9737877d7e7680edfb3248c8f
Author: Richard Zowalla <[email protected]>
AuthorDate: Mon Nov 2 11:16:24 2026 +0100
GH-1522: Download the 1.5 models from downloads.sourceforge.net (#1524)
The project web copy at opennlp.sourceforge.net/models-1.5 returns 404. The
same files are still served from the SourceForge file release area, so the
tests and createPear.xml now use
https://downloads.sourceforge.net/project/opennlp/models-1.5/.
EnabledWhenCDNAvailable gets an optional path, probed with a HEAD request,
because the root of downloads.sourceforge.net returns 404.
---
.../opennlp/tools/AbstractModelLoaderTest.java | 2 +-
.../opennlp/tools/EnabledWhenCDNAvailable.java | 9 +++++++-
.../cmdline/chunker/ChunkerModelLoaderTest.java | 3 ++-
.../namefind/TokenNameFinderModelLoaderTest.java | 3 ++-
.../tools/namefind/TokenNameFinderModelTest.java | 3 ++-
.../java/opennlp/tools/postag/POSTaggerMETest.java | 12 +++++++----
opennlp-uima/createPear.xml | 24 +++++++++++-----------
.../src/test/java/opennlp/uima/AbstractIT.java | 2 +-
.../java/opennlp/uima/FullAnnotatorsFlowIT.java | 3 ++-
.../test/java/opennlp/uima/SingleAnnotatorIT.java | 3 ++-
pom.xml | 2 +-
11 files changed, 41 insertions(+), 25 deletions(-)
diff --git
a/opennlp-tools/src/test/java/opennlp/tools/AbstractModelLoaderTest.java
b/opennlp-tools/src/test/java/opennlp/tools/AbstractModelLoaderTest.java
index 059a07d35..fa07e6a24 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/AbstractModelLoaderTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/AbstractModelLoaderTest.java
@@ -34,7 +34,7 @@ public abstract class AbstractModelLoaderTest {
private static final Logger logger =
LoggerFactory.getLogger(AbstractModelLoaderTest.class);
- private static final String BASE_URL_MODELS_V15 =
System.getProperty("opennlp.model.v15.base.url",
"https://opennlp.sourceforge.net/models-1.5/");
+ private static final String BASE_URL_MODELS_V15 =
System.getProperty("opennlp.model.v15.base.url",
"https://downloads.sourceforge.net/project/opennlp/models-1.5/");
private static final String BASE_URL_MODELS_V183 =
System.getProperty("opennlp.model.v183.base.url",
"https://dlcdn.apache.org/opennlp/models/langdetect/1.8.3/");
protected static final Path OPENNLP_DIR =
Paths.get(System.getProperty("OPENNLP_DOWNLOAD_HOME",
System.getProperty("user.home"))).resolve(".opennlp");
diff --git
a/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
b/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
index fccc55266..3c3f31986 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/EnabledWhenCDNAvailable.java
@@ -41,6 +41,12 @@ public @interface EnabledWhenCDNAvailable {
String hostname();
+ /**
+ * The path of a resource on {@link #hostname()} that must be reachable,
starting with
+ * {@code /}. Empty to check the root of the host.
+ */
+ String path() default "";
+
int TIMEOUT_MS = 2000;
// JUnit5 execution condition to decide whether tests can assume CDN
downloads are possible (= online).
@@ -57,10 +63,11 @@ public @interface EnabledWhenCDNAvailable {
socket.connect(new InetSocketAddress(host, 443), TIMEOUT_MS);
// Then, try to check the HTTP status by making an HTTPS request
- final URL url = new URL("https://" + host);
+ final URL url = new URL("https://" + host + annotation.path());
final HttpsURLConnection connection = (HttpsURLConnection)
url.openConnection();
connection.setConnectTimeout(TIMEOUT_MS);
connection.setReadTimeout(TIMEOUT_MS);
+ connection.setRequestMethod("HEAD");
int statusCode = connection.getResponseCode();
// If the HTTP status code indicates success (2xx range), return
enabled
diff --git
a/opennlp-tools/src/test/java/opennlp/tools/cmdline/chunker/ChunkerModelLoaderTest.java
b/opennlp-tools/src/test/java/opennlp/tools/cmdline/chunker/ChunkerModelLoaderTest.java
index 25436f861..bb449c863 100644
---
a/opennlp-tools/src/test/java/opennlp/tools/cmdline/chunker/ChunkerModelLoaderTest.java
+++
b/opennlp-tools/src/test/java/opennlp/tools/cmdline/chunker/ChunkerModelLoaderTest.java
@@ -31,7 +31,8 @@ import opennlp.tools.AbstractModelLoaderTest;
import opennlp.tools.EnabledWhenCDNAvailable;
import opennlp.tools.chunker.ChunkerModel;
-@EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+@EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
public class ChunkerModelLoaderTest extends AbstractModelLoaderTest {
// SUT
diff --git
a/opennlp-tools/src/test/java/opennlp/tools/cmdline/namefind/TokenNameFinderModelLoaderTest.java
b/opennlp-tools/src/test/java/opennlp/tools/cmdline/namefind/TokenNameFinderModelLoaderTest.java
index 662866397..25b383c22 100644
---
a/opennlp-tools/src/test/java/opennlp/tools/cmdline/namefind/TokenNameFinderModelLoaderTest.java
+++
b/opennlp-tools/src/test/java/opennlp/tools/cmdline/namefind/TokenNameFinderModelLoaderTest.java
@@ -31,7 +31,8 @@ import opennlp.tools.AbstractModelLoaderTest;
import opennlp.tools.EnabledWhenCDNAvailable;
import opennlp.tools.namefind.TokenNameFinderModel;
-@EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+@EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
public class TokenNameFinderModelLoaderTest extends AbstractModelLoaderTest {
// SUT
diff --git
a/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderModelTest.java
b/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderModelTest.java
index 806ec6d38..2b04a1aa5 100644
---
a/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderModelTest.java
+++
b/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderModelTest.java
@@ -111,7 +111,8 @@ public class TokenNameFinderModelTest extends
AbstractNameFinderTest {
/*
* OPENNLP-1369
*/
- @EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+ @EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
@Test
void testNERWithPOSModelV15() throws IOException, URISyntaxException {
diff --git
a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
index dc4a62685..eb738b40d 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
@@ -97,7 +97,8 @@ public class POSTaggerMETest extends AbstractModelLoaderTest {
}
@Test
- @EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+ @EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
void testPOSTaggerLegacyPerceptronPennToUD() throws IOException {
final String[] expected = {"DET", "NOUN", "VERB", "ADV", "VERB", "ADP",
"DET", "NOUN", "PUNCT"};
//convert PENN to UD on the fly.
@@ -106,7 +107,8 @@ public class POSTaggerMETest extends
AbstractModelLoaderTest {
}
@Test
- @EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+ @EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
void testPOSTaggerLegacyPerceptronPenn() throws IOException {
final String[] expected = {"DT", "NN", "VBD", "RB", "VBN", "IN", "DT",
"NN", "."};
//convert PENN to UD on the fly.
@@ -115,7 +117,8 @@ public class POSTaggerMETest extends
AbstractModelLoaderTest {
}
@Test
- @EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+ @EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
void testPOSTaggerLegacyMaxentPennToUD() throws IOException {
final String[] expected = {"DET", "NOUN", "VERB", "ADV", "VERB", "ADP",
"DET", "NOUN", "PUNCT"};
//convert PENN to UD on the fly.
@@ -124,7 +127,8 @@ public class POSTaggerMETest extends
AbstractModelLoaderTest {
}
@Test
- @EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+ @EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
void testPOSTaggerLegacyMaxentPenn() throws IOException {
final String[] expected = {"DT", "NN", "VBD", "RB", "VBN", "IN", "DT",
"NN", "."};
//convert PENN to UD on the fly.
diff --git a/opennlp-uima/createPear.xml b/opennlp-uima/createPear.xml
index 9fecb265c..673a0da59 100644
--- a/opennlp-uima/createPear.xml
+++ b/opennlp-uima/createPear.xml
@@ -71,18 +71,18 @@
<mkdir dir="${modelDir}" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-token.bin"
dest="${modelDir}/en-token.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-sent.bin"
dest="${modelDir}/en-sent.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-date.bin"
dest="${modelDir}/en-ner-date.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-location.bin"
dest="${modelDir}/en-ner-location.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-money.bin"
dest="${modelDir}/en-ner-money.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-organization.bin"
dest="${modelDir}/en-ner-organization.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-percentage.bin"
dest="${modelDir}/en-ner-percentage.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-person.bin"
dest="${modelDir}/en-ner-person.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-ner-time.bin"
dest="${modelDir}/en-ner-time.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-pos-maxent.bin"
dest="${modelDir}/en-pos-maxent.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-parser-chunking.bin"
dest="${modelDir}/en-parser-chunking.bin" />
- <get
src="http://opennlp.sourceforge.net/models-1.5/en-chunker.bin"
dest="${modelDir}/en-chunker.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-token.bin"
dest="${modelDir}/en-token.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-sent.bin"
dest="${modelDir}/en-sent.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-date.bin"
dest="${modelDir}/en-ner-date.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-location.bin"
dest="${modelDir}/en-ner-location.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-money.bin"
dest="${modelDir}/en-ner-money.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-organization.bin"
dest="${modelDir}/en-ner-organization.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-percentage.bin"
dest="${modelDir}/en-ner-percentage.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-person.bin"
dest="${modelDir}/en-ner-person.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-ner-time.bin"
dest="${modelDir}/en-ner-time.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-pos-maxent.bin"
dest="${modelDir}/en-pos-maxent.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-parser-chunking.bin"
dest="${modelDir}/en-parser-chunking.bin" />
+ <get
src="https://downloads.sourceforge.net/project/opennlp/models-1.5/en-chunker.bin"
dest="${modelDir}/en-chunker.bin" />
<!-- Create pear zip file-->
<zip destfile="target/OpenNlpTextAnalyzer.pear"
basedir="${pearDir}" />
diff --git a/opennlp-uima/src/test/java/opennlp/uima/AbstractIT.java
b/opennlp-uima/src/test/java/opennlp/uima/AbstractIT.java
index 477e93011..6cb0593d5 100644
--- a/opennlp-uima/src/test/java/opennlp/uima/AbstractIT.java
+++ b/opennlp-uima/src/test/java/opennlp/uima/AbstractIT.java
@@ -53,7 +53,7 @@ abstract class AbstractIT extends AbstractUimaTest {
protected static final String BIN = ".bin";
- private static final String BASE_URL_MODELS_V15 =
System.getProperty("opennlp.model.v15.base.url",
"https://opennlp.sourceforge.net/models-1.5/");
+ private static final String BASE_URL_MODELS_V15 =
System.getProperty("opennlp.model.v15.base.url",
"https://downloads.sourceforge.net/project/opennlp/models-1.5/");
@BeforeAll
public static void initEnv() throws IOException {
diff --git a/opennlp-uima/src/test/java/opennlp/uima/FullAnnotatorsFlowIT.java
b/opennlp-uima/src/test/java/opennlp/uima/FullAnnotatorsFlowIT.java
index 84e3e9696..4177a94cd 100644
--- a/opennlp-uima/src/test/java/opennlp/uima/FullAnnotatorsFlowIT.java
+++ b/opennlp-uima/src/test/java/opennlp/uima/FullAnnotatorsFlowIT.java
@@ -35,7 +35,8 @@ import static org.junit.jupiter.api.Assertions.fail;
/**
* Test for initialization of the opennlp.uima Annotators classes.
*/
-@EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+@EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
public class FullAnnotatorsFlowIT extends AbstractIT {
private static final String DOCUMENT_TEXT =
diff --git a/opennlp-uima/src/test/java/opennlp/uima/SingleAnnotatorIT.java
b/opennlp-uima/src/test/java/opennlp/uima/SingleAnnotatorIT.java
index 9abea9689..93da7bd4e 100644
--- a/opennlp-uima/src/test/java/opennlp/uima/SingleAnnotatorIT.java
+++ b/opennlp-uima/src/test/java/opennlp/uima/SingleAnnotatorIT.java
@@ -35,7 +35,8 @@ import static org.junit.jupiter.api.Assertions.fail;
/**
* Test for initialization of the opennlp.uima Annotators classes.
*/
-@EnabledWhenCDNAvailable(hostname = "opennlp.sourceforge.net")
+@EnabledWhenCDNAvailable(hostname = "downloads.sourceforge.net",
+ path = "/project/opennlp/models-1.5/en-token.bin")
public class SingleAnnotatorIT extends AbstractIT {
private static final String DOCUMENT_TEXT =
diff --git a/pom.xml b/pom.xml
index 3281920fc..5b7fe861e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -184,7 +184,7 @@
<opennlp.models.version>1.3.0</opennlp.models.version>
<!-- Old OpenNLP models are hosted on Sourceforge. Set a
default. -->
-
<opennlp.model.v15.base.url>https://opennlp.sourceforge.net/models-1.5/</opennlp.model.v15.base.url>
+
<opennlp.model.v15.base.url>https://downloads.sourceforge.net/project/opennlp/models-1.5/</opennlp.model.v15.base.url>
<!-- Dependency versions -->
<junit.version>6.1.3</junit.version>