diff --git a/build-core.xml b/build-core.xml
index 1db8f9d80..3342b2a95 100644
--- a/build-core.xml
+++ b/build-core.xml
@@ -41,7 +41,6 @@
-
@@ -49,7 +48,6 @@
-
@@ -193,13 +191,13 @@
+ debug="true" encoding="UTF-8" source="1.8" target="1.8">
+ debug="true" encoding="UTF-8" source="1.8" target="1.8">
diff --git a/lib/stax-api-1.0.1.jar b/lib/stax-api-1.0.1.jar
deleted file mode 100644
index d9a166515..000000000
Binary files a/lib/stax-api-1.0.1.jar and /dev/null differ
diff --git a/lib/xml-apis.jar b/lib/xml-apis.jar
deleted file mode 100644
index d42c0ea6c..000000000
Binary files a/lib/xml-apis.jar and /dev/null differ
diff --git a/src/org/daisy/pipeline/core/DirClassLoader.java b/src/org/daisy/pipeline/core/DirClassLoader.java
index 354c89017..c6ce142bf 100644
--- a/src/org/daisy/pipeline/core/DirClassLoader.java
+++ b/src/org/daisy/pipeline/core/DirClassLoader.java
@@ -43,7 +43,7 @@ public class DirClassLoader extends URLClassLoader {
* directory for resource files
*/
public DirClassLoader(File clsDir, File resDir) {
- super(new URL[] { fileToURL(clsDir) });
+ super(new URL[] { fileToURL(clsDir) }, DirClassLoader.class.getClassLoader());
classDir = clsDir;
resourceDir = resDir;
}
diff --git a/src/org/daisy/pipeline/core/PipelineCore.java b/src/org/daisy/pipeline/core/PipelineCore.java
index f1c48dc0b..5120adb1a 100644
--- a/src/org/daisy/pipeline/core/PipelineCore.java
+++ b/src/org/daisy/pipeline/core/PipelineCore.java
@@ -53,7 +53,7 @@
*/
public class PipelineCore {
- private Creator mCreator;
+ protected Creator mCreator;
private Runner mRunner;
private File mHomeDir;
@@ -166,10 +166,9 @@ private void initialize(Properties userProps, Properties pipelineProps)
setUserProperties(userProps);
// Load messages
- ResourceBundle bundle = XMLPropertyResourceBundle.getBundle((this
- .getClass().getPackage().getName()).replace('.', '/')
- + "/messages.properties", Locale.getDefault(), this.getClass()
- .getClassLoader());
+ ResourceBundle bundle = XMLPropertyResourceBundle.getBundle(
+ "org/daisy/pipeline/core/messages.properties", Locale.getDefault(),
+ this.getClass().getClassLoader());
// ResourceBundle bundle =
// XMLPropertyResourceBundle.getBundle(this.getClass().getPackage().getName()
// + ".pipeline.messages", Locale.getDefault(),
diff --git a/src/org/daisy/pipeline/core/script/Creator.java b/src/org/daisy/pipeline/core/script/Creator.java
index 997720a25..50a2d9b7b 100644
--- a/src/org/daisy/pipeline/core/script/Creator.java
+++ b/src/org/daisy/pipeline/core/script/Creator.java
@@ -102,8 +102,7 @@ private void setTransformerHandlers(Script script)
throws ScriptValidationException {
for (Task task : script.getTasks()) {
try {
- TransformerHandler handler = TransformerHandlerLoader.INSTANCE
- .getTransformerHandler(task.getName());
+ TransformerHandler handler = getTransformerHandler(task.getName());
if (handler != null) {
task.setTransformerHandler(handler);
} else {
@@ -118,4 +117,9 @@ private void setTransformerHandlers(Script script)
}
}
}
+
+ protected TransformerHandler getTransformerHandler(String name)
+ throws TransformerDisabledException {
+ return TransformerHandlerLoader.INSTANCE.getTransformerHandler(name);
+ }
}
diff --git a/src/org/daisy/pipeline/core/script/Runner.java b/src/org/daisy/pipeline/core/script/Runner.java
index aee20ee08..a97f855b0 100644
--- a/src/org/daisy/pipeline/core/script/Runner.java
+++ b/src/org/daisy/pipeline/core/script/Runner.java
@@ -95,7 +95,7 @@ public void execute(Job job) throws JobFailedException {
// Add hard-coded transformer parameters
this.addTransformerParameters(parameters, handler);
- boolean success = handler.run(parameters, task.isInteractive(), task, null);
+ boolean success = handler.run(parameters, task.isInteractive(), task, job);
if (!success) {
throw new JobFailedException(i18n("TASK_FAILED", handler.getName()));
}
diff --git a/src/org/daisy/pipeline/core/script/Script.java b/src/org/daisy/pipeline/core/script/Script.java
index 938da2195..845b15a69 100644
--- a/src/org/daisy/pipeline/core/script/Script.java
+++ b/src/org/daisy/pipeline/core/script/Script.java
@@ -18,6 +18,7 @@
package org.daisy.pipeline.core.script;
import java.io.File;
+import java.io.IOException;
import java.io.PrintWriter;
import java.net.URI;
import java.net.URL;
@@ -173,8 +174,9 @@ void setDescription(String description) {
* @param uri
*/
void setDocumentation(URI uri) {
- File test = new File(uri);
- if(!test.exists()||!test.canRead()) {
+ try {
+ uri.toURL().openStream();
+ } catch (IllegalArgumentException|IOException e) {
System.out.println("Warning [in Script#setDocumentation]: Script documentation URI " + uri.toString() + " seems not to resolve");
}
this.mDocumentation = uri;
diff --git a/src/org/daisy/pipeline/core/script/ScriptUtils.java b/src/org/daisy/pipeline/core/script/ScriptUtils.java
index 871a97560..d95245e9f 100644
--- a/src/org/daisy/pipeline/core/script/ScriptUtils.java
+++ b/src/org/daisy/pipeline/core/script/ScriptUtils.java
@@ -220,7 +220,8 @@ public static File upgrade(URL url) throws ScriptValidationException {
throw new ScriptValidationException(e.getMessage(), e);
} finally {
try {
- PeekerPool.getInstance().release(peeker);
+ if (peeker != null)
+ PeekerPool.getInstance().release(peeker);
} catch (PoolException e) {}
}
diff --git a/src/org/daisy/pipeline/util/PropertiesValidator.java b/src/org/daisy/pipeline/util/PropertiesValidator.java
index a0028ec80..147eab514 100644
--- a/src/org/daisy/pipeline/util/PropertiesValidator.java
+++ b/src/org/daisy/pipeline/util/PropertiesValidator.java
@@ -59,7 +59,8 @@ public PropertiesValidator(String path) throws IOException, CatalogExceptionNotR
for (File inputFile : files) {
try {
- XMLInputFactory2 ifact = (XMLInputFactory2)XMLInputFactory.newInstance();
+ XMLInputFactory2 ifact = (XMLInputFactory2)XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
ifact.setXMLResolver(new StaxEntityResolver(CatalogEntityResolver.getInstance()));
XMLStreamReader2 sr = ifact.createXMLStreamReader(inputFile);
try {
diff --git a/src/org/daisy/util/fileset/validation/ValidatorImplAbstract.java b/src/org/daisy/util/fileset/validation/ValidatorImplAbstract.java
index 05e5b2170..d8b3ee539 100644
--- a/src/org/daisy/util/fileset/validation/ValidatorImplAbstract.java
+++ b/src/org/daisy/util/fileset/validation/ValidatorImplAbstract.java
@@ -155,7 +155,10 @@ private void executeSchemas() throws ValidatorNotSupportedException, ValidatorEx
if(SchemaLanguageConstants.hasEntry(uri)) {
++nsURIsFound;
try{
- SchemaFactory factory = SchemaFactory.newInstance(uri);
+ // SchemaFactoryFinder is not public in Java 8
+ SchemaFactory factory = /*new SchemaFactoryFinder(getClass().getClassLoader()).newFactory(uri);
+ if (factory == null)
+ throw new IllegalStateException("No SchemaFactory could be loaded for " + uri);*/SchemaFactory.newInstance(uri);
factory.setErrorHandler(this);
factory.setResourceResolver(CatalogEntityResolver.getInstance());
//go via StreamSource and explicitly set the system id to be safe
diff --git a/src/org/daisy/util/fileset/validation/delegate/impl/AbstractXMLDeclarationDelegate.java b/src/org/daisy/util/fileset/validation/delegate/impl/AbstractXMLDeclarationDelegate.java
index af886e732..6a5912f06 100644
--- a/src/org/daisy/util/fileset/validation/delegate/impl/AbstractXMLDeclarationDelegate.java
+++ b/src/org/daisy/util/fileset/validation/delegate/impl/AbstractXMLDeclarationDelegate.java
@@ -148,7 +148,8 @@ public void execute(Fileset fileset) throws ValidatorNotSupportedException, Vali
* @throws CatalogExceptionNotRecoverable
*/
private void checkXMLDeclaration(URL url) throws URISyntaxException, XMLStreamException, IOException, CatalogExceptionNotRecoverable {
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLInputFactory inputFactory = XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.TRUE);
diff --git a/src/org/daisy/util/fileset/validation/delegate/impl/CorrectXMLEncodingDeclarationDelegate.java b/src/org/daisy/util/fileset/validation/delegate/impl/CorrectXMLEncodingDeclarationDelegate.java
index 0258cea8f..6ac433312 100644
--- a/src/org/daisy/util/fileset/validation/delegate/impl/CorrectXMLEncodingDeclarationDelegate.java
+++ b/src/org/daisy/util/fileset/validation/delegate/impl/CorrectXMLEncodingDeclarationDelegate.java
@@ -119,7 +119,8 @@ private void checkEncoding(URL url) throws IOException, URISyntaxException, Cata
String charset = detector.detect(url);
String[] probableCharsets = detector.getProbableCharsets();
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLInputFactory inputFactory = XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.TRUE);
diff --git a/src/org/daisy/util/fileset/validation/delegate/impl/NoDocTypeDeclarationDelegate.java b/src/org/daisy/util/fileset/validation/delegate/impl/NoDocTypeDeclarationDelegate.java
index 063f61af1..7330f991e 100644
--- a/src/org/daisy/util/fileset/validation/delegate/impl/NoDocTypeDeclarationDelegate.java
+++ b/src/org/daisy/util/fileset/validation/delegate/impl/NoDocTypeDeclarationDelegate.java
@@ -101,7 +101,8 @@ public void execute(Fileset fileset) throws ValidatorNotSupportedException, Vali
private void checkForDocTypeDeclaration(URL url) throws XMLStreamException, IOException,
URISyntaxException {
boolean foundDocTypeDecl = false;
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLInputFactory inputFactory = XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
InputStream is = null;
XMLEventReader eventReader = null;
diff --git a/src/org/daisy/util/fileset/validation/delegate/impl/NoProcessingInstructionDelegate.java b/src/org/daisy/util/fileset/validation/delegate/impl/NoProcessingInstructionDelegate.java
index d01c25566..6e456a723 100644
--- a/src/org/daisy/util/fileset/validation/delegate/impl/NoProcessingInstructionDelegate.java
+++ b/src/org/daisy/util/fileset/validation/delegate/impl/NoProcessingInstructionDelegate.java
@@ -102,7 +102,8 @@ public void execute(Fileset fileset) throws ValidatorNotSupportedException, Vali
* @throws URISyntaxException
*/
public void checkForProcessingInstruction(URL url) throws CatalogExceptionNotRecoverable, XMLStreamException, IOException, URISyntaxException {
- XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLInputFactory inputFactory = XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.TRUE);
diff --git a/src/org/daisy/util/text/URIUtils.java b/src/org/daisy/util/text/URIUtils.java
index c283f4c82..9495dae9f 100644
--- a/src/org/daisy/util/text/URIUtils.java
+++ b/src/org/daisy/util/text/URIUtils.java
@@ -754,7 +754,16 @@ public static URI resolve(URI reference, URI uri) {
throw new IllegalStateException("shouldn't happen: "
+ e.getMessage(), e);
}
-
+ } else if (reference.toString().startsWith("jar:") && !uri.isAbsolute()) {
+ try {
+ reference = new URI(reference.toASCIIString().substring(4));
+ uri = reference.resolve(uri);
+ uri = new URI("jar:" + uri.toASCIIString());
+ return uri;
+ } catch (URISyntaxException e) {
+ throw new IllegalStateException("shouldn't happen: "
+ + e.getMessage(), e);
+ }
} else {
return reference.resolve(uri);
}
diff --git a/src/org/daisy/util/xml/NamespaceReporter.java b/src/org/daisy/util/xml/NamespaceReporter.java
index 0b37d2ea9..d3360a93f 100644
--- a/src/org/daisy/util/xml/NamespaceReporter.java
+++ b/src/org/daisy/util/xml/NamespaceReporter.java
@@ -94,7 +94,8 @@ public NamespaceReporter(URL document) throws IOException, XMLStreamException {
}
}
} finally {
- reader.close();
+ if (reader != null)
+ reader.close();
pool.release(xif, mProperties, null);
}
diff --git a/src/org/daisy/util/xml/PeekerImpl.java b/src/org/daisy/util/xml/PeekerImpl.java
index 8dc093738..6b5bee455 100644
--- a/src/org/daisy/util/xml/PeekerImpl.java
+++ b/src/org/daisy/util/xml/PeekerImpl.java
@@ -255,7 +255,8 @@ private void readStream()
throws XMLStreamException {
try {
if (xif == null) {
- xif = XMLInputFactory.newInstance();
+ xif = XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
xif.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE);
xif.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE);
diff --git a/src/org/daisy/util/xml/pool/StAXInputFactoryPool.java b/src/org/daisy/util/xml/pool/StAXInputFactoryPool.java
index 1e2438529..8b4df8945 100644
--- a/src/org/daisy/util/xml/pool/StAXInputFactoryPool.java
+++ b/src/org/daisy/util/xml/pool/StAXInputFactoryPool.java
@@ -79,7 +79,8 @@ public void release(XMLInputFactory xif, Map properties) throws P
* @throws PoolException
*/
private XMLInputFactory create(Map properties) throws PoolException {
- XMLInputFactory xif = XMLInputFactory.newInstance();
+ XMLInputFactory xif = XMLInputFactory.newFactory(
+ "javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
return setProperties(xif,properties);
}
diff --git a/src/org/daisy/util/xml/validation/SimpleValidator.java b/src/org/daisy/util/xml/validation/SimpleValidator.java
index f9ce9f43e..f5daddc8c 100644
--- a/src/org/daisy/util/xml/validation/SimpleValidator.java
+++ b/src/org/daisy/util/xml/validation/SimpleValidator.java
@@ -223,7 +223,10 @@ private boolean doJAXPSchemaValidation(URL url) throws SAXException {
try{
String schemaNsURI = mSchemaSources.get(source);
if(!factoryMap.containsKey(schemaNsURI)) {
- factoryMap.put(schemaNsURI,SchemaFactory.newInstance(schemaNsURI));
+ SchemaFactory f = /*new SchemaFactoryFinder(getClass().getClassLoader()).newFactory(schemaNsURI);
+ if (f == null)
+ throw new IllegalStateException("No SchemaFactory could be loaded for " + schemaNsURI);*/SchemaFactory.newInstance(schemaNsURI);
+ factoryMap.put(schemaNsURI, f);
}
anySchemaFactory = factoryMap.get(schemaNsURI);
anySchemaFactory.setErrorHandler(mErrorHandler);