mmidy       99/12/03 11:01:04

  Modified:    src/org/apache/xalan/xpath/xml ProblemListenerDefault.java
                        XMLParserLiaison.java XMLParserLiaisonDefault.java
               src/org/apache/xalan/xslt XSLTEngineImpl.java
  Log:
  Use one problem listener instance and make it static
  
  Revision  Changes    Path
  1.3       +24 -6     
xml-xalan/src/org/apache/xalan/xpath/xml/ProblemListenerDefault.java
  
  Index: ProblemListenerDefault.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/ProblemListenerDefault.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ProblemListenerDefault.java       1999/11/10 21:56:23     1.2
  +++ ProblemListenerDefault.java       1999/12/03 19:01:03     1.3
  @@ -64,7 +64,7 @@
    */
   public class ProblemListenerDefault implements ProblemListener
   {
  -  public java.io.PrintWriter out = new java.io.PrintWriter(  System.err, 
true );
  +  private java.io.PrintWriter out = new java.io.PrintWriter(  System.err, 
true );
     
     public String errorHeader = "Error: ";
     public String warningHeader = "Warning: ";
  @@ -82,7 +82,10 @@
                        String msg, String id, int lineNo, int charOffset)
     {
       if(null != out)
  -      out.println(((XMLPARSER == where)
  +    {
  +      synchronized(this)
  +      {  
  +        out.println(((XMLPARSER == where)
                      ? xmlHeader : (QUERYENGINE == where) 
                                    ? queryHeader : xslHeader)+
                     ((ERROR == classification)
  @@ -94,7 +97,8 @@
                     ((null == id)? "" : (", Location "+id))+
                     ((0 == lineNo)? "" : (", line "+lineNo))+
                     ((0 == charOffset)? "" : (", offset "+charOffset)));
  -
  +      }
  +    }
       return classification == ERROR;
     }
     
  @@ -105,9 +109,23 @@
     public boolean message(String msg)
     {
          if(null != out)
  -      out.println( msg );
  -
  +    {  
  +      synchronized (this)
  +      {  
  +        out.println( msg );
  +      } 
  +    }
       return false;                    // we don't know this is an error 
  -  }    
  +  }
  +  
  +  /**
  +   * Set where diagnostics will be written. If
  +   * the value is null, then diagnostics will be turned
  +   * off.
  +   */
  +  public void setDiagnosticsOutput(java.io.PrintWriter pw)
  +  {
  +    out = pw;
  +  }  
          
   }
  
  
  
  1.3       +5 -0      
xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaison.java
  
  Index: XMLParserLiaison.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaison.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLParserLiaison.java     1999/11/25 04:22:07     1.2
  +++ XMLParserLiaison.java     1999/12/03 19:01:03     1.3
  @@ -194,6 +194,11 @@
      * Set the current problem listener.
      */
     public void setProblemListener(ProblemListener listener);
  +  
  +  /**
  +   * Get the current problem listener.
  +   */
  +  public ProblemListener getProblemListener();
   
   }
   
  
  
  
  1.11      +5 -10     
xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaisonDefault.java
  
  Index: XMLParserLiaisonDefault.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaisonDefault.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XMLParserLiaisonDefault.java      1999/12/03 08:43:13     1.10
  +++ XMLParserLiaisonDefault.java      1999/12/03 19:01:03     1.11
  @@ -79,17 +79,14 @@
     /**
      * The problem listener for handling problem reports.
      */
  -  private ProblemListener m_problemListener = null;
  -  private static ProblemListener m_problemListenerStatic;
  +  private static ProblemListener m_problemListener = null;  
     
  -  
     /**
      * Set the current problem listener.
      */
     public void setProblemListener(ProblemListener listener)
     {
  -    m_problemListener = listener;
  -    m_problemListenerStatic = m_problemListener;
  +    m_problemListener = listener;   
     }
   
     /**
  @@ -107,8 +104,7 @@
     {
       m_problemListener = problemListener;
       if(null == m_problemListener)
  -      m_problemListener = new ProblemListenerDefault();
  -    m_problemListenerStatic = m_problemListener;
  +      m_problemListener = new ProblemListenerDefault();    
     }
   
     /**
  @@ -116,8 +112,7 @@
      */
     public XMLParserLiaisonDefault()
     {
  -    m_problemListener = new ProblemListenerDefault();
  -    m_problemListenerStatic = m_problemListener;
  +    m_problemListener = new ProblemListenerDefault();   
     }
   
     /**
  @@ -1544,7 +1539,7 @@
     public static void warning(int msg)
     {
       String fmsg = XSLMessages.createXPATHWarning(msg, null);
  -    m_problemListenerStatic.problem(XPathSupport.XPATHPROCESSOR, 
  +    m_problemListener.problem(XPathSupport.XPATHPROCESSOR, 
                                                 XPathSupport.WARNING,
                                                 null, 
                                                 null, fmsg, null, 0, 0);
  
  
  
  1.18      +13 -26    xml-xalan/src/org/apache/xalan/xslt/XSLTEngineImpl.java
  
  Index: XSLTEngineImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTEngineImpl.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- XSLTEngineImpl.java       1999/12/03 08:43:14     1.17
  +++ XSLTEngineImpl.java       1999/12/03 19:01:04     1.18
  @@ -291,17 +291,9 @@
      * The stack of Variable stacks.  A VariableStack will be
      * pushed onto this stack for each template invocation.
      */
  -  VariableStack m_variableStacks = new VariableStack();
  +  VariableStack m_variableStacks = new VariableStack();  
   
     /**
  -   * The XSL class can have a single listener that can be informed
  -   * of errors and warnings, and can normally control if an exception
  -   * is thrown or not (or the problem listeners can throw their
  -   * own RuntimeExceptions).
  -   */
  -  private static ProblemListener m_problemListener = null;
  -
  -  /**
      * If true, output carriage returns.
      */
     boolean m_outputCarriageReturns = false;
  @@ -361,8 +353,7 @@
         Class parserLiaisonClass = Class.forName(parserLiaisonClassName);
         Constructor parserLiaisonCtor = 
