cziegeler    2003/11/07 03:53:47

  Modified:    .        status.xml
               src/java/org/apache/cocoon/generation
                        JXTemplateGenerator.java
               src/blocks/jxforms/java/org/apache/cocoon/generation
                        JXFormsGenerator.java
  Log:
     <action dev="CZ" type="fix" fixes-bug="23538" due-to-email="[EMAIL 
PROTECTED]" due-to="Sam Coward">
       Applying patch from Sam Coward ([EMAIL PROTECTED]) for reducing 
       setDocumentLocator calls in JXTemplateGenerator and JXFormsGenerator.
    </action>
  
  Revision  Changes    Path
  1.187     +5 -1      cocoon-2.1/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/status.xml,v
  retrieving revision 1.186
  retrieving revision 1.187
  diff -u -r1.186 -r1.187
  --- status.xml        7 Nov 2003 10:49:58 -0000       1.186
  +++ status.xml        7 Nov 2003 11:53:47 -0000       1.187
  @@ -192,6 +192,10 @@
     <changes>
   
    <release version="@version@" date="@date@">
  +   <action dev="CZ" type="fix" fixes-bug="23538" due-to-email="[EMAIL 
PROTECTED]" due-to="Sam Coward">
  +     Applying patch from Sam Coward ([EMAIL PROTECTED]) for reducing 
  +     setDocumentLocator calls in JXTemplateGenerator and JXFormsGenerator.
  +  </action>
      <action dev="BD" type="add" fixes-bug="24294" due-to="Jelle Alten" 
due-to-email="[EMAIL PROTECTED]">
        sitemap-viewer added to the scratchpad samples
     </action>
  
  
  
  1.18      +41 -5     
cocoon-2.1/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
  
  Index: JXTemplateGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- JXTemplateGenerator.java  6 Nov 2003 20:23:04 -0000       1.17
  +++ JXTemplateGenerator.java  7 Nov 2003 11:53:47 -0000       1.18
  @@ -395,6 +395,38 @@
       }
   
       /**
  +     * Facade to the Locator to be set on the consumer prior to
  +     * sending other events, location member changeable
  +     */
  +    public class LocatorFacade implements Locator {
  +        private Locator locator;
  +   
  +        public LocatorFacade(Locator intialLocator) {
  +            this.locator = intialLocator;
  +        }
  +        
  +        public void setDocumentLocator(Locator newLocator) {
  +            this.locator = newLocator;
  +        }
  +       
  +        public int getColumnNumber() {
  +            return this.locator.getColumnNumber();
  +        }
  +        
  +        public int getLineNumber() {
  +            return this.locator.getLineNumber();
  +        }
  +        
  +        public String getPublicId() {
  +            return this.locator.getPublicId();
  +        }
  +        
  +        public String getSystemId() {
  +            return this.locator.getSystemId();
  +        }
  +    }
  +   
  +    /**
        * Jexl Introspector that supports Rhino JavaScript objects
        * as well as Java Objects
        */
  @@ -2800,10 +2832,12 @@
   
       private void executeRaw(final XMLConsumer consumer,
                               Event startEvent, Event endEvent) 
  -        throws SAXException {
  +    throws SAXException {
           Event ev = startEvent;
  +        LocatorFacade loc = new LocatorFacade(ev.location);
  +        consumer.setDocumentLocator(loc);
           while (ev != endEvent) {
  -            consumer.setDocumentLocator(ev.location);
  +            loc.setDocumentLocator(ev.location);
               if (ev instanceof Characters) {
                   TextEvent text = (TextEvent)ev;
                   consumer.characters(text.raw, 0, text.raw.length);
  @@ -2918,10 +2952,12 @@
                            MyJexlContext jexlContext,
                            JXPathContext jxpathContext,
                            Event startEvent, Event endEvent) 
  -        throws SAXException {
  +    throws SAXException {
           Event ev = startEvent;
  +        LocatorFacade loc = new LocatorFacade(ev.location);
  +        consumer.setDocumentLocator(loc);
           while (ev != endEvent) {
  -            consumer.setDocumentLocator(ev.location);
  +            loc.setDocumentLocator(ev.location);
               if (ev instanceof Characters) {
                   TextEvent text = (TextEvent)ev;
                   Iterator iter = text.substitutions.iterator();
  
  
  
  1.6       +35 -1     
cocoon-2.1/src/blocks/jxforms/java/org/apache/cocoon/generation/JXFormsGenerator.java
  
  Index: JXFormsGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/jxforms/java/org/apache/cocoon/generation/JXFormsGenerator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JXFormsGenerator.java     24 Sep 2003 22:04:40 -0000      1.5
  +++ JXFormsGenerator.java     7 Nov 2003 11:53:47 -0000       1.6
  @@ -167,6 +167,38 @@
       final static String XF_VALUE = "xf:value";
   
   
  +     /**
  +      * Facade to the Locator to be set on the consumer prior to
  +      * sending other events, location member changeable
  +      */
  +     public class LocatorFacade implements Locator {
  +                     private Locator locator;
  +            
  +                     public LocatorFacade(Locator intialLocator) {
  +                             this.locator = intialLocator;
  +                     }
  +            
  +                     public void setDocumentLocator(Locator newLocator) {
  +                             this.locator = newLocator;
  +                     }
  +                     
  +                     public int getColumnNumber() {
  +                             return this.locator.getColumnNumber();
  +                     }
  +            
  +                     public int getLineNumber() {
  +                             return this.locator.getLineNumber();
  +                     }
  +            
  +                     public String getPublicId() {
  +                             return this.locator.getPublicId();
  +                     }
  +            
  +                     public String getSystemId() {
  +                             return this.locator.getSystemId();
  +                     }
  +     }
  +     
       static class XPathExpr {
   
           final CompiledExpression jxpath;
  @@ -1254,8 +1286,10 @@
                            Event startEvent, Event endEvent) 
           throws SAXException {
           Event ev = startEvent;
  +        LocatorFacade loc = new LocatorFacade(ev.location);
  +        consumer.setDocumentLocator(loc);
           while (ev != endEvent) {
  -            consumer.setDocumentLocator(ev.location);
  +            loc.setDocumentLocator(ev.location);
               if (ev instanceof Characters) {
                   TextEvent text = (TextEvent)ev;
                   consumer.characters(text.chars, 0, text.chars.length);
  
  
  

Reply via email to