You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2016/01/19 19:12:15 UTC

svn commit: r1725579 - /uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/WarmUpDataProvider.java

Author: cwiklik
Date: Tue Jan 19 18:12:15 2016
New Revision: 1725579

URL: http://svn.apache.org/viewvc?rev=1725579&view=rev
Log:
UIMA-4265 updated to support specifying data file by name in addtion to by location

Modified:
    uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/WarmUpDataProvider.java

Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/WarmUpDataProvider.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/WarmUpDataProvider.java?rev=1725579&r1=1725578&r2=1725579&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/WarmUpDataProvider.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/WarmUpDataProvider.java Tue Jan 19 18:12:15 2016
@@ -35,8 +35,12 @@ import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.impl.Serialization;
 import org.apache.uima.cas.impl.XmiCasDeserializer;
+import org.apache.uima.resource.ResourceManager;
+import org.apache.uima.resource.metadata.Import;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.resource.metadata.impl.Import_impl;
 import org.apache.uima.util.CasCreationUtils;
+import org.apache.uima.util.Level;
 import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.XMLParser;
 
@@ -51,18 +55,53 @@ public class WarmUpDataProvider {
 	private boolean readingXmiFormat;
 	private TypeSystem inputTS;
 
-	public static void main(String[] args) {
+	private static final Class<?> CLASS_NAME = WarmUpDataProvider.class;
 
+	public static void main(String[] args) {
+         try {
+        	 WarmUpDataProvider wdp = new WarmUpDataProvider(args[0]);
+        	 
+        	 System.out.println("Got it initialized");
+        	 wdp.hasNext();
+        	 
+        	 System.out.println("done");
+        	 
+         } catch( Exception e) {
+        	 e.printStackTrace();
+         }
 	}
 
-	public WarmUpDataProvider(String inputFileName)
-			throws IOException {
+	public WarmUpDataProvider(String inputFileName) throws IOException {
 		this.inputFileName = inputFileName;
-		fis = new FileInputStream(new File(inputFileName));
+		Import_impl theImport = new Import_impl();
+		theImport.setSuffix(".zip");
+		
+		if ( !inputFileName.endsWith(".zip")) { 
+			theImport.setName(inputFileName);
+			this.inputFileName = resolveToAbsolutePath(theImport);
+			// strip 'file:' from the begining 
+			this.inputFileName = this.inputFileName.substring(this.inputFileName.indexOf(':')+1);
+		} 
+		
+
+		fis = new FileInputStream(new File(this.inputFileName));
 		zis = new ZipInputStream(new BufferedInputStream(fis, 1024 * 100));
 		docSeq = 0;
 	}
 
+	private String resolveToAbsolutePath(Import theImport) {
+		ResourceManager resourceManager = UIMAFramework.newDefaultResourceManager();
+		try {
+			return theImport.findAbsoluteUrl(resourceManager).toExternalForm();
+		} catch (Exception e) {
+			if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
+				UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, WarmUpDataProvider.class.getName(),
+						"resolveToAbsolutePath", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_exception__WARNING", e);
+			}
+			return "ERROR converting import by name to absolute path";
+		}
+	}
+
 	public boolean hasNext() throws AnalysisEngineProcessException {
 		try {
 			nextEntry = zis.getNextEntry();
@@ -83,8 +122,7 @@ public class WarmUpDataProvider {
 		} else {
 			if (nextEntry.getName().equals("typesystem.xml")) {
 				throw new AnalysisEngineProcessException(new RuntimeException(
-						"typesystem.xml entry found in the middle of input zipfile "
-								+ inputFileName));
+						"typesystem.xml entry found in the middle of input zipfile " + inputFileName));
 			}
 		}
 		byte[] buff = new byte[10000];
@@ -94,8 +132,7 @@ public class WarmUpDataProvider {
 			while (-1 != (bytesread = zis.read(buff))) {
 				baos.write(buff, 0, bytesread);
 			}
-			ByteArrayInputStream bis = new ByteArrayInputStream(
-					baos.toByteArray());
+			ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
 			if (readingXmiFormat) {
 				XmiCasDeserializer.deserialize(bis, cas, true);
 			} else {
@@ -116,18 +153,15 @@ public class WarmUpDataProvider {
 			while (-1 != (bytesread = zis.read(buff))) {
 				baos.write(buff, 0, bytesread);
 			}
-			ByteArrayInputStream bis = new ByteArrayInputStream(
-					baos.toByteArray());
+			ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
 			// Get XML parser from framework
 			XMLParser xmlParser = UIMAFramework.getXMLParser();
 			// Parse type system descriptor
 			TypeSystemDescription tsDesc = xmlParser
-					.parseTypeSystemDescription(new XMLInputSource(
-							(InputStream) bis, null));
+					.parseTypeSystemDescription(new XMLInputSource((InputStream) bis, null));
 			// Use type system description to create CAS and get the type system
 			// object
-			inputTS = CasCreationUtils.createCas(tsDesc, null, null)
-					.getTypeSystem();
+			inputTS = CasCreationUtils.createCas(tsDesc, null, null).getTypeSystem();
 			// advance to first input CAS
 			nextEntry = zis.getNextEntry();
 		} catch (Exception e) {