parserLiaisonClass.getConstructor(null);
         m_parserLiaison
  -        = (XMLParserLiaison)parserLiaisonCtor.newInstance(null);
  -      m_problemListener = new ProblemListenerDefault();
  +        = (XMLParserLiaison)parserLiaisonCtor.newInstance(null);     
         m_parserLiaison.setEnvSupport(this);
       }
       catch(Exception e)
  @@ -386,8 +377,7 @@
         Class parserLiaisonClass = Class.forName(parserLiaisonClassName);
         Constructor parserLiaisonCtor = 
parserLiaisonClass.getConstructor(null);
         m_parserLiaison
  -        = (XMLParserLiaison)parserLiaisonCtor.newInstance(null);
  -      m_problemListener = new ProblemListenerDefault();
  +        = (XMLParserLiaison)parserLiaisonCtor.newInstance(null);      
         m_parserLiaison.setEnvSupport(this);
       }
       catch(Exception e)
  @@ -410,8 +400,7 @@
      * @see org.apache.xalan.xslt.xml4j.ProcessXSL
      */
     public XSLTEngineImpl(XMLParserLiaison parserLiason)
  -  {
  -    m_problemListener = new ProblemListenerDefault();
  +  {    
       m_parserLiaison = parserLiason;
       m_parserLiaison.setEnvSupport(this);
     }
  @@ -428,8 +417,7 @@
      * @see org.apache.xalan.xslt.xml4j.ProcessXSL
      */
     XSLTEngineImpl(XMLParserLiaison parserLiason, XPathFactory xpathFactory)
  -  {
  -    m_problemListener = new ProblemListenerDefault();
  +  {    
       m_parserLiaison = parserLiason;
       m_parserLiaison.setEnvSupport(this);
     }
  @@ -1295,7 +1283,7 @@
     public void message(Node styleNode, Node sourceNode, String msg)
       throws SAXException
     {
  -    boolean shouldThrow = m_problemListener.message(msg);
  +    boolean shouldThrow = getProblemListener().message(msg);
       if(shouldThrow)
       {
         throw new XSLProcessorException(msg);
  @@ -1353,7 +1341,7 @@
                       ? locator.getPublicId()
                         : locator.getSystemId();
   
  -    boolean shouldThrow = 
m_problemListener.problem(ProblemListener.XSLPROCESSOR,
  +    boolean shouldThrow = 
getProblemListener().problem(ProblemListener.XSLPROCESSOR,
                                                       ProblemListener.WARNING,
                                                       styleNode, sourceNode, 
formattedMsg,
                                                       id,
  @@ -1421,7 +1409,7 @@
                       ? locator.getPublicId()
                         : locator.getSystemId();
   
  -    boolean shouldThrow = 
m_problemListener.problem(ProblemListener.XSLPROCESSOR,
  +    boolean shouldThrow = 
getProblemListener().problem(ProblemListener.XSLPROCESSOR,
                                                       ProblemListener.ERROR,
                                                       null, null, formattedMsg,
                                                       id,
  @@ -1468,7 +1456,7 @@
                       ? locator.getPublicId()
                         : locator.getSystemId();
   
  -    boolean shouldThrow = 
m_problemListener.problem(ProblemListener.XSLPROCESSOR,
  +    boolean shouldThrow = 
getProblemListener().problem(ProblemListener.XSLPROCESSOR,
                                                       ProblemListener.ERROR,
                                                       styleNode, sourceNode, 
formattedMsg,
                                                       id,
  @@ -1549,9 +1537,9 @@
     public void setDiagnosticsOutput(java.io.PrintWriter pw)
     {
       m_diagnosticsPrintWriter = pw;
  -    if(m_problemListener instanceof ProblemListenerDefault)
  +    if(getProblemListener() instanceof ProblemListenerDefault)
       {
  -      ((ProblemListenerDefault)m_problemListener).out = pw;
  +      
((ProblemListenerDefault)getProblemListener()).setDiagnosticsOutput(pw);
       }
     }
   
  @@ -3296,7 +3284,6 @@
      */
     public void setProblemListener(ProblemListener l)
     {
  -    m_problemListener = l;
       m_parserLiaison.setProblemListener(l);
     }
   
  @@ -3309,8 +3296,8 @@
      * @return A ProblemListener interface.
      */
     public ProblemListener getProblemListener()
  -  {
  -    return m_problemListener;
  +  {    
  +    return m_parserLiaison.getProblemListener();
     }
   
     private void ____FormatterListener_INTERFACE____(){}
  
  
  

Reply via email to