public static InputSource getInputSource(XSLTC xsltc, Source source) throws TransformerConfigurationException {
    InputSource input = null;
    final String systemId = source.getSystemId();
    try {
      // Try to get InputSource from SAXSource input
      if (source instanceof SAXSource) {
        final SAXSource sax = (SAXSource) source;
        input = sax.getInputSource();
        // Pass the SAX parser to the compiler
        try {
          XMLReader reader = sax.getXMLReader();
          /*
           * Fix for bug 24695 According to JAXP 1.2 specification if a
           * SAXSource is created using a SAX InputSource the Transformer or
           * TransformerFactory creates a reader via the XMLReaderFactory if
           * setXMLReader is not used
           */
          if (reader == null) {
            try {
              reader = XMLReaderFactory.createXMLReader();
            } catch (final Exception e) {
              try {
                // Incase there is an exception thrown
                // resort to JAXP
                final SAXParserFactory parserFactory = SAXParserFactory.newInstance();
                parserFactory.setNamespaceAware(true);
                if (xsltc.isSecureProcessing()) {
                  try {
                    parserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
                  } catch (final SAXException se) {
                  }
                }
                reader = parserFactory.newSAXParser().getXMLReader();
              } catch (final ParserConfigurationException pce) {
                throw new TransformerConfigurationException("ParserConfigurationException", pce);
              }
            }
          }
          reader.setFeature("http://xml.org/sax/features/namespaces", true);
          reader.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
          xsltc.setXMLReader(reader);
        } catch (final SAXNotRecognizedException snre) {
          throw new TransformerConfigurationException("SAXNotRecognizedException ", snre);
        } catch (final SAXNotSupportedException snse) {
          throw new TransformerConfigurationException("SAXNotSupportedException ", snse);
        } catch (final SAXException se) {
          throw new TransformerConfigurationException("SAXException ", se);
        }
      }
      // handle DOMSource
      else if (source instanceof DOMSource) {
        final DOMSource domsrc = (DOMSource) source;
        final Document dom = (Document) domsrc.getNode();
        final DOM2SAX dom2sax = new DOM2SAX(dom);
        xsltc.setXMLReader(dom2sax);
        // Try to get SAX InputSource from DOM Source.
        input = SAXSource.sourceToInputSource(source);
        if (input == null) {
          input = new InputSource(domsrc.getSystemId());
        }
      }
      // Try to get InputStream or Reader from StreamSource
      else if (source instanceof StreamSource) {
        final StreamSource stream = (StreamSource) source;
        final InputStream istream = stream.getInputStream();
        final Reader reader = stream.getReader();
        xsltc.setXMLReader(null); // Clear old XML reader
        // Create InputSource from Reader or InputStream in Source
        if (istream != null) {
          input = new InputSource(istream);
        } else if (reader != null) {
          input = new InputSource(reader);
        } else {
          input = new InputSource(systemId);
        }
      } else {
        final ErrorMsg err = new ErrorMsg(Messages.get().jaxpUnknownSourceErr());
        throw new TransformerConfigurationException(err.toString());
      }
      input.setSystemId(systemId);
    } catch (final NullPointerException e) {
      final ErrorMsg err = new ErrorMsg(Messages.get().jaxpNoSourceErr("TransformerFactory.newTemplates()"));
      throw new TransformerConfigurationException(err.toString());
    } catch (final SecurityException e) {
      final ErrorMsg err = new ErrorMsg(Messages.get().fileAccessErr(systemId), -1);
      throw new TransformerConfigurationException(err.toString());
    }
    return input;
  }
