@Override
public void merge(WebFragment webFragment, WebApp webApp, MergeContext mergeContext) throws DeploymentException {
for (ErrorPage errorPage : webFragment.getErrorPage()) {
MergeItem mergeItem = (MergeItem) mergeContext.getAttribute(createErrorPageKey(errorPage));
if (mergeItem != null) {
if (mergeItem.getSourceType().equals(ElementSource.WEB_XML)) {
continue;
} else if (mergeItem.getValue().equals(errorPage.getLocation())) {
boolean isErrorCodeConfigured = errorPage.getErrorCode() != null;
throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateKeyValueMessage("error-page",
isErrorCodeConfigured ? "error-code" : "exception-type",
isErrorCodeConfigured ? "" + errorPage.getErrorCode() : errorPage.getExceptionType(),
"location",
(String) mergeItem.getValue(), mergeItem.getBelongedURL(),
errorPage.getLocation(),
mergeContext.getCurrentJarUrl()));
}
} else {
webApp.getErrorPage().add(errorPage);
mergeContext.setAttribute(createErrorPageKey(errorPage), new MergeItem(errorPage.getLocation(), mergeContext.getCurrentJarUrl(), ElementSource.WEB_FRAGMENT));
}
}
}