throw new DeploymentException("At least one of value, urlPatterns and servletNames attributes are configured on the WebFilter annotation in the class " + cls.getName());
}
String[] urlPatterns = valueAttributeConfigured ? webFilter.value() : webFilter.urlPatterns();
if (FilterMergeHandler.isFilterConfigured(filterName, mergeContext)) {
//merge the filter annotation configuration to current web.xml
FilterType targetFilter = FilterMergeHandler.getFilter(filterName, mergeContext);
//merge init-param
for (WebInitParam webInitParam : webFilter.initParams()) {
String paramName = webInitParam.name();
if (FilterInitParamMergeHandler.isFilterInitParamConfigured(filterName, paramName, mergeContext)) {
continue;
}
ParamValueType newParamValue = targetFilter.addNewInitParam();
newParamValue.addNewDescription().setStringValue(webInitParam.description());
newParamValue.addNewParamName().setStringValue(webInitParam.name());
newParamValue.addNewParamValue().setStringValue(webInitParam.value());
FilterInitParamMergeHandler.addFilterInitParam(filterName, newParamValue, ElementSource.ANNOTATION, mergeContext.getCurrentJarUrl(), mergeContext);
}
} else {
//Create filter element
FilterType newFilter = webApp.addNewFilter();
newFilter.addNewFilterName().setStringValue(filterName);
newFilter.addNewAsyncSupported().setBooleanValue(webFilter.asyncSupported());
if (!webFilter.description().isEmpty()) {
newFilter.addNewDescription().setStringValue(webFilter.description());
}
if (!webFilter.displayName().isEmpty()) {
newFilter.addNewDisplayName().setStringValue(webFilter.displayName());
}
newFilter.addNewFilterClass().setStringValue(cls.getName());
for (WebInitParam webInitParam : webFilter.initParams()) {
ParamValueType paramValue = newFilter.addNewInitParam();
paramValue.addNewDescription().setStringValue(webInitParam.description());
paramValue.addNewParamName().setStringValue(webInitParam.name());
paramValue.addNewParamValue().setStringValue(webInitParam.value());
}
if (!webFilter.smallIcon().isEmpty() || !webFilter.largeIcon().isEmpty()) {
IconType iconType = newFilter.addNewIcon();
if (!webFilter.smallIcon().isEmpty()) {
iconType.addNewSmallIcon().setStringValue(webFilter.smallIcon());
}
if (!webFilter.largeIcon().isEmpty()) {
iconType.addNewLargeIcon().setStringValue(webFilter.largeIcon());