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 2009/09/29 19:50:19 UTC
svn commit: r820042 - in
/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy:
./ impl/
Author: woonsan
Date: Tue Sep 29 17:50:18 2009
New Revision: 820042
URL: http://svn.apache.org/viewvc?rev=820042&view=rev
Log:
APA-17: Changes to create new instance of rewriter every time because rewriter is not designed to be shared.
Modified:
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/HttpReverseProxyPathMapperProvider.java
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/SSOSiteCredentials.java
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyPathMapperProviderImpl.java
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyServlet.java
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultSSOSiteCredentials.java
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/RewritableHttpReverseProxyServiceImpl.java
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/HttpReverseProxyPathMapperProvider.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/HttpReverseProxyPathMapperProvider.java?rev=820042&r1=820041&r2=820042&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/HttpReverseProxyPathMapperProvider.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/HttpReverseProxyPathMapperProvider.java Tue Sep 29 17:50:18 2009
@@ -18,8 +18,8 @@
import javax.servlet.http.HttpServletRequest;
-import org.apache.portals.applications.webcontent.rewriter.Rewriter;
import org.apache.portals.applications.webcontent.rewriter.RewriterController;
+import org.apache.portals.applications.webcontent.rewriter.rules.Ruleset;
/**
* proxy path mapper provider interface for http reverse proxy service.
@@ -48,9 +48,9 @@
public RewriterController findRewriterController(HttpServletRequest request);
/**
- * Finds a reverse proxy rewriter based on the request
+ * Finds a reverse proxy rewriter rules based on the request
* @return
*/
- public Rewriter findRewriter(HttpServletRequest request);
+ public Ruleset findRewriterRuleset(HttpServletRequest request);
}
\ No newline at end of file
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/SSOSiteCredentials.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/SSOSiteCredentials.java?rev=820042&r1=820041&r2=820042&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/SSOSiteCredentials.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/SSOSiteCredentials.java Tue Sep 29 17:50:18 2009
@@ -16,7 +16,9 @@
*/
package org.apache.portals.applications.webcontent.proxy;
-public interface SSOSiteCredentials
+import java.io.Serializable;
+
+public interface SSOSiteCredentials extends Serializable
{
public String getBaseURL();
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyPathMapperProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyPathMapperProviderImpl.java?rev=820042&r1=820041&r2=820042&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyPathMapperProviderImpl.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyPathMapperProviderImpl.java Tue Sep 29 17:50:18 2009
@@ -24,8 +24,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.portals.applications.webcontent.proxy.HttpReverseProxyPathMapper;
import org.apache.portals.applications.webcontent.proxy.HttpReverseProxyPathMapperProvider;
-import org.apache.portals.applications.webcontent.rewriter.Rewriter;
import org.apache.portals.applications.webcontent.rewriter.RewriterController;
+import org.apache.portals.applications.webcontent.rewriter.rules.Ruleset;
/**
* Default <CODE>HttpReverseProxyPathMapperProvider</CODE> implementation
@@ -46,17 +46,17 @@
private List<KeyValue> rewriterControllerPairs;
/**
- * rewriters
+ * rewriter rulesets
*/
- private List<KeyValue> rewriterPairs;
+ private List<KeyValue> rewriterRulesetPairs;
public DefaultHttpReverseProxyPathMapperProviderImpl(List<HttpReverseProxyPathMapper> proxyPathMappers,
List<KeyValue> rewriterControllerPairs,
- List<KeyValue> rewriterPairs)
+ List<KeyValue> rewriterRulesetPairs)
{
this.proxyPathMappers = proxyPathMappers;
this.rewriterControllerPairs = rewriterControllerPairs;
- this.rewriterPairs = rewriterPairs;
+ this.rewriterRulesetPairs = rewriterRulesetPairs;
}
public HttpReverseProxyPathMapper findMapper(HttpServletRequest request)
@@ -105,15 +105,15 @@
return null;
}
- public Rewriter findRewriter(HttpServletRequest request)
+ public Ruleset findRewriterRuleset(HttpServletRequest request)
{
String pathInfo = request.getPathInfo();
- for (KeyValue pair : rewriterPairs)
+ for (KeyValue pair : rewriterRulesetPairs)
{
if (StringUtils.startsWith(pathInfo, (String) pair.getKey()))
{
- return (Rewriter) pair.getValue();
+ return (Ruleset) pair.getValue();
}
}
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyServlet.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyServlet.java?rev=820042&r1=820041&r2=820042&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyServlet.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultHttpReverseProxyServlet.java Tue Sep 29 17:50:18 2009
@@ -16,6 +16,7 @@
*/
package org.apache.portals.applications.webcontent.proxy.impl;
+import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -54,8 +55,8 @@
import org.apache.portals.applications.webcontent.proxy.HttpReverseProxyPathMapperProvider;
import org.apache.portals.applications.webcontent.proxy.HttpReverseProxyService;
import org.apache.portals.applications.webcontent.rewriter.MappingRewriterController;
-import org.apache.portals.applications.webcontent.rewriter.Rewriter;
import org.apache.portals.applications.webcontent.rewriter.RewriterController;
+import org.apache.portals.applications.webcontent.rewriter.rules.Ruleset;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -133,7 +134,7 @@
List<HttpReverseProxyPathMapper> proxyPathMappers = new ArrayList<HttpReverseProxyPathMapper>();
List<KeyValue> rewriterControllerPairs = new ArrayList<KeyValue>();
- List<KeyValue> rewriterPairs = new ArrayList<KeyValue>();
+ List<KeyValue> rewriterRulesetPairs = new ArrayList<KeyValue>();
Configuration passConf = configuration.subset("proxy.reverse.pass");
String [] pathNames = passConf.getStringArray("");
@@ -162,9 +163,14 @@
if (rewriterController != null)
{
rewriterControllerPairs.add(new DefaultKeyValue(localBasePath, rewriterController));
- String rewriterRuleConf = (rewriterRuleConfsLength > 1 ? rewriterRuleConfs[1] : null);
- Rewriter rewriter = createRewriter(rewriterController, rewriterRuleConf);
- rewriterPairs.add(new DefaultKeyValue(localBasePath, rewriter));
+ Ruleset rewriterRuleset = null;
+
+ if (rewriterRuleConfsLength > 1)
+ {
+ rewriterRuleset = loadRewriterRuleset(rewriterController, rewriterRuleConfs[1]);
+ }
+
+ rewriterRulesetPairs.add(new DefaultKeyValue(localBasePath, rewriterRuleset));
}
}
}
@@ -174,7 +180,7 @@
throw new ServletException("Failed to initialize url mappings. " + e);
}
- HttpReverseProxyPathMapperProvider proxyPathMapperProvider = new DefaultHttpReverseProxyPathMapperProviderImpl(proxyPathMappers, rewriterControllerPairs, rewriterPairs);
+ HttpReverseProxyPathMapperProvider proxyPathMapperProvider = new DefaultHttpReverseProxyPathMapperProviderImpl(proxyPathMappers, rewriterControllerPairs, rewriterRulesetPairs);
HttpReverseProxyService tempProxyService = new RewritableHttpReverseProxyServiceImpl(proxyPathMapperProvider);
Configuration serverConf = configuration.subset("proxy.server");
@@ -300,34 +306,6 @@
return new MappingRewriterController(getServletContext().getRealPath(rulesMappingResourcePath), buildClassList(rewriterClassNames), buildClassList(adaptorClassNames));
}
- private Rewriter createRewriter(RewriterController rwc, String rewriterRulesResourcePath) throws Exception
- {
- Rewriter rewriter = null;
- InputStream rewriterRulesInput = null;
-
- try
- {
- if (!StringUtils.isBlank(rewriterRulesResourcePath))
- {
- rewriterRulesInput = getServletContext().getResourceAsStream(rewriterRulesResourcePath);
- rewriter = rwc.createRewriter(rwc.loadRuleset(rewriterRulesInput));
- }
- else
- {
- rewriter = rwc.createRewriter();
- }
- }
- finally
- {
- if (rewriterRulesInput != null)
- {
- IOUtils.closeQuietly(rewriterRulesInput);
- }
- }
-
- return rewriter;
- }
-
private HttpRoute buildHttpRoute(Configuration routeConf) throws Exception
{
HttpRoute httpRoute = null;
@@ -576,4 +554,36 @@
}
}
}
+
+ private Ruleset loadRewriterRuleset(RewriterController rewriterController, String rulesConfResourcePath)
+ {
+ Ruleset ruleset = null;
+
+ InputStream is = null;
+ InputStream bis = null;
+
+ try
+ {
+ if (!StringUtils.isBlank(rulesConfResourcePath))
+ {
+ is = getServletContext().getResourceAsStream(rulesConfResourcePath);
+ bis = new BufferedInputStream(is);
+ ruleset = rewriterController.loadRuleset(bis);
+ }
+ }
+ finally
+ {
+ if (bis != null)
+ {
+ IOUtils.closeQuietly(bis);
+ }
+ if (is != null)
+ {
+ IOUtils.closeQuietly(is);
+ }
+ }
+
+ return ruleset;
+ }
+
}
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultSSOSiteCredentials.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultSSOSiteCredentials.java?rev=820042&r1=820041&r2=820042&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultSSOSiteCredentials.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultSSOSiteCredentials.java Tue Sep 29 17:50:18 2009
@@ -5,6 +5,8 @@
public class DefaultSSOSiteCredentials implements SSOSiteCredentials
{
+ private static final long serialVersionUID = 1L;
+
private String baseURL;
private String host;
private int port = -1;
Modified: portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/RewritableHttpReverseProxyServiceImpl.java
URL: http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/RewritableHttpReverseProxyServiceImpl.java?rev=820042&r1=820041&r2=820042&view=diff
==============================================================================
--- portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/RewritableHttpReverseProxyServiceImpl.java (original)
+++ portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/RewritableHttpReverseProxyServiceImpl.java Tue Sep 29 17:50:18 2009
@@ -64,10 +64,9 @@
import org.apache.portals.applications.webcontent.proxy.HttpReverseProxyService;
import org.apache.portals.applications.webcontent.proxy.SSOSiteCredentials;
import org.apache.portals.applications.webcontent.proxy.SSOSiteCredentialsProvider;
-import org.apache.portals.applications.webcontent.rewriter.ParserAdaptor;
import org.apache.portals.applications.webcontent.rewriter.Rewriter;
import org.apache.portals.applications.webcontent.rewriter.RewriterController;
-import org.apache.portals.applications.webcontent.rewriter.RewriterException;
+import org.apache.portals.applications.webcontent.rewriter.rules.Ruleset;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -430,7 +429,21 @@
out = response.getOutputStream();
RewriterController rewriterController = proxyPathMapperProvider.findRewriterController(request);
- Rewriter rewriter = proxyPathMapperProvider.findRewriter(request);
+ Rewriter rewriter = null;
+
+ if (rewriterController != null)
+ {
+ Ruleset rewriterRuleset = proxyPathMapperProvider.findRewriterRuleset(request);
+
+ if (rewriterRuleset == null)
+ {
+ rewriter = rewriterController.createRewriter();
+ }
+ else
+ {
+ rewriter = rewriterController.createRewriter(rewriterRuleset);
+ }
+ }
if (rewriterController == null || rewriter == null)
{
@@ -475,12 +488,13 @@
writer = new OutputStreamWriter(out);
}
+ rewriter.setBaseUrl(localBaseURL + request.getPathInfo());
rewriter.rewrite(rewriterController.createParserAdaptor(mimeType), reader, writer);
writer.flush();
}
}
}
- catch (RewriterException e)
+ catch (Exception e)
{
if (log.isDebugEnabled())
{