jar inputstream provider enabling multiple jar entries to be unmarshalled without...
[jalview.git] / src / jalview / util / jarInputStreamProvider.java
diff --git a/src/jalview/util/jarInputStreamProvider.java b/src/jalview/util/jarInputStreamProvider.java
new file mode 100644 (file)
index 0000000..6012cfd
--- /dev/null
@@ -0,0 +1,23 @@
+package jalview.util;\r
+\r
+import java.io.IOException;\r
+import java.util.jar.JarInputStream;\r
+\r
+/**\r
+ * input stream provider interface to be implemented\r
+ * by any non-file or URL datasources so that all Jar entries\r
+ * can be read from the datasource by repeatedly re-opening the JarInputStream.\r
+ * \r
+ * This is a workaround necessary because castor's unmarshaller will close the input stream after an unmarshalling session, which normally closes the whole Jar input stream, not just the current JarEntry's stream. \r
+ */\r
+public interface jarInputStreamProvider {\r
+  /**\r
+   * @return properly initialized jar input stream\r
+   */\r
+  JarInputStream getJarInputStream() throws IOException;\r
+  /**\r
+   * \r
+   * @return human readable name for datasource used when reporting any problems with it\r
+   */\r
+  String getFilename();\r
+}
\ No newline at end of file