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); } }