public static InputSource getInputSource(XSLTC xsltc, Source source) throws TransformerConfigurationException {
    InputSource input = null;
    final String systemId = source.getSystemId();
    try {
     
      if (source instanceof SAXSource) {
        final SAXSource sax = (SAXSource) source;
        input = sax.getInputSource();
       
        try {
          XMLReader reader = sax.getXMLReader();
         
          if (reader == null) {
            try {
              reader = XMLReaderFactory.createXMLReader();
            } catch (final Exception e) {
              try {
               
               
                final SAXParserFactory parserFactory = SAXParserFactory.newInstance();
                parserFactory.setNamespaceAware(true);
                if (xsltc.isSecureProcessing()) {
                  try {
                    parserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
                  } catch (final SAXException se) {
                  }
                }
                reader = parserFactory.newSAXParser().getXMLReader();
              } catch (final ParserConfigurationException pce) {
                throw new TransformerConfigurationException("ParserConfigurationException", pce);
              }
            }
          }
          reader.setFeature("http://xml.org/sax/features/namespaces", true);
          reader.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
          xsltc.setXMLReader(reader);
        } catch (final SAXNotRecognizedException snre) {
          throw new TransformerConfigurationException("SAXNotRecognizedException ", snre);
        } catch (final SAXNotSupportedException snse) {
          throw new TransformerConfigurationException("SAXNotSupportedException ", snse);
        } catch (final SAXException se) {
          throw new TransformerConfigurationException("SAXException ", se);
        }
      }
     
      else if (source instanceof DOMSource) {
        final DOMSource domsrc = (DOMSource) source;
        final Document dom = (Document) domsrc.getNode();
        final DOM2SAX dom2sax = new DOM2SAX(dom);
        xsltc.setXMLReader(dom2sax);
       
        input = SAXSource.sourceToInputSource(source);
        if (input == null) {
          input = new InputSource(domsrc.getSystemId());
        }
      }
     
      else if (source instanceof StreamSource) {
        final StreamSource stream = (StreamSource) source;
        final InputStream istream = stream.getInputStream();
        final Reader reader = stream.getReader();
        xsltc.setXMLReader(null);
       
        if (istream != null) {
          input = new InputSource(istream);
        } else if (reader != null) {
          input = new InputSource(reader);
        } else {
          input = new InputSource(systemId);
        }
      } else {
        final ErrorMsg err = new ErrorMsg(Messages.get().jaxpUnknownSourceErr());
        throw new TransformerConfigurationException(err.toString());
      }
      input.setSystemId(systemId);
    } catch (final NullPointerException e) {
      final ErrorMsg err = new ErrorMsg(Messages.get().jaxpNoSourceErr("TransformerFactory.newTemplates()"));
      throw new TransformerConfigurationException(err.toString());
    } catch (final SecurityException e) {
      final ErrorMsg err = new ErrorMsg(Messages.get().fileAccessErr(systemId), -1);
      throw new TransformerConfigurationException(err.toString());
    }
    return input;
  }
public static inputsource getinputsource(xsltc xsltc, source source) throws transformerconfigurationexception { inputsource input = null; final string systemid = source.getsystemid(); try { if (source instanceof saxsource) { final saxsource sax = (saxsource) source; input = sax.getinputsource(); try { xmlreader reader = sax.getxmlreader(); if (reader == null) { try { reader = xmlreaderfactory.createxmlreader(); } catch (final exception e) { try { final saxparserfactory parserfactory = saxparserfactory.newinstance(); parserfactory.setnamespaceaware(true); if (xsltc.issecureprocessing()) { try { parserfactory.setfeature(xmlconstants.feature_secure_processing, true); } catch (final saxexception se) { } } reader = parserfactory.newsaxparser().getxmlreader(); } catch (final parserconfigurationexception pce) { throw new transformerconfigurationexception("parserconfigurationexception", pce); } } } reader.setfeature("http://xml.org/sax/features/namespaces", true); reader.setfeature("http://xml.org/sax/features/namespace-prefixes", false); xsltc.setxmlreader(reader); } catch (final saxnotrecognizedexception snre) { throw new transformerconfigurationexception("saxnotrecognizedexception ", snre); } catch (final saxnotsupportedexception snse) { throw new transformerconfigurationexception("saxnotsupportedexception ", snse); } catch (final saxexception se) { throw new transformerconfigurationexception("saxexception ", se); } } else if (source instanceof domsource) { final domsource domsrc = (domsource) source; final document dom = (document) domsrc.getnode(); final dom2sax dom2sax = new dom2sax(dom); xsltc.setxmlreader(dom2sax); input = saxsource.sourcetoinputsource(source); if (input == null) { input = new inputsource(domsrc.getsystemid()); } } else if (source instanceof streamsource) { final streamsource stream = (streamsource) source; final inputstream istream = stream.getinputstream(); final reader reader = stream.getreader(); xsltc.setxmlreader(null); if (istream != null) { input = new inputsource(istream); } else if (reader != null) { input = new inputsource(reader); } else { input = new inputsource(systemid); } } else { final errormsg err = new errormsg(messages.get().jaxpunknownsourceerr()); throw new transformerconfigurationexception(err.tostring()); } input.setsystemid(systemid); } catch (final nullpointerexception e) { final errormsg err = new errormsg(messages.get().jaxpnosourceerr("transformerfactory.newtemplates()")); throw new transformerconfigurationexception(err.tostring()); } catch (final securityexception e) { final errormsg err = new errormsg(messages.get().fileaccesserr(systemid), -1); throw new transformerconfigurationexception(err.tostring()); } return input; }