sboag       01/05/16 08:14:34

  Modified:    java/src/org/apache/xalan/transformer Tag: DTM_EXP
                        TransformerHandlerImpl.java TransformerImpl.java
               java/src/org/apache/xalan/xslt Tag: DTM_EXP Process.java
               java/src/org/apache/xml/dtm Tag: DTM_EXP
                        DTMManagerDefault.java
  Log:
  The TransformerHandlerImpl is basically working.  It will hang if
  you throw an error from the tranform... i.e. error handling TBD.
  You can test by -flavor th from the command line.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +37 -2     
xml-xalan/java/src/org/apache/xalan/transformer/Attic/TransformerHandlerImpl.java
  
  Index: TransformerHandlerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/Attic/TransformerHandlerImpl.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- TransformerHandlerImpl.java       2001/05/16 05:35:25     1.1.2.1
  +++ TransformerHandlerImpl.java       2001/05/16 15:13:54     1.1.2.2
  @@ -138,8 +138,17 @@
     public void setResult(Result result) throws IllegalArgumentException
     {
   
  -    if (null == result)
  -      throw new IllegalArgumentException("result can not be null!");
  +    if(null == result)
  +      throw new IllegalArgumentException("result should not be null");
  +    try
  +    {
  +      ContentHandler handler = 
m_transformer.createResultContentHandler(result);
  +      m_transformer.setContentHandler(handler); 
  +    }
  +    catch(javax.xml.transform.TransformerException te)
  +    {
  +      throw new IllegalArgumentException("result could not be set");
  +    }
   
       m_result = result;
     }
  @@ -285,6 +294,11 @@
     public void startDocument() throws SAXException
     {
   
  +    Thread listener=new Thread(m_transformer);
  +    m_transformer.setTransformThread(listener);
  +    listener.setDaemon(false);
  +    listener.start();
  +
       if (m_contentHandler != null)
       {
         m_contentHandler.startDocument();
  @@ -305,6 +319,27 @@
       {
         m_contentHandler.endDocument();
       }
  +    
  +    Thread transformThread = m_transformer.getTransformThread();
  +
  +    if (null != transformThread)
  +    {
  +      try
  +      {
  +
  +        // This should wait until the transformThread is considered not 
alive.
  +        transformThread.join();
  +        if(!m_transformer.hasTransformThreadErrorCatcher())
  +        {
  +          Exception e = m_transformer.getExceptionThrown();
  +          if(null != e)
  +            throw new org.xml.sax.SAXException(e);
  +        }
  +        m_transformer.setTransformThread(null);
  +      }
  +      catch (InterruptedException ie){}
  +    }
  +
     }
   
     /**
  
  
  
  1.90.2.9  +16 -24    
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
  retrieving revision 1.90.2.8
  retrieving revision 1.90.2.9
  diff -u -r1.90.2.8 -r1.90.2.9
  --- TransformerImpl.java      2001/05/16 05:32:56     1.90.2.8
  +++ TransformerImpl.java      2001/05/16 15:14:01     1.90.2.9
  @@ -2842,34 +2842,26 @@
       {
         // int n = ((SourceTreeHandler)getInputContentHandler()).getDTMRoot();
         // transformNode(n);
  -      if (isParserEventsOnMain())
  +      try
         {
  -        try
  -        {
  -          m_isTransformDone = false;
  +        m_isTransformDone = false;
  +        
  +        transformNode(m_doc);
  +      }
  +      catch (Exception e)
  +      {
  +        e.printStackTrace();
  +        // Strange that the other catch won't catch this...
  +        postExceptionFromThread(e);
  +      }
  +      finally
  +      {
  +        m_isTransformDone = true;
   
  -          transformNode(m_doc);
  -        }
  -        catch (Exception e)
  +        synchronized (this)
           {
  -          // e.printStackTrace();
  -          // Strange that the other catch won't catch this...
  -          postExceptionFromThread(e);
  +          notifyAll();
           }
  -        finally
  -        {
  -          m_isTransformDone = true;
  -
  -          synchronized (this)
  -          {
  -            notifyAll();
  -          }
  -        }
  -      }
  -      else
  -      {
  -        InputSource isource = SAXSource.sourceToInputSource(m_xmlSource);
  -        getXPathContext().getPrimaryReader().parse(isource);
         }
       }
       catch (Exception e)
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.32.2.1  +276 -147  xml-xalan/java/src/org/apache/xalan/xslt/Process.java
  
  Index: Process.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xslt/Process.java,v
  retrieving revision 1.32
  retrieving revision 1.32.2.1
  diff -u -r1.32 -r1.32.2.1
  --- Process.java      2001/03/14 19:51:02     1.32
  +++ Process.java      2001/05/16 15:14:15     1.32.2.1
  @@ -105,12 +105,13 @@
   import javax.xml.transform.OutputKeys;
   import javax.xml.transform.TransformerException;
   import javax.xml.transform.URIResolver;
  -
   import javax.xml.transform.dom.*;
   import javax.xml.transform.sax.*;
   import javax.xml.parsers.*;
  +
   import org.w3c.dom.Node;
   import org.w3c.dom.Document;
  +
   import org.xml.sax.InputSource;
   import org.xml.sax.EntityResolver;
   import org.xml.sax.ContentHandler;
  @@ -144,6 +145,7 @@
       // System.out.println(resbundle.getString("optionE")); //"   [-E (Do not 
expand entity refs)]");
       System.out.println(resbundle.getString("optionV"));  //"   [-V (Version 
info)]");
       System.out.println(resbundle.getString("optionQC"));  //"   [-QC (Quiet 
Pattern Conflicts Warnings)]");
  +
       // System.out.println(resbundle.getString("optionQ"));  //"   [-Q  
(Quiet Mode)]"); // sc 28-Feb-01 commented out
       System.out.println(resbundle.getString("optionTT"));  //"   [-TT (Trace 
the templates as they are being called.)]");
       System.out.println(resbundle.getString("optionTG"));  //"   [-TG (Trace 
each generation event.)]");
  @@ -157,19 +159,20 @@
       System.out.println(resbundle.getString("optionTEXT"));  //"   [-TEXT 
(Use simple Text formatter.)]");
       System.out.println(resbundle.getString("optionHTML"));  //"   [-HTML 
(Use HTML formatter.)]");
       System.out.println(resbundle.getString("optionPARAM"));  //"   [-PARAM 
name expression (Set a stylesheet parameter)]");
  +
       // sc 28-Feb-01 these below should really be added as resources
       System.out.println(
         "   [-MEDIA mediaType (use media attribute to find stylesheet 
associated with a document.)]");
       System.out.println(
  -      "   [-FLAVOR flavorName (Explicitly use s2s=SAX or d2d=DOM to do 
transform.)]"); // Added by sboag/scurcuru; experimental
  +      "   [-FLAVOR flavorName (Explicitly use s2s=SAX or d2d=DOM to do 
transform.)]");  // Added by sboag/scurcuru; experimental
       System.out.println(
         "   [-DIAG (Print overall milliseconds transform took.)]");
  -             System.out.println(resbundle.getString("optionURIRESOLVER"));  
//"   [-URIRESOLVER full class name (URIResolver to be used to resolve URIs)]");
  -             
System.out.println(resbundle.getString("optionENTITYRESOLVER"));  //"   
[-ENTITYRESOLVER full class name (EntityResolver to be used to resolve 
entities)]");
  -             
System.out.println(resbundle.getString("optionCONTENTHANDLER"));  //"   
[-CONTENTHANDLER full class name (ContentHandler to be used to serialize 
output)]");
  +    System.out.println(resbundle.getString("optionURIRESOLVER"));  //"   
[-URIRESOLVER full class name (URIResolver to be used to resolve URIs)]");
  +    System.out.println(resbundle.getString("optionENTITYRESOLVER"));  //"   
[-ENTITYRESOLVER full class name (EntityResolver to be used to resolve 
entities)]");
  +    System.out.println(resbundle.getString("optionCONTENTHANDLER"));  //"   
[-CONTENTHANDLER full class name (ContentHandler to be used to serialize 
output)]");
     }
   
  -  /** Default properties file          */
  +  /** Default properties file */
     static String XSLT_PROPERTIES = 
"/org/apache/xalan/res/XSLTInfo.properties";
   
     /**
  @@ -199,7 +202,6 @@
       XSLTErrorResources resbundle =
         (XSLTErrorResources) (XSLMessages.loadResourceBundle(
           org.apache.xml.utils.res.XResourceBundle.ERROR_RESOURCES));
  -        
       String flavor = "s2s";
   
       // loadPropertyFileToSystem(XSLT_PROPERTIES);
  @@ -238,9 +240,9 @@
         String media = null;
         Vector params = new Vector();
         boolean quietConflictWarnings = false;
  -                     URIResolver uriResolver = null;
  -                     EntityResolver entityResolver = null;
  -                     ContentHandler contentHandler = null;
  +      URIResolver uriResolver = null;
  +      EntityResolver entityResolver = null;
  +      ContentHandler contentHandler = null;
   
         for (int i = 0; i < argv.length; i++)
         {
  @@ -366,7 +368,7 @@
                   XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,
                   new Object[]{ "-PARAM" }));  //"Missing argument for);
           }
  -        else if ("-treedump".equalsIgnoreCase(argv[i])) // sc 28-Feb-01 
appears to be unused; can we remove?
  +        else if ("-treedump".equalsIgnoreCase(argv[i]))  // sc 28-Feb-01 
appears to be unused; can we remove?
           {
             if (i + 1 < argv.length)
               treedumpFileName = argv[++i];
  @@ -376,7 +378,7 @@
                   XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,
                   new Object[]{ "-treedump" }));  //"Missing argument for);
           }
  -        else if ("-F".equalsIgnoreCase(argv[i])) // sc 28-Feb-01 appears to 
be unused; can we remove?
  +        else if ("-F".equalsIgnoreCase(argv[i]))  // sc 28-Feb-01 appears to 
be unused; can we remove?
           {
             formatOutput = true;
           }
  @@ -444,81 +446,88 @@
               dumpFileName = argv[++i];
             }
           }
  -                             else if 
("-URIRESOLVER".equalsIgnoreCase(argv[i])) 
  +        else if ("-URIRESOLVER".equalsIgnoreCase(argv[i]))
           {
             if (i + 1 < argv.length)
  -                                     {       
  -                                             try{
  -                                                     uriResolver = 
(URIResolver)Class.forName(argv[++i]).newInstance();
  -                                                     
tfactory.setURIResolver(uriResolver);
  -                                             }
  -                                             catch(Exception cnfe)
  -                                             {
  -                                                     System.err.println(
  -              XSLMessages.createMessage(
  -                XSLTErrorResources.ER_CLASS_NOT_FOUND_FOR_OPTION,
  -                new Object[]{ "-URIResolver" })); 
  -                                                     System.exit(-1);
  -                                             }
  -                                     }
  -                                     else
  -                                     {
  +          {
  +            try
  +            {
  +              uriResolver =
  +                (URIResolver) Class.forName(argv[++i]).newInstance();
  +
  +              tfactory.setURIResolver(uriResolver);
  +            }
  +            catch (Exception cnfe)
  +            {
  +              System.err.println(
  +                XSLMessages.createMessage(
  +                  XSLTErrorResources.ER_CLASS_NOT_FOUND_FOR_OPTION,
  +                  new Object[]{ "-URIResolver" }));
  +              System.exit(-1);
  +            }
  +          }
  +          else
  +          {
               System.err.println(
                 XSLMessages.createMessage(
                   XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,
                   new Object[]{ "-URIResolver" }));  //"Missing argument for);
  -                                             System.exit(-1);
  -                                     }
  -                             }
  -                             else if 
("-ENTITYRESOLVER".equalsIgnoreCase(argv[i])) 
  +            System.exit(-1);
  +          }
  +        }
  +        else if ("-ENTITYRESOLVER".equalsIgnoreCase(argv[i]))
           {
             if (i + 1 < argv.length)
  -                                     {       
  -                                             try{
  -                                                     entityResolver = 
(EntityResolver)Class.forName(argv[++i]).newInstance();                         
                               
  -                                             }
  -                                             catch(Exception cnfe)
  -                                             {
  -                                                     System.err.println(
  -              XSLMessages.createMessage(
  -                XSLTErrorResources.ER_CLASS_NOT_FOUND_FOR_OPTION,
  -                new Object[]{ "-EntityResolver" }));
  -                                                     System.exit(-1);
  -                                             }
  -                                     }
  +          {
  +            try
  +            {
  +              entityResolver =
  +                (EntityResolver) Class.forName(argv[++i]).newInstance();
  +            }
  +            catch (Exception cnfe)
  +            {
  +              System.err.println(
  +                XSLMessages.createMessage(
  +                  XSLTErrorResources.ER_CLASS_NOT_FOUND_FOR_OPTION,
  +                  new Object[]{ "-EntityResolver" }));
  +              System.exit(-1);
  +            }
  +          }
             else
  -                                     {
  +          {
               System.err.println(
                 XSLMessages.createMessage(
                   XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,
                   new Object[]{ "-EntityResolver" }));  //"Missing argument 
for);
  -                                             System.exit(-1);
  -                                     }
  +            System.exit(-1);
  +          }
           }
  -                             else if 
("-CONTENTHANDLER".equalsIgnoreCase(argv[i])) 
  +        else if ("-CONTENTHANDLER".equalsIgnoreCase(argv[i]))
           {
             if (i + 1 < argv.length)
  -                                     {       
  -                                             try{
  -                                                     contentHandler = 
(ContentHandler)Class.forName(argv[++i]).newInstance();                         
                               
  -                                             }
  -                                             catch(Exception cnfe)
  -                                             {
  -                                                     System.err.println(
  -              XSLMessages.createMessage(
  -                XSLTErrorResources.ER_CLASS_NOT_FOUND_FOR_OPTION,
  -                new Object[]{ "-ContentHandler" }));
  -                                                     System.exit(-1);
  -                                             }
  -                                     }
  +          {
  +            try
  +            {
  +              contentHandler =
  +                (ContentHandler) Class.forName(argv[++i]).newInstance();
  +            }
  +            catch (Exception cnfe)
  +            {
  +              System.err.println(
  +                XSLMessages.createMessage(
  +                  XSLTErrorResources.ER_CLASS_NOT_FOUND_FOR_OPTION,
  +                  new Object[]{ "-ContentHandler" }));
  +              System.exit(-1);
  +            }
  +          }
             else
  -                                     {
  +          {
               System.err.println(
                 XSLMessages.createMessage(
                   XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,
                   new Object[]{ "-ContentHandler" }));  //"Missing argument 
for);
  -                                             System.exit(-1);
  -                                     }
  +            System.exit(-1);
  +          }
           }
           else
             System.err.println(
  @@ -536,26 +545,35 @@
           {
             dumpWriter = new PrintWriter(new FileWriter(dumpFileName));
           }
  +
           Templates stylesheet = null;
  -        if(null != xslFileName)
  +
  +        if (null != xslFileName)
           {
  -          if(flavor.equals("d2d"))
  +          if (flavor.equals("d2d"))
             {
  +
               // Parse in the xml data into a DOM
  -            DocumentBuilderFactory dfactory = 
DocumentBuilderFactory.newInstance();
  +            DocumentBuilderFactory dfactory =
  +              DocumentBuilderFactory.newInstance();
  +
               dfactory.setNamespaceAware(true);
  +
               DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
  -                                             Node xslDOM = 
docBuilder.parse(new InputSource(xslFileName));
  -            stylesheet = tfactory.newTemplates(new DOMSource(xslDOM, 
xslFileName));
  +            Node xslDOM = docBuilder.parse(new InputSource(xslFileName));
  +
  +            stylesheet = tfactory.newTemplates(new DOMSource(xslDOM,
  +                    xslFileName));
             }
             else
  -          { 
  +          {
               stylesheet = tfactory.newTemplates(new 
StreamSource(xslFileName));
             }
           }
  -          
  +
           PrintWriter resultWriter;
           StreamResult strResult;
  +
           if (null != outFileName)
           {
             strResult = new StreamResult(new File(outFileName));
  @@ -564,40 +582,39 @@
           {
             strResult = new StreamResult(System.out);
           }
  -
   
  -        SAXTransformerFactory stf = (SAXTransformerFactory)tfactory;
  +        SAXTransformerFactory stf = (SAXTransformerFactory) tfactory;
   
           // Did they pass in a stylesheet, or should we get it from the 
           // document?
           if (null == stylesheet)
           {
             Source source =
  -            stf.getAssociatedStylesheet(new StreamSource(inFileName),
  -                                               media, null, null);
  +            stf.getAssociatedStylesheet(new StreamSource(inFileName), media,
  +                                        null, null);
   
             if (null != source)
               stylesheet = tfactory.newTemplates(source);
             else
             {
               if (null != media)
  -              throw new TransformerException("No stylesheet found in: " + 
inFileName
  -                                     + ", media=" + media);
  +              throw new TransformerException("No stylesheet found in: "
  +                                             + inFileName + ", media="
  +                                             + media);
               else
                 throw new TransformerException("No xml-stylesheet PI found in: 
"
  -                                     + inFileName);
  +                                             + inFileName);
             }
           }
   
           if (null != stylesheet)
           {
  -          Transformer transformer = stylesheet.newTransformer();
  +          Transformer transformer = flavor.equals("th") ? null : 
stylesheet.newTransformer();
   
             // Override the output format?
             if (null != outputType)
             {
  -            transformer.setOutputProperty(OutputKeys.METHOD,
  -                                          outputType);
  +            transformer.setOutputProperty(OutputKeys.METHOD, outputType);
             }
   
             if (transformer instanceof TransformerImpl)
  @@ -621,84 +638,196 @@
               transformer.setParameter((String) params.elementAt(i),
                                        (String) params.elementAt(i + 1));
             }
  -                                     if (uriResolver != null)
  -                                             
transformer.setURIResolver(uriResolver);
   
  +          if (uriResolver != null)
  +            transformer.setURIResolver(uriResolver);
  +
             if (null != inFileName)
             {
  -            if(flavor.equals("d2d"))
  +            if (flavor.equals("d2d"))
               {
  +
                 // Parse in the xml data into a DOM
  -              DocumentBuilderFactory dfactory = 
DocumentBuilderFactory.newInstance();
  +              DocumentBuilderFactory dfactory =
  +                DocumentBuilderFactory.newInstance();
  +
                 dfactory.setCoalescing(true);
                 dfactory.setNamespaceAware(true);
  +
                 DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
  -                                                     if (entityResolver != 
null)
  -                                                             
docBuilder.setEntityResolver(entityResolver);
  +
  +              if (entityResolver != null)
  +                docBuilder.setEntityResolver(entityResolver);
  +
                 Node xmlDoc = docBuilder.parse(new InputSource(inFileName));
                 Document doc = docBuilder.newDocument();
  -              org.w3c.dom.DocumentFragment outNode = 
doc.createDocumentFragment();
  -              transformer.transform(new DOMSource(xmlDoc, inFileName), 
  +              org.w3c.dom.DocumentFragment outNode =
  +                doc.createDocumentFragment();
  +
  +              transformer.transform(new DOMSource(xmlDoc, inFileName),
                                       new DOMResult(outNode));
  -                                    
  +
                 // Now serialize output to disk with identity transformer
                 Transformer serializer = stf.newTransformer();
  -              Properties serializationProps = 
stylesheet.getOutputProperties();
  +              Properties serializationProps =
  +                stylesheet.getOutputProperties();
  +
                 serializer.setOutputProperties(serializationProps);
  -                                                     if (contentHandler != 
null)
  -                                                     {
  -                                                             SAXResult 
result = new SAXResult(contentHandler);
  -                                                             
serializer.transform(new DOMSource(outNode), result);
  -                                                     }
  -                                                     else
  -                                                             
serializer.transform(new DOMSource(outNode), strResult);
  -           }
  +
  +              if (contentHandler != null)
  +              {
  +                SAXResult result = new SAXResult(contentHandler);
  +
  +                serializer.transform(new DOMSource(outNode), result);
  +              }
  +              else
  +                serializer.transform(new DOMSource(outNode), strResult);
  +            }
  +            else if (flavor.equals("th"))
  +            {
  +              System.out.println("Testing the TransformerHandler...");
  +
  +              // ===============
  +              XMLReader reader = null;
  +
  +              // Use JAXP1.1 ( if possible )      
  +              try
  +              {
  +                javax.xml.parsers.SAXParserFactory factory =
  +                  javax.xml.parsers.SAXParserFactory.newInstance();
  +
  +                factory.setNamespaceAware(true);
  +
  +                javax.xml.parsers.SAXParser jaxpParser =
  +                  factory.newSAXParser();
  +
  +                reader = jaxpParser.getXMLReader();
  +              }
  +              catch (javax.xml.parsers.ParserConfigurationException ex)
  +              {
  +                throw new org.xml.sax.SAXException(ex);
  +              }
  +              catch (javax.xml.parsers.FactoryConfigurationError ex1)
  +              {
  +                throw new org.xml.sax.SAXException(ex1.toString());
  +              }
  +              catch (NoSuchMethodError ex2){}
  +              catch (AbstractMethodError ame){}
  +
  +              if (null == reader)
  +              {
  +                reader = XMLReaderFactory.createXMLReader();
  +              }
  +              
  +              TransformerHandler th = stf.newTransformerHandler(stylesheet);
  +              
  +              reader.setContentHandler(th);
  +              reader.setDTDHandler(th);
  +              
  +              if(th instanceof org.xml.sax.ErrorHandler)
  +                reader.setErrorHandler((org.xml.sax.ErrorHandler)th);
  +              
  +              try
  +              {
  +                reader.setProperty(
  +                  "http://xml.org/sax/properties/lexical-handler";, th);
  +              }
  +              catch (org.xml.sax.SAXNotRecognizedException e){}
  +              catch (org.xml.sax.SAXNotSupportedException e){}
  +              try
  +              {
  +                
reader.setFeature("http://xml.org/sax/features/namespace-prefixes";,
  +                                  true);
  +              } catch (org.xml.sax.SAXException se) {}
  +        
  +              try
  +              {
  +                
reader.setFeature("http://apache.org/xml/features/validation/dynamic";,
  +                                  true);
  +              } catch (org.xml.sax.SAXException se) {}
  +              
  +              th.setResult(strResult);
  +              
  +              // System.out.println("sending parse events to the 
handler...");
  +              reader.parse(new InputSource(inFileName));
  +
  +//              if (contentHandler != null)
  +//              {
  +//                SAXResult result = new SAXResult(contentHandler);
  +//
  +//                transformer.transform(
  +//                  new SAXSource(reader, new InputSource(inFileName)), 
result);
  +//              }
  +//              else
  +//              {
  +//                transformer.transform(
  +//                  new SAXSource(reader, new InputSource(inFileName)),
  +//                  strResult);
  +//              }
  +
  +              // ===============
  +            }
               else
               {
  -             if (entityResolver != null)
  -                 {
  -                     XMLReader reader=null;
  -                     // Use JAXP1.1 ( if possible )      
  -                     try {
  -                         javax.xml.parsers.SAXParserFactory factory=
  -                             
javax.xml.parsers.SAXParserFactory.newInstance();
  -                         factory.setNamespaceAware( true );
  -                         javax.xml.parsers.SAXParser jaxpParser=
  -                             factory.newSAXParser();
  -                         reader=jaxpParser.getXMLReader();
  -                         
  -                     } catch( javax.xml.parsers.ParserConfigurationException 
ex ) {
  -                         throw new org.xml.sax.SAXException( ex );
  -                     } catch( javax.xml.parsers.FactoryConfigurationError 
ex1 ) {
  -                         throw new org.xml.sax.SAXException( ex1.toString() 
);
  -                     } catch( NoSuchMethodError ex2 ) {
  -                     }
  -                     catch (AbstractMethodError ame){}
  -                     if (null == reader) {
  -                         reader = XMLReaderFactory.createXMLReader();
  -                     }
  -
  -                     reader.setEntityResolver(entityResolver);
  -                     if (contentHandler != null)
  -                         {
  -                             SAXResult result = new 
SAXResult(contentHandler);
  -                             transformer.transform(new SAXSource(reader, new 
InputSource(inFileName)),
  -                                                   result);
  -                         }
  -                     else
  -                         {
  -                             transformer.transform(new SAXSource(reader, new 
InputSource(inFileName)),
  -                                                   strResult);
  -                         }
  -                 }
  -             else if (contentHandler != null)
  -                 {
  -                     SAXResult result = new SAXResult(contentHandler);
  -                     transformer.transform(new StreamSource(inFileName),
  -                                           result);
  -                 }
  -             else
  -                 transformer.transform(new StreamSource(inFileName), 
strResult);
  +              if (entityResolver != null)
  +              {
  +                XMLReader reader = null;
  +
  +                // Use JAXP1.1 ( if possible )      
  +                try
  +                {
  +                  javax.xml.parsers.SAXParserFactory factory =
  +                    javax.xml.parsers.SAXParserFactory.newInstance();
  +
  +                  factory.setNamespaceAware(true);
  +
  +                  javax.xml.parsers.SAXParser jaxpParser =
  +                    factory.newSAXParser();
  +
  +                  reader = jaxpParser.getXMLReader();
  +                }
  +                catch (javax.xml.parsers.ParserConfigurationException ex)
  +                {
  +                  throw new org.xml.sax.SAXException(ex);
  +                }
  +                catch (javax.xml.parsers.FactoryConfigurationError ex1)
  +                {
  +                  throw new org.xml.sax.SAXException(ex1.toString());
  +                }
  +                catch (NoSuchMethodError ex2){}
  +                catch (AbstractMethodError ame){}
  +
  +                if (null == reader)
  +                {
  +                  reader = XMLReaderFactory.createXMLReader();
  +                }
  +
  +                reader.setEntityResolver(entityResolver);
  +
  +                if (contentHandler != null)
  +                {
  +                  SAXResult result = new SAXResult(contentHandler);
  +
  +                  transformer.transform(
  +                    new SAXSource(reader, new InputSource(inFileName)),
  +                    result);
  +                }
  +                else
  +                {
  +                  transformer.transform(
  +                    new SAXSource(reader, new InputSource(inFileName)),
  +                    strResult);
  +                }
  +              }
  +              else if (contentHandler != null)
  +              {
  +                SAXResult result = new SAXResult(contentHandler);
  +
  +                transformer.transform(new StreamSource(inFileName), result);
  +              }
  +              else
  +                transformer.transform(new StreamSource(inFileName),
  +                                      strResult);
               }
             }
             else
  @@ -740,7 +869,8 @@
             doStackDumpOnError = true;
   
           diagnosticsWriter.println();
  -        if (doStackDumpOnError)          
  +
  +        if (doStackDumpOnError)
             throwable.printStackTrace(dumpWriter);
           else
             diagnosticsWriter.println(
  @@ -774,5 +904,4 @@
         diagnosticsWriter.println("");  //"Xalan: done");
       }
     }
  -  
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.13  +12 -9     
xml-xalan/java/src/org/apache/xml/dtm/Attic/DTMManagerDefault.java
  
  Index: DTMManagerDefault.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/Attic/DTMManagerDefault.java,v
  retrieving revision 1.1.2.12
  retrieving revision 1.1.2.13
  diff -u -r1.1.2.12 -r1.1.2.13
  --- DTMManagerDefault.java    2001/05/16 05:33:20     1.1.2.12
  +++ DTMManagerDefault.java    2001/05/16 15:14:24     1.1.2.13
  @@ -216,8 +216,11 @@
             {
   
               // Create a CoroutineSAXParser that will run on the secondary 
thread.
  -            coParser = new CoroutineSAXParser(coroutineManager, appCoroutine,
  -                                              reader);
  +            if(null == reader)
  +              coParser = new CoroutineSAXParser(coroutineManager, 
appCoroutine);
  +            else
  +              coParser = new CoroutineSAXParser(coroutineManager, 
appCoroutine,
  +                                                reader);
             }
   
             // Have the DTM set itself up as the CoroutineSAXParser's listener.
  @@ -226,6 +229,13 @@
             // Get the parser's CoRoutine ID.
             int parserCoroutine = coParser.getParserCoroutineID();
   
  +          if (null == xmlSource)
  +          {
  +  
  +            // Then the user will construct it themselves.
  +            return dtm;
  +          }
  +
             // System.out.println("parserCoroutine (mgr): "+parserCoroutine);
             // %TBD%  It's probably OK to have these bypass the CoRoutine 
stuff??
             // Or maybe not?
  @@ -236,13 +246,6 @@
             reader.setDTDHandler(dtm);
             reader.setErrorHandler(dtm);
             
  -          if (null == xmlSource)
  -          {
  -  
  -            // Then the user will construct it themselves.
  -            return dtm;
  -          }
  -
             try
             {
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to