This is an automated email from the ASF dual-hosted git repository.
jzemerick pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/opennlp-sandbox.git
The following commit(s) were added to refs/heads/master by this push:
new 0e58920 modernizes several components to rely on a more recent
version of Jersey 2.x instead of ancient 1.x versions (#97)
0e58920 is described below
commit 0e58920d1901a2f4238d98ff37724401aba6d4b4
Author: Martin Wiesner <[email protected]>
AuthorDate: Sun Apr 16 20:57:15 2023 +0200
modernizes several components to rely on a more recent version of Jersey
2.x instead of ancient 1.x versions (#97)
- tagging-server
- corpus-server and its components
- caseditor-corpus-server-plugin
- wikinews-importer (Jersey never used/required here)
- addresses PR reviewer comments
- optimizes some code towards best practices
---
caseditor-corpus-server-plugin/pom.xml | 32 ++++--
.../caseditor/DefaultCasDocumentProvider.java | 49 +++++----
.../caseditor/SearchCorpusServerJob.java | 42 ++++----
.../corpus_server/caseditor/TaskQueueView.java | 25 +++--
corpus-server/corpus-server-connector/pom.xml | 43 +++++---
.../corpus_server/connector/CSCasWriter.java | 95 +++++++++--------
.../connector/CSQueueCollectionReader.java | 116 +++++++++------------
.../opennlp/corpus_server/connector/UimaUtil.java | 6 +-
corpus-server/corpus-server-core/feature.xml | 23 ++--
corpus-server/corpus-server-core/pom.xml | 29 +++++-
.../opennlp/corpus_server/CorpusServerBundle.java | 3 +-
corpus-server/corpus-server-impl/pom.xml | 6 +-
corpus-server/corpus-server-tools/pom.xml | 28 +++--
.../opennlp/corpus_server/tools/CASImporter.java | 28 ++---
.../opennlp/corpus_server/tools/CorpusBackup.java | 82 +++++++--------
.../opennlp/corpus_server/tools/CreateCorpus.java | 63 +++++------
.../corpus_server/tools/CreateTaskQueue.java | 33 +++---
.../opennlp/corpus_server/tools/DropCorpus.java | 37 +++----
.../opennlp/corpus_server/tools/FileUtil.java | 3 +-
.../opennlp/corpus_server/tools/RemoveCAS.java | 26 ++---
.../corpus_server/tools/ReplaceTypeSystem.java | 51 ++++-----
.../opennlp/corpus_server/tools/SearchCorpus.java | 42 ++++----
corpus-server/pom.xml | 87 ++++++++--------
mahout-addon/pom.xml | 50 +++++++++
pom.xml | 17 ++-
tagging-server/feature.xml | 11 +-
tagging-server/pom.xml | 65 ++++++++----
.../tagging_server/TaggingServerBundle.java | 4 +-
wikinews-importer/pom.xml | 15 ---
29 files changed, 605 insertions(+), 506 deletions(-)
diff --git a/caseditor-corpus-server-plugin/pom.xml
b/caseditor-corpus-server-plugin/pom.xml
index 1bce6c1..451e0b7 100644
--- a/caseditor-corpus-server-plugin/pom.xml
+++ b/caseditor-corpus-server-plugin/pom.xml
@@ -66,17 +66,29 @@
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>1.19.4</version>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>${jersey-client.version}</version>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>1.19.4</version>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
+ <version>${jersey-server.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
-
+
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <version>${jettison.version}</version>
+ </dependency>
+
<!-- UIMA dependencies -->
<!-- don't depend on the runtime plugin, instead, depend on the
parts needed -->
<dependency>
@@ -223,8 +235,7 @@
org.eclipse.ui,
org.eclipse.ui.workbench,
org.eclipse.core.runtime,
-
org.eclipse.core.resources,
-
org.junit4;bundle-version="4.13.2";resolution:=optional
+
org.eclipse.core.resources
</Require-Bundle>
<Import-Package>
!org.eclipse.jface.text,
@@ -238,7 +249,8 @@
!org.eclipse.ui.model,
!org.eclipse.ui.part,
!org.eclipse.core.runtime,
-
com.sun.jersey.api.client.config,
+
org.codehaus.jettison,
+
org.glassfish.jersey.client.config,
*
</Import-Package>
</instructions>
diff --git
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
index aeda502..d7da8bd 100644
---
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
+++
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
@@ -29,7 +29,12 @@ import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.uima.ResourceSpecifierFactory;
import org.apache.uima.UIMAFramework;
@@ -60,10 +65,8 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceStore;
import org.eclipse.swt.widgets.Composite;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.client.ClientResponse;
public class DefaultCasDocumentProvider extends
org.apache.uima.caseditor.editor.CasDocumentProvider {
@@ -127,23 +130,22 @@ public class DefaultCasDocumentProvider extends
// the user if downloading the CAS fails?
CorpusServerCasEditorInput casInput = (CorpusServerCasEditorInput)
element;
-
- Client client = Client.create();
- client.setReadTimeout(READ_TIMEOUT);
- WebResource webResource = client.resource(casInput.getServerUrl());
-
+
+ Client c = ClientBuilder.newClient();
+ c.property(ClientProperties.READ_TIMEOUT, READ_TIMEOUT);
+ WebTarget webResource = c.target(casInput.getServerUrl());
+
// Note: The type system could be cached to avoid downloading it
// for every opened CAS, a time stamp can be used to detect
// if it has been changed or not.
ClientResponse tsResponse = webResource.path("_typesystem")
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
+ .request(MediaType.TEXT_XML)
.header("Content-Type", MediaType.TEXT_XML)
.get(ClientResponse.class);
TypeSystemDescription tsDesc = null;
- try (InputStream tsIn = tsResponse.getEntityInputStream()) {
+ try (InputStream tsIn = tsResponse.getEntityStream()) {
tsDesc = createTypeSystemDescription(tsIn);
}
catch (IOException e) {
@@ -159,13 +161,12 @@ public class DefaultCasDocumentProvider extends
ClientResponse casResponse;
casResponse = webResource.path(URLEncoder.encode(casInput.getName(),
StandardCharsets.UTF_8))
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
+ .request(MediaType.TEXT_XML)
.header("Content-Type", MediaType.TEXT_XML)
.get(ClientResponse.class);
org.apache.uima.caseditor.editor.ICasDocument doc;
- try (InputStream casIn = casResponse.getEntityInputStream()) {
+ try (InputStream casIn = casResponse.getEntityStream()) {
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IPath pluginStatePath =
CorpusServerPlugin.getDefault().getStateLocation();
IPath tempPath =
pluginStatePath.append(casInput.getName()).addFileExtension(MediaType.TEXT_XML);
@@ -200,19 +201,21 @@ public class DefaultCasDocumentProvider extends
ByteArrayOutputStream outStream = new ByteArrayOutputStream(40000);
documentImpl.serialize(outStream);
- Client client = Client.create();
- client.setReadTimeout(READ_TIMEOUT);
- WebResource webResource = client.resource(casInput.getServerUrl());
+ Client c = ClientBuilder.newClient();
+ c.property(ClientProperties.READ_TIMEOUT, READ_TIMEOUT);
+ WebTarget webResource = c.target(casInput.getServerUrl());
byte[] xmiBytes = outStream.toByteArray();
String encodedCasId = URLEncoder.encode(casInput.getName(),
StandardCharsets.UTF_8);
+ String contentDisposition = "attachment; filename=\"" + encodedCasId +
"\"";
- ClientResponse response = webResource.path(encodedCasId)
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.TEXT_XML)
- .put(ClientResponse.class, xmiBytes);
+ Response response = webResource.path(encodedCasId)
+ .request(MediaType.TEXT_XML)
+ .header("Content-Type",
MediaType.APPLICATION_OCTET_STREAM_TYPE)
+ .header("Content-Disposition", contentDisposition)
+ .header("Content-Length", xmiBytes.length)
+ .put(Entity.entity(xmiBytes,
MediaType.APPLICATION_OCTET_STREAM_TYPE));
if (response.getStatus() != 204) {
throw new CoreException(new Status(Status.ERROR,
CorpusServerPlugin.PLUGIN_ID,
diff --git
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
index 8dda9aa..2ce736d 100644
---
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
+++
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/SearchCorpusServerJob.java
@@ -17,7 +17,12 @@
package org.apache.opennlp.corpus_server.caseditor;
+import javax.ws.rs.ProcessingException;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.codehaus.jettison.json.JSONArray;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -25,9 +30,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientProperties;
/**
* A job to retrieve search results from the corpus server.
@@ -53,30 +56,25 @@ public class SearchCorpusServerJob extends Job {
@Override
protected IStatus run(IProgressMonitor monitor) {
- Client c = Client.create();
- c.setConnectTimeout(10000);
- WebResource r = c.resource(serverAddress);
-
- ClientResponse response;
-
+ Client c = ClientBuilder.newClient();
+ c.property(ClientProperties.READ_TIMEOUT, 10000);
+ WebTarget r = c.target(serverAddress);
+
try {
- response = r
- .path("_search")
+ Response response = r.path("_search")
.queryParam("q", searchQuery)
- .accept(MediaType.APPLICATION_JSON)
- .get(ClientResponse.class);
+ .request(MediaType.APPLICATION_JSON)
+ .get();
+ if (response.getStatusInfo().getStatusCode() != 200) {
+ return new Status(IStatus.WARNING, CorpusServerPlugin.PLUGIN_ID,
"Failed to retrieve results from server!");
+ }
+
+ searchResult = response.readEntity(JSONArray.class);
+ return new Status(IStatus.OK, CorpusServerPlugin.PLUGIN_ID, "OK");
}
- catch (com.sun.jersey.api.client.ClientHandlerException e) {
+ catch (ProcessingException e) {
return new Status(IStatus.WARNING, CorpusServerPlugin.PLUGIN_ID, "Failed
to connect to server!");
}
-
- if (response.getStatusInfo().getStatusCode() != 200) {
- return new Status(IStatus.WARNING, CorpusServerPlugin.PLUGIN_ID, "Failed
to retrieve results from server!");
- }
-
- searchResult = response.getEntity(JSONArray.class);
-
- return new Status(IStatus.OK, CorpusServerPlugin.PLUGIN_ID, "OK");
}
JSONArray getSearchResult() {
diff --git
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
index 11ba134..53c8d87 100644
---
a/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
+++
b/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/TaskQueueView.java
@@ -20,7 +20,11 @@ package org.apache.opennlp.corpus_server.caseditor;
import java.util.ArrayList;
import java.util.List;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.ILabelProviderListener;
@@ -43,10 +47,6 @@ import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.ViewPart;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-
/**
* A task queue view to retrieve the next annotation task subject from the
corpus server.
*/
@@ -89,17 +89,16 @@ public class TaskQueueView extends ViewPart {
@Override
public void widgetSelected(SelectionEvent event) {
- Client c = Client.create();
-
- WebResource queueWebResource = c.resource(serverUrl.getText());
-
- ClientResponse response2 = queueWebResource
+ Client c = ClientBuilder.newClient();
+ WebTarget queueWebResource = c.target(serverUrl.getText());
+
+ Response response2 = queueWebResource
.path("_nextTask")
- .accept(MediaType.APPLICATION_JSON)
+ .request(MediaType.APPLICATION_JSON)
.header("Content-Type", MediaType.TEXT_XML)
- .get(ClientResponse.class);
-
- String casId = response2.getEntity(String.class);
+ .get();
+
+ String casId = response2.readEntity(String.class);
// How to get the corpus uri for the item returned from the queue ???
// Queue could always return full URI ...
diff --git a/corpus-server/corpus-server-connector/pom.xml
b/corpus-server/corpus-server-connector/pom.xml
index e427162..e4e7c81 100644
--- a/corpus-server/corpus-server-connector/pom.xml
+++ b/corpus-server/corpus-server-connector/pom.xml
@@ -34,27 +34,29 @@
<dependencies>
<dependency>
- <groupId>org.apache.opennlp</groupId>
- <artifactId>corpus-server-core</artifactId>
- <version>2.1.1-SNAPSHOT</version>
- <scope>provided</scope>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
</dependency>
-
+
<dependency>
- <groupId>org.apache.opennlp</groupId>
- <artifactId>corpus-server-impl</artifactId>
- <version>2.1.1-SNAPSHOT</version>
- <scope>test</scope>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
</dependency>
<dependency>
@@ -64,6 +66,21 @@
<scope>compile</scope>
</dependency>
+ <!-- TEST scoped -->
+ <dependency>
+ <groupId>org.apache.opennlp</groupId>
+ <artifactId>corpus-server-core</artifactId>
+ <version>2.1.1-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.opennlp</groupId>
+ <artifactId>corpus-server-impl</artifactId>
+ <version>2.1.1-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
diff --git
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
index c7a93f3..31f7741 100644
---
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
+++
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
@@ -18,8 +18,15 @@
package org.apache.opennlp.corpus_server.connector;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.uima.UimaContext;
import org.apache.uima.analysis_component.CasAnnotator_ImplBase;
@@ -36,11 +43,6 @@ import org.apache.uima.util.Level;
import org.apache.uima.util.Logger;
import org.xml.sax.SAXException;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.WebResource.Builder;
-
/**
* The CSCasWriter writes a CAS into a Corpus Server.
*/
@@ -57,8 +59,7 @@ public class CSCasWriter extends CasAnnotator_ImplBase {
private Logger logger;
@Override
- public void initialize(UimaContext context)
- throws ResourceInitializationException {
+ public void initialize(UimaContext context) throws
ResourceInitializationException {
super.initialize(context);
serverAddress = (String)
context.getConfigParameterValue(CSQueueCollectionReader.SERVER_ADDRESS);
@@ -68,8 +69,7 @@ public class CSCasWriter extends CasAnnotator_ImplBase {
}
@Override
- public void typeSystemInit(TypeSystem ts)
- throws AnalysisEngineProcessException {
+ public void typeSystemInit(TypeSystem ts) throws
AnalysisEngineProcessException {
super.typeSystemInit(ts);
String idTypeName = (String)
getContext().getConfigParameterValue("IdFSTypeName");
@@ -91,48 +91,53 @@ public class CSCasWriter extends CasAnnotator_ImplBase {
// TODO: Remove the FS here, so its client side only!
// Was inserted in the reader ...
cas.removeFsFromIndexes(idFs);
-
- ByteArrayOutputStream xmiBytes = new ByteArrayOutputStream();
- try {
- XmiCasSerializer.serialize(cas, xmiBytes);
- } catch (SAXException e) {
- throw new AnalysisEngineProcessException();
- }
-
- Client client = Client.create();
-
- WebResource corpusWebResource = client.resource(serverAddress +
"/corpora/"
- + corpusName);
-
- Builder casResponseBuilder = corpusWebResource.path(casId)
- .accept(MediaType.TEXT_XML).header("Content-Type",
MediaType.TEXT_XML);
-
- ClientResponse response;
- if ("add".equals(action)) {
- response = casResponseBuilder.post(ClientResponse.class, xmiBytes);
- }
- else if ("update".equals(action)) {
- response = casResponseBuilder.put(ClientResponse.class, xmiBytes);
- }
- else {
- throw new AnalysisEngineProcessException(new Exception("Unknown
action: " + action));
- }
-
- int statusCode = response.getStatus();
-
- if (statusCode > 400) {
- if (logger.isLoggable(Level.SEVERE)) {
- logger.log(Level.SEVERE, "Error (" + statusCode + "), " + action +
", " + casId);
+ try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ XmiCasSerializer.serialize(cas, baos);
+
+ byte[] xmiBytes = baos.toByteArray();
+
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(serverAddress + "/corpora/" + corpusName);
+
+ Invocation.Builder casResponseBuilder = r.path(casId)
+ .request(MediaType.TEXT_XML)
+ .header("Content-Type", MediaType.TEXT_XML)
+ .header("Content-Length", xmiBytes.length);
+
+ if ("add".equals(action)) {
+ try (Response res = casResponseBuilder.post(
+ Entity.entity(xmiBytes,
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
+ logResponse(res, casId);
+ }
+ } else if ("update".equals(action)) {
+ try (Response res = casResponseBuilder.put(
+ Entity.entity(xmiBytes,
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
+ logResponse(res, casId);
+ }
}
- }
- else {
- if (logger.isLoggable(Level.FINE)) {
- logger.log(Level.FINE, "OK (" + statusCode + "), " + action + ", "
+ casId);
+ else {
+ throw new AnalysisEngineProcessException(new Exception("Unknown
action: " + action));
}
+
+ } catch (IOException | SAXException e) {
+ throw new AnalysisEngineProcessException();
}
}
else {
throw new AnalysisEngineProcessException(new Exception("Missing Id
Feature Structure!"));
}
}
+
+ private void logResponse(Response res, String casId) {
+ int statusCode = res.getStatus();
+ if (statusCode >= Response.Status.BAD_REQUEST.getStatusCode()) {
+ if (logger.isLoggable(Level.SEVERE)) {
+ logger.log(Level.SEVERE, "Error (" + statusCode + "), " + action + ",
" + casId);
+ }
+ } else {
+ if (logger.isLoggable(Level.FINE)) {
+ logger.log(Level.FINE, "OK (" + statusCode + "), " + action + ", " +
casId);
+ }
+ }
+ }
}
diff --git
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
index ab6ef0c..f933ff8 100644
---
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
+++
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
@@ -23,7 +23,12 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.Feature;
@@ -36,14 +41,11 @@ import
org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.util.Level;
import org.apache.uima.util.Logger;
import org.apache.uima.util.Progress;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientResponse;
/**
- * a {@link org.apache.uima.collection.CollectionReader} which reads {@link
CAS}s from a corpus
- * in the {@link org.apache.opennlp.corpus_server.CorpusServer}
+ * A {@link org.apache.uima.collection.CollectionReader} which reads {@link
CAS CASes} from a corpus
+ * stored in a {@code CorpusServer}.
*/
public class CSQueueCollectionReader extends CollectionReader_ImplBase {
@@ -79,70 +81,62 @@ public class CSQueueCollectionReader extends
CollectionReader_ImplBase {
corpusName = (String) getConfigParameterValue(CORPUS_NAME);
String queueName = (String) getConfigParameterValue(QUEUE_NAME);
-
String searchQuery = (String) getConfigParameterValue(SEARCH_QUERY);
- Client client = Client.create();
-
+ Client c = ClientBuilder.newClient();
+
// Create a queue if the search query is specified
if (searchQuery != null) {
- WebResource r = client.resource(serverAddress + "/queues/");
+ WebTarget r = c.target(serverAddress + "/queues/");
- ClientResponse response = r.path("_createTaskQueue")
+ try (Response response = r.path("_createTaskQueue")
.queryParam("corpusId", corpusName)
.queryParam("queueId", queueName)
.queryParam("q", searchQuery)
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.TEXT_XML)
- .post(ClientResponse.class);
-
- if (response.getStatus() != 204) {
- throw new ResourceInitializationException(
- new Exception("Failed to create queue: " +
response.getStatus()));
- }
-
- if (logger.isLoggable(Level.INFO)) {
- logger.log(Level.INFO, "Successfully created queue: " + queueName + "
for corpus: " + corpusName);
+ .request(MediaType.TEXT_XML)
+ // as this is an query-param driven POST request,
+ // we just set an empty string to the body.
+ .post(Entity.entity("", MediaType.TEXT_PLAIN_TYPE))) {
+
+ if (response.getStatus() !=
Response.Status.NO_CONTENT.getStatusCode()) {
+ throw new ResourceInitializationException(
+ new RuntimeException("Failed to create queue: " +
response.getStatus()));
+ }
+
+ if (logger.isLoggable(Level.INFO)) {
+ logger.log(Level.INFO, "Successfully created queue: " + queueName +
" for corpus: " + corpusName);
+ }
}
}
// Retrieve queue link ...
List<String> casIdList = new ArrayList<>();
-
-
- WebResource r = client.resource(serverAddress + "/queues/" + queueName);
-
+ WebTarget r = c.target(serverAddress + "/queues/" + queueName);
+
while (true) {
System.out.println("Requesting next CAS ID!");
-
+
// TODO: Make query configurable ...
- ClientResponse response = r
- .path("_nextTask")
- .accept(MediaType.APPLICATION_JSON)
- .header("Content-Type", MediaType.TEXT_XML)
- .get(ClientResponse.class);
-
- if (response.getStatus() ==
ClientResponse.Status.NO_CONTENT.getStatusCode()) {
- System.out.println("##### FINISHED #####");
- break;
- }
- else {
- // TODO: Check if response was ok ...
+ try (Response response =
r.path("_nextTask").request(MediaType.APPLICATION_JSON)
+ .header("Content-Type", MediaType.TEXT_XML).get()) {
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode()) {
+ String casId = response.readEntity(String.class);
+ System.out.println("Received CAS ID: " + casId);
+ casIdList.add(casId);
+ } else if (response.getStatus() ==
Response.Status.NO_CONTENT.getStatusCode()) {
+ System.out.println("##### FINISHED #####");
+ break;
+ }
}
- String casId = response.getEntity(String.class);
- casIdList.add(casId);
-
- System.out.println("Received CAS ID: " + casId);
}
casIds = casIdList.iterator();
}
@Override
- public void typeSystemInit(TypeSystem ts)
- throws ResourceInitializationException {
+ public void typeSystemInit(TypeSystem ts) throws
ResourceInitializationException {
super.typeSystemInit(ts);
String idTypeName = (String) getConfigParameterValue("IdFSTypeName");
@@ -153,31 +147,24 @@ public class CSQueueCollectionReader extends
CollectionReader_ImplBase {
@Override
public void getNext(CAS cas) throws IOException, CollectionException {
-
+
String casId = casIds.next();
-
-
- Client client = Client.create();
-
- WebResource corpusWebResource = client.resource(serverAddress +
"/corpora/" + corpusName);
-
- ClientResponse casResponse = corpusWebResource
- .path(casId)
- .accept(MediaType.TEXT_XML)
+
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(serverAddress + "/corpora/" + corpusName);
+
+ ClientResponse casResponse = r.path(casId)
+ .request(MediaType.TEXT_XML)
.header("Content-Type", MediaType.TEXT_XML)
.get(ClientResponse.class);
-
- try (InputStream casIn = casResponse.getEntityInputStream()) {
+ try (InputStream casIn = casResponse.getEntityStream()) {
UimaUtil.deserializeXmiCAS(cas, casIn);
- }
- catch (IOException e) {
- if (logger.isLoggable(Level.SEVERE)) {
- logger.log(Level.SEVERE, "Failed to load CAS: " + casId + " code: " +
casResponse.getStatus());
- }
+ } catch (IOException e) {
+ logger.log(Level.SEVERE,"Failed to load CAS: " + casId + " code: " +
casResponse.getStatus());
throw e;
}
-
+
if (idType != null && idFeature != null) {
FeatureStructure idFS = cas.createFS(idType);
idFS.setStringValue(idFeature, casId);
@@ -189,7 +176,6 @@ public class CSQueueCollectionReader extends
CollectionReader_ImplBase {
public boolean hasNext() throws IOException, CollectionException {
// TODO: What to do if content for cas cannot be loaded? Skip CAS? Report
error?
-
return casIds.hasNext();
}
diff --git
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
index b606fd9..6ce2f43 100644
---
a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
+++
b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/UimaUtil.java
@@ -67,8 +67,7 @@ public class UimaUtil {
}
public static CAS createEmptyCAS(TypeSystemDescription typeSystem) {
- ResourceSpecifierFactory resourceSpecifierFactory = UIMAFramework
- .getResourceSpecifierFactory();
+ ResourceSpecifierFactory resourceSpecifierFactory =
UIMAFramework.getResourceSpecifierFactory();
TypePriorities typePriorities = resourceSpecifierFactory
.createTypePriorities();
@@ -105,8 +104,7 @@ public class UimaUtil {
throw new IllegalStateException("SAX error while creating parser!", e);
}
- XmiCasDeserializer dezerializer = new XmiCasDeserializer(
- cas.getTypeSystem());
+ XmiCasDeserializer dezerializer = new
XmiCasDeserializer(cas.getTypeSystem());
try {
saxParser.parse(xmiIn, dezerializer.getXmiCasHandler(cas));
diff --git a/corpus-server/corpus-server-core/feature.xml
b/corpus-server/corpus-server-core/feature.xml
index a7804ab..8df9ba6 100644
--- a/corpus-server/corpus-server-core/feature.xml
+++ b/corpus-server/corpus-server-core/feature.xml
@@ -22,17 +22,18 @@
<features>
<!-- This feature.xml should be automatically be generated, all
dependencies are duplicated here! -->
<feature name="opennlp-corpus-server" version="2.1.1.SNAPSHOT">
-
<bundle>http://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
-
<bundle>http://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-core&v=1.12&e=jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-server&v=1.12&e=jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-servlet&v=1.12&e=jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-json&v=1.12&e=jar</bundle>
-
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
-
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
-
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
-
<bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
-
<bundle>http://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.3.1/jettison-1.3.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
+
<bundle>https://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common/2.39.1/jersey-common-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server/2.39.1/jersey-server-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet/2.39.1/jersey-container-servlet-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core/2.39.1/jersey-container-servlet-core-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client/2.39.1/jersey-client-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.5.4/jettison-1.5.4.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
<bundle>mvn:org.apache.opennlp/corpus-server/2.1.1-SNAPSHOT</bundle>
</feature>
</features>
\ No newline at end of file
diff --git a/corpus-server/corpus-server-core/pom.xml
b/corpus-server/corpus-server-core/pom.xml
index 732ef60..6880c4e 100644
--- a/corpus-server/corpus-server-core/pom.xml
+++ b/corpus-server/corpus-server-core/pom.xml
@@ -49,22 +49,41 @@
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-servlet</artifactId>
+ <groupId>org.glassfish.jersey.containers</groupId>
+ <artifactId>jersey-container-servlet</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jackson</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
<scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
+ <groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
diff --git
a/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
b/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
index 01fb678..721128a 100644
---
a/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
+++
b/corpus-server/corpus-server-core/src/main/java/org/apache/opennlp/corpus_server/CorpusServerBundle.java
@@ -32,7 +32,7 @@ import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
import org.osgi.util.tracker.ServiceTracker;
-import com.sun.jersey.spi.container.servlet.ServletContainer;
+import org.glassfish.jersey.servlet.ServletContainer;
public class CorpusServerBundle implements BundleActivator {
@@ -105,7 +105,6 @@ public class CorpusServerBundle implements BundleActivator {
Dictionary<String, String> jerseyServletParams = new Hashtable<>();
jerseyServletParams.put("javax.ws.rs.Application",
CorpusServerApplication.class.getName());
- jerseyServletParams.put("com.sun.jersey.api.json.POJOMappingFeature",
"true");
try {
httpService.registerServlet("/rest", new ServletContainer(),
jerseyServletParams, null);
diff --git a/corpus-server/corpus-server-impl/pom.xml
b/corpus-server/corpus-server-impl/pom.xml
index 5ce9072..53f85e4 100644
--- a/corpus-server/corpus-server-impl/pom.xml
+++ b/corpus-server/corpus-server-impl/pom.xml
@@ -44,15 +44,11 @@
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
- <version>4.2.0</version>
- <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
- <version>4.2.0</version>
- <scope>provided</scope>
</dependency>
<dependency>
@@ -119,7 +115,7 @@
<instructions>
<Embed-Dependency>*;scope=compile;inline=false</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
-
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Import-Package>
!com.sun.jdmk.comm,
!javax.persistence.*,
diff --git a/corpus-server/corpus-server-tools/pom.xml
b/corpus-server/corpus-server-tools/pom.xml
index 1b96650..f44bc8c 100644
--- a/corpus-server/corpus-server-tools/pom.xml
+++ b/corpus-server/corpus-server-tools/pom.xml
@@ -34,24 +34,34 @@
<name>Apache OpenNLP Corpus Server Shell</name>
<dependencies>
+
<dependency>
- <groupId>org.apache.opennlp</groupId>
- <artifactId>corpus-server-core</artifactId>
- <version>2.1.1-SNAPSHOT</version>
- <scope>provided</scope>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.apache.uima</groupId>
<artifactId>uimaj-core</artifactId>
<version>${uimaj.version}</version>
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
index 796432a..b74bd9b 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CASImporter.java
@@ -18,13 +18,13 @@
package org.apache.opennlp.corpus_server.tools;
import java.io.File;
-import java.io.FilenameFilter;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.core.Response;
public class CASImporter {
@@ -35,9 +35,8 @@ public class CASImporter {
System.exit(-1);
}
- Client c = Client.create();
-
- WebResource r = c.resource(args[0]);
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
File xmiFileOrFolder = new File(args[1]);
@@ -52,13 +51,14 @@ public class CASImporter {
for (File xmiFile : xmiFiles) {
byte[] xmiBytes = FileUtil.fileToBytes(xmiFile);
- ClientResponse response = r.path(xmiFile.getName())
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.TEXT_XML)
- .post(ClientResponse.class, xmiBytes);
+ try (Response response = r.path(xmiFile.getName())
+ .request(MediaType.TEXT_XML)
+ .header("Content-Type", MediaType.TEXT_XML)
+ .header("Content-Length", xmiBytes.length)
+ .put(Entity.entity(xmiBytes,
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
- System.out.println(xmiFile.getName() + " " + response.getStatus());
+ System.out.println(xmiFile.getName() + " " + response.getStatus());
+ }
}
}
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
index 66b7a65..3a9c31c 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CorpusBackup.java
@@ -25,11 +25,14 @@ import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import org.glassfish.jersey.client.ClientResponse;
/**
* Tools to back up a corpus from the corpus server into a zip package.
@@ -39,8 +42,7 @@ import com.sun.jersey.api.client.WebResource;
*/
public class CorpusBackup {
- private static void copyStream(InputStream in,
- OutputStream out) throws IOException {
+ private static void copyStream(InputStream in, OutputStream out) throws
IOException {
byte[] buffer = new byte[1024];
int len;
@@ -59,21 +61,24 @@ public class CorpusBackup {
System.exit(-1);
}
- Client c = Client.create();
-
- WebResource r = c.resource(args[0] + "/queues");
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0] + "/queues");
String corpusId = args[1];
String backupQueueId = args[1] + "BackupQueue";
- ClientResponse createQueueResponse = r.path("_createTaskQueue")
+ try (Response createQueueResponse = r.path("_createTaskQueue")
.queryParam("corpusId", args[1])
.queryParam("queueId", backupQueueId)
.queryParam("q", "*:*")
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
+ .request(MediaType.TEXT_XML)
.header("Content-Type", MediaType.TEXT_XML)
- .post(ClientResponse.class);
+ // as this is an query-param driven POST request,
+ // we just set an empty string to the body.
+ .post(Entity.entity("", MediaType.TEXT_PLAIN_TYPE))) {
+
+ System.out.println("Result (_createTaskQueue): " +
createQueueResponse.getStatus());
+ }
// zip file name ...
File backupFile = new File(args[2]);
@@ -82,58 +87,53 @@ public class CorpusBackup {
try (OutputStream backupOut = new FileOutputStream(backupFile);
ZipOutputStream zipPackageOut = new ZipOutputStream(backupOut)){
-
- WebResource corpusWebResource = c.resource(args[0] + "/corpora/" +
corpusId);
-
- // fetch ts, does it work like this!?
- ClientResponse tsResponse = corpusWebResource
- .path("_typesystem")
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
+
+ WebTarget corpusWebResource = c.target(args[0] + "/corpora/" + corpusId);
+
+ // fetch ts
+ ClientResponse tsResponse = corpusWebResource.path("_typesystem")
+ .request(MediaType.TEXT_XML)
.header("Content-Type", MediaType.TEXT_XML)
.get(ClientResponse.class);
-
+
zipPackageOut.putNextEntry(new ZipEntry("TypeSystem.xml"));
- try (InputStream tsIn = tsResponse.getEntityInputStream()) {
+ try (InputStream tsIn = tsResponse.getEntityStream()) {
copyStream(tsIn, zipPackageOut);
}
zipPackageOut.closeEntry();
-
+
// consume task queue
- WebResource r2 = c.resource(args[0] + "/queues/" + backupQueueId);
-
+ WebTarget r2 = c.target(args[0] + "/queues/" + backupQueueId);
+
while (true) {
// TODO: Make query configurable ...
- ClientResponse response2 = r2
- .path("_nextTask")
+ ClientResponse response2 = r2.path("_nextTask")
.queryParam("q", args[1])
- .accept(MediaType.APPLICATION_JSON)
+ .request(MediaType.APPLICATION_JSON)
.header("Content-Type", MediaType.TEXT_XML)
.get(ClientResponse.class);
-
- if (response2.getStatus() ==
ClientResponse.Status.NO_CONTENT.getStatusCode()) {
+
+ if (response2.getStatus() ==
Response.Status.NO_CONTENT.getStatusCode()) {
System.out.println("##### FINISHED #####");
break;
}
-
+
// check if response was ok ...
-
- String casId = response2.getEntity(String.class);
-
- ClientResponse casResponse = corpusWebResource
- .path(casId)
- .accept(MediaType.TEXT_XML)
+ String casId = response2.readEntity(String.class);
+
+ ClientResponse casResponse = corpusWebResource.path(casId)
+ .request(MediaType.TEXT_XML)
.header("Content-Type", MediaType.TEXT_XML)
.get(ClientResponse.class);
-
+
zipPackageOut.putNextEntry(new ZipEntry(casId));
- try (InputStream casIn = casResponse.getEntityInputStream()) {
+ try (InputStream casIn = casResponse.getEntityStream()) {
copyStream(casIn, zipPackageOut);
}
-
+
zipPackageOut.closeEntry();
-
+
System.out.println(casId);
}
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
index ebcea1d..c2e0795 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateCorpus.java
@@ -17,29 +17,29 @@
package org.apache.opennlp.corpus_server.tools;
+import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.uima.UIMAFramework;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.util.XMLInputSource;
import org.apache.uima.util.XMLParser;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
-
/**
* Command Line Tool to create a new corpus in the corpus server.
*/
public class CreateCorpus {
+
public static void main(String[] args) throws Exception {
if (args.length != 4) {
@@ -50,44 +50,37 @@ public class CreateCorpus {
String corpusName = args[1];
- ClientConfig clientConfig = new DefaultClientConfig();
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
- Boolean.TRUE);
-
- Client c = Client.create(clientConfig);
-
- WebResource r = c.resource(args[0]);
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
byte[][] resources = new byte[2][];
// Load and resolve type system before importing it
- InputStream typeSystemIn = new FileInputStream(new File(args[2]));
+ try (InputStream typeSystemIn = new BufferedInputStream(new
FileInputStream(args[2]))) {
- XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,
- new File(args[2]));
+ XMLParser xmlParser = UIMAFramework.getXMLParser();
+ XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,new
File(args[2]));
- XMLParser xmlParser = UIMAFramework.getXMLParser();
+ TypeSystemDescription typeSystemDescriptor =
+ (TypeSystemDescription) xmlParser.parse(xmlTypeSystemSource);
+ typeSystemDescriptor.resolveImports();
- TypeSystemDescription typeSystemDescriptor = (TypeSystemDescription)
xmlParser
- .parse(xmlTypeSystemSource);
+ ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
+ typeSystemDescriptor.toXML(typeSystemBytes);
- typeSystemDescriptor.resolveImports();
+ resources[0] = typeSystemBytes.toByteArray();
- ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
- typeSystemDescriptor.toXML(typeSystemBytes);
+ byte[] indexMappingBytes = FileUtil.fileToBytes(new File(args[3]));
+ resources[1] = indexMappingBytes;
- resources[0] = typeSystemBytes.toByteArray();
+ try (Response response = r.path("_createCorpus")
+ .queryParam("corpusName", corpusName)
+ .request(MediaType.APPLICATION_JSON)
+ .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
+ .post(Entity.entity(resources,
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
- byte[] indexMappingBytes = FileUtil.fileToBytes(new File(args[3]));
- resources[1] = indexMappingBytes;
-
- ClientResponse response = r.path("_createCorpus")
- .queryParam("corpusName", corpusName)
- .accept(MediaType.APPLICATION_JSON)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class, resources);
-
- System.out.println("Result: " + response.getStatus());
+ System.out.println("Result: " + response.getStatus());
+ }
+ }
}
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
index d459868..d91c5f5 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/CreateTaskQueue.java
@@ -17,11 +17,12 @@
package org.apache.opennlp.corpus_server.tools;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.core.Response;
public class CreateTaskQueue {
@@ -33,19 +34,21 @@ public class CreateTaskQueue {
String corpusName = args[1];
- Client c = Client.create();
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
- WebResource r = c.resource(args[0]);
+ try (Response response = r.path("_createTaskQueue")
+ .queryParam("corpusId", corpusName)
+ .queryParam("queueId", args[2])
+ .queryParam("q", args[3])
+ .request(MediaType.TEXT_XML)
+ .header("Content-Type", MediaType.TEXT_XML)
+ // as this is an query-param driven POST request,
+ // we just set an empty string to the body.
+ .post(Entity.entity("", MediaType.TEXT_PLAIN_TYPE))) {
- ClientResponse response = r.path("_createTaskQueue")
- .queryParam("corpusId", corpusName)
- .queryParam("queueId", args[2])
- .queryParam("q", args[3])
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.TEXT_XML)
- .post(ClientResponse.class);
+ System.out.println("Result: " + response.getStatus());
+ }
- System.out.println("Result: " + response.getStatus());
}
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
index a5b44b6..c4c8335 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/DropCorpus.java
@@ -17,19 +17,18 @@
package org.apache.opennlp.corpus_server.tools;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.json.JSONConfiguration;
+import javax.ws.rs.core.Response;
/**
* Command Line Tool to drop a corpus in the corpus server.
*/
public class DropCorpus {
+
public static void main(String[] args) throws Exception {
if (args.length != 2) {
@@ -39,21 +38,19 @@ public class DropCorpus {
String corpusName = args[1];
- ClientConfig clientConfig = new DefaultClientConfig();
- clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
- Boolean.TRUE);
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
- Client c = Client.create(clientConfig);
+ try (Response response = r.path("_dropCorpus")
+ .queryParam("corpusName", corpusName)
+ .request(MediaType.APPLICATION_JSON)
+ .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
+ // as this is an query-param driven POST request,
+ // we just set an empty string to the body.
+ .post(Entity.entity("", MediaType.APPLICATION_JSON))) {
- WebResource r = c.resource(args[0]);
-
- ClientResponse response = r.path("_dropCorpus")
- .queryParam("corpusName", corpusName)
- .accept(MediaType.APPLICATION_JSON)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class);
+ System.out.println("Result: " + response.getStatus());
+ }
- System.out.println("Result: " + response.getStatus());
}
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
index 8f8a4f4..e768f4d 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/FileUtil.java
@@ -17,6 +17,7 @@
package org.apache.opennlp.corpus_server.tools;
+import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -28,7 +29,7 @@ public class FileUtil {
static byte[] fileToBytes(File file) throws IOException {
try (ByteArrayOutputStream fileBytes = new ByteArrayOutputStream((int)
file.length());
- InputStream fileIn = new FileInputStream(file)) {
+ InputStream fileIn = new BufferedInputStream(new
FileInputStream(file))) {
byte[] buffer = new byte[1024];
int length;
while ((length = fileIn.read(buffer)) > 0) {
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
index e1ebc41..e2ec205 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/RemoveCAS.java
@@ -17,9 +17,10 @@
package org.apache.opennlp.corpus_server.tools;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
/**
* Command Line Tool to remove a CAS from a corpus.
@@ -32,16 +33,15 @@ public class RemoveCAS {
System.out.println("RemoveCAS corpusAddress casId");
System.exit(-1);
}
-
- Client c = Client.create();
- WebResource r = c.resource(args[0]);
-
- ClientResponse response = r
- .path(args[1])
- .delete(ClientResponse.class);
-
- System.out.println("Result: " + response.getStatus());
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
+
+ try (Response response = r.path(args[1])
+ .request()
+ .delete()) {
+
+ System.out.println("Result: " + response.getStatus());
+ }
}
-
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
index a590225..988076d 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/ReplaceTypeSystem.java
@@ -17,22 +17,24 @@
package org.apache.opennlp.corpus_server.tools;
+import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.uima.UIMAFramework;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.util.XMLInputSource;
import org.apache.uima.util.XMLParser;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-
public class ReplaceTypeSystem {
public static void main(String[] args) throws Exception {
@@ -42,32 +44,31 @@ public class ReplaceTypeSystem {
System.exit(-1);
}
- Client c = Client.create();
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
- WebResource r = c.resource(args[0]);
-
- // Load and resolve type system before importing it
- InputStream typeSystemIn = new FileInputStream(new File(args[1]));
+ // Load and resolve type system before importing it
+ try (InputStream typeSystemIn = new BufferedInputStream(new
FileInputStream(args[1]))) {
+ XMLParser xmlParser = UIMAFramework.getXMLParser();
+ XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,
new File(args[1]));
- XMLInputSource xmlTypeSystemSource = new XMLInputSource(typeSystemIn,
- new File(args[1]));
+ TypeSystemDescription typeSystemDesciptor = (TypeSystemDescription)
xmlParser
+ .parse(xmlTypeSystemSource);
+ typeSystemDesciptor.resolveImports();
- XMLParser xmlParser = UIMAFramework.getXMLParser();
+ ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
+ typeSystemDesciptor.toXML(typeSystemBytes);
- TypeSystemDescription typeSystemDesciptor = (TypeSystemDescription)
xmlParser
- .parse(xmlTypeSystemSource);
+ byte[] bytes = typeSystemBytes.toByteArray();
+ try (Response response = r.path("_replaceTypeSystem")
+ .request(MediaType.TEXT_XML)
+ .header("Content-Type", MediaType.TEXT_XML)
+ .header("Content-Length", bytes.length)
+ .put(Entity.entity(bytes,
MediaType.APPLICATION_OCTET_STREAM_TYPE))) {
- typeSystemDesciptor.resolveImports();
+ System.out.println("Response: " + response.getStatus());
+ }
- ByteArrayOutputStream typeSystemBytes = new ByteArrayOutputStream();
- typeSystemDesciptor.toXML(typeSystemBytes);
-
- ClientResponse response = r.path("_replaceTypeSystem")
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.TEXT_XML)
- .put(ClientResponse.class, typeSystemBytes.toByteArray());
-
- System.out.println("Response: " + response.getStatus());
+ }
}
}
diff --git
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
index 3c70c14..0a549ea 100644
---
a/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
+++
b/corpus-server/corpus-server-tools/src/main/java/org/apache/opennlp/corpus_server/tools/SearchCorpus.java
@@ -17,14 +17,14 @@
package org.apache.opennlp.corpus_server.tools;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.codehaus.jettison.json.JSONArray;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-
public class SearchCorpus {
public static void main(String[] args) throws Exception {
@@ -33,24 +33,24 @@ public class SearchCorpus {
System.out.println("SearchCorpus address query");
System.exit(-1);
}
+
+ Client c = ClientBuilder.newClient();
+ WebTarget r = c.target(args[0]);
- Client c = Client.create();
-
- WebResource r = c.resource(args[0]);
-
- ClientResponse response = r
- .path("_search")
- .queryParam("q", args[1])
- .accept(MediaType.APPLICATION_JSON)
- .header("Content-Type", MediaType.TEXT_XML)
- .get(ClientResponse.class);
-
- JSONArray searchResult = response.getEntity(JSONArray.class);
-
- System.out.println("Status: " + response.getStatus());
-
- for (int i = 0; i < searchResult.length(); i++) {
- System.out.println("Hit: " + searchResult.getString(i));
+ try (Response response = r.path("_search")
+ .queryParam("q", args[1])
+
.request(MediaType.APPLICATION_JSON)
+ .header("Content-Type",
MediaType.TEXT_XML)
+ .get()) {
+
+ JSONArray searchResult =
response.readEntity(JSONArray.class);
+
+ System.out.println("Status: " + response.getStatus());
+
+ for (int i = 0; i < searchResult.length(); i++) {
+ System.out.println("Hit: " +
searchResult.getString(i));
+ }
}
+
}
}
diff --git a/corpus-server/pom.xml b/corpus-server/pom.xml
index a06826a..3626bfd 100644
--- a/corpus-server/pom.xml
+++ b/corpus-server/pom.xml
@@ -47,45 +47,62 @@
<dependencyManagement>
<dependencies>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
<dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.2.0</version>
- <scope>provided</scope>
+ <groupId>org.glassfish.jersey.containers</groupId>
+ <artifactId>jersey-container-servlet</artifactId>
+ <version>${jersey-server.version}</version>
</dependency>
<dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- <version>4.2.0</version>
- <scope>provided</scope>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>${jersey-client.version}</version>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-servlet</artifactId>
- <version>1.19.4</version>
- <scope>provided</scope>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jackson</artifactId>
+ <version>${jersey-server.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
+ <version>${jersey-server.version}</version>
+ <scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>1.19.4</version>
- <scope>provided</scope>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <version>${jettison.version}</version>
</dependency>
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>1.19.4</version>
- <scope>provided</scope>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
</dependency>
</dependencies>
@@ -105,25 +122,5 @@
</plugin>
</plugins>
</pluginManagement>
- <plugins>
-
- <!-- plugin>
- <groupId>org.apache.karaf.tooling</groupId>
- <artifactId>features-maven-plugin</artifactId>
- <version>2.2.4</version>
- <executions>
- <execution>
- <id>generate-features-file</id>
- <goals>
-
<goal>generate-features-file</goal>
- </goals>
- <configuration>
-
<karafVersion>2.2.4</karafVersion>
- </configuration>
- </execution>
- </executions>
- </plugin -->
-
- </plugins>
</build>
</project>
\ No newline at end of file
diff --git a/mahout-addon/pom.xml b/mahout-addon/pom.xml
index fbce241..490b202 100644
--- a/mahout-addon/pom.xml
+++ b/mahout-addon/pom.xml
@@ -42,6 +42,56 @@
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.9</version>
+ <exclusions>
+ <!-- No need for CLI tooling here -->
+ <exclusion>
+
<groupId>org.apache.mahout.commons</groupId>
+ <artifactId>commons-cli</artifactId>
+ </exclusion>
+ <!-- exluding as mahout-core brings ancient
version (CVEs) -->
+ <exclusion>
+ <groupId>com.google</groupId>
+ <artifactId>guava</artifactId>
+ </exclusion>
+ <!-- exluding as mahout-core brings ancient
version (CVEs) -->
+ <exclusion>
+
<groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+ <!-- This is not needed any way and brings in
ancient jersey -->
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-server</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-json</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>31.1-jre</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.20</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <scope>runtime</scope>
</dependency>
<dependency>
diff --git a/pom.xml b/pom.xml
index d85500d..98f3906 100644
--- a/pom.xml
+++ b/pom.xml
@@ -121,7 +121,10 @@
<opennlp.forkCount>1.0C</opennlp.forkCount>
<uimaj.version>3.3.1</uimaj.version>
-
+ <jersey-client.version>2.39.1</jersey-client.version>
+ <jersey-server.version>2.39.1</jersey-server.version>
+ <jettison.version>1.5.4</jettison.version>
+
<junit.version>5.9.2</junit.version>
<enforcer.plugin.version>3.0.0-M3</enforcer.plugin.version>
@@ -156,7 +159,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.4</version>
+ <version>3.12.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
@@ -168,17 +171,20 @@
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
-
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
-
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
- <version>3.5</version>
+ <version>3.6.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.9.4</version>
</dependency>
<dependency>
@@ -500,6 +506,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
+ <version>${checkstyle.plugin.version}</version>
</plugin>
</plugins>
</build>
diff --git a/tagging-server/feature.xml b/tagging-server/feature.xml
index 3f2799a..aa7ae67 100644
--- a/tagging-server/feature.xml
+++ b/tagging-server/feature.xml
@@ -24,15 +24,16 @@
<bundle>https://repo1.maven.org/maven2/org/apache/opennlp/opennlp-tools/2.1.1/opennlp-tools-2.1.1.jar</bundle>
<bundle>https://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
<bundle>https://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-core&v=1.19.4&e=jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-server&v=1.19.4&e=jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-servlet&v=1.19.4&e=jar</bundle>
-
<bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-json&v=1.19.4&e=jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common/2.39.1/jersey-common-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server/2.39.1/jersey-server-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet/2.39.1/jersey-container-servlet-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core/2.39.1/jersey-container-servlet-core-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client/2.39.1/jersey-client-2.39.1.jar</bundle>
+
<bundle>https://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.5.4/jettison-1.5.4.jar</bundle>
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
<bundle>https://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
-
<bundle>https://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.3.1/jettison-1.3.1.jar</bundle>
<bundle>mvn:org.apache.opennlp/tagging-server/2.1.1-SNAPSHOT</bundle>
</feature>
</features>
\ No newline at end of file
diff --git a/tagging-server/pom.xml b/tagging-server/pom.xml
index fed494d..ed0ad29 100644
--- a/tagging-server/pom.xml
+++ b/tagging-server/pom.xml
@@ -38,7 +38,40 @@
<groupId>org.apache.opennlp</groupId>
<artifactId>opennlp-tools</artifactId>
</dependency>
-
+
+ <dependency>
+ <groupId>org.glassfish.jersey.containers</groupId>
+ <artifactId>jersey-container-servlet</artifactId>
+ <version>${jersey-server.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jackson</artifactId>
+ <version>${jersey-server.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
+ <version>${jersey-server.version}</version>
+ <scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <version>${jettison.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
@@ -57,23 +90,12 @@
<version>4.2.0</version>
</dependency>
+ <!-- TEST scoped -->
<dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-servlet</artifactId>
- <version>1.19.4</version>
- </dependency>
-
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>1.19.4</version>
- </dependency>
-
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>1.19.4</version>
- <scope>test</scope>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>${jersey-client.version}</version>
+ <scope>test</scope>
</dependency>
<dependency>
@@ -145,12 +167,13 @@
!sun.misc,
javax.servlet,
*,
-
com.sun.jersey.json.impl.provider.entity.*,
-
com.sun.jersey.json.*,
+
org.glassfish.jersey.json.impl.provider.entity.*,
+
org.glassfish.jersey.json.*,
org.codehaus.jackson.*,
org.codehaus.jackson.xc,
-
com.sun.jersey.api.core,
-
com.sun.jersey.spi.container.servlet
+
org.glassfish.jersey.spi,
+
org.glassfish.jersey.server.spi
+
org.glassfish.jersey.servlet.spi
</Import-Package>
<!--
Import-Package>!com.ibm.jvm,!com.sun.jdmk.comm,!com.sun.net.httpserver,*,com.sun.jersey.api.core,com.sun.jersey.spi.container.servlet</Import-Package-->
<Export-Package>org.apache.opennlp.tagging_server.*</Export-Package>
diff --git
a/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
b/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
index 2fa0007..2b2546a 100644
---
a/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
+++
b/tagging-server/src/main/java/org/apache/opennlp/tagging_server/TaggingServerBundle.java
@@ -29,7 +29,7 @@ import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
import org.osgi.util.tracker.ServiceTracker;
-import com.sun.jersey.spi.container.servlet.ServletContainer;
+import org.glassfish.jersey.servlet.ServletContainer;
public class TaggingServerBundle implements BundleActivator {
@@ -52,7 +52,6 @@ public class TaggingServerBundle implements BundleActivator {
Dictionary<String, String> jerseyServletParams = new Hashtable<>();
jerseyServletParams.put("javax.ws.rs.Application",
TaggingServerApplication.class.getName());
- jerseyServletParams.put("com.sun.jersey.api.json.POJOMappingFeature",
"true");
try {
httpService.registerServlet("/rest", new ServletContainer(),
jerseyServletParams, null);
@@ -69,7 +68,6 @@ public class TaggingServerBundle implements BundleActivator {
if (httpService == service) {
httpService.unregister("/rest");
-
httpService = null;
}
diff --git a/wikinews-importer/pom.xml b/wikinews-importer/pom.xml
index be59205..3d6f6c1 100644
--- a/wikinews-importer/pom.xml
+++ b/wikinews-importer/pom.xml
@@ -33,22 +33,7 @@
<name>Apache OpenNLP Wikinews Importer</name>
- <properties>
- <uimaj.version>3.3.1</uimaj.version>
- </properties>
-
<dependencies>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>1.19.4</version>
- </dependency>
-
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>1.19.4</version>
- </dependency>
<dependency>
<groupId>info.bliki.wiki</groupId>