[282259] NullPointerException in GroupWelcomePagesItemProvider fixed
diff --git a/plugins/org.eclipse.jst.jee.ui/plugin.xml b/plugins/org.eclipse.jst.jee.ui/plugin.xml
index a1ce958..91bca8f 100644
--- a/plugins/org.eclipse.jst.jee.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.jee.ui/plugin.xml
@@ -487,10 +487,7 @@
 		 	<instanceof value="org.eclipse.jst.jee.ui.internal.navigator.ejb.BeanNode" />
   			<instanceof value="org.eclipse.jst.javaee.core.JavaEEObject" />
    <instanceof
-         value="org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider">
-   </instanceof>
-   <instanceof
-         value="org.eclipse.jst.jee.ui.internal.navigator.ear.GroupEARProvider">
+         value="org.eclipse.jst.jee.ui.internal.navigator.ejb.AbstractEjbGroupProvider">
    </instanceof>
         </or>
      </triggerPoints>
@@ -500,7 +497,7 @@
 		 	<instanceof value="org.eclipse.jst.jee.ui.internal.navigator.ejb.BeanNode" />
   			<instanceof value="org.eclipse.jst.javaee.core.JavaEEObject" />
    <instanceof
-         value="org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider">
+         value="org.eclipse.jst.jee.ui.internal.navigator.ejb.AbstractEjbGroupProvider">
    </instanceof>
         </or>
      </possibleChildren>
@@ -714,7 +711,7 @@
               </or>
            </adapt>
    <instanceof
-         value="org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider">
+         value="org.eclipse.jst.jee.ui.internal.navigator.web.AbstractWebGroupProvider">
    </instanceof>
    <instanceof
          value="org.eclipse.jst.jee.ui.internal.navigator.web.WebAppProvider">
@@ -730,7 +727,7 @@
      <possibleChildren>
         <or>
            <instanceof
-                 value="org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider">
+                 value="org.eclipse.jst.jee.ui.internal.navigator.web.AbstractWebGroupProvider">
            </instanceof>
            <instanceof
                  value="org.eclipse.jst.jee.ui.internal.navigator.web.WebAppProvider">
@@ -889,6 +886,9 @@
            <instanceof
                  value="org.eclipse.jst.jee.ui.internal.navigator.ear.BundledNode">
            </instanceof>
+            <instanceof
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ear.GroupEARProvider">
+           </instanceof>
            <adapt
                  type="org.eclipse.core.resources.IProject">
               <test
@@ -958,6 +958,9 @@
            <instanceof
                  value="org.eclipse.jdt.internal.core.JarPackageFragmentRoot">
            </instanceof>
