Author: johnh Date: Fri May 15 01:06:05 2009 New Revision: 774976 URL: http://svn.apache.org/viewvc?rev=774976&view=rev Log: Makes it possible to inject an HtmlSerializer via a Provider<HtmlSerializer>, so that serialization can be different on a per-request basis rather than across the board.
* Rename HtmlSerializer to HtmlSerialization, removing its abstract methods and keeping static methods handling common Html serialization mechanisms. * Reintroduce HtmlSerializer as a pure interface. * Move NekoSerializer to parse directory renaming it DefaultHtmlSerializer (it uses one Neko class as a helper but is not tied to Neko's parsing in any way). * Move NekoCompactSerializer to CompactHtmlSerializer. Same argument. * Make Provider<HtmlSerializer> injectable in GadgetHtmlParser if so chosen. If not, DefaultHtmlSerializer is always used. * Associated changes to test code. Patch uploaded to http://codereview.appspot.com/63088 for convenience (though cr doesn't deal w/ file moves that well). Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializer.java - copied, changed from r773754, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializer.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/DefaultHtmlSerializer.java - copied, changed from r773754, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSerializer.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerialization.java - copied, changed from r773754, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/AbstractParserAndSerializerTest.java - copied, changed from r773754, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/AbstractParserAndSerializerTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializerTest.java - copied, changed from r773754, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializerTest.java Removed: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializer.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSerializer.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/AbstractParserAndSerializerTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializerTest.java Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoHtmlParser.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSimplifiedHtmlParser.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/MutableContent.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/AbstractTagHandler.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/HtmlTagHandler.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/ParseTreeSerializerBenchmark.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParserAndSerializeTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParsersTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/SocialMarkupHtmlParserTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/TemplateBasedTagHandlerTest.java Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializer.java (from r773754, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializer.java) URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializer.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializer.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializer.java&r1=773754&r2=774976&rev=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializer.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializer.java Fri May 15 01:06:05 2009 @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.shindig.gadgets.parse.nekohtml; +package org.apache.shindig.gadgets.parse; import com.google.common.collect.ImmutableSortedSet; @@ -35,7 +35,7 @@ * TODO - Consider adding attribute quoting elimination, empty attribute elimination where safe * end-tag elmination where safe. */ -public class NekoCompactSerializer extends NekoSerializer { +public class CompactHtmlSerializer extends DefaultHtmlSerializer { private static final ImmutableSortedSet<String> SPECIAL_TAGS = ImmutableSortedSet .orderedBy(String.CASE_INSENSITIVE_ORDER) Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/DefaultHtmlSerializer.java (from r773754, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSerializer.java) URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/DefaultHtmlSerializer.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/DefaultHtmlSerializer.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSerializer.java&r1=773754&r2=774976&rev=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSerializer.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/DefaultHtmlSerializer.java Fri May 15 01:06:05 2009 @@ -16,10 +16,8 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.shindig.gadgets.parse.nekohtml; +package org.apache.shindig.gadgets.parse; -import org.apache.shindig.gadgets.parse.HtmlSerializer; -import org.apache.xerces.xni.QName; import org.cyberneko.html.HTMLElements; import org.w3c.dom.Attr; import org.w3c.dom.Document; @@ -33,20 +31,16 @@ import java.io.StringWriter; import java.util.Set; -import com.google.common.collect.ImmutableSet; - /** * This parser does not try to escape entities in text content as it expects the parser - * to have retained the original entity references rather than its resolved form in text nodes + * to have retained the original entity references rather than its resolved form in text nodes. */ -public class NekoSerializer extends HtmlSerializer { - - private static final Set<String> URL_ATTRIBUTES = ImmutableSet.of("href", "src"); +public class DefaultHtmlSerializer implements HtmlSerializer { - @Override - public String serializeImpl(Document doc) { + /** {...@inheritdoc} */ + public String serialize(Document doc) { try { - StringWriter sw = createWriter(doc); + StringWriter sw = HtmlSerialization.createWriter(doc); if (doc.getDoctype() != null) { outputDocType(doc.getDoctype(), sw); } @@ -145,7 +139,8 @@ output.append("=\""); if (attr.getNodeValue().length() != 0) { boolean isUrlAttribute = - elem.getNamespaceURI() == null && URL_ATTRIBUTES.contains(attrName); + elem.getNamespaceURI() == null && + HtmlSerialization.URL_ATTRIBUTES.contains(attrName); printAttributeValue(attr.getNodeValue(), output, isUrlAttribute); } output.append('"'); @@ -167,11 +162,4 @@ } } } - - /** - * Returns true if the listed attribute is an URL attribute. - */ - static boolean isUrlAttribute(QName name, String attributeName) { - return name.uri == null && URL_ATTRIBUTES.contains(attributeName); - } } Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java Fri May 15 01:06:05 2009 @@ -19,6 +19,7 @@ import com.google.inject.ImplementedBy; import com.google.inject.Inject; +import com.google.inject.Provider; import org.apache.shindig.common.cache.Cache; import org.apache.shindig.common.cache.CacheProvider; @@ -42,6 +43,7 @@ private Cache<String, Document> documentCache; private Cache<String, DocumentFragment> fragmentCache; + private Provider<HtmlSerializer> serializerProvider = new DefaultSerializerProvider(); @Inject public void setCacheProvider(CacheProvider cacheProvider) { @@ -49,6 +51,11 @@ fragmentCache = cacheProvider.createCache(PARSED_FRAGMENTS); } + @Inject + public void setSerializerProvider(Provider<HtmlSerializer> serProvider) { + this.serializerProvider = serProvider; + } + /** * @param content * @return true if we detect a preamble of doctype or html @@ -71,7 +78,7 @@ if (document == null) { document = parseDomImpl(source); - HtmlSerializer.attach(document, createSerializer(), source); + HtmlSerialization.attach(document, serializerProvider.get(), source); // Ensure head tag exists if (DomUtil.getFirstNamedChildNode(document.getDocumentElement(), "head") == null) { @@ -92,19 +99,13 @@ } if (shouldCache) { Document copy = (Document)document.cloneNode(true); - HtmlSerializer.copySerializer(document, copy); + HtmlSerialization.copySerializer(document, copy); return copy; } return document; } /** - * Creates an instance of Serializer that can serialize the document - * generated by this parser. - */ - protected abstract HtmlSerializer createSerializer(); - - /** * Parses a snippet of markup and appends the result as children to the * provided node. * @@ -190,4 +191,10 @@ } } } + + private static class DefaultSerializerProvider implements Provider<HtmlSerializer> { + public HtmlSerializer get() { + return new DefaultHtmlSerializer(); + } + } } Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerialization.java (from r773754, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java) URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerialization.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerialization.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java&r1=773754&r2=774976&rev=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerialization.java Fri May 15 01:06:05 2009 @@ -17,18 +17,22 @@ */ package org.apache.shindig.gadgets.parse; +import org.apache.xerces.xni.QName; import org.cyberneko.html.HTMLEntities; import org.w3c.dom.Document; import java.io.IOException; import java.io.StringWriter; +import java.util.Set; + +import com.google.common.collect.ImmutableSet; /** - * Serialize a w3c document. An implementation of this interface should be bound - * to the document produced by an implementor of HtmlParser and retrieveable via - * document.getUserData(HtmlSerializer.KEY) + * Static class with helpers to manage serialization of a Document. + * Binds an HtmlSerializer to a Document as user data, and pulls it out + * to achieve actual serialization. */ -public abstract class HtmlSerializer { +public class HtmlSerialization { /** * Used to key an instance of HtmlSerializer in @@ -42,6 +46,8 @@ */ private static final String ORIGINAL_LENGTH = "original-length"; + public static final Set<String> URL_ATTRIBUTES = ImmutableSet.of("href", "src"); + /** * Attach a serializer instance to the document * @param doc @@ -97,16 +103,9 @@ * @return */ public static String serialize(Document doc) { - return ((HtmlSerializer) doc.getUserData(KEY)).serializeImpl(doc); + return ((HtmlSerializer) doc.getUserData(KEY)).serialize(doc); } - /** - * Overridden by implementations - * @param doc - * @return - */ - protected abstract String serializeImpl(Document doc); - public static void printEscapedText(CharSequence text, Appendable output) throws IOException { for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); @@ -119,4 +118,11 @@ } } + /** + * Returns true if the listed attribute is an URL attribute. + */ + public static boolean isUrlAttribute(QName name, String attributeName) { + return name.uri == null && URL_ATTRIBUTES.contains(attributeName); + } + } Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java?rev=774976&view=auto ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java (added) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/HtmlSerializer.java Fri May 15 01:06:05 2009 @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package org.apache.shindig.gadgets.parse; + +import com.google.inject.ImplementedBy; + +import org.w3c.dom.Document; + +/** + * Interface for HTML serializers, which turn a Document into a String. + */ +...@implementedby(DefaultHtmlSerializer.class) +public interface HtmlSerializer { + public String serialize(Document doc); +} Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoHtmlParser.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoHtmlParser.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoHtmlParser.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoHtmlParser.java Fri May 15 01:06:05 2009 @@ -49,10 +49,6 @@ this.documentProvider = documentProvider; } - protected HtmlSerializer createSerializer() { - return new NekoSerializer(); - } - @Override public Document parseDomImpl(String source) throws GadgetException { try { Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSimplifiedHtmlParser.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSimplifiedHtmlParser.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSimplifiedHtmlParser.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/nekohtml/NekoSimplifiedHtmlParser.java Fri May 15 01:06:05 2009 @@ -20,7 +20,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.parse.GadgetHtmlParser; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import org.apache.xerces.xni.Augmentations; import org.apache.xerces.xni.NamespaceContext; import org.apache.xerces.xni.QName; @@ -73,10 +73,6 @@ this.documentFactory = documentFactory; } - protected HtmlSerializer createSerializer() { - return new NekoSerializer(); - } - @Override protected Document parseDomImpl(String source) { DocumentHandler handler; @@ -268,7 +264,7 @@ String attributeName = xmlAttributes.getLocalName(i); builder.append(' ').append(attributeName).append("=\""); appendAttributeValue(xmlAttributes.getValue(i), - NekoSerializer.isUrlAttribute(qName, attributeName)); + HtmlSerialization.isUrlAttribute(qName, attributeName)); builder.append('\"'); } builder.append('>'); Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/MutableContent.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/MutableContent.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/MutableContent.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/MutableContent.java Fri May 15 01:06:05 2009 @@ -20,7 +20,7 @@ import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.http.HttpResponse; import org.apache.shindig.gadgets.parse.GadgetHtmlParser; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import org.w3c.dom.Document; import java.util.Map; @@ -84,7 +84,7 @@ // Clear on first use contentSource = null; } else if (document != null) { - content = HtmlSerializer.serialize(document); + content = HtmlSerialization.serialize(document); } } return content; Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/AbstractTagHandler.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/AbstractTagHandler.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/AbstractTagHandler.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/AbstractTagHandler.java Fri May 15 01:06:05 2009 @@ -18,7 +18,7 @@ */ package org.apache.shindig.gadgets.templates; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -74,7 +74,7 @@ try { StringBuilder sb = new StringBuilder(text.length()); - HtmlSerializer.printEscapedText(text, sb); + HtmlSerialization.printEscapedText(text, sb); parent.appendChild(parent.getOwnerDocument().createTextNode(sb.toString())); } catch (IOException ioe) { throw new RuntimeException(ioe); Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessor.java Fri May 15 01:06:05 2009 @@ -20,7 +20,7 @@ import org.apache.shindig.expressions.Expressions; import org.apache.shindig.gadgets.GadgetELResolver; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import java.io.IOException; import java.util.Iterator; @@ -204,7 +204,7 @@ // And now escape outputBuffer.setLength(0); try { - HtmlSerializer.printEscapedText(value, outputBuffer); + HtmlSerialization.printEscapedText(value, outputBuffer); } catch (IOException e) { // Can't happen writing to StringBuilder throw new RuntimeException(e); Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/HtmlTagHandler.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/HtmlTagHandler.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/HtmlTagHandler.java (original) +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/HtmlTagHandler.java Fri May 15 01:06:05 2009 @@ -20,7 +20,7 @@ import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.parse.GadgetHtmlParser; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -56,7 +56,7 @@ } catch (GadgetException ge) { try { StringBuilder sb = new StringBuilder("Error: "); - HtmlSerializer.printEscapedText(ge.getMessage(), sb); + HtmlSerialization.printEscapedText(ge.getMessage(), sb); Node comment = result.getOwnerDocument().createComment(sb.toString()); result.appendChild(comment); } catch (IOException e) { Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/AbstractParserAndSerializerTest.java (from r773754, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/AbstractParserAndSerializerTest.java) URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/AbstractParserAndSerializerTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/AbstractParserAndSerializerTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/AbstractParserAndSerializerTest.java&r1=773754&r2=774976&rev=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/AbstractParserAndSerializerTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/AbstractParserAndSerializerTest.java Fri May 15 01:06:05 2009 @@ -17,13 +17,11 @@ * under the License. */ -package org.apache.shindig.gadgets.parse.nekohtml; +package org.apache.shindig.gadgets.parse; import junit.framework.TestCase; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; -import org.apache.shindig.gadgets.parse.GadgetHtmlParser; -import org.apache.shindig.gadgets.parse.HtmlSerializer; import org.w3c.dom.Document; import java.io.IOException; @@ -31,20 +29,20 @@ /** * Base test fixture for HTML parsing and serialization. */ -abstract class AbstractParserAndSerializerTest extends TestCase { +public abstract class AbstractParserAndSerializerTest extends TestCase { /** The vm line separator */ private static final String EOL = System.getProperty("line.separator"); - String loadFile(String path) throws IOException { + protected String loadFile(String path) throws IOException { return IOUtils.toString(this.getClass().getClassLoader(). getResourceAsStream(path)); } - void parseAndCompareBalanced(String content, String expected, GadgetHtmlParser parser) + protected void parseAndCompareBalanced(String content, String expected, GadgetHtmlParser parser) throws Exception { Document document = parser.parseDom(content); expected = StringUtils.replace(expected, EOL, "\n"); - assertEquals(expected, HtmlSerializer.serialize(document)); + assertEquals(expected, HtmlSerialization.serialize(document)); } } Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializerTest.java (from r773754, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializerTest.java) URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializerTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializerTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializerTest.java&r1=773754&r2=774976&rev=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoCompactSerializerTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/CompactHtmlSerializerTest.java Fri May 15 01:06:05 2009 @@ -16,26 +16,31 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.shindig.gadgets.parse.nekohtml; +package org.apache.shindig.gadgets.parse; -import org.apache.shindig.gadgets.parse.ParseModule; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import com.google.inject.Provider; + +import org.apache.shindig.gadgets.parse.nekohtml.NekoHtmlParser; import java.io.StringWriter; import java.io.IOException; /** - * Test cases for NekoCompactSerializer. + * Test cases for CompactHtmlSerializer. */ -public class NekoCompactSerializerTest extends AbstractParserAndSerializerTest { +public class CompactHtmlSerializerTest extends AbstractParserAndSerializerTest { private NekoHtmlParser full = new NekoHtmlParser( - new ParseModule.DOMImplementationProvider().get()) { - @Override - protected HtmlSerializer createSerializer() { - return new NekoCompactSerializer(); - } - }; + new ParseModule.DOMImplementationProvider().get()); + + @Override + public void setUp() throws Exception { + full.setSerializerProvider(new Provider<HtmlSerializer>() { + public HtmlSerializer get() { + return new CompactHtmlSerializer(); + } + }); + } public void testWhitespaceNotCollapsedInSpecialTags() throws Exception { String content = loadFile( @@ -61,11 +66,11 @@ private static void assertSpecialTag(String tagName) { assertTrue(tagName + "should be special tag", - NekoCompactSerializer.isSpecialTag(tagName)); + CompactHtmlSerializer.isSpecialTag(tagName)); assertTrue(tagName.toUpperCase() + " should be special tag", - NekoCompactSerializer.isSpecialTag(tagName.toUpperCase())); + CompactHtmlSerializer.isSpecialTag(tagName.toUpperCase())); assertTrue(tagName.toLowerCase() + "should be special tag", - NekoCompactSerializer.isSpecialTag(tagName.toLowerCase())); + CompactHtmlSerializer.isSpecialTag(tagName.toLowerCase())); } public void testCollapseHtmlWhitespace() throws IOException { @@ -82,7 +87,7 @@ private static void assertCollapsed(String input, String expected) throws IOException { Appendable output = new StringWriter(); - NekoCompactSerializer.collapseWhitespace(input, output); + CompactHtmlSerializer.collapseWhitespace(input, output); assertEquals(expected, output.toString()); } } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/ParseTreeSerializerBenchmark.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/ParseTreeSerializerBenchmark.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/ParseTreeSerializerBenchmark.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/ParseTreeSerializerBenchmark.java Fri May 15 01:06:05 2009 @@ -108,7 +108,7 @@ try { long parseStart = System.currentTimeMillis(); for (int i = 0; i < numRuns; ++i) { - HtmlSerializer.serialize(document); + HtmlSerialization.serialize(document); } long parseMillis = System.currentTimeMillis() - parseStart; Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParserAndSerializeTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParserAndSerializeTest.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParserAndSerializeTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParserAndSerializeTest.java Fri May 15 01:06:05 2009 @@ -17,6 +17,7 @@ */ package org.apache.shindig.gadgets.parse.nekohtml; +import org.apache.shindig.gadgets.parse.AbstractParserAndSerializerTest; import org.apache.shindig.gadgets.parse.ParseModule; /** Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParsersTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParsersTest.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParsersTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/NekoParsersTest.java Fri May 15 01:06:05 2009 @@ -18,7 +18,7 @@ package org.apache.shindig.gadgets.parse.nekohtml; import org.apache.shindig.gadgets.parse.GadgetHtmlParser; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import org.apache.shindig.gadgets.parse.ParseModule; import org.apache.commons.io.IOUtils; @@ -94,6 +94,6 @@ throws Exception { Document document = parser.parseDom(content); expected = StringUtils.replace(expected, EOL, "\n"); - assertEquals(expected, HtmlSerializer.serialize(document)); + assertEquals(expected, HtmlSerialization.serialize(document)); } } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/SocialMarkupHtmlParserTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/SocialMarkupHtmlParserTest.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/SocialMarkupHtmlParserTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/nekohtml/SocialMarkupHtmlParserTest.java Fri May 15 01:06:05 2009 @@ -24,7 +24,7 @@ import org.apache.commons.io.IOUtils; import org.apache.shindig.gadgets.parse.ParseModule; -import org.apache.shindig.gadgets.parse.HtmlSerializer; +import org.apache.shindig.gadgets.parse.HtmlSerialization; import org.apache.shindig.gadgets.spec.PipelinedData; import org.junit.Before; import org.junit.Test; @@ -89,7 +89,7 @@ @Test public void testSocialTemplateSerialization() { - String content = HtmlSerializer.serialize(document); + String content = HtmlSerialization.serialize(document); assertTrue("Empty elements not preserved as XML inside template", content.contains("<img/>")); } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java Fri May 15 01:06:05 2009 @@ -26,8 +26,8 @@ import org.apache.shindig.expressions.RootELResolver; import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.Gadget; +import org.apache.shindig.gadgets.parse.DefaultHtmlSerializer; import org.apache.shindig.gadgets.parse.ParseModule; -import org.apache.shindig.gadgets.parse.nekohtml.NekoSerializer; import org.apache.shindig.gadgets.parse.nekohtml.SocialMarkupHtmlParser; import org.json.JSONObject; import org.json.JSONArray; @@ -223,7 +223,7 @@ NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); - new NekoSerializer().serialize(child, sb); + new DefaultHtmlSerializer().serialize(child, sb); } return sb.toString(); } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/RenderTagHandlerTest.java Fri May 15 01:06:05 2009 @@ -25,8 +25,8 @@ import org.apache.shindig.gadgets.Gadget; import org.apache.shindig.gadgets.GadgetContext; import org.apache.shindig.gadgets.GadgetException; +import org.apache.shindig.gadgets.parse.DefaultHtmlSerializer; import org.apache.shindig.gadgets.parse.ParseModule; -import org.apache.shindig.gadgets.parse.nekohtml.NekoSerializer; import org.apache.shindig.gadgets.parse.nekohtml.SocialMarkupHtmlParser; import org.json.JSONObject; import org.junit.Before; @@ -122,7 +122,7 @@ NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); - new NekoSerializer().serialize(child, sb); + new DefaultHtmlSerializer().serialize(child, sb); } return sb.toString(); } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/TemplateBasedTagHandlerTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/TemplateBasedTagHandlerTest.java?rev=774976&r1=774975&r2=774976&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/TemplateBasedTagHandlerTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/TemplateBasedTagHandlerTest.java Fri May 15 01:06:05 2009 @@ -24,9 +24,9 @@ import org.apache.shindig.expressions.RootELResolver; import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.Gadget; +import org.apache.shindig.gadgets.parse.DefaultHtmlSerializer; import org.apache.shindig.gadgets.parse.GadgetHtmlParser; import org.apache.shindig.gadgets.parse.ParseModule; -import org.apache.shindig.gadgets.parse.nekohtml.NekoSerializer; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -173,7 +173,7 @@ NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); - new NekoSerializer().serialize(child, sb); + new DefaultHtmlSerializer().serialize(child, sb); } return sb.toString(); }
