On Thu, 2009-03-05 at 07:27 -0500, Tim Williams wrote: > Hey Thorsten, > Not specific to this commit, but I happened to notice a lot of code like: > > if (uri != null && !uri.equals("")) { > > Since we're already using Commons Lang anyway, you might find it > easier to use StringUtils.isBlank(uri) in situations like this?
Yeah, good catch. Will try to remember it in the future. salu2 > --tim > > > > On Thu, Mar 5, 2009 at 6:20 AM, <thors...@apache.org> wrote: > > 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 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("<"); > > } else if (c == '>') { > > emit(">"); > > - } 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); > > } > > > > > > -- Thorsten Scherler <thorsten.at.apache.org> Open Source Java <consulting, training and solutions> Sociedad Andaluza para el Desarrollo de la Sociedad de la Información, S.A.U. (SADESI)