Author: woonsan
Date: Wed Nov  4 18:00:10 2009
New Revision: 832821

URL: http://svn.apache.org/viewvc?rev=832821&view=rev
Log:
APA-20: Adding custom replacing properties.

Modified:
    
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/DefaultReverseProxyLinkRewritingParserAaptor.java
    
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/rewriter/MappingRewriterController.java
    
portals/applications/webcontent/trunk/webcontent-jar/src/test/java/org/apache/portals/applications/webcontent/proxy/TestReverseProxyLinkRewritingParserAaptor.java

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=832821&r1=832820&r2=832821&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
 Wed Nov  4 18:00:10 2009
@@ -399,9 +399,9 @@
         Class basicRewriterClass = null;
         Class ruleBasedRewriterClass = null;
         Map<String, Class> adaptorMimeTypeClassMap = new HashMap<String, 
Class>();
-        Map<String, Object> basicRewriterProps = null;
-        Map<String, Object> rulesetRewriterProps = null;
-        Map<String, Map<String, Object>> parserAdaptorMimeTypeMap = null;
+        Map<String, String []> basicRewriterProps = null;
+        Map<String, String []> rulesetRewriterProps = null;
+        Map<String, Map<String, String []>> parserAdaptorMimeTypeMap = null;
         
         try
         {
@@ -429,11 +429,11 @@
                 Configuration propsConf = basicRewriterConf.subset("property");
                 if (!propsConf.isEmpty())
                 {
-                    basicRewriterProps = new HashMap<String, Object>();
+                    basicRewriterProps = new HashMap<String, String []>();
                     for (Iterator it = propsConf.getKeys(); it.hasNext(); )
                     {
                         String propName = (String) it.next();
-                        basicRewriterProps.put(propName, 
propsConf.getString(propName));
+                        basicRewriterProps.put(propName, 
propsConf.getStringArray(propName));
                     }
                 }
             }
@@ -447,11 +447,11 @@
                 Configuration propsConf = 
ruleBasedRewriterConf.subset("property");
                 if (!propsConf.isEmpty())
                 {
-                    rulesetRewriterProps = new HashMap<String, Object>();
+                    rulesetRewriterProps = new HashMap<String, String []>();
                     for (Iterator it = propsConf.getKeys(); it.hasNext(); )
                     {
                         String propName = (String) it.next();
-                        rulesetRewriterProps.put(propName, 
propsConf.getString(propName));
+                        rulesetRewriterProps.put(propName, 
propsConf.getStringArray(propName));
                     }
                 }
             }
@@ -473,15 +473,15 @@
                         Configuration propsConf = 
parserAdaptorConf.subset("property");
                         if (!propsConf.isEmpty())
                         {
-                            Map<String, Object> parserAdaptorProps = new 
HashMap<String, Object>();
+                            Map<String, String []> parserAdaptorProps = new 
HashMap<String, String []>();
                             for (Iterator it = propsConf.getKeys(); 
it.hasNext(); )
                             {
                                 String propName = (String) it.next();
-                                parserAdaptorProps.put(propName, 
propsConf.getString(propName));
+                                parserAdaptorProps.put(propName, 
propsConf.getStringArray(propName));
                             }
                             if (parserAdaptorMimeTypeMap == null)
                             {
-                                parserAdaptorMimeTypeMap = new HashMap<String, 
Map<String, Object>>();
+                                parserAdaptorMimeTypeMap = new HashMap<String, 
Map<String, String []>>();
                             }
                             parserAdaptorMimeTypeMap.put(mimeType, 
parserAdaptorProps);
                         }
