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>