You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by jo...@apache.org on 2013/01/07 18:07:24 UTC
svn commit: r1429900 -
/opennlp/sandbox/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
Author: joern
Date: Mon Jan 7 17:07:24 2013
New Revision: 1429900
URL: http://svn.apache.org/viewvc?rev=1429900&view=rev
Log:
OPENNLP-555 Now throws a Core Exception if document couldn't be saved.
Modified:
opennlp/sandbox/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
Modified: opennlp/sandbox/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java?rev=1429900&r1=1429899&r2=1429900&view=diff
==============================================================================
--- opennlp/sandbox/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java (original)
+++ opennlp/sandbox/caseditor-corpus-server-plugin/src/main/java/org/apache/opennlp/corpus_server/caseditor/DefaultCasDocumentProvider.java Mon Jan 7 17:07:24 2013
@@ -24,6 +24,8 @@ import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
@@ -49,6 +51,7 @@ import org.apache.uima.util.XMLParser;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceStore;
import org.eclipse.swt.widgets.Composite;
@@ -60,6 +63,8 @@ import com.sun.jersey.api.client.WebReso
public class DefaultCasDocumentProvider extends
org.apache.uima.caseditor.editor.CasDocumentProvider {
+ private static final int READ_TIMEOUT = 30000;
+
private Map<Object, PreferenceStore> tsPreferenceStores =
new HashMap<Object, PreferenceStore>();
@@ -123,7 +128,7 @@ public class DefaultCasDocumentProvider
CorpusServerCasEditorInput casInput = (CorpusServerCasEditorInput) element;
Client client = Client.create();
-
+ client.setReadTimeout(READ_TIMEOUT);
WebResource webResource = client.resource(casInput.getServerUrl());
// Note: The type system could be cached to avoid downloading it
@@ -159,12 +164,17 @@ public class DefaultCasDocumentProvider
// create an empty cas ..
CAS cas = createEmptyCAS(tsDesc);
- ClientResponse casResponse = webResource
- .path(casInput.getName())
- .accept(MediaType.TEXT_XML)
- // TODO: How to fix this? Shouldn't accept do it?
- .header("Content-Type", MediaType.TEXT_XML)
- .get(ClientResponse.class);
+ ClientResponse casResponse;
+ try {
+ casResponse = webResource
+ .path(URLEncoder.encode(casInput.getName(), "UTF-8"))
+ .accept(MediaType.TEXT_XML)
+ // TODO: How to fix this? Shouldn't accept do it?
+ .header("Content-Type", MediaType.TEXT_XML)
+ .get(ClientResponse.class);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("Should never fail, UTF-8 encoding is available on every JRE!", e);
+ }
InputStream casIn = casResponse.getEntityInputStream();
@@ -206,25 +216,34 @@ public class DefaultCasDocumentProvider
documentImpl.serialize(outStream);
Client client = Client.create();
+ client.setReadTimeout(READ_TIMEOUT);
WebResource webResource = client.resource(casInput.getServerUrl());
byte xmiBytes[] = outStream.toByteArray();
+ String encodedCasId;
+ try {
+ encodedCasId = URLEncoder.encode(casInput.getName(), "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new CoreException(new Status(Status.ERROR, CorpusServerPlugin.PLUGIN_ID,
+ "Severe error, should never happen, UTF-8 encoding is not supported!"));
+ }
+
ClientResponse response = webResource
- .path(casInput.getName())
+ .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);
- // TODO: Check resposne for error
-
- // TODO: Is it writing in the UI thread?
+ if (response.getStatus() != 204) {
+ throw new CoreException(new Status(Status.ERROR, CorpusServerPlugin.PLUGIN_ID,
+ "Failed to save document, http error code: " + response.getStatus()));
+ }
}
}
- // tell everyone that the element changed and is not
- // dirty any longer
+ // tell everyone that the element changed and is not dirty any longer
fireElementDirtyStateChanged(element, false);
}