[jboss-cvs] JBossAS SVN: r93370 - in projects/metadata/web/trunk/src: test/java/org/jboss/test/metadata/web and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 10 13:19:51 EDT 2009


Author: remy.maucherat at jboss.com
Date: 2009-09-10 13:19:51 -0400 (Thu, 10 Sep 2009)
New Revision: 93370

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/WebFragmentMetaData.java
   projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java
   projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java
   projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java
   projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp5Everything_testEverything.xml
   projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml
Log:
- Continue the design.
- Will have to add boolean flags for most unique simple types to be able to check for conflicts when augmenting :(

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-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/SessionConfigMetaData.java	2009-09-10 17:19:51 UTC (rev 93370)
@@ -39,7 +39,8 @@
 public class SessionConfigMetaData extends IdMetaDataImpl
 {
    private static final long serialVersionUID = 1;
-   private int sessionTimeout;
+   private int sessionTimeout = 30;
+   private boolean sessionTimeoutSet = false;
    private CookieConfigMetaData cookieConfig;
    private List<SessionTrackingModeType> sessionTrackingModes;
 
@@ -50,6 +51,7 @@
    @XmlElement(name = "session-timeout")
    public void setSessionTimeout(int sessionTimeout)
    {
+      sessionTimeoutSet = true;
       this.sessionTimeout = sessionTimeout;
    }
 
@@ -71,5 +73,19 @@
       this.sessionTrackingModes = sessionTrackingModes;
    }
 
-   
+   /**
+    * Merge web meta data, according to the merging rules specified by the Servlet 3.0
+    * specification. This is a special type of merging, where non conflicting meta data
+    * augment existing meta data, rather than overriding it.
+    * If there is a conflict when merging the fragment meta data, and the main
+    * webMetaData does not resolve the conflict, an error will be thrown. 
+    * 
+    * @param webFragmentMetaData The web meta data which will be merged into this one
+    * @param webMetaData The base web meta data, used for conflict error checking
+    */
+   public void augment(SessionConfigMetaData webFragmentMetaData, SessionConfigMetaData webMetaData)
+   {
+      
+   }
+
 }

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-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java	2009-09-10 17:19:51 UTC (rev 93370)
@@ -21,7 +21,12 @@
  */
 package org.jboss.metadata.web.spec;
 
+import java.util.ArrayList;
+import java.util.List;
 
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
+
+
 /**
  * The web-fragment spec metadata
  * @author Scott.Stark at jboss.org
@@ -54,7 +59,65 @@
     */
    public void augment(WebFragmentMetaData webFragmentMetaData, WebMetaData webMetaData)
    {
+
+      // Distributable
+      if (getDistributable() == null || webFragmentMetaData.getDistributable() == null)
+      {
+         setDistributable(null);
+      }
       
+      // Context params
+      if (getContextParams() == null)
+      {
+         setContextParams(webFragmentMetaData.getContextParams());
+      }
+      else if (webFragmentMetaData.getContextParams() != null)
+      {
+         List<ParamValueMetaData> mergedContextParams = new ArrayList<ParamValueMetaData>();
+         for (ParamValueMetaData contextParam : webFragmentMetaData.getContextParams())
+         {
+            // Check for a conflict
+            for (ParamValueMetaData check : getContextParams())
+            {
+               if (check.getParamName().equals(contextParam.getParamName()) &&
+                     !check.getParamValue().equals(contextParam.getParamValue()))
+               {
+                  // If the parameter name does not exist in the main web, it's an error
+                  if (webMetaData.getContextParams() != null)
+                  {
+                     boolean found = false;
+                     for (ParamValueMetaData check1 : webMetaData.getContextParams())
+                     {
+                        if (check1.getParamName().equals(check.getParamName()))
+                        {
+                           found = true;
+                           break;
+                        }
+                     }
+                     if (!found)
+                        throw new IllegalStateException("Conflict on init parameter: " + check.getParamName());
+                  }
+               }
+            }
+            mergedContextParams.add(contextParam);
+         }
+         for (ParamValueMetaData contextParam : getContextParams())
+         {
+            mergedContextParams.add(contextParam);
+         }
+         setContextParams(mergedContextParams);
+      }
+      
+      // Session config
+      if (getSessionConfig() == null)
+      {
+         setSessionConfig(webFragmentMetaData.getSessionConfig());
+      }
+      else if (webFragmentMetaData.getSessionConfig() != null)
+      {
+         getSessionConfig().augment(webFragmentMetaData.getSessionConfig(), webMetaData.getSessionConfig());
+      }
+      
    }
 
 }

Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java	2009-09-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebMetaData.java	2009-09-10 17:19:51 UTC (rev 93370)
@@ -33,14 +33,11 @@
 
    /**
     * Merge web meta data, according to the merging rules specified by the Servlet 3.0
-    * specification. This is a special type of merging, where non conflicting meta data
-    * augment existing meta data, rather than overriding it.
-    * When merging the fragment meta data, any conflict will be resolved ignoring the
-    * fragment meta data.
+    * specification.
     * 
     * @param webFragmentMetaData The web meta data which will be merged into this one
     */
-   public void augment(WebFragmentMetaData webFragmentMetaData)
+   public void merge(WebFragmentMetaData webFragmentMetaData)
    {
       
    }

Modified: projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java
===================================================================
--- projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java	2009-09-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp5EverythingUnitTestCase.java	2009-09-10 17:19:51 UTC (rev 93370)
@@ -84,6 +84,8 @@
       assertFilters(webApp);
       assertFilterMappings(webApp);
       assertSecurityConstraints(webApp);
+      assertNotNull("no session config set", webApp.getSessionConfig());
+      assertEquals(-1, webApp.getSessionConfig().getSessionTimeout());
    }
 
    private void assertMessageDestinations5(String prefix, int size, MessageDestinationsMetaData messageDestinations, boolean full)

Modified: projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java
===================================================================
--- projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java	2009-09-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/test/java/org/jboss/test/metadata/web/WebApp6EverythingUnitTestCase.java	2009-09-10 17:19:51 UTC (rev 93370)
@@ -90,6 +90,8 @@
       assertFilterMappings(webApp);
       assertSecurityConstraints(webApp);
       assertAbsoluteOrdering(webApp);
+      assertNotNull("no session config set", webApp.getSessionConfig());
+      assertEquals(30, webApp.getSessionConfig().getSessionTimeout());
    }
 
    protected void assertAbsoluteOrdering(WebMetaData webApp)

Modified: projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp5Everything_testEverything.xml
===================================================================
--- projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp5Everything_testEverything.xml	2009-09-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp5Everything_testEverything.xml	2009-09-10 17:19:51 UTC (rev 93370)
@@ -145,7 +145,7 @@
     </servlet-mapping>
 
     <session-config id="session-config0">
-       <session-timeout>30</session-timeout>
+       <session-timeout>-1</session-timeout>
     </session-config>
 
     <mime-mapping id="mime-mapping0">

Modified: projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml
===================================================================
--- projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml	2009-09-10 17:06:07 UTC (rev 93369)
+++ projects/metadata/web/trunk/src/test/resources/org/jboss/test/metadata/web/WebApp6Everything_testEverything.xml	2009-09-10 17:19:51 UTC (rev 93370)
@@ -157,7 +157,6 @@
     </servlet-mapping>
 
     <session-config id="session-config0">
-       <session-timeout>30</session-timeout>
        <cookie-config>
           <name>session</name>
           <domain>.jboss.org</domain>




More information about the jboss-cvs-commits mailing list