@@ -743,11 +743,11 @@
             
             if (!StringUtils.isBlank(propName))
             {
-                String propValue = conf.getString(propName);
+                String [] propValues = conf.getStringArray(propName);
                 
                 try
                 {
-                    BeanUtils.setProperty(bean, propName, propValue);
+                    setBeanProperty(bean, propName, propValues);
                 }
                 catch (Exception e)
                 {
@@ -795,4 +795,16 @@
         return ruleset;
     }
     
+    private void setBeanProperty(Object bean, String propName, String [] 
propValues)
+    {
+        try
+        {
+            BeanUtils.setProperty(bean, propName, propValues);
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
+    
 }

Modified: 
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultReverseProxyLinkRewritingParserAaptor.java
URL: 
http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultReverseProxyLinkRewritingParserAaptor.java?rev=832821&r1=832820&r2=832821&view=diff
==============================================================================
--- 
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultReverseProxyLinkRewritingParserAaptor.java
 (original)
+++ 
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/proxy/impl/DefaultReverseProxyLinkRewritingParserAaptor.java
 Wed Nov  4 18:00:10 2009
@@ -62,6 +62,9 @@
     private Map<HttpReverseProxyPathMapper, Pattern> 
remoteURLMatchingPatternMap;
     private Map<HttpReverseProxyPathMapper, String> 
localPathMatchingReplacesMap;
     
+    private Pattern [] customPatterns;
+    private String [] customReplaces;
+    
     public DefaultReverseProxyLinkRewritingParserAaptor()
     {
         this(true, null);
@@ -78,11 +81,31 @@
         this.lookUpAllMappings = lookUpAllMappings;
     }
     
+    public boolean getLookUpAllMappings()
+    {
+        return lookUpAllMappings;
+    }
+    
     public void setBlacklist(Set<String> blacklist)
     {
         this.blacklist = blacklist;
     }
     
+    public void setCustomPatterns(String [] patterns)
+    {
+        customPatterns = new Pattern[patterns.length];
+        
+        for (int i = 0; i < patterns.length; i++)
+        {
+            customPatterns[i] = Pattern.compile(patterns[i], 
Pattern.CASE_INSENSITIVE);
+        }
+    }
+    
+    public void setCustomReplaces(String [] customReplaces)
+    {
+        this.customReplaces = customReplaces;
+    }
+    
     @Override
     protected String rewriteLine(String line) throws Exception
     {
@@ -175,6 +198,15 @@
             line = matcher.replaceAll("$1$2=$3" + defaultRemoteURLReplaces + 
"$6$3");
         }
         
+        if (customPatterns != null)
+        {
+            for (int i = 0; i < customPatterns.length; i++)
+            {
+                Matcher matcher = customPatterns[i].matcher(line);
+                line = matcher.replaceAll(customReplaces[i]);
+            }
+        }
+        
         return line;
     }
     

Modified: 
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/rewriter/MappingRewriterController.java
URL: 
http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/rewriter/MappingRewriterController.java?rev=832821&r1=832820&r2=832821&view=diff
==============================================================================
--- 
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/rewriter/MappingRewriterController.java
 (original)
+++ 
portals/applications/webcontent/trunk/webcontent-jar/src/main/java/org/apache/portals/applications/webcontent/rewriter/MappingRewriterController.java
 Wed Nov  4 18:00:10 2009
@@ -19,7 +19,6 @@
 import java.io.File;
 import java.io.InputStream;
 import java.io.Reader;
-import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -75,13 +74,13 @@
     protected Map<String, Class> parserAdaptorMimeTypeClassMap;
     
     /** Basic rewriter instance properties */
-    protected Map<String, Object> basicRewriterProps;
+    protected Map<String, String []> basicRewriterProps;
     
     /** Ruleset rewriter instance properties */
-    protected Map<String, Object> rulesetRewriterProps;
+    protected Map<String, String []> rulesetRewriterProps;
     
     /** Parser adaptor rewriter instance properties map */
-    protected Map<String, Map<String, Object>> parserAdaptorMimeTypePropsMap;
+    protected Map<String, Map<String, String []>> 
parserAdaptorMimeTypePropsMap;
     
     public MappingRewriterController( String mappingFile ) throws 
RewriterException
     {
@@ -194,20 +193,13 @@
     {
         Rewriter rewriter = (Rewriter) basicRewriterClass.newInstance();
         
-        try
+        if (basicRewriterProps != null)
         {
-            if (basicRewriterProps != null)
+            for (Map.Entry<String, String []> entry : 
basicRewriterProps.entrySet())
             {
-                for (Map.Entry<String, Object> entry : 
basicRewriterProps.entrySet())
-                {
-                    BeanUtils.setProperty(rewriter, entry.getKey(), 
entry.getValue());
-                }
+                setBeanProperty(rewriter, entry.getKey(), entry.getValue());
             }
         }
-        catch (InvocationTargetException e)
-        {
-            throw new RuntimeException(e);
-        }
         
         return rewriter;
     }
@@ -219,20 +211,13 @@
             RulesetRewriter rewriter = (RulesetRewriter) 
rulesetRewriterClass.newInstance();
             rewriter.setRuleset(ruleset);
             
-            try
+            if (rulesetRewriterProps != null)
             {
-                if (rulesetRewriterProps != null)
+                for (Map.Entry<String, String []> entry : 
rulesetRewriterProps.entrySet())
                 {
-                    for (Map.Entry<String, Object> entry : 
rulesetRewriterProps.entrySet())
-                    {
-                        BeanUtils.setProperty(rewriter, entry.getKey(), 
entry.getValue());
-                    }
+                    setBeanProperty(rewriter, entry.getKey(), 
entry.getValue());
                 }
             }
-            catch (InvocationTargetException e)
-            {
-                throw new RuntimeException(e);
-            }
             
             return rewriter;
         }
@@ -240,6 +225,7 @@
         {
             log.error("Error creating rewriter class", e);
         }
+        
         return null;
     }
 
