[jboss-cvs] JBossAS SVN: r93436 - projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 11 18:20:54 EDT 2009


Author: remy.maucherat at jboss.com
Date: 2009-09-11 18:20:53 -0400 (Fri, 11 Sep 2009)
New Revision: 93436

Modified:
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMappingMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
Log:
- Fix some conflict checks.
- Continue the merge code for fragments.

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java	2009-09-11 20:59:57 UTC (rev 93435)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/CookieConfigMetaData.java	2009-09-11 22:20:53 UTC (rev 93436)
@@ -180,8 +180,9 @@
       }
       else
       {
-         if (webFragmentMetaData.httpOnlySet && 
-               (webMetaData == null || !webMetaData.httpOnlySet))
+         if (webFragmentMetaData.httpOnlySet 
+               && (getHttpOnly() != webFragmentMetaData.getHttpOnly())
+               && (webMetaData == null || !webMetaData.httpOnlySet))
          {
             throw new IllegalStateException("Unresolved conflict on http only");
          }
@@ -196,8 +197,9 @@
       }
       else
       {
-         if (webFragmentMetaData.secureSet && 
-               (webMetaData == null || !webMetaData.secureSet))
+         if (webFragmentMetaData.secureSet 
+               && (getSecure() != webFragmentMetaData.getSecure())
+               && (webMetaData == null || !webMetaData.secureSet))
          {
             throw new IllegalStateException("Unresolved conflict on secure");
          }
@@ -212,8 +214,9 @@
       }
       else
       {
-         if (webFragmentMetaData.maxAgeSet && 
-               (webMetaData == null || !webMetaData.maxAgeSet))
+         if (webFragmentMetaData.maxAgeSet 
+               && (getMaxAge() != webFragmentMetaData.getMaxAge())
+               && (webMetaData == null || !webMetaData.maxAgeSet))
          {
             throw new IllegalStateException("Unresolved conflict on max age");
          }

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMappingMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMappingMetaData.java	2009-09-11 20:59:57 UTC (rev 93435)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMappingMetaData.java	2009-09-11 22:20:53 UTC (rev 93436)
@@ -22,6 +22,7 @@
 package org.jboss.metadata.web.spec;
 
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlElement;
@@ -81,4 +82,90 @@
       this.dispatchers = dispatchers;
    }
 
+   public void augment(FilterMappingMetaData webFragmentMetaData, FilterMappingMetaData webMetaData)
+   {
+      // Note: as this is purely additive, webMetaData is useless
+      // Url pattern
+      if (getUrlPatterns() == null)
+      {
+         setUrlPatterns(webFragmentMetaData.getUrlPatterns());
+      }
+      else if (webFragmentMetaData.getUrlPatterns() != null)
+      {
+         List<String> mergedUrlPatterns = new ArrayList<String>();
+         for (String urlPattern : webFragmentMetaData.getUrlPatterns())
+         {
+            boolean found = false;
+            for (String check : getUrlPatterns())
+            {
+               if (check.equals(urlPattern))
+               {
+                  found = true;
+               }
+            }
+            if (!found)
+               mergedUrlPatterns.add(urlPattern);
+         }
+         for (String urlPattern : getUrlPatterns())
+         {
+            mergedUrlPatterns.add(urlPattern);
+         }
+         setUrlPatterns(mergedUrlPatterns);
+      }
+      // Servlet names
+      if (getServletNames() == null)
+      {
+         setServletNames(webFragmentMetaData.getServletNames());
+      }
+      else if (webFragmentMetaData.getServletNames() != null)
+      {
+         List<String> mergedServletNames = new ArrayList<String>();
+         for (String servletName : webFragmentMetaData.getServletNames())
+         {
+            boolean found = false;
+            for (String check : getServletNames())
+            {
+               if (check.equals(servletName))
+               {
+                  found = true;
+               }
+            }
+            if (!found)
+               mergedServletNames.add(servletName);
+         }
+         for (String servletName : getServletNames())
+         {
+            mergedServletNames.add(servletName);
+         }
+         setServletNames(mergedServletNames);
+      }
+      // Dispatchers
+      if (getDispatchers() == null)
+      {
+         setDispatchers(webFragmentMetaData.getDispatchers());
+      }
+      else if (webFragmentMetaData.getDispatchers() != null)
+      {
+         List<DispatcherType> mergedDispatchers = new ArrayList<DispatcherType>();
+         for (DispatcherType dispatcher : webFragmentMetaData.getDispatchers())
+         {
+            boolean found = false;
+            for (DispatcherType check : getDispatchers())
+            {
+               if (check.equals(dispatcher))
+               {
+                  found = true;
+               }
+            }
+            if (!found)
+               mergedDispatchers.add(dispatcher);
+         }
+         for (DispatcherType dispatcher : getDispatchers())
+         {
+            mergedDispatchers.add(dispatcher);
+         }
+         setDispatchers(mergedDispatchers);
+      }
+   }
+   
 }

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMetaData.java	2009-09-11 20:59:57 UTC (rev 93435)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMetaData.java	2009-09-11 22:20:53 UTC (rev 93436)
@@ -21,6 +21,7 @@
  */
 package org.jboss.metadata.web.spec;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlType;