+              <instanceof
+                 value="org.eclipse.jst.jee.ui.internal.navigator.ear.GroupEARProvider">
+           </instanceof>
            <instanceof
                  value="org.eclipse.core.internal.resources.Project">
            </instanceof>
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/AbstractGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/AbstractGroupProvider.java
index b20e3d9..7a8168b 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/AbstractGroupProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/AbstractGroupProvider.java
@@ -51,7 +51,8 @@
 	}
 
 	public boolean hasChildren() {
-		return !getChildren().isEmpty();
+		List children2 = getChildren();
+		return children2 != null && !children2.isEmpty();
 	}
 
 	public JavaEEObject getJavaEEObject() {
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
index 5e80b65..5df4351 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ear5ContentProvider.java
@@ -24,12 +24,10 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.jst.j2ee.componentcore.util.EARVirtualComponent;
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
 import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
-import org.eclipse.jst.j2ee.model.ModelProviderManager;
 import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
 import org.eclipse.jst.javaee.application.Application;
 import org.eclipse.jst.jee.ui.internal.navigator.ear.AbstractEarNode;
@@ -103,60 +101,7 @@
 		IProject project = null;
 		List children = new ArrayList();
 		if (aParentElement instanceof GroupEARProvider) {
-			project = (IProject) ((GroupEARProvider)aParentElement).getProject();
-
-			IVirtualComponent projectComponent = ComponentCore.createComponent(project);
-			try {
-				IFacetedProject facetedProject = ProjectFacetsManager.create(project);
-				if (facetedProject != null && 
-						facetedProject.hasProjectFacet(
-								ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE).getVersion(
-										J2EEVersionConstants.VERSION_5_0_TEXT))) {
-
-					List libs = getComponentReferencesAsList(Collections.singletonList(J2EEProjectUtilities.UTILITY), projectComponent,
-							new Path("/" + EAR_DEFAULT_LIB)); //$NON-NLS-1$
-
-							ArrayList bundledLibs = new ArrayList();
-							ArrayList appLibsInTheRoot = new ArrayList();
-
-							for (int i = 0; i < libs.size(); i++) {
-								IVirtualReference reference = (IVirtualReference) libs.get(i);
-								IPath runtimePath = reference.getRuntimePath();
-
-								if (runtimePath != null && runtimePath.segment(0) != null && 
-//										runtimePath.equals(new Path(EAR_DEFAULT_LIB))) {
-									!runtimePath.isRoot()) {
-									bundledLibs.add(libs.get(i));
-								} else {
-									appLibsInTheRoot.add(libs.get(i));
-								}
-							}
-							
-							String libDir = EAR_DEFAULT_LIB;
-							if (J2EEProjectUtilities.isJEEProject(project)) {
-								String oldLibDir = ((Application)ModelProviderManager.getModelProvider(project).getModelObject()).getLibraryDirectory();
-								if (oldLibDir == null) oldLibDir = EAR_DEFAULT_LIB;
-								libDir = oldLibDir;
-							}
-//
-//							List implicitUtilityReferenceTypes =
-//								Arrays.asList(new String[] {  
-//										IModuleConstants.JST_APPCLIENT_MODULE,
-//										IModuleConstants.JST_WEB_MODULE,
-//										IModuleConstants.JST_EJB_MODULE,
-//										IModuleConstants.JST_CONNECTOR_MODULE});
-//
-
-//							List modules = getComponentReferencesAsList(implicitUtilityReferenceTypes, projectComponent, new Path("/")); //$NON-NLS-1$
-//							ModulesNode modulesNode = new ModulesNode(project);
-
-//							children.add(modulesNode);
-//							children.add(bundledLibsNode);
-				}
-			} catch (CoreException e) {
-				String msg = "Error in the JEEContentProvider.getChildren() for parent:" +  aParentElement; //$NON-NLS-1$
-				JEEUIPlugin.getDefault().logError(msg, e);
-			}
+			children.addAll(((GroupEARProvider)aParentElement).getChildren());
 		} else if (aParentElement instanceof AbstractEarNode) {
 			return ((AbstractEarNode) aParentElement).getModules().toArray();
 		} else if (aParentElement instanceof IAdaptable) {
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Web25ContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Web25ContentProvider.java
index 1353c0a..e1b08b7 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Web25ContentProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Web25ContentProvider.java
@@ -36,10 +36,11 @@
 				if (cachedContentProvider.isValid()){
 					children.add(cachedContentProvider);
 				}
-		} else if (WebAppProvider.class.isInstance(aParentElement)){
-			children.addAll(((WebAppProvider) aParentElement).getChildren());
 		} else if (AbstractGroupProvider.class.isInstance(aParentElement)){
-			children.addAll(((AbstractGroupProvider) aParentElement).getChildren());
+			AbstractGroupProvider abstractGroupProvider = (AbstractGroupProvider) aParentElement;
+			if (abstractGroupProvider.hasChildren()){
+				children.addAll(abstractGroupProvider.getChildren());
+			}
 		}
 		return children.toArray();
 	}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/AbstractAppClientGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/AbstractAppClientGroupProvider.java
