You are viewing a plain text version of this content. The canonical link for it is here.
Posted to portalapps-dev@portals.apache.org by wo...@apache.org on 2014/09/05 04:51:46 UTC

svn commit: r1622600 - in /portals/applications/webcontent/trunk: content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/ content-rewriter/src/test/java/org/apache/portals/applications/webcontent2/rewriter/ port...

Author: woonsan
Date: Fri Sep  5 02:51:45 2014
New Revision: 1622600

URL: http://svn.apache.org/r1622600
Log:
APA-66: removing custom selector utility; instead use htmlcleaner's xpather

Removed:
    portals/applications/webcontent/trunk/content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/ContentSelectorUtils.java
Modified:
    portals/applications/webcontent/trunk/content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/HtmlCleanerContentRewriter.java
    portals/applications/webcontent/trunk/content-rewriter/src/test/java/org/apache/portals/applications/webcontent2/rewriter/HtmlCleanerContentRewriterTest.java
    portals/applications/webcontent/trunk/portlets/src/main/java/org/apache/portals/applications/webcontent2/portlet/proxy/SimpleReverseProxyPortlet.java
    portals/applications/webcontent/trunk/war/src/main/webapp/WEB-INF/portlet.xml

Modified: portals/applications/webcontent/trunk/content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/HtmlCleanerContentRewriter.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/HtmlCleanerContentRewriter.java?rev=1622600&r1=1622599&r2=1622600&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/HtmlCleanerContentRewriter.java (original)
+++ portals/applications/webcontent/trunk/content-rewriter/src/main/java/org/apache/portals/applications/webcontent2/rewriter/htmlcleaner/HtmlCleanerContentRewriter.java Fri Sep  5 02:51:45 2014
@@ -29,6 +29,7 @@ import java.util.TreeMap;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.portals.applications.webcontent2.rewriter.ContentRewriter;
 import org.apache.portals.applications.webcontent2.rewriter.ContentRewritingContext;
 import org.apache.portals.applications.webcontent2.rewriter.ContentRewritingException;
@@ -39,7 +40,8 @@ import org.htmlcleaner.HtmlCleaner;
 import org.htmlcleaner.Serializer;
 import org.htmlcleaner.TagNode;
 import org.htmlcleaner.TagNodeVisitor;
-import org.htmlcleaner.conditional.ITagNodeCondition;
+import org.htmlcleaner.XPather;
+import org.htmlcleaner.XPatherException;
 
 public class HtmlCleanerContentRewriter implements ContentRewriter
 {
@@ -47,7 +49,7 @@ public class HtmlCleanerContentRewriter 
     private HtmlCleaner cleaner;
     private SerializerFactory serializerFactory;
     private String sinkEncoding = "UTF-8";
-    private String contentSelector;
+    private String xpathExpression;
     private boolean innerHtmlOnly;
     private String [] transformationInfos;
     private List<TagNodeVisitor> tagNodeVisitors;
@@ -76,14 +78,14 @@ public class HtmlCleanerContentRewriter 
         this.sinkEncoding = sinkEncoding;
     }
 
-    public String getContentSelector()
+    public String getXpathExpression()
     {
-        return contentSelector;
+        return xpathExpression;
     }
 
-    public void setContentSelector(String contentSelector)
+    public void setXpathExpression(String xpathExpression)
     {
-        this.contentSelector = contentSelector;
+        this.xpathExpression = xpathExpression;
     }
 
     public boolean isInnerHtmlOnly()
@@ -215,12 +217,31 @@ public class HtmlCleanerContentRewriter 
             bw = new BufferedWriter(writer);
 
             TagNode rootTagNode = getHtmlCleaner().clean(br);
-            List<? extends TagNode> contentTagNodes = null;
+            List<TagNode> contentTagNodes = null;
 
