[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