forrest-svn mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From thors...@apache.org
Subject svn commit: r750422 - in /forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher: impl/helper/ transformation/
Date Thu, 05 Mar 2009 11:20:30 GMT
Author: thorsten
Date: Thu Mar  5 11:20:29 2009
New Revision: 750422

URL: http://svn.apache.org/viewvc?rev=750422&view=rev
Log:
Fixing bug regarding comments that not have been passed to the output stage because the StringXMLizable.toSAX
does not invoke a lexicalHandler. Further removing all spaces and linebreaks since the have
caused problems in combination with <xsl:attribute> resulting in &#10; in the output
and extraspaces.

Modified:
    forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/ContractHandler.java
    forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/EchoHandler.java
    forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java

Modified: forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/ContractHandler.java
URL: http://svn.apache.org/viewvc/forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/ContractHandler.java?rev=750422&r1=750421&r2=750422&view=diff
==============================================================================
--- forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/ContractHandler.java
(original)
+++ forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/ContractHandler.java
Thu Mar  5 11:20:29 2009
@@ -67,7 +67,7 @@
 
     if (recording) {
       String prefix = extractPrefix(raw);
-      emit(lineEnd + "<" + raw);
+      emit( "<" + raw);
       if (uri != null && !uri.equals("")) {
         if (prefix != null) {
           if (!map.containsKey(prefix)) {

Modified: forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/EchoHandler.java
URL: http://svn.apache.org/viewvc/forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/EchoHandler.java?rev=750422&r1=750421&r2=750422&view=diff
==============================================================================
--- forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/EchoHandler.java
(original)
+++ forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/EchoHandler.java
Thu Mar  5 11:20:29 2009
@@ -39,8 +39,6 @@
 
   private byte[] bytes;
 
-  protected String lineEnd;
-
   /**
    * Establece la codificación que se empleará en el tratamiento de los datos.
    * Si se pasa <code>null</code> o una cadena vacia emplea "UTF-8" por defecto.
@@ -49,7 +47,6 @@
    *          La codificación a emplear.
    */
   public EchoHandler(String encoding) {
-    lineEnd = System.getProperty("line.separator");
     if (null != encoding & !" ".equals(encoding)) {
       this.encoding = encoding;
     } else {
@@ -64,7 +61,7 @@
    */
   public void startDocument() throws SAXException {
     xmlBuffer = new StringBuffer();
-    emit("<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>" + lineEnd);
+    emit("<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>" );
   }
 
   /*
@@ -178,7 +175,7 @@
    */
   public void endElement(String uri, String loc, String raw)
       throws SAXException {
-    emit("</" + raw + ">" + lineEnd);
+    emit("</" + raw + ">" );
   }
 
   /*
@@ -191,6 +188,7 @@
    * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
    */
   public void characters(char ch[], int start, int length) throws SAXException {
+    boolean ignorSpace = true;
     for (int i = 0; i < length; i++) {
       char c = ch[start + i];
       if (c == '&') {
@@ -199,8 +197,15 @@
         emit("&lt;");
       } else if (c == '>') {
         emit("&gt;");
-      } else {
-        emit(c);
+      } else if(c!='\n'){
+        // this is a workaround to ignore whitespaces that are not needed.
+        if(c==' ' && !ignorSpace){
+          emit(c);
+          ignorSpace=false;
+        }else if (c!=' '){
+          emit(c);
+          ignorSpace=false;
+        }
       }
     }
   }

Modified: forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
URL: http://svn.apache.org/viewvc/forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java?rev=750422&r1=750421&r2=750422&view=diff
==============================================================================
--- forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
(original)
+++ forrest/branches/dispatcher_rewrite/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
Thu Mar  5 11:20:29 2009
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.io.StringReader;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -51,17 +52,13 @@
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.ResourceNotFoundException;
 import org.apache.cocoon.caching.CacheableProcessingComponent;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.transformation.AbstractSAXTransformer;
 import org.apache.cocoon.util.TraxErrorHandler;
-import org.apache.cocoon.xml.IncludeXMLConsumer;
 import org.apache.cocoon.xml.RedundantNamespacesFilter;
-import org.apache.cocoon.xml.StringXMLizable;
 import org.apache.cocoon.xml.XMLUtils;
 import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.commons.logging.Log;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceException;
 import org.apache.excalibur.source.SourceValidity;
@@ -75,7 +72,6 @@
 import org.apache.forrest.dispatcher.impl.CocoonResolver;
 import org.apache.forrest.dispatcher.impl.helper.AXIOMXPathCreate;
 import org.apache.forrest.dispatcher.impl.helper.Captions;
-import org.apache.forrest.dispatcher.impl.helper.LoggingErrorListener;
 import org.apache.forrest.dispatcher.impl.helper.StAX;
 import org.apache.forrest.dispatcher.impl.helper.StreamHelper;
 import org.apache.forrest.dispatcher.impl.helper.XMLProperties;
@@ -245,8 +241,8 @@
   private InputStream dataStream;
 
   private String prefixString;
-
-  private HashMap storedPrefixMap;
+  
+  private TransformerFactory tfactory = TransformerFactory.newInstance(); 
 
   /*
    * @see
@@ -275,7 +271,13 @@
     config.setShrink(shrink);
     // request all factories to be created at this point since it is better to
     // create them only once
-    setNewTransformerFactory();
+    try {
+      setNewTransformerFactory();
+    } catch (ProcessingException e) {
+      throw new ConfigurationException(e.getLocalizedMessage(),e);
+    } catch (TransformerFactoryConfigurationError e) {
+      throw new ConfigurationException(e.getLocalizedMessage(),e);
+    }
   }
 
   /**
@@ -284,8 +286,10 @@
    * 
    * @param config
    *          the configuration to use.
+   * @throws TransformerFactoryConfigurationError 
+   * @throws ProcessingException 
    */
-  public void setConfig(WritableDispatcherBean config) {
+  public void setConfig(WritableDispatcherBean config) throws ProcessingException, TransformerFactoryConfigurationError
{
     this.config = config;
     if (config.getTransFact() == null) {
       setNewTransformerFactory();
@@ -297,11 +301,10 @@
    * Will prepare the factories that we need in further processing
    * 
    * @throws TransformerFactoryConfigurationError
+   * @throws ProcessingException 
    */
   private void setNewTransformerFactory()
-      throws TransformerFactoryConfigurationError {
-    // Is this the best way to get an instance in cocoon?
-    TransformerFactory tfactory = TransformerFactory.newInstance();
+      throws TransformerFactoryConfigurationError, ProcessingException {
     // set the uri resolver the same as this class
     tfactory.setURIResolver(this);
     // we want to set the error handler here to make sure it is intitialized
@@ -312,6 +315,14 @@
     this.factory = OMAbstractFactory.getOMFactory();
     // get the contract factory
     this.contractRep = new ContractFactory(config);
+    try {
+      parser = (SAXParser) manager.lookup(SAXParser.ROLE);
+    } catch (ServiceException e) {
+      String error = "dispatcherError:\n"
+        + "SAXParser could not be setup! Abort";
+      getLogger().error(error);
+      throw new ProcessingException(error);
+    }
   }
 
   /*
@@ -328,7 +339,6 @@
      */
     // setup our super class
     super.setup(resolver, objectModel, src, par);
-    storedPrefixMap = new HashMap();
 
     // get the id of this request
     this.requestId = parameters
@@ -480,11 +490,6 @@
     }
   }
 
-  public void ignorableWhitespace(char c[], int start, int len)
-  throws SAXException {
- // do nothing here!
-  }
-  
   
   public void characters(char c[], int start, int len)
   throws SAXException {
@@ -498,7 +503,7 @@
   }
   
   public void startDocument() throws SAXException {
- // Add the namespace filter to our own output.
+    // Add the namespace filter to our own output.
     RedundantNamespacesFilter nsPipe = new RedundantNamespacesFilter();
     if (this.xmlConsumer != null) {
         nsPipe.setConsumer(this.xmlConsumer);
@@ -506,24 +511,28 @@
         nsPipe.setContentHandler(this.contentHandler);
     }
     setConsumer(nsPipe);
-    super.startDocument();
   }
   
   public void endDocument()
   throws SAXException {
     structurerProcessingEnd();
-    super.endDocument();
   }
   
   /*
-   * copy 'n paste
+   * do nothing on the following methods, since we do not use them
    */
+  public void ignorableWhitespace(char c[], int start, int len)
+  throws SAXException {
+  }
   
   public void startCDATA() throws SAXException {
   }
 
   public void endCDATA() throws SAXException {
   }
+  
+  public void comment(char[] ary, int start, int length) throws SAXException {
+  }
 
   /**
    * Will execute the contract and process the result.
@@ -665,8 +674,10 @@
       }else{
         root.serialize(out);
       }
-      StringXMLizable xml = new StringXMLizable(out.toString());
-      xml.toSAX(new IncludeXMLConsumer(super.xmlConsumer));
+      
+      InputSource is = new InputSource(new StringReader(out.toString()));
+   // adding the result to the consumer       
+      parser.parse(is, super.xmlConsumer);
     } catch (Exception e) {
       throw new SAXException(e);
     }



Mime
View raw message