-            if (getContentSelector() != null)
+            if (StringUtils.isNotEmpty(getXpathExpression()))
             {
-                ITagNodeCondition selectCondition = ContentSelectorUtils.createTagNodeConditionBySelector(getContentSelector());
-                contentTagNodes = rootTagNode.getElementList(selectCondition, true);
+                try
+                {
+                    contentTagNodes = new ArrayList<TagNode>();
+                    XPather xpather = new XPather(getXpathExpression());
+                    Object[] items = xpather.evaluateAgainstNode(rootTagNode);
+
+                    if (items != null)
+                    {
+                        for (Object item : items)
+                        {
+                            if (item instanceof TagNode)
+                            {
+                                contentTagNodes.add((TagNode) item);
+                            }
+                        }
+                    }
+                }
+                catch (XPatherException e)
+                {
+                    throw new ContentRewritingException("Failed to evaluate xpath: " + getXpathExpression() + ". " + e, e);
+                }
             }
 
             if (contentTagNodes != null && !contentTagNodes.isEmpty())

Modified: portals/applications/webcontent/trunk/content-rewriter/src/test/java/org/apache/portals/applications/webcontent2/rewriter/HtmlCleanerContentRewriterTest.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/content-rewriter/src/test/java/org/apache/portals/applications/webcontent2/rewriter/HtmlCleanerContentRewriterTest.java?rev=1622600&r1=1622599&r2=1622600&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/content-rewriter/src/test/java/org/apache/portals/applications/webcontent2/rewriter/HtmlCleanerContentRewriterTest.java (original)
+++ portals/applications/webcontent/trunk/content-rewriter/src/test/java/org/apache/portals/applications/webcontent2/rewriter/HtmlCleanerContentRewriterTest.java Fri Sep  5 02:51:45 2014
@@ -95,7 +95,7 @@ public class HtmlCleanerContentRewriterT
 
         contentRewriter = new HtmlCleanerContentRewriter();
         contentRewriter.setSerializerFactory(serializerFactory);
-        contentRewriter.setContentSelector("body");
+        contentRewriter.setXpathExpression("body");
         contentRewriter.setInnerHtmlOnly(true);
         contentRewriter.setCleanerTransformationStringArray(HTMLCLEANER_TRNSFORM_INFO);
 

Modified: portals/applications/webcontent/trunk/portlets/src/main/java/org/apache/portals/applications/webcontent2/portlet/proxy/SimpleReverseProxyPortlet.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/portlets/src/main/java/org/apache/portals/applications/webcontent2/portlet/proxy/SimpleReverseProxyPortlet.java?rev=1622600&r1=1622599&r2=1622600&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/portlets/src/main/java/org/apache/portals/applications/webcontent2/portlet/proxy/SimpleReverseProxyPortlet.java (original)
+++ portals/applications/webcontent/trunk/portlets/src/main/java/org/apache/portals/applications/webcontent2/portlet/proxy/SimpleReverseProxyPortlet.java Fri Sep  5 02:51:45 2014
@@ -122,7 +122,7 @@ public class SimpleReverseProxyPortlet e
 
         HtmlCleanerContentRewriter contentRewriter = new HtmlCleanerContentRewriter();
         contentRewriter.setSerializerFactory(serializerFactory);
-        contentRewriter.setContentSelector(getContentSelector());
+        contentRewriter.setXpathExpression(getContentSelector());
         contentRewriter.setInnerHtmlOnly(true);
 
         String [] cleanerTransformations = getCleanerTransformationStringArray();

Modified: portals/applications/webcontent/trunk/war/src/main/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/war/src/main/webapp/WEB-INF/portlet.xml?rev=1622600&r1=1622599&r2=1622600&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/war/src/main/webapp/WEB-INF/portlet.xml (original)
+++ portals/applications/webcontent/trunk/war/src/main/webapp/WEB-INF/portlet.xml Fri Sep  5 02:51:45 2014
@@ -258,7 +258,7 @@
     </init-param>
     <init-param>
       <name>content.selector</name>
-      <value>div[id=bodyColumn]</value>
+      <value>//div[@id='bodyColumn']</value>
     </init-param>
     <expiration-cache>0</expiration-cache>
     <supports>