new file mode 100644
index 0000000..5910232
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/AbstractAppClientGroupProvider.java
@@ -0,0 +1,13 @@
+package org.eclipse.jst.jee.ui.internal.navigator.appclient;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
+
+public abstract class AbstractAppClientGroupProvider extends
+		AbstractGroupProvider {
+
+	public AbstractAppClientGroupProvider(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java
index a402f47..36cb69e 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java
@@ -21,7 +21,6 @@
 import org.eclipse.jst.j2ee.model.ModelProviderManager;
 import org.eclipse.jst.javaee.applicationclient.ApplicationClient;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.osgi.util.NLS;
@@ -35,7 +34,7 @@
  * @author Dimitar Giormov
  * 
  */
-public class GroupAppClientProvider extends AbstractGroupProvider implements IAdaptable {
+public class GroupAppClientProvider extends AbstractAppClientGroupProvider implements IAdaptable {
 
 	
 	private final IProject project;
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/AbstractEarGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/AbstractEarGroupProvider.java
new file mode 100644
index 0000000..fd2e1db
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/AbstractEarGroupProvider.java
@@ -0,0 +1,11 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ear;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
+
+public abstract class AbstractEarGroupProvider extends AbstractGroupProvider {
+
+	public AbstractEarGroupProvider(JavaEEObject javaee) {
+		super(javaee);
+	}
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
index 1b86a87..c438438 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
@@ -22,7 +22,6 @@
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.javaee.application.Application;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPlugin;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.osgi.util.NLS;
@@ -40,7 +39,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupEARProvider extends AbstractGroupProvider implements IAdaptable {
+public class GroupEARProvider extends AbstractEarGroupProvider implements IAdaptable {
 
 	private static final String PROJECT_RELATIVE_PATH = "META-INF/application.xml"; //$NON-NLS-1$
 	public final static String EAR_DEFAULT_LIB = "lib"; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/AbstractEjbGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/AbstractEjbGroupProvider.java
new file mode 100644
index 0000000..ac62cf0
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/AbstractEjbGroupProvider.java
@@ -0,0 +1,12 @@
+package org.eclipse.jst.jee.ui.internal.navigator.ejb;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
+
+public abstract class AbstractEjbGroupProvider extends AbstractGroupProvider{
+
+	public AbstractEjbGroupProvider(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/GroupEJBProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/GroupEJBProvider.java
index f9896ce..ce00927 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/GroupEJBProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ejb/GroupEJBProvider.java
@@ -18,7 +18,6 @@
 import org.eclipse.jst.javaee.core.JavaEEObject;
 import org.eclipse.jst.javaee.ejb.EJBJar;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.graphics.Image;
 /**
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupEJBProvider extends AbstractGroupProvider implements IAdaptable {
+public class GroupEJBProvider extends AbstractEjbGroupProvider implements IAdaptable {
 
 	private GroupEjbSession groupEjbSession;
 	private GroupEjbMessageDriven groupEjbMessageDriven;
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/AbstractWebGroupProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/AbstractWebGroupProvider.java
new file mode 100644
index 0000000..16f020b
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/AbstractWebGroupProvider.java
@@ -0,0 +1,12 @@
+package org.eclipse.jst.jee.ui.internal.navigator.web;
+
+import org.eclipse.jst.javaee.core.JavaEEObject;
+import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
+
+public abstract class AbstractWebGroupProvider extends AbstractGroupProvider {
+
+	public AbstractWebGroupProvider(JavaEEObject javaee) {
+		super(javaee);
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupContextParamsItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupContextParamsItemProvider.java
index 904d22f..6a8aa77 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupContextParamsItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupContextParamsItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupContextParamsItemProvider extends AbstractGroupProvider{
+public class GroupContextParamsItemProvider extends AbstractWebGroupProvider{
 
     private static Image CONTEXT_PARAM_IMAGE;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupErrorPagesItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupErrorPagesItemProvider.java
index 286a8e0..fd504a5 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupErrorPagesItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupErrorPagesItemProvider.java
@@ -18,7 +18,6 @@
 import org.eclipse.jst.javaee.web.ErrorPage;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -28,7 +27,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupErrorPagesItemProvider extends AbstractGroupProvider{
+public class GroupErrorPagesItemProvider extends AbstractWebGroupProvider{
 
     private static Image ERROR_PAGES;
     private static Image EXCEPTION_ERROR_PAGES;
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFilterMappingItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFilterMappingItemProvider.java
index 60eeea3..1fef3c5 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFilterMappingItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFilterMappingItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupFilterMappingItemProvider extends AbstractGroupProvider {
+public class GroupFilterMappingItemProvider extends AbstractWebGroupProvider {
 
 	private static Image FILTER_MAPPING;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFiltersItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFiltersItemProvider.java
index 678f292..20f107c 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFiltersItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupFiltersItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupFiltersItemProvider extends AbstractGroupProvider{
+public class GroupFiltersItemProvider extends AbstractWebGroupProvider{
 
 	private static Image FILTER;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupListenerItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupListenerItemProvider.java
index f503386..d99360e 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupListenerItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupListenerItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupListenerItemProvider extends AbstractGroupProvider{
+public class GroupListenerItemProvider extends AbstractWebGroupProvider{
 
 	private static Image LISTENER;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupReferenceItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupReferenceItemProvider.java
index 9f3f567..103add5 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupReferenceItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupReferenceItemProvider.java
@@ -18,7 +18,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -28,7 +27,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupReferenceItemProvider extends AbstractGroupProvider{
+public class GroupReferenceItemProvider extends AbstractWebGroupProvider{
 
     private static Image REFERENCES;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletItemProvider.java
index 007269e..b737d31 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupServletItemProvider extends AbstractGroupProvider{
+public class GroupServletItemProvider extends AbstractWebGroupProvider{
 
 	private static Image SERVLET;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletMappingItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletMappingItemProvider.java
index d2616bf..71e799e 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletMappingItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupServletMappingItemProvider.java
@@ -17,7 +17,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,7 +26,7 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupServletMappingItemProvider extends AbstractGroupProvider{
+public class GroupServletMappingItemProvider extends AbstractWebGroupProvider{
 
 	private static Image SERVLETMAPPING;
 
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupWelcomePagesItemProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupWelcomePagesItemProvider.java
index 4de9b1e..da8bfac 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupWelcomePagesItemProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/GroupWelcomePagesItemProvider.java
@@ -19,7 +19,6 @@
 import org.eclipse.jst.javaee.web.WebApp;
 import org.eclipse.jst.javaee.web.WelcomeFileList;
 import org.eclipse.jst.jee.ui.internal.Messages;
-import org.eclipse.jst.jee.ui.internal.navigator.AbstractGroupProvider;
 import org.eclipse.jst.jee.ui.plugin.JEEUIPluginIcons;
 import org.eclipse.swt.graphics.Image;
 
@@ -29,69 +28,68 @@
  * @author Dimitar Giormov
  *
  */
-public class GroupWelcomePagesItemProvider extends AbstractGroupProvider{
+public class GroupWelcomePagesItemProvider extends AbstractWebGroupProvider{
 
-    private static Image WELCOME_PAGES;
+	private static Image WELCOME_PAGES;
 
-    private static Image WELCOME_PAGE;
-    
-    private List children = null;
+	private static Image WELCOME_PAGE;
 
-    public GroupWelcomePagesItemProvider(WebApp webApp) {
-        super(webApp);
-        text = Messages.WELCOME_PAGES_ITEM_PROVIDER;
-    }
+	public GroupWelcomePagesItemProvider(WebApp webApp) {
+		super(webApp);
+		text = Messages.WELCOME_PAGES_ITEM_PROVIDER;
+	}
 
-    @Override
-    public List getChildren() {
-      if (children != null){
-        return children;
-      }
-        if (javaee != null){
-          List welcomeFileLists = ((WebApp) javaee).getWelcomeFileLists();
-          if (welcomeFileLists.size()>0){
-            children =  new ArrayList();
-            for (Object object : welcomeFileLists) {
-              List welcomeFiles = ((WelcomeFileList)object).getWelcomeFiles();
-              for (Object object2 : welcomeFiles) {
-                if(object2 != null && !"".equals( ((String)object2).trim())){ //$NON-NLS-1$
-                	children.add(new WebArtifactNode((WebApp)javaee, (String) object2, getWelcomePageImage()));
-                }
-              }
-            }
-            return children;
-          }
-            return null;
-        }
-        return null;
-    }
+	@Override
+	public List getChildren() {
+//		if (children != null){
+//			return children;
+//		}
+			children.clear();
+		if (javaee != null){
+			List welcomeFileLists = ((WebApp) javaee).getWelcomeFileLists();
+			if (welcomeFileLists.size()>0){
+				children =  new ArrayList();
+				for (Object object : welcomeFileLists) {
+					List welcomeFiles = ((WelcomeFileList)object).getWelcomeFiles();
+					for (Object object2 : welcomeFiles) {
+						if(object2 != null && !"".equals( ((String)object2).trim())){ //$NON-NLS-1$
+							children.add(new WebArtifactNode((WebApp)javaee, (String) object2, getWelcomePageImage()));
+						}
+					}
+				}
+				return children;
+			}
+			return null;
+		}
+		return null;
+	}
 
-    @Override
-    public Image getImage() {
-        return getWelcomePagesImage();
-    }
+	@Override
+	public Image getImage() {
+		return getWelcomePagesImage();
+	}
 
-    @Override
-    public boolean hasChildren() {
-        return !getChildren().isEmpty();
-    }
+	@Override
+	public boolean hasChildren() {
+		List children2 = getChildren();
+		return children2 != null && !children2.isEmpty();
+	}
 
-    public static Image getWelcomePagesImage() {
-        if (WELCOME_PAGES == null) {
-            URL url = (URL) J2EEPlugin.getPlugin().getImage(JEEUIPluginIcons.GROUP_WELCOME_PAGES);
-            ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(url); 
-            WELCOME_PAGES = imageDescriptor.createImage();
-        }
-        return WELCOME_PAGES;
-    }
-    
-    public static Image getWelcomePageImage() {
-      if (WELCOME_PAGE == null) {
-          URL url = (URL) J2EEPlugin.getPlugin().getImage(JEEUIPluginIcons.GROUP_WELCOME_PAGE);
-          ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(url); 
-          WELCOME_PAGE = imageDescriptor.createImage();
-      }
-      return WELCOME_PAGE;
-  }
+	public static Image getWelcomePagesImage() {
+		if (WELCOME_PAGES == null) {
+			URL url = (URL) J2EEPlugin.getPlugin().getImage(JEEUIPluginIcons.GROUP_WELCOME_PAGES);
+			ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(url); 
+			WELCOME_PAGES = imageDescriptor.createImage();
+		}
+		return WELCOME_PAGES;
+	}
 
+	public static Image getWelcomePageImage() {
+		if (WELCOME_PAGE == null) {
+			URL url = (URL) J2EEPlugin.getPlugin().getImage(JEEUIPluginIcons.GROUP_WELCOME_PAGE);
+			ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(url); 
+			WELCOME_PAGE = imageDescriptor.createImage();
+		}
+		return WELCOME_PAGE;
+	}
 }
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java
index 9f716da..478e4c7 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java
@@ -34,7 +34,7 @@
  * @author Dimitar Giormov
  *
  */
-public class WebAppProvider extends AbstractGroupProvider implements IAdaptable {
+public class WebAppProvider extends AbstractWebGroupProvider implements IAdaptable {
   
   
 	private static final String PROJECT_RELATIVE_PATH = "WEB-INF/web.xml"; //$NON-NLS-1$