@@ -254,25 +240,18 @@
             {
                 parserAdaptor = (ParserAdaptor) 
parserAdaptorClass.newInstance();
             
-                try
+                if (parserAdaptorMimeTypePropsMap != null)
                 {
-                    if (parserAdaptorMimeTypePropsMap != null)
+                    Map<String, String []> parserAdaptorProps = 
parserAdaptorMimeTypePropsMap.get(mimeType);
+                    
+                    if (parserAdaptorProps != null)
                     {
-                        Map<String, Object> parserAdaptorProps = 
parserAdaptorMimeTypePropsMap.get(mimeType);
-                        
-                        if (parserAdaptorProps != null)
+                        for (Map.Entry<String, String []> entry : 
parserAdaptorProps.entrySet())
                         {
-                            for (Map.Entry<String, Object> entry : 
parserAdaptorProps.entrySet())
-                            {
-                                BeanUtils.setProperty(parserAdaptor, 
entry.getKey(), entry.getValue());
-                            }
+                            setBeanProperty(parserAdaptor, entry.getKey(), 
entry.getValue());
                         }
                     }
                 }
-                catch (InvocationTargetException e)
-                {
-                    throw new RuntimeException(e);
-                }
             }
             
             return parserAdaptor;
@@ -386,32 +365,32 @@
         return ruleset;
     }
     
-    public Map<String, Object> getBasicRewriterProps()
+    public Map<String, String []> getBasicRewriterProps()
     {
         return basicRewriterProps;
     }
     
-    public void setBasicRewriterProps(Map<String, Object> props)
+    public void setBasicRewriterProps(Map<String, String []> props)
     {
         basicRewriterProps = props;
     }
     
-    public Map<String, Object> getRulesetRewriterProps()
+    public Map<String, String []> getRulesetRewriterProps()
     {
         return rulesetRewriterProps;
     }
     
-    public void setRulesetRewriterProps(Map<String, Object> props)
+    public void setRulesetRewriterProps(Map<String, String []> props)
     {
         rulesetRewriterProps = props;
     }
     
-    public Map<String, Map<String, Object>> getParserAdaptorMimeTypePropsMap()
+    public Map<String, Map<String, String []>> 
getParserAdaptorMimeTypePropsMap()
     {
         return parserAdaptorMimeTypePropsMap;
     }
     
