/******************************************************************************* * Copyright © 2009, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.deployment.internal.web; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.emf.common.util.EList; import org.eclipse.jst.j2ee.common.CommonFactory; import org.eclipse.jst.j2ee.common.EnvEntry; import org.eclipse.jst.j2ee.common.EnvEntryType; import org.eclipse.jst.j2ee.common.ResAuthTypeBase; import org.eclipse.jst.j2ee.common.ResSharingScopeType; import org.eclipse.jst.j2ee.common.ResourceRef; import org.eclipse.jst.j2ee.model.IModelProvider; import org.eclipse.jst.j2ee.model.ModelProviderManager; import org.eclipse.jst.javaee.core.DisplayName; import org.eclipse.jst.javaee.core.EmptyType; import org.eclipse.jst.javaee.core.JavaeeFactory; import org.eclipse.jst.javaee.core.ParamValue; import org.eclipse.jst.javaee.core.UrlPatternType; public class WebXML { private IProject project; private Map environmentEntries; private Map servlets; private Map filters; private Map resourceRefs; private Boolean isDistributable; public WebXML( IProject project ) { this.project = project; environmentEntries = new HashMap(); servlets = new HashMap(); filters = new HashMap(); resourceRefs = new HashMap(); } public void addServlet( final String servletName, final String displayName, final String servletClassName, final Set<String> urls, final Map paramList, final int loadOnStartUp) { servlets.put( servletName, new Servlet(servletName, displayName, servletClassName, urls, paramList, loadOnStartUp)); } public void addServlet( final String servletName, final String servletClassName, final String url, final Map paramList) { servlets.put( servletName, new Servlet(servletName, servletClassName, url, paramList)); } public void addFilter( final String filterName, final String filterClassName, final List urlPatterns, final Map paramList) { filters.put( filterName, new Filter(filterName, filterClassName, urlPatterns, paramList)); } public void addResourceRef( ResourceRef ref ) { resourceRefs.put(ref.getName(), ref ); } public void isDistributable(boolean isDistributable) { this.isDistributable = new Boolean(isDistributable); } public void addEnvironmentEntries( ArrayList envEntries ) { for( Iterator itr = envEntries.iterator(); itr.hasNext();) { EnvEntry entry = (EnvEntry)itr.next(); environmentEntries.put(entry.getName(), entry); } } private class Servlet { private String servletName; private int loadOnStartUp; private String servletClassName; private String displayName; private Set<String> urls; private Map paramList; public Servlet(String servletName, String servletClassName, String url, Map paramList) { this(servletName, servletName, servletClassName, new HashSet<String>(), paramList, -1); urls.add(url); } public Servlet(String servletName, String displayName, String servletClassName, Set<String> urls, Map paramList, int loadOnStartUp) { this.servletName = servletName; this.displayName = displayName; this.servletClassName = servletClassName; this.urls = urls; this.paramList = paramList; this.loadOnStartUp = loadOnStartUp; } } private class Filter { private String filterName; private String filterClassName; private List urlPatterns; private Map paramList; public Filter(String filterName, String filterClassName, List urlPatterns, Map paramList) { this.filterName = filterName; this.filterClassName = filterClassName; this.urlPatterns = urlPatterns; this.paramList = paramList; } } private interface EglWebApp { public void registerServlet( final String servletName, final String displayName, final String servletClassName, final Set<String> urlMappings, final Map<String, String> paramList, final int loadOnStartUp ); public void registerFilter( final String servletName, final String servletClassName, final Map paramList, final List urlMpatterns ); public void addResourceRef( final ResourceRef resourceRef ); public void updateAddEnvironmentEntry( final EnvEntry envEntry ); public void updateDistributable(); } private class J2eeWebApp implements EglWebApp { org.eclipse.jst.j2ee.webapplication.WebApp webApp; public J2eeWebApp(org.eclipse.jst.j2ee.webapplication.WebApp webApp) { this.webApp = webApp; } public void updateDistributable() { if( ((org.eclipse.jst.j2ee.webapplication.WebApp)webApp).isDistributable() != isDistributable.booleanValue() ) { ((org.eclipse.jst.j2ee.webapplication.WebApp)webApp).setDistributable( isDistributable.booleanValue() ); } } public void addResourceRef(ResourceRef resourceRef) { EList resourceRefs = webApp.getResourceRefs(); ResourceRef existingRef = null; for ( Iterator it = resourceRefs.iterator(); it.hasNext(); ) { ResourceRef ref = (ResourceRef)it.next(); if ( ref.getName().equals( resourceRef.getName() ) ) { existingRef = ref; break; } } if ( existingRef == null ) { ResourceRef ref = CommonFactory.eINSTANCE.createResourceRef(); ref.setName( resourceRef.getName() ); ref.setType( resourceRef.getType() ); ref.setResSharingScope( resourceRef.getResSharingScope() ); ref.setAuth( resourceRef.getAuth() ); resourceRefs.add( ref ); } else { existingRef.setType( resourceRef.getType() ); existingRef.setResSharingScope( resourceRef.getResSharingScope() ); existingRef.setAuth( resourceRef.getAuth() ); } } public void updateAddEnvironmentEntry(EnvEntry newEnvEntry) { boolean found = false; for ( Iterator itr = webApp.getEnvironmentProperties().iterator(); itr.hasNext(); ) { EnvEntry existingEntry = (EnvEntry)(itr.next()); if ( existingEntry.getName().equals(newEnvEntry.getName()) ) { //If the entry was found then update it only if it is not one //of the options below. if ( !existingEntry.getName().equalsIgnoreCase("vgj.trace.type") && !existingEntry.getName().equalsIgnoreCase("vgj.trace.device.option") && !existingEntry.getName().equalsIgnoreCase("vgj.trace.device.spec") ) { existingEntry.setValue( newEnvEntry.getValue() ); existingEntry.setType( newEnvEntry.getType() ); } found = true; } } if ( !found ) { webApp.getEnvironmentProperties().add( newEnvEntry ); } } /** * This is for a Dynamic web module version 2.4 * @param webApp * @param servletName * @param servletClassName * @param urlMapping * @param paramList */ public void registerServlet( final String servletName, final String displayName, final String servletClassName, final Set<String> urlMappings, final Map<String, String> paramList, final int loadOnStartUp ) { org.eclipse.jst.j2ee.webapplication.Servlet servlet = getJ2eeServlet( servletName, displayName, servletClassName, loadOnStartUp ); List initParams = servlet.getInitParams(); initParams.clear(); org.eclipse.jst.j2ee.common.ParamValue initParam; for( Iterator<String> iter = paramList.keySet().iterator(); iter.hasNext(); ) { initParam = org.eclipse.jst.j2ee.common.CommonFactory.eINSTANCE.createParamValue(); String key = iter.next(); initParam.setName(key); initParam.setValue(paramList.get(key)); initParams.add(initParam); } //remove all of the mappings for this servlet List mappings = webApp.getServletMappings(); if (mappings != null && !mappings.isEmpty()) { List<org.eclipse.jst.j2ee.webapplication.ServletMapping> removalList = new ArrayList<org.eclipse.jst.j2ee.webapplication.ServletMapping>(); org.eclipse.jst.j2ee.webapplication.ServletMapping map; for( Iterator<org.eclipse.jst.j2ee.webapplication.ServletMapping> iter = mappings.iterator(); iter.hasNext(); ) { map = iter.next(); if( map.getServlet().getServletName().equals(servlet.getServletName()) ) { removalList.add( map ); } } if( !removalList.isEmpty() ) { mappings.removeAll( removalList ); } } //add the restservice mapping for( Iterator<String> itr = urlMappings.iterator(); itr.hasNext();){ org.eclipse.jst.j2ee.webapplication.ServletMapping mapping = org.eclipse.jst.j2ee.webapplication.WebapplicationFactory.eINSTANCE.createServletMapping(); mapping.setServlet(servlet); mapping.setWebApp(webApp); mapping.setUrlPattern(itr.next()); mappings.add( mapping ); } } /* * If a servlet doesn't exist and the classname is not null the method will create a new servlet * and populate the default values */ private org.eclipse.jst.j2ee.webapplication.Servlet getJ2eeServlet( final String servletName, final String displayName, final String servletClassName, final int loadOnStartUp ) { org.eclipse.jst.j2ee.webapplication.Servlet servlet = webApp.getServletNamed( servletName ); if( servlet == null && servletClassName != null ) { List servlets = webApp.getServlets(); servlet = org.eclipse.jst.j2ee.webapplication.WebapplicationFactory.eINSTANCE.createServlet(); servlets.add(servlet); servlet.setWebApp(webApp); servlet.setServletName(servletName); org.eclipse.jst.j2ee.webapplication.ServletType servletType = org.eclipse.jst.j2ee.webapplication.WebapplicationFactory.eINSTANCE.createServletType(); servletType.setClassName(servletClassName); servlet.setWebType(servletType); servlet.setLoadOnStartup(new Integer(loadOnStartUp)); servlet.setDisplayName(displayName); } return servlet; } /** * This is for a Dynamic web module version 2.4 * @param webApp * @param filterName * @param filterClassName * @param urlMapping * @param paramList */ public void registerFilter( final String filterName, final String filterClassName, final Map paramList, final List urlPatternList ) { org.eclipse.jst.j2ee.webapplication.Filter filter = getJ2eeFilter( filterName, filterClassName ); List initParams = filter.getInitParamValues(); initParams.clear(); for( Iterator iter = paramList.keySet().iterator(); iter.hasNext(); ) { org.eclipse.jst.j2ee.common.ParamValue initParam = org.eclipse.jst.j2ee.common.internal.impl.CommonFactoryImpl.eINSTANCE.createParamValue(); Object key = iter.next(); initParam.setName((String)key); initParam.setValue((String)paramList.get(key)); initParams.add((Object)initParam); } //remove all of the mappings for this servlet List mappings = webApp.getFilterMappings(); if (mappings != null && !mappings.isEmpty()) { List removalList = new ArrayList(); org.eclipse.jst.j2ee.webapplication.FilterMapping map; for( Iterator iter = mappings.iterator(); iter.hasNext(); ) { map = (org.eclipse.jst.j2ee.webapplication.FilterMapping)iter.next(); if( map.getFilter().getName().equals(filter.getName()) ) { removalList.add( map ); } } if( !removalList.isEmpty() ) { mappings.removeAll( removalList ); } } for( Iterator iter = urlPatternList.iterator(); iter.hasNext(); ) { org.eclipse.jst.j2ee.webapplication.FilterMapping mapping = org.eclipse.jst.j2ee.webapplication.WebapplicationFactory.eINSTANCE.createFilterMapping(); mapping.setFilter( filter ); String urlPattern = (String)iter.next(); mapping.setUrlPattern(urlPattern); mappings.add( mapping ); } } /* * If a filter doesn't exist and the classname is not null the method will create a new filter * and populate the default values */ private org.eclipse.jst.j2ee.webapplication.Filter getJ2eeFilter( final String filterName, final String filterClassName ) { org.eclipse.jst.j2ee.webapplication.Filter filter = webApp.getFilterNamed( filterName ); if( filter == null && filterClassName != null ) { List filters = webApp.getFilters(); filter = org.eclipse.jst.j2ee.webapplication.WebapplicationFactory.eINSTANCE.createFilter(); filters.add(filter); filter.setName(filterName); filter.setDisplayName(filterName); filter.setFilterClassName(filterClassName); } return filter; } } private class JavaeeWebApp implements EglWebApp { org.eclipse.jst.javaee.web.WebApp webApp; public JavaeeWebApp(org.eclipse.jst.javaee.web.WebApp webApp) { this.webApp = webApp; } public void updateDistributable() { List distributables = ((org.eclipse.jst.javaee.web.WebApp)webApp).getDistributables(); boolean appIsDistributable = !distributables.isEmpty(); if( appIsDistributable != isDistributable.booleanValue() ) { if( !distributables.isEmpty() ) { List list = new ArrayList(); list.addAll( distributables ); ((org.eclipse.jst.javaee.web.WebApp)webApp).getDistributables().removeAll(list); ((org.eclipse.jst.javaee.web.WebApp)webApp).getDistributables().clear(); } else { ArrayList list = new ArrayList(); EmptyType emptyType = JavaeeFactory.eINSTANCE.createEmptyType(); list.add(emptyType); ((org.eclipse.jst.javaee.web.WebApp)webApp).getDistributables().addAll(list); } } } public void addResourceRef(ResourceRef resourceRef) { List resourceRefs = webApp.getResourceRefs(); org.eclipse.jst.javaee.core.ResourceRef existingRef = null; for ( Iterator it = resourceRefs.iterator(); it.hasNext(); ) { org.eclipse.jst.javaee.core.ResourceRef ref = (org.eclipse.jst.javaee.core.ResourceRef)it.next(); if ( resourceRef.getName().equals( ref.getResRefName() ) ) { existingRef = ref; break; } } if ( existingRef == null ) { org.eclipse.jst.javaee.core.ResourceRef ref = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createResourceRef(); ref.setResRefName( resourceRef.getName() ); if( resourceRef.getResSharingScope() == ResSharingScopeType.SHAREABLE_LITERAL ) { ref.setResSharingScope(org.eclipse.jst.javaee.core.ResSharingScopeType.SHAREABLE_LITERAL); } else if( resourceRef.getResSharingScope() == ResSharingScopeType.UNSHAREABLE_LITERAL ) { ref.setResSharingScope(org.eclipse.jst.javaee.core.ResSharingScopeType.UNSHAREABLE_LITERAL); } if( resourceRef.getAuth() == ResAuthTypeBase.CONTAINER_LITERAL ) { ref.setResAuth( org.eclipse.jst.javaee.core.ResAuthType.CONTAINER_LITERAL ); } else if( resourceRef.getAuth() == ResAuthTypeBase.APPLICATION_LITERAL ) { ref.setResAuth( org.eclipse.jst.javaee.core.ResAuthType.APPLICATION_LITERAL ); } ref.setResType(resourceRef.getType()); resourceRefs.add( ref ); } else { if( resourceRef.getResSharingScope() == ResSharingScopeType.SHAREABLE_LITERAL ) { existingRef.setResSharingScope(org.eclipse.jst.javaee.core.ResSharingScopeType.SHAREABLE_LITERAL); } else if( resourceRef.getResSharingScope() == ResSharingScopeType.UNSHAREABLE_LITERAL ) { existingRef.setResSharingScope(org.eclipse.jst.javaee.core.ResSharingScopeType.UNSHAREABLE_LITERAL); } if( resourceRef.getAuth() == ResAuthTypeBase.CONTAINER_LITERAL ) { existingRef.setResAuth( org.eclipse.jst.javaee.core.ResAuthType.CONTAINER_LITERAL ); } else if( resourceRef.getAuth() == ResAuthTypeBase.APPLICATION_LITERAL ) { existingRef.setResAuth( org.eclipse.jst.javaee.core.ResAuthType.APPLICATION_LITERAL ); } existingRef.setResType(resourceRef.getType()); } } public void updateAddEnvironmentEntry(EnvEntry newEnvEntry) { boolean found = false; for ( Iterator itr = webApp.getEnvEntries().iterator(); itr.hasNext(); ) { org.eclipse.jst.javaee.core.EnvEntry existingEntry = (org.eclipse.jst.javaee.core.EnvEntry)(itr.next()); if ( existingEntry.getEnvEntryName().equals(newEnvEntry.getName()) ) { //If the entry was found then update it only if it is not one //of the options below. if ( !existingEntry.getEnvEntryName().equalsIgnoreCase("vgj.trace.type") && !existingEntry.getEnvEntryName().equalsIgnoreCase("vgj.trace.device.option") && !existingEntry.getEnvEntryName().equalsIgnoreCase("vgj.trace.device.spec") ) { existingEntry.setEnvEntryValue( newEnvEntry.getValue() ); existingEntry.setEnvEntryType( convert( newEnvEntry.getType() ) ); } found = true; } } if ( !found ) { org.eclipse.jst.javaee.core.EnvEntry entry = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createEnvEntry(); entry.setEnvEntryName(newEnvEntry.getName()); entry.setEnvEntryType(convert( newEnvEntry.getType() )); entry.setEnvEntryValue(newEnvEntry.getValue()); webApp.getEnvEntries().add( entry ); } } private org.eclipse.jst.javaee.core.EnvEntryType convert( EnvEntryType type ) { switch( type.getValue() ) { case EnvEntryType.BOOLEAN: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_BOOLEAN_LITERAL; case EnvEntryType.BYTE: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_BYTE_LITERAL; case EnvEntryType.CHARACTER: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_CHARACTER_LITERAL; case EnvEntryType.DOUBLE: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_DOUBLE_LITERAL; case EnvEntryType.FLOAT: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_FLOAT_LITERAL; case EnvEntryType.INTEGER: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_INTEGER_LITERAL; case EnvEntryType.LONG: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_LONG_LITERAL; case EnvEntryType.SHORT: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_SHORT_LITERAL; case EnvEntryType.STRING: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_STRING_LITERAL; default: return org.eclipse.jst.javaee.core.EnvEntryType.JAVA_LANG_STRING_LITERAL; } } /** * This is for a Dynamic web module version 2.5 * @param webApp * @param servletName * @param servletClassName * @param urlMapping * @param paramList */ public void registerServlet( final String servletName, String displayName, final String servletClassName, final Set<String> urlMappings, final Map<String, String> paramList, final int loadOnStartUp ) { org.eclipse.jst.javaee.web.Servlet servlet = getJavaeeServlet( servletName, displayName, servletClassName, loadOnStartUp ); List<ParamValue> initParams = servlet.getInitParams(); initParams.clear(); org.eclipse.jst.javaee.core.ParamValue initParam; for( Iterator<String> iter = paramList.keySet().iterator(); iter.hasNext(); ) { initParam = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createParamValue(); String key = iter.next(); initParam.setParamName(key); initParam.setParamValue(paramList.get(key)); initParams.add(initParam); } org.eclipse.jst.javaee.web.ServletMapping mapping = null; List<org.eclipse.jst.javaee.web.ServletMapping> mappings = webApp.getServletMappings(); //get the mapping //do this by creating a new map and add any non restservice servlet mapping //then clear the existing map if (mappings != null && !mappings.isEmpty()) { org.eclipse.jst.javaee.web.ServletMapping map; for( Iterator<org.eclipse.jst.javaee.web.ServletMapping> iter = mappings.iterator(); iter.hasNext(); ) { map = iter.next(); if( map.getServletName().equals(servlet.getServletName())) { mapping = map; break; } } } if( mapping == null ) { //add a map for the restservice servlet mapping = org.eclipse.jst.javaee.web.WebFactory.eINSTANCE.createServletMapping(); mapping.setServletName(servletName); mappings.add(mapping); } List<UrlPatternType> urls = mapping.getUrlPatterns(); urls.clear(); for( Iterator<String> itr = urlMappings.iterator(); itr.hasNext();){ org.eclipse.jst.javaee.core.UrlPatternType urlPattern = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createUrlPatternType(); urlPattern.setValue( itr.next() ); urls.add( urlPattern ); } } /* * If a servlet doesn't exist and the classname is not null the method will create a new servlet * and populate the default values */ private org.eclipse.jst.javaee.web.Servlet getJavaeeServlet(final String servletName, final String displayName, final String servletClassName, final int loadOnStartUp ) { List<org.eclipse.jst.javaee.web.Servlet> servlets = webApp.getServlets(); org.eclipse.jst.javaee.web.Servlet tempServlet; for( Iterator<org.eclipse.jst.javaee.web.Servlet> iter = servlets.iterator(); iter.hasNext(); ) { tempServlet = iter.next(); if( servletName.equalsIgnoreCase( tempServlet.getServletName() ) ) { return tempServlet; } } tempServlet = null; if( servletClassName != null && servletClassName.length() > 0 ) { tempServlet = org.eclipse.jst.javaee.web.WebFactory.eINSTANCE.createServlet(); tempServlet.setLoadOnStartup(new Integer(loadOnStartUp)); tempServlet.setServletName(servletName); tempServlet.setServletClass(servletClassName); DisplayName dName = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createDisplayName(); dName.setValue(displayName); tempServlet.getDisplayNames().add(dName); servlets.add( tempServlet ); } return tempServlet; } /** * This is for a Dynamic web module version 2.5 * @param webApp * @param filterName * @param filterClassName * @param urlMapping * @param paramList */ public void registerFilter( final String filterName, final String filterClassName, final Map paramList, final List urlPatternList ) { org.eclipse.jst.javaee.web.Filter filter = getJavaeeFilter( filterName, filterClassName ); List initParams = filter.getInitParams(); initParams.clear(); org.eclipse.jst.javaee.core.ParamValue initParam; for( Iterator iter = paramList.keySet().iterator(); iter.hasNext(); ) { initParam = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createParamValue(); Object key = iter.next(); initParam.setParamName((String)key); initParam.setParamValue((String)paramList.get(key)); initParams.add(initParam); } org.eclipse.jst.javaee.web.FilterMapping mapping = null; List mappings = webApp.getFilterMappings(); //get the mapping //do this by creating a new map and add any mapping //then clear the existing map if (mappings != null && !mappings.isEmpty()) { org.eclipse.jst.javaee.web.FilterMapping map; for( Iterator iter = mappings.iterator(); iter.hasNext(); ) { map = (org.eclipse.jst.javaee.web.FilterMapping)iter.next(); if( map.getFilterName().equals(filter.getFilterName())) { mapping = map; break; } } } if( mapping == null ) { //add a map for the restservice servlet mapping = org.eclipse.jst.javaee.web.WebFactory.eINSTANCE.createFilterMapping(); mapping.setFilterName(filterName); mappings.add(mapping); } List urls = mapping.getUrlPatterns(); urls.clear(); for( Iterator iter = urlPatternList.iterator(); iter.hasNext(); ) { String pattern = (String)iter.next(); org.eclipse.jst.javaee.core.UrlPatternType urlPattern = org.eclipse.jst.javaee.core.JavaeeFactory.eINSTANCE.createUrlPatternType(); urlPattern.setValue( pattern ); urls.add( urlPattern ); } } /* * If a filter doesn't exist and the classname is not null the method will create a new filter * and populate the default values */ private org.eclipse.jst.javaee.web.Filter getJavaeeFilter( final String filterName, final String filterClassName ) { List filters = webApp.getFilters(); org.eclipse.jst.javaee.web.Filter tempFilter; for( Iterator iter = filters.iterator(); iter.hasNext(); ) { tempFilter = (org.eclipse.jst.javaee.web.Filter)iter.next(); if( filterName.equalsIgnoreCase( tempFilter.getFilterName() ) ) { return tempFilter; } } tempFilter = null; if( filterClassName != null && filterClassName.length() > 0 ) { tempFilter = org.eclipse.jst.javaee.web.WebFactory.eINSTANCE.createFilter(); tempFilter.setFilterName(filterName); tempFilter.setFilterClass(filterClassName); filters.add( tempFilter ); } return tempFilter; } } void updateModel() { final IModelProvider provider = ModelProviderManager.getModelProvider( project ); if( provider != null ) { IPath path = (provider.getModelObject() instanceof org.eclipse.jst.javaee.web.WebApp) ? IModelProvider.FORCESAVE : null; provider.modify(new Runnable(){ public void run() { Object object = provider.getModelObject(); EglWebApp webApp = null; if (object instanceof org.eclipse.jst.javaee.web.WebApp) { webApp = new JavaeeWebApp((org.eclipse.jst.javaee.web.WebApp) object); } else if( object instanceof org.eclipse.jst.j2ee.webapplication.WebApp ) { webApp = new J2eeWebApp((org.eclipse.jst.j2ee.webapplication.WebApp) object); } if( webApp != null ) { for( Iterator itr = servlets.values().iterator(); itr.hasNext();) { Servlet servlet = (Servlet)itr.next(); webApp.registerServlet(servlet.servletName, servlet.displayName, servlet.servletClassName, servlet.urls, servlet.paramList, servlet.loadOnStartUp); } for( Iterator itr = filters.values().iterator(); itr.hasNext();) { Filter filter = (Filter)itr.next(); webApp.registerFilter(filter.filterName, filter.filterClassName, filter.paramList, filter.urlPatterns); } for( Iterator itr = resourceRefs.values().iterator(); itr.hasNext();) { ResourceRef resourceRef = (ResourceRef)itr.next(); webApp.addResourceRef(resourceRef); } for( Iterator itr = environmentEntries.values().iterator(); itr.hasNext();) { EnvEntry envEntry = (EnvEntry)itr.next(); webApp.updateAddEnvironmentEntry(envEntry); } if( isDistributable != null ) { webApp.updateDistributable(); } } } }, path); } } }