/* * $Id$ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ package org.apache.fop.apps; // SAX import org.xml.sax.InputSource; import org.xml.sax.XMLReader; // Java import java.net.URL; import java.io.File; // FOP import org.apache.fop.configuration.Configuration; abstract public class InputHandler { abstract public InputSource getInputSource(); abstract public XMLReader getParser() throws FOPException; static public InputSource urlInputSource(URL url) { return new InputSource(url.toString()); } /** * create an InputSource from a File * * @param file the File * @return the InputSource created */ static public InputSource fileInputSource(File file) { /* this code adapted from James Clark's in XT */ String path = file.getAbsolutePath(); String fSep = System.getProperty("file.separator"); if (fSep != null && fSep.length() == 1) path = path.replace(fSep.charAt(0), '/'); if (path.length() > 0 && path.charAt(0) != '/') path = '/' + path; try { return new InputSource(new URL("file", null, path).toString()); } catch (java.net.MalformedURLException e) { throw new Error("unexpected MalformedURLException"); } } /** * creates a SAX parser, using the value of org.xml.sax.parser * defaulting to org.apache.xerces.parsers.SAXParser * * @return the created SAX parser */ protected static XMLReader createParser() throws FOPException { String parserClassName = Driver.getParserClassName(); //log.debug("using SAX parser " + parserClassName); try { return (XMLReader)Class.forName(parserClassName).newInstance(); } catch (ClassNotFoundException e) { throw new FOPException(e); } catch (InstantiationException e) { throw new FOPException("Could not instantiate " + parserClassName, e); } catch (IllegalAccessException e) { throw new FOPException("Could not access " + parserClassName, e); } catch (ClassCastException e) { throw new FOPException(parserClassName + " is not a SAX driver", e); } } }