You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2009/05/15 03:06:05 UTC
svn commit: r774976 - in /incubator/shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/parse/
main/java/org/apache/shindig/gadgets/parse/nekohtml/
main/java/org/apache/shindig/gadgets/rewrite/
main/java/org/apache/shindig/gadgets/temp...
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();
}