@Override
public void merge(WebFragmentType webFragment, WebAppType webApp, MergeContext mergeContext) throws DeploymentException {
for (ServletMappingType srcServletMapping : webFragment.getServletMappingArray()) {
String servletName = srcServletMapping.getServletName().getStringValue();
ServletMappingType targetServletMapping = (ServletMappingType) mergeContext.getAttribute(createServletMappingKey(servletName));
if (targetServletMapping == null) {
targetServletMapping = (ServletMappingType) webApp.addNewServletMapping().set(srcServletMapping);
mergeContext.setAttribute(createServletMappingKey(servletName), targetServletMapping);
for (SubMergeHandler<ServletMappingType, ServletMappingType> subMergeHandler : subMergeHandlers) {
subMergeHandler.add(targetServletMapping, mergeContext);
}
} else {
if (isServletMappingFromAnnotation(servletName, mergeContext) && srcServletMapping.getUrlPatternArray().length > 0) {
//If the current url-patterns configurations are from annotations, so let's drop them
targetServletMapping.setUrlPatternArray(new UrlPatternType[0]);
mergeContext.removeAttribute(createServletMappingSourceKey(servletName));
}
for (SubMergeHandler<ServletMappingType, ServletMappingType> subMergeHandler : subMergeHandlers) {
subMergeHandler.merge(srcServletMapping, targetServletMapping, mergeContext);
}