-    public void setParserAdaptorMimeTypePropsMap(Map<String, Map<String, 
Object>> propsMap)
+    public void setParserAdaptorMimeTypePropsMap(Map<String, Map<String, 
String []>> propsMap)
     {
         parserAdaptorMimeTypePropsMap = propsMap;
     }
@@ -420,5 +399,17 @@
     {
         return null;
     }
+    
+    private void setBeanProperty(Object bean, String propName, String [] 
propValues)
+    {
+        try
+        {
+            BeanUtils.setProperty(bean, propName, propValues);
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException(e);
+        }
+    }
 
 }
\ No newline at end of file

Modified: 
portals/applications/webcontent/trunk/webcontent-jar/src/test/java/org/apache/portals/applications/webcontent/proxy/TestReverseProxyLinkRewritingParserAaptor.java
URL: 
http://svn.apache.org/viewvc/portals/applications/webcontent/trunk/webcontent-jar/src/test/java/org/apache/portals/applications/webcontent/proxy/TestReverseProxyLinkRewritingParserAaptor.java?rev=832821&r1=832820&r2=832821&view=diff
==============================================================================
--- 
portals/applications/webcontent/trunk/webcontent-jar/src/test/java/org/apache/portals/applications/webcontent/proxy/TestReverseProxyLinkRewritingParserAaptor.java
 (original)
+++ 
portals/applications/webcontent/trunk/webcontent-jar/src/test/java/org/apache/portals/applications/webcontent/proxy/TestReverseProxyLinkRewritingParserAaptor.java
 Wed Nov  4 18:00:10 2009
@@ -25,6 +25,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import 
org.apache.portals.applications.webcontent.proxy.impl.DefaultHttpReverseProxyPathMapperImpl;
@@ -59,6 +60,7 @@
         "href=\"http://www.localhost.com/manager/list\";>Application 
Management</a></p>\n" +
         "<p><a href=\"https://blogs.apache.org/index.html\";>Apache 
Blogs</a></p>\n" +
         "<p><a href=\"http://apache.org/index.html\";>Apache Software 
Foundation</a></p>\n" +
+        "<script>new AjaxUpdate('/lazyLoader');</script>\n" +
         "</html>";
     
     private HttpReverseProxyPathMapperProvider proxyPathMapperProvider;
@@ -96,6 +98,12 @@
         DefaultReverseProxyLinkRewritingParserAaptor parserAdaptor = new 
DefaultReverseProxyLinkRewritingParserAaptor();
         parserAdaptor.setReverseProxyRewritingContext(rewritingContext);
         
+        parserAdaptor.setLookUpAllMappings(false);
+        BeanUtils.setProperty(parserAdaptor, "lookUpAllMappings", new String 
[] { "true" });
+        assertTrue(parserAdaptor.getLookUpAllMappings());
+        BeanUtils.setProperty(parserAdaptor, "customPatterns", new String [] { 
"\\/lazyLoader" });
+        BeanUtils.setProperty(parserAdaptor, "customReplaces", new String [] { 
"/busyLoader" });
+        
         StringReader reader = new StringReader(html);
         StringWriter writer = new StringWriter();
         parserAdaptor.rewrite(null, reader, writer);
@@ -119,6 +127,7 @@
         assertTrue("Wrong rewriting: " + lines.get(9), 
StringUtils.contains(lines.get(9), 
"href=\"/webcontent/rproxy/localhost/manager/list\""));
         assertTrue("Wrong rewriting: " + lines.get(10), 
StringUtils.contains(lines.get(10), 
"href=\"/webcontent/rproxy/secure/blogs_apache/index.html\""));
         assertTrue("Wrong rewriting: " + lines.get(11), 
StringUtils.contains(lines.get(11), 
"href=\"/webcontent/rproxy/apache/index.html\""));
+        assertTrue("Wrong rewriting: " + lines.get(12), 
StringUtils.contains(lines.get(12), "new AjaxUpdate('/busyLoader');"));
     }
     
 }


Reply via email to