This is an automated email from the ASF dual-hosted git repository. mawiesne pushed a commit to branch modernize-jersey-binding-in-several-sandbox-components in repository https://gitbox.apache.org/repos/asf/opennlp-sandbox.git
commit 6b60194db0c072916aeef410bf0e7b5b8d5a5888 Author: Martin Wiesner <[email protected]> AuthorDate: Sun Apr 9 10:25:03 2023 +0200 modernizes several components to rely on a more recent version of Jersey 2.x instead of ancient 1.x versions - tagging-server - corpus-server and its components - caseditor-corpus-server-plugin - wikinews-importer (Jersey never used/required here) --- 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 | 77 ++++++++------- .../connector/CSQueueCollectionReader.java | 105 +++++++++------------ .../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 | 2 +- corpus-server/corpus-server-impl/pom.xml | 6 +- corpus-server/corpus-server-tools/pom.xml | 28 ++++-- .../opennlp/corpus_server/tools/CASImporter.java | 35 +++---- .../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 | 3 +- wikinews-importer/pom.xml | 15 --- 29 files changed, 594 insertions(+), 493 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 7c65546..2cf4e67 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..a41d837 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 @@ -19,7 +19,13 @@ package org.apache.opennlp.corpus_server.connector; import java.io.ByteArrayOutputStream; +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 +42,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 +58,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 +68,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"); @@ -92,47 +91,55 @@ public class CSCasWriter extends CasAnnotator_ImplBase { // Was inserted in the reader ... cas.removeFsFromIndexes(idFs); - ByteArrayOutputStream xmiBytes = new ByteArrayOutputStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { - XmiCasSerializer.serialize(cas, xmiBytes); + XmiCasSerializer.serialize(cas, baos); } catch (SAXException e) { throw new AnalysisEngineProcessException(); } + + 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); - 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); + try (Response res = casResponseBuilder + .post(Entity.entity(xmiBytes, MediaType.APPLICATION_OCTET_STREAM_TYPE))) { + logResponse(res, casId); + } } 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 (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); - } + throw new AnalysisEngineProcessException(new Exception("Unknown action: " + action)); } } else { throw new AnalysisEngineProcessException(new Exception("Missing Id Feature Structure!")); } } + + private void logResponse(Response res, String casId) { + int statusCode = res.getStatus(); + if (statusCode > 400) { + 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..e27e158 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,10 +41,7 @@ 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 @@ -79,62 +81,57 @@ 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() != 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); + } } } // 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) + try (Response response = r.path("_nextTask") + .request(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; + .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; + } } - else { - // TODO: Check if response was ok ... - } - String casId = response.getEntity(String.class); - casIdList.add(casId); - - System.out.println("Received CAS ID: " + casId); } casIds = casIdList.iterator(); @@ -155,29 +152,22 @@ public class CSQueueCollectionReader extends CollectionReader_ImplBase { 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 +179,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 8db7261..bb9e8a0 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 { 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 68fc6c1..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]); @@ -46,24 +45,20 @@ public class CASImporter { if (xmiFileOrFolder.isFile()) { xmiFiles = new File[] { xmiFileOrFolder }; } else { - xmiFiles = xmiFileOrFolder.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return name.toLowerCase().endsWith(".xmi"); - } - }); + xmiFiles = xmiFileOrFolder.listFiles((dir, name) -> name.toLowerCase().endsWith(".xmi")); } 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..33542d8 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 { @@ -69,7 +69,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>
