sboag       00/10/03 12:38:10

  Modified:    java/src/org/apache/xalan/processor ProcessorLRE.java
               java/src/org/apache/xalan/templates ElemExtensionCall.java
                        ElemExtensionDecl.java ElemExtensionScript.java
                        StylesheetRoot.java
               java/src/org/apache/xalan/transformer ResultTreeHandler.java
                        TransformerImpl.java
  Log:
  Java extension functions and elements, including component\script, should now 
have basic functionality... more to do.  Also, put defensive code in 
ResultTreeHandler flush pending, when switching serializers.
  
  Revision  Changes    Path
  1.6       +15 -11    
xml-xalan/java/src/org/apache/xalan/processor/ProcessorLRE.java
  
  Index: ProcessorLRE.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorLRE.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ProcessorLRE.java 2000/10/03 15:41:08     1.5
  +++ ProcessorLRE.java 2000/10/03 19:38:00     1.6
  @@ -140,7 +140,7 @@
         p = p.getParentElem();
       }
       
  -    ElemLiteralResult elem = null;
  +    ElemTemplateElement elem = null;
       try
       {
         if(isExtension)
  @@ -150,22 +150,26 @@
         }
         else if(isComponentDecl)
         {
  +        elem = (ElemTemplateElement)classObject.newInstance();
         }
         else if(isUnknownTopLevel)
         {
           // TBD: Investigate, not sure about this.  -sb
  -        elem = (ElemLiteralResult)classObject.newInstance();
  +        elem = (ElemTemplateElement)classObject.newInstance();
         }
         else
         {
  -        elem = (ElemLiteralResult)classObject.newInstance();
  +        elem = (ElemTemplateElement)classObject.newInstance();
         }
         elem.setDOMBackPointer(handler.getOriginatingNode());
         elem.setLocaterInfo(handler.getLocator());
         elem.setPrefixes(handler.getNamespaceSupport());
  -      elem.setNamespace(uri);
  -      elem.setLocalName(localName);
  -      elem.setRawName(rawName);
  +      if(elem instanceof ElemLiteralResult)
  +      {
  +        ((ElemLiteralResult)elem).setNamespace(uri);
  +        ((ElemLiteralResult)elem).setLocalName(localName);
  +        ((ElemLiteralResult)elem).setRawName(rawName);
  +      }
       }
       catch(InstantiationException ie)
       {
  @@ -179,18 +183,18 @@
       setPropertiesFromAttributes(handler, rawName, attributes, elem);
       
       // bit of a hack here...
  -    if(!isExtension)
  +    if(!isExtension  && (elem instanceof ElemLiteralResult))
       {
  -      isExtension = elem.containsExtensionElementURI(uri);
  +      isExtension = 
((ElemLiteralResult)elem).containsExtensionElementURI(uri);
         if(isExtension)
         {
           // System.out.println("Creating extension(2): "+uri);
           elem = new ElemExtensionCall();
           elem.setLocaterInfo(handler.getLocator());
           elem.setPrefixes(handler.getNamespaceSupport());
  -        elem.setNamespace(uri);
  -        elem.setLocalName(localName);
  -        elem.setRawName(rawName);
  +        ((ElemLiteralResult)elem).setNamespace(uri);
  +        ((ElemLiteralResult)elem).setLocalName(localName);
  +        ((ElemLiteralResult)elem).setRawName(rawName);
           setPropertiesFromAttributes(handler, rawName, attributes, elem);
         }
       }
  
  
  
  1.8       +2 -2      
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java
  
  Index: ElemExtensionCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ElemExtensionCall.java    2000/10/03 15:41:10     1.7
  +++ ElemExtensionCall.java    2000/10/03 19:38:02     1.8
  @@ -168,10 +168,10 @@
     {
       ElemExtensionDecl decl = null;
           
  -    int n = stylesheet.getImportCountComposed();
  +    int n = stylesheet.getGlobalImportCount();
       for(int i = 0; i < n; i++)
       {
  -      Stylesheet imported = stylesheet.getImportComposed(i);
  +      Stylesheet imported = stylesheet.getGlobalImport(i);
         for(ElemTemplateElement child = imported.getFirstChildElem();
             child != null; child = child.getNextSiblingElem())
         {
  
  
  
  1.2       +20 -17    
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionDecl.java
  
  Index: ElemExtensionDecl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionDecl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ElemExtensionDecl.java    2000/10/03 15:52:27     1.1
  +++ ElemExtensionDecl.java    2000/10/03 19:38:02     1.2
  @@ -4,6 +4,7 @@
   import org.apache.xalan.utils.QName;
   import org.apache.xalan.utils.NameSpace;
   import org.apache.xalan.utils.StringToStringTable;
  +import org.apache.xalan.utils.StringVector;
   import org.apache.xalan.extensions.ExtensionNSHandler;
   import org.apache.xalan.extensions.ExtensionsTable;
   import org.apache.xalan.transformer.TransformerImpl;
  @@ -15,7 +16,7 @@
   {
     public ElemExtensionDecl()
     {
  -    System.out.println("ElemExtensionDecl ctor");
  +    // System.out.println("ElemExtensionDecl ctor");
     }
     
     private String m_prefix = null;
  @@ -30,14 +31,14 @@
       return m_prefix;
     }
   
  -  private Vector m_functions = new Vector();
  +  private StringVector m_functions = new StringVector();
     
  -  public void setFunctions(Vector v)
  +  public void setFunctions(StringVector v)
     {
       m_functions = v;
     }
   
  -  public Vector getFunctions()
  +  public StringVector getFunctions()
     {
       return m_functions;
     }
  @@ -57,14 +58,14 @@
     }
   
     
  -  private Vector m_elements = null;
  +  private StringVector m_elements = null;
     
  -  public void setElements(Vector v)
  +  public void setElements(StringVector v)
     {
       m_elements = v;
     }
   
  -  public Vector getElements()
  +  public StringVector getElements()
     {
       return m_elements;
     }
  @@ -124,18 +125,20 @@
               scriptSrc = new String(chars);
             }
           }
  -        break;
         }
  -      XPathContext liaison = ((XPathContext)transformer.getXPathContext());
  -      ExtensionsTable etable = liaison.getExtensionsTable();
  -      ExtensionNSHandler nsh = etable.get(declNamespace);
  +    }
  +    XPathContext liaison = ((XPathContext)transformer.getXPathContext());
  +    ExtensionsTable etable = liaison.getExtensionsTable();
  +    ExtensionNSHandler nsh = etable.get(declNamespace);
   
  -      if(null == nsh)
  -      {
  -        nsh = new ExtensionNSHandler (declNamespace);
  -        nsh.setScript (lang, srcURL, scriptSrc);
  -        etable.addExtensionElementNamespace(declNamespace, nsh);
  -      }
  +    if(null == nsh)
  +    {
  +      nsh = new ExtensionNSHandler (declNamespace);
  +      // System.out.println("Adding NS Handler: declNamespace = "+
  +      //                   declNamespace+", lang = "+lang+", srcURL = "+
  +      //                   srcURL+", scriptSrc="+scriptSrc);
  +      nsh.setScript (lang, srcURL, scriptSrc);
  +      etable.addExtensionElementNamespace(declNamespace, nsh);
       }
     }
   
  
  
  
  1.2       +1 -1      
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionScript.java
  
  Index: ElemExtensionScript.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionScript.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ElemExtensionScript.java  2000/10/03 15:52:27     1.1
  +++ ElemExtensionScript.java  2000/10/03 19:38:05     1.2
  @@ -4,7 +4,7 @@
   {
     public ElemExtensionScript()
     {
  -    System.out.println("ElemExtensionScript ctor");
  +    // System.out.println("ElemExtensionScript ctor");
     }
   
     private String m_lang = null;
  
  
  
  1.11      +1 -1      
xml-xalan/java/src/org/apache/xalan/templates/StylesheetRoot.java
  
  Index: StylesheetRoot.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/StylesheetRoot.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- StylesheetRoot.java       2000/10/03 15:41:10     1.10
  +++ StylesheetRoot.java       2000/10/03 19:38:05     1.11
  @@ -214,7 +214,7 @@
       for(ElemTemplateElement child = templ.getFirstChildElem();
             child != null; child = child.getNextSiblingElem())
       {
  -      child.compose();
  +      composeTemplates(child);
       }
     }
     
  
  
  
  1.13      +14 -11    
xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
  
  Index: ResultTreeHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ResultTreeHandler.java    2000/10/02 23:42:34     1.12
  +++ ResultTreeHandler.java    2000/10/03 19:38:09     1.13
  @@ -331,19 +331,22 @@
             try
             {
               Serializer oldSerializer = m_transformer.getSerializer();
  -            Serializer serializer = SerializerFactory.getSerializer(oformat);
  -            Writer writer = oldSerializer.getWriter();
  -            if(null != writer)
  -              serializer.setWriter(writer);
  -            else
  +            if(null != oldSerializer)
               {
  -              OutputStream os = serializer.getOutputStream();
  -              serializer.setOutputStream(os);
  +              Serializer serializer = 
SerializerFactory.getSerializer(oformat);
  +              Writer writer = oldSerializer.getWriter();
  +              if(null != writer)
  +                serializer.setWriter(writer);
  +              else
  +              {
  +                OutputStream os = serializer.getOutputStream();
  +                serializer.setOutputStream(os);
  +              }
  +              m_transformer.setSerializer(serializer);
  +              ContentHandler ch = serializer.asContentHandler();
  +              m_transformer.setContentHandler(ch);
  +              m_contentHandler = ch;
               }
  -            m_transformer.setSerializer(serializer);
  -            ContentHandler ch = serializer.asContentHandler();
  -            m_transformer.setContentHandler(ch);
  -            m_contentHandler = ch;
             }
             catch(java.io.IOException e)
             {
  
  
  
  1.24      +2 -2      
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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- TransformerImpl.java      2000/10/03 15:41:12     1.23
  +++ TransformerImpl.java      2000/10/03 19:38:09     1.24
  @@ -579,10 +579,10 @@
         // Give the top-level templates a chance to pass information into 
         // the context (this is mainly for setting up tables for extensions).
         StylesheetRoot stylesheet = this.getStylesheet();
  -      int n = stylesheet.getImportCountComposed();
  +      int n = stylesheet.getGlobalImportCount();
         for(int i = 0; i < n; i++)
         {
  -        Stylesheet imported = stylesheet.getImportComposed(i);
  +        Stylesheet imported = stylesheet.getGlobalImport(i);
           imported.runtimeInit(this);
           for(ElemTemplateElement child = imported.getFirstChildElem();
               child != null; child = child.getNextSiblingElem())
  
  
  

Reply via email to