[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