blob: 414f578e926edf47f29ccc080545ede377b1cacd [file] [log] [blame]
package org.eclipse.jst.jee.model.internal.mergers;
import java.util.List;
import org.eclipse.jst.javaee.core.JavaEEObject;
import org.eclipse.jst.javaee.core.ParamValue;
import org.eclipse.jst.javaee.web.Filter;
import org.eclipse.jst.javaee.web.FilterMapping;
import org.eclipse.jst.javaee.web.Servlet;
import org.eclipse.jst.javaee.web.ServletMapping;
public class WebApp3Merger extends WebAppMerger {
public WebApp3Merger(JavaEEObject _base, JavaEEObject merge, int kind) {
super(_base, merge, kind);
}
@Override
protected void mergeServlets(List warnings) {
List<Servlet> baseservlets = getBaseWebApp().getServlets();
List<Servlet> toMergeServlets = getToMergeWebApp().getServlets();
if (baseservlets != null && toMergeServlets != null && baseservlets.size() > 0 && toMergeServlets.size() > 0){
for (Servlet servlet : baseservlets) {
Servlet toMergeArtifact = (Servlet) getArtifactFromList(servlet, toMergeServlets);
if (artifactIsValid(servlet) && toMergeArtifact != null){
mergeServlet(servlet, toMergeArtifact);
}
}
}
if (getToMergeWebApp().getServlets() != null){
copyMissingContentInBase(getToMergeWebApp().getServlets(), getBaseWebApp().getServlets());
}
if (getToMergeWebApp().getFilterMappings() != null){
copyMissingContentInBase(getToMergeWebApp().getServletMappings(), getBaseWebApp().getServletMappings());
}
mergeServletMappings(getBaseWebApp().getServletMappings(), getToMergeWebApp().getServletMappings());
}
private void mergeServlet(Servlet servlet, Servlet toMergeArtifact) {
mergeInitParams(servlet.getInitParams(), toMergeArtifact.getInitParams());
}
private void mergeServletMappings(List<ServletMapping> servletMappingsBase,
List<ServletMapping> servletMappingsToMerge) {
if (servletMappingsBase != null && servletMappingsToMerge != null && servletMappingsToMerge.size() >0){
for(ServletMapping toMergeMapping : servletMappingsToMerge){
ServletMapping baseMapping = (ServletMapping) getArtifactFromList(toMergeMapping, servletMappingsBase);
if (baseMapping != null && baseMapping.getServletName().equals(toMergeMapping.getServletName())){
copyMissingContentInBase(toMergeMapping.getUrlPatterns(), baseMapping.getUrlPatterns());
}
}
}
}
@Override
protected void mergeFilters(List warnings) {
List<Filter> basefilters = getBaseWebApp().getFilters();
List<Filter> toMergeFilters = getToMergeWebApp().getFilters();
if (basefilters != null && toMergeFilters != null && basefilters.size() > 0 && toMergeFilters.size() > 0){
for (Filter filter : basefilters) {
Filter toMergeArtifact = (Filter) getArtifactFromList(filter, toMergeFilters);
if (artifactIsValid(filter) && toMergeArtifact != null){
mergeFilter(filter, toMergeArtifact);
}
}
}
if (getToMergeWebApp().getFilters() != null){
copyMissingContentInBase(getToMergeWebApp().getFilters(), getBaseWebApp().getFilters());
}
if (getToMergeWebApp().getFilterMappings() != null){
copyMissingContentInBase(getToMergeWebApp().getFilterMappings(), getBaseWebApp().getFilterMappings());
}
mergeFilterMappings(getBaseWebApp().getFilterMappings(), getToMergeWebApp().getFilterMappings());
}
private void mergeFilterMappings(List<FilterMapping> filterMappingsBase,
List<FilterMapping> filterMappingsToMerge) {
if (filterMappingsBase != null && filterMappingsToMerge != null && filterMappingsToMerge.size() >0){
for(FilterMapping toMergeMapping : filterMappingsToMerge){
FilterMapping baseMapping = (FilterMapping) getArtifactFromList(toMergeMapping, filterMappingsBase);
if (baseMapping != null && baseMapping.getFilterName().equals(toMergeMapping.getFilterName())){
copyMissingContentInBase(toMergeMapping.getUrlPatterns(), baseMapping.getUrlPatterns());
}
}
}
}
private void mergeFilter(Filter filter, Filter toMergeArtifact) {
mergeInitParams(filter.getInitParams(), toMergeArtifact.getInitParams());
}
private void mergeInitParams(List<ParamValue> initParams,
List<ParamValue> initParams2) {
if (initParams != null && initParams2 != null && initParams.size() > 0 && initParams2.size() >0){
for(ParamValue value : initParams){
ParamValue artifactFromList = (ParamValue) getArtifactFromList(value, initParams2);
if(artifactFromList != null && value.getParamName().equals(artifactFromList.getParamName())){
value.setParamValue(artifactFromList.getParamValue());
}
}
}
copyMissingContentInBase(initParams2, initParams);
}
}