1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.vfs2.provider.zip;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.net.URI;
23
24 import org.apache.commons.vfs2.FileObject;
25 import org.xml.sax.EntityResolver;
26 import org.xml.sax.InputSource;
27 import org.xml.sax.SAXException;
28
29
30
31
32 public class TestEntityResolver implements EntityResolver {
33
34 private final FileObject containerFile;
35 private final FileObject sourceFile;
36
37 public TestEntityResolver(final FileObject containerFile, final FileObject sourceFile) {
38 this.containerFile = containerFile;
39 this.sourceFile = sourceFile;
40 }
41
42 @Override
43 public InputSource resolveEntity(final String publicId, final String systemId) throws SAXException, IOException {
44
45 final String fileName = new File(URI.create(systemId).getPath()).getName();
46 if (fileName.equals("name.xsd") || fileName.equals("address.xsd")) {
47 final String path = "/read-xml-tests/" + fileName;
48 final FileObject xsdFileObject = sourceFile.resolveFile(path);
49 if (!xsdFileObject.exists()) {
50 System.err.println("File does not exist: " + xsdFileObject);
51 throw new IllegalStateException(
52 "Schema " + path + " not found in file " + containerFile + " parsing " + sourceFile);
53 }
54
55 return new InputSource(xsdFileObject.getContent().getInputStream());
56 }
57 return null;
58 }
59
60 }