[jboss-cvs] JBossAS SVN: r93499 - 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
Mon Sep 14 15:03:19 EDT 2009
Author: remy.maucherat at jboss.com
Date: 2009-09-14 15:03:18 -0400 (Mon, 14 Sep 2009)
New Revision: 93499
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/JspConfigMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/LoginConfigMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/MultipartConfigMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMappingMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletsMetaData.java
projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java
Log:
- More augment implementation.
- Skip JSP property group for now.
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-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/FilterMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -121,9 +121,9 @@
if (!check.getParamValue().equals(initParam.getParamValue()))
{
// If the parameter name does not exist in the main web, it's an error
+ boolean found2 = false;
if (webMetaData.getInitParam() != null)
{
- boolean found2 = false;
for (ParamValueMetaData check1 : webMetaData.getInitParam())
{
if (check1.getParamName().equals(check.getParamName()))
@@ -132,9 +132,9 @@
break;
}
}
- if (!found2)
- throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
}
+ if (!found2)
+ throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
}
}
}
@@ -161,7 +161,7 @@
&& (isAsyncSupported() != webFragmentMetaData.isAsyncSupported())
&& (webMetaData == null || !webMetaData.asyncSupportedSet))
{
- throw new IllegalStateException("Unresolved conflict on async supportedSet");
+ throw new IllegalStateException("Unresolved conflict on async supported");
}
}
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/JspConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/JspConfigMetaData.java 2009-09-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/JspConfigMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -21,6 +21,7 @@
*/
package org.jboss.metadata.web.spec;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
@@ -60,4 +61,79 @@
this.propertyGroups = propertyGroups;
}
+ public void augment(JspConfigMetaData webFragmentMetaData, JspConfigMetaData webMetaData)
+ {
+ // Taglib
+ if (getTaglibs() == null)
+ {
+ setTaglibs(webFragmentMetaData.getTaglibs());
+ }
+ else if (webFragmentMetaData.getTaglibs() != null)
+ {
+ List<TaglibMetaData> mergedTaglibs = new ArrayList<TaglibMetaData>();
+ for (TaglibMetaData taglib : webFragmentMetaData.getTaglibs())
+ {
+ boolean found = false;
+ for (TaglibMetaData check : getTaglibs())
+ {
+ if (check.getTaglibUri().equals(taglib.getTaglibUri()))
+ {
+ found = true;
+ // Check for a conflict
+ if (!check.getTaglibLocation().equals(taglib.getTaglibLocation()))
+ {
+ // If the parameter name does not exist in the main web, it's an error
+ boolean found2 = false;
+ if (webMetaData.getTaglibs() != null)
+ {
+ for (TaglibMetaData check1 : webMetaData.getTaglibs())
+ {
+ if (check1.getTaglibUri().equals(check.getTaglibUri()))
+ {
+ found2 = true;
+ break;
+ }
+ }
+ }
+ if (!found2)
+ throw new IllegalStateException("Unresolved conflict on taglib uri: " + check.getTaglibUri());
+ }
+ }
+ }
+ if (!found)
+ mergedTaglibs.add(taglib);
+ }
+ for (TaglibMetaData taglib : getTaglibs())
+ {
+ mergedTaglibs.add(taglib);
+ }
+ setTaglibs(mergedTaglibs);
+ }
+
+ // JSP property group
+ if (getPropertyGroups() == null)
+ {
+ setPropertyGroups(webFragmentMetaData.getPropertyGroups());
+ }
+ else if (webFragmentMetaData.getPropertyGroups() != null)
+ {
+ // TODO: conflict detection (maybe if there's a url pattern in common between two
+ // property groups ?)
+ // TODO: possible method: add to a temp map keyed by pattern
+ List<JspPropertyGroupMetaData> mergedPropertyGroups = new ArrayList<JspPropertyGroupMetaData>();
+ for (JspPropertyGroupMetaData propertyGroup : webFragmentMetaData.getPropertyGroups())
+ {
+ // TODO: conflict check here, and augment in JspPropertyGroupMetaData
+ // Very complex: single elements conflict (lots of them ...), include prelude and coda
+ // should be additive
+ mergedPropertyGroups.add(propertyGroup);
+ }
+ for (JspPropertyGroupMetaData propertyGroup : getPropertyGroups())
+ {
+ mergedPropertyGroups.add(propertyGroup);
+ }
+ setPropertyGroups(mergedPropertyGroups);
+ }
+ }
+
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/LoginConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/LoginConfigMetaData.java 2009-09-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/LoginConfigMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -67,4 +67,49 @@
{
this.formLoginConfig = formLoginConfig;
}
+
+ public void augment(LoginConfigMetaData webFragmentMetaData, LoginConfigMetaData webMetaData)
+ {
+ if (getAuthMethod() == null)
+ {
+ setAuthMethod(webFragmentMetaData.getAuthMethod());
+ }
+ else if (webFragmentMetaData.getAuthMethod() != null)
+ {
+ if (!getAuthMethod().equals(webFragmentMetaData.getAuthMethod())
+ && (webMetaData == null || webMetaData.getAuthMethod() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on auth method: " + getAuthMethod());
+ }
+ }
+ if (getRealmName() == null)
+ {
+ setRealmName(webFragmentMetaData.getRealmName());
+ }
+ else if (webFragmentMetaData.getRealmName() != null)
+ {
+ if (!getRealmName().equals(webFragmentMetaData.getRealmName())
+ && (webMetaData == null || webMetaData.getRealmName() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on realm name: " + getRealmName());
+ }
+ }
+ if (getFormLoginConfig() == null)
+ {
+ setFormLoginConfig(webFragmentMetaData.getFormLoginConfig());
+ }
+ else if (webFragmentMetaData.getFormLoginConfig() != null)
+ {
+ if ((getFormLoginConfig().getErrorPage() != null
+ && !getFormLoginConfig().getErrorPage().equals(webFragmentMetaData.getFormLoginConfig().getErrorPage()))
+ || (getFormLoginConfig().getLoginPage() != null
+ && !getFormLoginConfig().getLoginPage().equals(webFragmentMetaData.getFormLoginConfig().getLoginPage())))
+ {
+ if (webMetaData == null || webMetaData.getFormLoginConfig() == null)
+ {
+ throw new IllegalStateException("Unresolved conflict on form login config");
+ }
+ }
+ }
+ }
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/MultipartConfigMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/MultipartConfigMetaData.java 2009-09-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/MultipartConfigMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -35,10 +35,13 @@
{
private static final long serialVersionUID = 1;
- private String location = "";
+ private String location = null;
private long maxFileSize = -1L;
+ private boolean maxFileSizeSet = false;
private long maxRequestSize = -1L;
+ private boolean maxRequestSizeSet = false;
private int fileSizeThreshold = 0;
+ private boolean fileSizeThresholdSet = false;
public String getLocation()
{
@@ -56,6 +59,7 @@
public void setMaxFileSize(long maxFileSize)
{
this.maxFileSize = maxFileSize;
+ maxFileSizeSet = true;
}
public long getMaxRequestSize()
@@ -65,6 +69,7 @@
public void setMaxRequestSize(long maxRequestSize)
{
this.maxRequestSize = maxRequestSize;
+ maxRequestSizeSet = true;
}
public int getFileSizeThreshold()
@@ -74,6 +79,75 @@
public void setFileSizeThreshold(int fileSizeThreshold)
{
this.fileSizeThreshold = fileSizeThreshold;
+ fileSizeThresholdSet = true;
}
+ public void augment(MultipartConfigMetaData webFragmentMetaData, MultipartConfigMetaData webMetaData)
+ {
+ // Location
+ if (getLocation() == null)
+ {
+ setLocation(webFragmentMetaData.getLocation());
+ }
+ else if (webFragmentMetaData.getLocation() != null)
+ {
+ if (!getLocation().equals(webFragmentMetaData.getLocation())
+ && (webMetaData == null || webMetaData.getLocation() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on location: " + getLocation());
+ }
+ }
+ // Max file size
+ if (!maxFileSizeSet)
+ {
+ if (webFragmentMetaData.maxFileSizeSet)
+ {
+ setMaxFileSize(webFragmentMetaData.getMaxFileSize());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.maxFileSizeSet
+ && (getMaxFileSize() != webFragmentMetaData.getMaxFileSize())
+ && (webMetaData == null || !webMetaData.maxFileSizeSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on max file size");
+ }
+ }
+ // Max request size
+ if (!maxRequestSizeSet)
+ {
+ if (webFragmentMetaData.maxRequestSizeSet)
+ {
+ setMaxRequestSize(webFragmentMetaData.getMaxRequestSize());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.maxRequestSizeSet
+ && (getMaxRequestSize() != webFragmentMetaData.getMaxRequestSize())
+ && (webMetaData == null || !webMetaData.maxRequestSizeSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on max request size");
+ }
+ }
+ // File size threshold
+ if (!fileSizeThresholdSet)
+ {
+ if (webFragmentMetaData.fileSizeThresholdSet)
+ {
+ setFileSizeThreshold(webFragmentMetaData.getFileSizeThreshold());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.fileSizeThresholdSet
+ && (getFileSizeThreshold() != webFragmentMetaData.getFileSizeThreshold())
+ && (webMetaData == null || !webMetaData.fileSizeThresholdSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on file size threshold");
+ }
+ }
+ }
+
}
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMappingMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMappingMetaData.java 2009-09-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMappingMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -21,6 +21,7 @@
*/
package org.jboss.metadata.web.spec;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
@@ -60,6 +61,38 @@
this.urlPatterns = urlPatterns;
}
+ public void augment(ServletMappingMetaData webFragmentMetaData, ServletMappingMetaData 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);
+ }
+ }
+
public String toString()
{
StringBuilder tmp = new StringBuilder("ServletMappingMetaData(id=");
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMetaData.java 2009-09-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -21,6 +21,7 @@
*/
package org.jboss.metadata.web.spec;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
@@ -28,6 +29,7 @@
import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.javaee.spec.RunAsMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
import org.jboss.metadata.javaee.support.MergeableMetaData;
import org.jboss.metadata.javaee.support.NamedMetaDataWithDescriptionGroup;
@@ -54,11 +56,14 @@
/** The servlet init-params */
private List<ParamValueMetaData> initParam;
private int loadOnStartup = loadOnStartupDefault;
+ private boolean loadOnStartupSet = false;
private RunAsMetaData runAs;
/** The security role ref */
private SecurityRoleRefsMetaData securityRoleRefs;
private boolean asyncSupported = asyncSupportedDefault;
+ private boolean asyncSupportedSet = false;
private boolean enabled = enabledDefault;
+ private boolean enabledSet = false;
private MultipartConfigMetaData multipartConfig;
public String getServletName()
@@ -102,6 +107,7 @@
public void setLoadOnStartup(int loadOnStartup)
{
this.loadOnStartup = loadOnStartup;
+ loadOnStartupSet = true;
}
public RunAsMetaData getRunAs()
{
@@ -127,6 +133,7 @@
public void setAsyncSupported(boolean asyncSupported)
{
this.asyncSupported = asyncSupported;
+ asyncSupportedSet = true;
}
public boolean isEnabled()
{
@@ -135,6 +142,7 @@
public void setEnabled(boolean enabled)
{
this.enabled = enabled;
+ enabledSet = true;
}
public MultipartConfigMetaData getMultipartConfig()
@@ -193,6 +201,187 @@
setMultipartConfig(original.multipartConfig);
}
+ public void augment(ServletMetaData webFragmentMetaData, ServletMetaData webMetaData)
+ {
+ // Servlet class
+ if (getServletClass() == null)
+ {
+ setServletClass(webFragmentMetaData.getServletClass());
+ }
+ else if (webFragmentMetaData.getServletClass() != null)
+ {
+ if (!getServletClass().equals(webFragmentMetaData.getServletClass())
+ && (webMetaData == null || webMetaData.getServletClass() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on servlet class: " + getServletClass());
+ }
+ }
+ // Jsp file
+ if (getJspFile() == null)
+ {
+ setJspFile(webFragmentMetaData.getJspFile());
+ }
+ else if (webFragmentMetaData.getJspFile() != null)
+ {
+ if (!getJspFile().equals(webFragmentMetaData.getJspFile())
+ && (webMetaData == null || webMetaData.getJspFile() == null))
+ {
+ throw new IllegalStateException("Unresolved conflict on jsp file: " + getJspFile());
+ }
+ }
+ // 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
+ boolean found2 = false;
+ if (webMetaData.getInitParam() != null)
+ {
+ 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);
+ }
+ // Load on startup
+ if (!loadOnStartupSet)
+ {
+ if (webFragmentMetaData.loadOnStartupSet)
+ {
+ setLoadOnStartup(webFragmentMetaData.getLoadOnStartup());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.loadOnStartupSet
+ && (getLoadOnStartup() != webFragmentMetaData.getLoadOnStartup())
+ && (webMetaData == null || !webMetaData.loadOnStartupSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on load on startup");
+ }
+ }
+ // Run as
+ if (getRunAs() == null)
+ {
+ setRunAs(webFragmentMetaData.getRunAs());
+ }
+ else if (webFragmentMetaData.getRunAs() != null)
+ {
+ if (getRunAs().getRoleName() != null
+ && !getRunAs().getRoleName().equals(webFragmentMetaData.getRunAs().getRoleName()))
+ {
+ if (webMetaData == null || webMetaData.getRunAs() == null)
+ {
+ throw new IllegalStateException("Unresolved conflict on run as role name");
+ }
+ }
+
+ }
+ // Security role ref
+ if (getSecurityRoleRefs() == null)
+ {
+ setSecurityRoleRefs(webFragmentMetaData.getSecurityRoleRefs());
+ }
+ else if (webFragmentMetaData.getSecurityRoleRefs() != null)
+ {
+ for (SecurityRoleRefMetaData securityRoleRef : webFragmentMetaData.getSecurityRoleRefs())
+ {
+ if (getSecurityRoleRefs().containsKey(securityRoleRef.getKey()))
+ {
+ SecurityRoleRefMetaData check = getSecurityRoleRefs().get(securityRoleRef.getKey());
+ if (check.getRoleLink() != null
+ && !check.getRoleLink().equals(securityRoleRef.getRoleLink()))
+ {
+ if (webMetaData == null || webMetaData.getSecurityRoleRefs() == null
+ || !webMetaData.getSecurityRoleRefs().containsKey(securityRoleRef.getKey()))
+ {
+ throw new IllegalStateException("Unresolved conflict on role ref: " + securityRoleRef.getKey());
+ }
+ }
+ }
+ else
+ {
+ getSecurityRoleRefs().add(securityRoleRef);
+ }
+ }
+ }
+ // 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 supported");
+ }
+ }
+ // Enabled
+ if (!enabledSet)
+ {
+ if (webFragmentMetaData.enabledSet)
+ {
+ setEnabled(webFragmentMetaData.isEnabled());
+ }
+ }
+ else
+ {
+ if (webFragmentMetaData.enabledSet
+ && (isEnabled() != webFragmentMetaData.isEnabled())
+ && (webMetaData == null || !webMetaData.enabledSet))
+ {
+ throw new IllegalStateException("Unresolved conflict on enabled");
+ }
+ }
+ // Multipart config
+ if (getMultipartConfig() == null)
+ {
+ setMultipartConfig(webFragmentMetaData.getMultipartConfig());
+ }
+ else if (webFragmentMetaData.getMultipartConfig() != null)
+ {
+ getMultipartConfig().augment(webFragmentMetaData.getMultipartConfig(), webMetaData.getMultipartConfig());
+ }
+ }
+
public String toString()
{
StringBuilder tmp = new StringBuilder("ServletMetaData(id=");
Modified: projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletsMetaData.java
===================================================================
--- projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletsMetaData.java 2009-09-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/ServletsMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -34,4 +34,21 @@
{
super("web app servlets");
}
+
+ public void augment(ServletsMetaData webFragmentMetaData, ServletsMetaData webMetaData)
+ {
+ for (ServletMetaData servletMetaData : webFragmentMetaData)
+ {
+ if (containsKey(servletMetaData.getKey()))
+ {
+ get(servletMetaData.getKey()).augment(servletMetaData,
+ (webMetaData != null) ? webMetaData.get(servletMetaData.getKey()) : null);
+ }
+ else
+ {
+ add(servletMetaData);
+ }
+ }
+ }
+
}
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-14 19:00:15 UTC (rev 93498)
+++ projects/metadata/web/trunk/src/main/java/org/jboss/metadata/web/spec/WebFragmentMetaData.java 2009-09-14 19:03:18 UTC (rev 93499)
@@ -86,9 +86,9 @@
if (!check.getParamValue().equals(contextParam.getParamValue()))
{
// If the parameter name does not exist in the main web, it's an error
+ boolean found2 = false;
if (webMetaData.getContextParams() != null)
{
- boolean found2 = false;
for (ParamValueMetaData check1 : webMetaData.getContextParams())
{
if (check1.getParamName().equals(check.getParamName()))
@@ -97,9 +97,9 @@
break;
}
}
- if (!found2)
- throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
}
+ if (!found2)
+ throw new IllegalStateException("Unresolved conflict on init parameter: " + check.getParamName());
}
}
}
@@ -163,8 +163,217 @@
}
// Error page
- // TODO
+ if (getErrorPages() == null)
+ {
+ setErrorPages(webFragmentMetaData.getErrorPages());
+ }
+ else if (webFragmentMetaData.getErrorPages() != null)
+ {
+ List<ErrorPageMetaData> mergedErrorPages = new ArrayList<ErrorPageMetaData>();
+ for (ErrorPageMetaData errorPage : webFragmentMetaData.getErrorPages())
+ {
+ boolean found = false;
+ for (ErrorPageMetaData check : getErrorPages())
+ {
+ if (check.getErrorCode() != null
+ && check.getErrorCode().equals(errorPage.getErrorCode()))
+ {
+ found = true;
+ if (check.getLocation() != null
+ && !check.getLocation().equals(errorPage.getLocation()))
+ {
+ boolean found2 = false;
+ if (webMetaData.getErrorPages() != null)
+ {
+ for (ErrorPageMetaData check1 : webMetaData.getErrorPages())
+ {
+ if (check1.getErrorCode() != null
+ && check1.getErrorCode().equals(check.getErrorCode()))
+ {
+ found2 = true;
+ break;
+ }
+ }
+ }
+ if (!found2)
+ throw new IllegalStateException("Unresolved conflict on error page for code: "
+ + errorPage.getErrorCode());
+ }
+ }
+ if (check.getExceptionType() != null
+ && check.getExceptionType().equals(errorPage.getExceptionType()))
+ {
+ found = true;
+ if (check.getLocation() != null
+ && !check.getLocation().equals(errorPage.getLocation()))
+ {
+ boolean found2 = false;
+ if (webMetaData.getErrorPages() != null)
+ {
+ for (ErrorPageMetaData check1 : webMetaData.getErrorPages())
+ {
+ if (check1.getExceptionType() != null
+ && check1.getExceptionType().equals(check.getExceptionType()))
+ {
+ found2 = true;
+ break;
+ }
+ }
+ }
+ if (!found2)
+ throw new IllegalStateException("Unresolved conflict on error page for exception type: "
+ + errorPage.getExceptionType());
+ }
+ }
+ }
+ if (!found)
+ mergedErrorPages.add(errorPage);
+ }
+ for (ErrorPageMetaData errorPage : getErrorPages())
+ {
+ mergedErrorPages.add(errorPage);
+ }
+ setErrorPages(mergedErrorPages);
+ }
+ // JSP config
+ if (getJspConfig() == null)
+ {
+ setJspConfig(webFragmentMetaData.getJspConfig());
+ }
+ else if (webFragmentMetaData.getJspConfig() != null)
+ {
+ getJspConfig().augment(webFragmentMetaData.getJspConfig(), webMetaData.getJspConfig());
+ }
+
+ // Listeners
+ if (getListeners() == null)
+ {
+ setListeners(webFragmentMetaData.getListeners());
+ }
+ else if (webFragmentMetaData.getListeners() != null)
+ {
+ List<ListenerMetaData> mergedListeners = new ArrayList<ListenerMetaData>();
+ for (ListenerMetaData listener : webFragmentMetaData.getListeners())
+ {
+ boolean found = false;
+ for (ListenerMetaData check : getListeners())
+ {
+ if (check.getListenerClass().equals(listener.getListenerClass()))
+ {
+ found = true;
+ }
+ }
+ if (!found)
+ mergedListeners.add(listener);
+ }
+ for (ListenerMetaData listener : getListeners())
+ {
+ mergedListeners.add(listener);
+ }
+ setListeners(mergedListeners);
+ }
+
+ // Login config
+ if (getLoginConfig() == null)
+ {
+ setLoginConfig(webFragmentMetaData.getLoginConfig());
+ }
+ else if (webFragmentMetaData.getLoginConfig() != null)
+ {
+ getLoginConfig().augment(webFragmentMetaData.getLoginConfig(), webMetaData.getLoginConfig());
+ }
+
+ // Mime mappings
+ if (getMimeMappings() == null)
+ {
+ setMimeMappings(webFragmentMetaData.getMimeMappings());
+ }
+ else if (webFragmentMetaData.getMimeMappings() != null)
+ {
+ List<MimeMappingMetaData> mergedMimeMappings = new ArrayList<MimeMappingMetaData>();
+ for (MimeMappingMetaData mimeMapping : webFragmentMetaData.getMimeMappings())
+ {
+ boolean found = false;
+ for (MimeMappingMetaData check : getMimeMappings())
+ {
+ if (check.getExtension().equals(mimeMapping.getExtension()))
+ {
+ found = true;
+ if (check.getMimeType() != null
+ && !check.getMimeType().equals(mimeMapping.getMimeType()))
+ {
+ boolean found2 = false;
+ if (webMetaData.getMimeMappings() != null)
+ {
+ for (MimeMappingMetaData check1 : webMetaData.getMimeMappings())
+ {
+ if (check1.getExtension() != null
+ && check1.getExtension().equals(check.getExtension()))
+ {
+ found2 = true;
+ break;
+ }
+ }
+ }
+ if (!found2)
+ throw new IllegalStateException("Unresolved conflict on mime mapping for extension: "
+ + mimeMapping.getExtension());
+ }
+ }
+ }
+ if (!found)
+ mergedMimeMappings.add(mimeMapping);
+ }
+ for (MimeMappingMetaData mimeMapping : getMimeMappings())
+ {
+ mergedMimeMappings.add(mimeMapping);
+ }
+ setMimeMappings(mergedMimeMappings);
+ }
+
+ // Servlets
+ if (getServlets() == null)
+ {
+ setServlets(webFragmentMetaData.getServlets());
+ }
+ else if (webFragmentMetaData.getServlets() != null)
+ {
+ getServlets().augment(webFragmentMetaData.getServlets(), webMetaData.getServlets());
+ }
+
+ // Servlet mappings
+ if (getServletMappings() == null)
+ {
+ setServletMappings(webFragmentMetaData.getServletMappings());
+ }
+ else if (webFragmentMetaData.getServletMappings() != null)
+ {
+ List<ServletMappingMetaData> mergedServletMappings = new ArrayList<ServletMappingMetaData>();
+ for (ServletMappingMetaData servletMapping : webFragmentMetaData.getServletMappings())
+ {
+ boolean found = false;
+ for (ServletMappingMetaData check : getServletMappings())
+ {
+ if (check.getServletName().equals(servletMapping.getServletName()))
+ {
+ found = true;
+ check.augment(servletMapping, null);
+ }
+ }
+ if (!found)
+ mergedServletMappings.add(servletMapping);
+ }
+ for (ServletMappingMetaData servletMapping : getServletMappings())
+ {
+ mergedServletMappings.add(servletMapping);
+ }
+ setServletMappings(mergedServletMappings);
+ }
+
+ // Security constraints
+
+
}
}
More information about the jboss-cvs-commits
mailing list