@@ -44,6 +45,7 @@
    /** The filter init-params */
    private List<ParamValueMetaData> initParam;
    private boolean asyncSupported = false;
+   private boolean asyncSupportedSet = false;
 
    public String getFilterName()
    {
@@ -81,6 +83,87 @@
    public void setAsyncSupported(boolean asyncSupported)
    {
       this.asyncSupported = asyncSupported;
+      asyncSupportedSet = true;
    }
 
+   public void augment(FilterMetaData webFragmentMetaData, FilterMetaData webMetaData)
+   {
+      // Filter class
+      if (getFilterClass() == null)
+      {
+         setFilterClass(webFragmentMetaData.getFilterClass());
+      }
+      else if (webFragmentMetaData.getFilterClass() != null)
+      {
+         if (!getFilterClass().equals(webFragmentMetaData.getFilterClass()) 
+               && (webMetaData == null || webMetaData.getFilterClass() == null))
+         {
+            throw new IllegalStateException("Unresolved conflict on filter class for filter: " + getName());
+         }
+      }
+      // Init params
+      if (getInitParam() == null)
+      {
+         setInitParam(webFragmentMetaData.getInitParam());
+      }
+      else if (webFragmentMetaData.getInitParam() != null)
+      {
+         List<ParamValueMetaData> mergedInitParams = new ArrayList<ParamValueMetaData>();
+         for (ParamValueMetaData initParam : webFragmentMetaData.getInitParam())
+         {
+            boolean found = false;
+            for (ParamValueMetaData check : getInitParam())
+            {
+               if (check.getParamName().equals(initParam.getParamName()))
+               {
+                  found = true;
+                  // Check for a conflict
+                  if (!check.getParamValue().equals(initParam.getParamValue()))
+                  {
+                     // If the parameter name does not exist in the main web, it's an error
+                     if (webMetaData.getInitParam() != null)
+                     {
+                        boolean found2 = false;
+                        for (ParamValueMetaData check1 : webMetaData.getInitParam())
+                        {
+                           if (check1.getParamName().equals(check.getParamName()))
+                           {
+                              found2 = true;
+                              break;
+                           }
+                        }
+                        if (!found2)
+                           throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
+                     }
+                  }
+               }
+            }
+            if (!found)
+               mergedInitParams.add(initParam);
+         }
+         for (ParamValueMetaData initParam : getInitParam())
+         {
+            mergedInitParams.add(initParam);
+         }
+         setInitParam(mergedInitParams);
+      }
+      // Async supported
+      if (!asyncSupportedSet)
+      {
+         if (webFragmentMetaData.asyncSupportedSet)
+         {
+            setAsyncSupported(webFragmentMetaData.isAsyncSupported());
+         }
+      }
+      else
+      {
+         if (webFragmentMetaData.asyncSupportedSet 
+               && (isAsyncSupported() != webFragmentMetaData.isAsyncSupported())
+               && (webMetaData == null || !webMetaData.asyncSupportedSet))
+         {
+            throw new IllegalStateException("Unresolved conflict on async supportedSet");
+         }
+      }
+   }
+   
 }

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java	2009-09-11 20:59:57 UTC (rev 93435)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FiltersMetaData.java	2009-09-11 22:20:53 UTC (rev 93436)
@@ -37,7 +37,18 @@
    
    public void augment(FiltersMetaData webFragmentMetaData, FiltersMetaData webMetaData)
    {
-      // TODO
+      for (FilterMetaData filterMetaData : webFragmentMetaData)
+      {
+         if (containsKey(filterMetaData.getKey()))
+         {
+            get(filterMetaData.getKey()).augment(filterMetaData, 
+                  (webMetaData != null) ? webMetaData.get(filterMetaData.getKey()) : null);
+         }
+         else
+         {
+            add(filterMetaData);
+         }
+      }
    }
    
 }

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java	2009-09-11 20:59:57 UTC (rev 93435)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java	2009-09-11 22:20:53 UTC (rev 93436)
@@ -95,8 +95,9 @@
       }
       else
       {
-         if (webFragmentMetaData.sessionTimeoutSet && 
-               (webMetaData == null || !webMetaData.sessionTimeoutSet))
+         if (webFragmentMetaData.sessionTimeoutSet 
+               && (getSessionTimeout() != webFragmentMetaData.getSessionTimeout())
+               && (webMetaData == null || !webMetaData.sessionTimeoutSet))
          {
             throw new IllegalStateException("Unresolved conflict on session timeout");
          }

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java	2009-09-11 20:59:57 UTC (rev 93435)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java	2009-09-11 22:20:53 UTC (rev 93436)
@@ -76,30 +76,35 @@
          List<ParamValueMetaData> mergedContextParams = new ArrayList<ParamValueMetaData>();
          for (ParamValueMetaData contextParam : webFragmentMetaData.getContextParams())
          {
-            // Check for a conflict
+            boolean found = false;
             for (ParamValueMetaData check : getContextParams())
             {
-               if (check.getParamName().equals(contextParam.getParamName()) &&
-                     !check.getParamValue().equals(contextParam.getParamValue()))
+               if (check.getParamName().equals(contextParam.getParamName()))
                {
-                  // If the parameter name does not exist in the main web, it's an error
-                  if (webMetaData.getContextParams() != null)
+                  found = true;
+                  // Check for a conflict
+                  if (!check.getParamValue().equals(contextParam.getParamValue()))
                   {
-                     boolean found = false;
-                     for (ParamValueMetaData check1 : webMetaData.getContextParams())
+                     // If the parameter name does not exist in the main web, it's an error
+                     if (webMetaData.getContextParams() != null)
                      {
-                        if (check1.getParamName().equals(check.getParamName()))
+                        boolean found2 = false;
+                        for (ParamValueMetaData check1 : webMetaData.getContextParams())
                         {
-                           found = true;
-                           break;
+                           if (check1.getParamName().equals(check.getParamName()))
+                           {
+                              found2 = true;
+                              break;
+                           }
                         }
+                        if (!found2)
+                           throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
                      }
-                     if (!found)
-                        throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
                   }
                }
             }
-            mergedContextParams.add(contextParam);
+            if (!found)
+               mergedContextParams.add(contextParam);
          }
          for (ParamValueMetaData contextParam : getContextParams())
          {
@@ -128,6 +133,38 @@
          getFilters().augment(webFragmentMetaData.getFilters(), webMetaData.getFilters());
       }
       
+      // Filter mappings
+      if (getFilterMappings() == null)
+      {
+         setFilterMappings(webFragmentMetaData.getFilterMappings());
+      }
+      else if (webFragmentMetaData.getFilterMappings() != null)
+      {
+         List<FilterMappingMetaData> mergedFilterMappings = new ArrayList<FilterMappingMetaData>();
+         for (FilterMappingMetaData filterMapping : webFragmentMetaData.getFilterMappings())
+         {
+            boolean found = false;
+            for (FilterMappingMetaData check : getFilterMappings())
+            {
+               if (check.getFilterName().equals(filterMapping.getFilterName()))
+               {
+                  found = true;
+                  check.augment(filterMapping, null);
+               }
+            }
+            if (!found)
+               mergedFilterMappings.add(filterMapping);
+         }
+         for (FilterMappingMetaData filterMapping : getFilterMappings())
+         {
+            mergedFilterMappings.add(filterMapping);
+         }
+         setFilterMappings(mergedFilterMappings);
+      }
+      
+      // Error page
+      // TODO
+      
    }
 
 }




More information about the jboss-cvs-commits mailing list