home *** CD-ROM | disk | FTP | other *** search
- package com.sun.xml.parser;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.Hashtable;
- import org.xml.sax.EntityResolver;
- import org.xml.sax.InputSource;
- import org.xml.sax.SAXException;
-
- public class Resolver implements EntityResolver {
- private boolean ignoringMIME;
- private Hashtable id2uri;
- private Hashtable id2resource;
- private Hashtable id2loader;
- private static final String[] types = new String[]{"application/xml", "text/xml", "text/plain", "text/html", "application/x-netcdf", "content/unknown"};
-
- public static InputSource createInputSource(File var0) throws IOException {
- InputSource var1 = new InputSource(XmlReader.createReader(new FileInputStream(var0)));
- String var2 = var0.getAbsolutePath();
- if (File.separatorChar != '/') {
- var2 = var2.replace(File.separatorChar, '/');
- }
-
- if (!var2.startsWith("/")) {
- var2 = "/" + var2;
- }
-
- if (!var2.endsWith("/") && var0.isDirectory()) {
- var2 = var2 + "/";
- }
-
- var1.setSystemId("file:" + var2);
- return var1;
- }
-
- public static InputSource createInputSource(String var0, InputStream var1, boolean var2, String var3) throws IOException {
- String var5 = null;
- if (var0 != null) {
- var0 = var0.toLowerCase();
- int var6 = var0.indexOf(59);
- if (var6 != -1) {
- String var7 = var0.substring(var6 + 1);
- var0 = var0.substring(0, var6);
- var6 = var7.indexOf("charset");
- if (var6 != -1) {
- var7 = var7.substring(var6 + 7);
- if ((var6 = var7.indexOf(59)) != -1) {
- var7 = var7.substring(0, var6);
- }
-
- if ((var6 = var7.indexOf(61)) != -1) {
- var7 = var7.substring(var6 + 1);
- if ((var6 = var7.indexOf(40)) != -1) {
- var7 = var7.substring(0, var6);
- }
-
- if ((var6 = var7.indexOf(34)) != -1) {
- var7 = var7.substring(var6 + 1);
- var7 = var7.substring(0, var7.indexOf(34));
- }
-
- var5 = var7.trim();
- }
- }
- }
-
- if (var2) {
- boolean var19 = false;
-
- for(int var8 = 0; var8 < types.length; ++var8) {
- if (types[var8].equals(var0)) {
- var19 = true;
- break;
- }
- }
-
- if (!var19) {
- throw new IOException("Not XML: " + var0);
- }
- }
-
- if (var5 == null) {
- var0 = var0.trim();
- if (var0.startsWith("text/") && !"file".equalsIgnoreCase(var3)) {
- var5 = "US-ASCII";
- }
- }
- }
-
- InputSource var4 = new InputSource(XmlReader.createReader(var1, var5));
- var4.setByteStream(var1);
- var4.setEncoding(var5);
- return var4;
- }
-
- public static InputSource createInputSource(URL var0, boolean var1) throws IOException {
- URLConnection var2 = var0.openConnection();
- if (var2 instanceof HttpURLConnection) {
- int var3 = ((HttpURLConnection)var2).getResponseCode();
- if (var3 >= 400 && var3 <= 417 || var3 >= 500 && var3 <= 505) {
- throw new IOException("Error in opening uri " + var0 + "status code=" + var3);
- }
- }
-
- InputSource var5;
- if (var1) {
- String var4 = var2.getContentType();
- var5 = createInputSource(var4, var2.getInputStream(), false, var0.getProtocol());
- } else {
- var5 = new InputSource(XmlReader.createReader(var2.getInputStream()));
- }
-
- var5.setSystemId(var2.getURL().toString());
- return var5;
- }
-
- public boolean isIgnoringMIME() {
- return this.ignoringMIME;
- }
-
- private InputStream mapResource(String var1) {
- if (var1 != null && this.id2resource != null) {
- String var2 = (String)this.id2resource.get(var1);
- ClassLoader var3 = null;
- if (var2 == null) {
- return null;
- } else {
- if (this.id2loader != null) {
- var3 = (ClassLoader)this.id2loader.get(var1);
- }
-
- return var3 == null ? ClassLoader.getSystemResourceAsStream(var2) : var3.getResourceAsStream(var2);
- }
- } else {
- return null;
- }
- }
-
- private String name2uri(String var1) {
- return var1 != null && this.id2uri != null ? (String)this.id2uri.get(var1) : null;
- }
-
- public void registerCatalogEntry(String var1, String var2) {
- if (this.id2uri == null) {
- this.id2uri = new Hashtable(17);
- }
-
- this.id2uri.put(var1, var2);
- }
-
- public void registerCatalogEntry(String var1, String var2, ClassLoader var3) {
- if (this.id2resource == null) {
- this.id2resource = new Hashtable(17);
- }
-
- this.id2resource.put(var1, var2);
- if (var3 != null) {
- if (this.id2loader == null) {
- this.id2loader = new Hashtable(17);
- }
-
- this.id2loader.put(var1, var3);
- }
-
- }
-
- public InputSource resolveEntity(String var1, String var2) throws IOException, SAXException {
- String var4 = this.name2uri(var1);
- InputSource var3;
- InputStream var5;
- if (var4 == null && (var5 = this.mapResource(var1)) != null) {
- var2 = "java:resource:" + (String)this.id2resource.get(var1);
- var3 = new InputSource(XmlReader.createReader(var5));
- } else {
- if (var4 != null) {
- var2 = var4;
- } else if (var2 == null) {
- return null;
- }
-
- URL var6 = new URL(var2);
- URLConnection var7 = var6.openConnection();
- var2 = var7.getURL().toString();
- if (this.ignoringMIME) {
- var3 = new InputSource(XmlReader.createReader(var7.getInputStream()));
- } else {
- String var8 = var7.getContentType();
- var3 = createInputSource(var8, var7.getInputStream(), false, var6.getProtocol());
- }
- }
-
- var3.setSystemId(var2);
- var3.setPublicId(var1);
- return var3;
- }
-
- public void setIgnoringMIME(boolean var1) {
- this.ignoringMIME = var1;
- }
- }
-