+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