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();
   }