[jboss-cvs] JBossAS SVN: r79176 - trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Oct 7 03:49:58 EDT 2008


Author: emuckenhuber
Date: 2008-10-07 03:49:58 -0400 (Tue, 07 Oct 2008)
New Revision: 79176

Modified:
   trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
Log:
[JBAS-6041] override default context-params

Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java	2008-10-07 06:02:18 UTC (rev 79175)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java	2008-10-07 07:49:58 UTC (rev 79176)
@@ -109,6 +109,7 @@
    protected void applicationWebConfig()
    {
       processWebMetaData(metaDataLocal.get());
+      processContextParameters();
    }
 
    @Override
@@ -144,15 +145,7 @@
       else
          context.setPublicId(org.apache.catalina.startup.Constants.WebDtdPublicId_22);
 
-      // Context params
-      List<ParamValueMetaData> params = metaData.getContextParams();
-      if (params != null)
-      {
-         for (ParamValueMetaData param : params)
-         {
-            context.addParameter(param.getParamName(), param.getParamValue());
-         }
-      }
+      // processContextParameters() provides a merged view of the context params 
 
       // Display name
       DescriptionGroupMetaData dg = metaData.getDescriptionGroup();
@@ -343,7 +336,7 @@
             {
                wrapper.setRunAs(value.getRunAs().getRoleName());
             }
-            params = value.getInitParam();
+            List<ParamValueMetaData> params = value.getInitParam();
             if (params != null)
             {
                for (ParamValueMetaData param : params)
@@ -473,6 +466,44 @@
    {
       return (Properties) new InitialContext().lookup("TomcatAuthenticators");
    }
+   
+   /**
+    * Process the context parameters. Let a user application
+    * override the sharedMetaData values.
+    */
+   protected void processContextParameters()
+   {
+      JBossWebMetaData local = metaDataLocal.get();
+      JBossWebMetaData shared = metaDataShared.get();
+      
+      Map<String, String> overrideParams = new HashMap<String, String>();
+      
+      List<ParamValueMetaData> params = local.getContextParams();
+      if (params != null)
+      {
+         for (ParamValueMetaData param : params)
+         {
+            overrideParams.put(param.getParamName(), param.getParamValue());
+         }
+      }
+      params = shared.getContextParams();
+      if (params != null)
+      {
+         for (ParamValueMetaData param : params)
+         {
+            if(overrideParams.get(param.getParamName()) == null)
+            {
+               overrideParams.put(param.getParamName(), param.getParamValue());
+            }
+         }
+      }      
+      
+      for(String key : overrideParams.keySet())
+      {
+         context.addParameter(key, overrideParams.get(key));
+      }
+      
+   }
 
    protected void destroy() {
 	   if (runDestroy) {




More information about the jboss-cvs-commits mailing list