[299764] Exception from JEE5ContentProvider
diff --git a/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF
index 00ed07b..9a31307 100644
--- a/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.jee.ui;singleton:=true
-Bundle-Version: 1.0.104.qualifier
+Bundle-Version: 1.0.105.qualifier
 Bundle-Activator: org.eclipse.jst.jee.ui.plugin.JEEUIPlugin
 Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/JEE5ContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/JEE5ContentProvider.java
index b8cb189..0f0fa05 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/JEE5ContentProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/JEE5ContentProvider.java
@@ -106,64 +106,68 @@
 				public void run() {
 					if (viewer != null) {
 						try{
-							viewer.getControl().setRedraw(false);
-							ISelection sel = ((TreeViewer) viewer).getSelection();
-							ITreeContentProvider contentProvider = ((ITreeContentProvider) ((TreeViewer) viewer)
-									.getContentProvider());
-							contentProvider.getChildren(project);
-							
-							Object[] expandedElements = ((TreeViewer) viewer).getExpandedElements();
-							
-							((StructuredViewer) viewer).refresh(project);
-							((TreeViewer) viewer).setSelection(sel);
-							
-							ArrayList<Object> newExpandedElements = new ArrayList<Object>();
-							
-							ArrayList<Object> allElements = new ArrayList<Object>();
-							getViewerElements(allElements, ((TreeViewer) viewer).getControl());
-							
-							Object[] expandedElementsAfterRefresh = ((TreeViewer) viewer).getExpandedElements();
-							newExpandedElements.addAll(Arrays.asList(expandedElementsAfterRefresh));
-							for(int i=0;i < expandedElements.length;i++){
-								boolean expanded = false;
-								for(int j=0;j < expandedElementsAfterRefresh.length; j++){
-									if(expandedElements[i].equals(expandedElementsAfterRefresh[j])){
-										expanded = true;
+							if( viewer.getControl() != null &&  !viewer.getControl().isDisposed() ){
+								viewer.getControl().setRedraw(false);
+								ISelection sel = ((TreeViewer) viewer).getSelection();
+								ITreeContentProvider contentProvider = ((ITreeContentProvider) ((TreeViewer) viewer)
+										.getContentProvider());
+								contentProvider.getChildren(project);
+								
+								Object[] expandedElements = ((TreeViewer) viewer).getExpandedElements();
+								
+								((StructuredViewer) viewer).refresh(project);
+								((TreeViewer) viewer).setSelection(sel);
+								
+								ArrayList<Object> newExpandedElements = new ArrayList<Object>();
+								
+								ArrayList<Object> allElements = new ArrayList<Object>();
+								getViewerElements(allElements, ((TreeViewer) viewer).getControl());
+								
+								Object[] expandedElementsAfterRefresh = ((TreeViewer) viewer).getExpandedElements();
+								newExpandedElements.addAll(Arrays.asList(expandedElementsAfterRefresh));
+								for(int i=0;i < expandedElements.length;i++){
+									boolean expanded = false;
+									for(int j=0;j < expandedElementsAfterRefresh.length; j++){
+										if(expandedElements[i].equals(expandedElementsAfterRefresh[j])){
+											expanded = true;
+										}
 									}
-								}
-								if(!expanded){
-									for(Object ob : allElements){
-										if(ob instanceof SessionBean
-												&& expandedElements[i] instanceof SessionBean){
-											SessionBean bean = (SessionBean) ob;
-											SessionBean bean2 = (SessionBean) expandedElements[i];
-											if(bean.getEjbName().equals(bean2.getEjbName())){
-												newExpandedElements.add(ob);
+									if(!expanded){
+										for(Object ob : allElements){
+											if(ob instanceof SessionBean
+													&& expandedElements[i] instanceof SessionBean){
+												SessionBean bean = (SessionBean) ob;
+												SessionBean bean2 = (SessionBean) expandedElements[i];
+												if(bean.getEjbName().equals(bean2.getEjbName())){
+													newExpandedElements.add(ob);
+												}
 											}
-										}
-										if(ob instanceof MessageDrivenBean
-												&& expandedElements[i] instanceof MessageDrivenBean){
-											MessageDrivenBean bean = (MessageDrivenBean) ob;
-											MessageDrivenBean bean2 = (MessageDrivenBean) expandedElements[i];
-											if(bean.getEjbName().equals(bean2.getEjbName())){
-												newExpandedElements.add(ob);
+											if(ob instanceof MessageDrivenBean
+													&& expandedElements[i] instanceof MessageDrivenBean){
+												MessageDrivenBean bean = (MessageDrivenBean) ob;
+												MessageDrivenBean bean2 = (MessageDrivenBean) expandedElements[i];
+												if(bean.getEjbName().equals(bean2.getEjbName())){
+													newExpandedElements.add(ob);
+												}
 											}
-										}
-										if(ob instanceof EntityBean
-												&& expandedElements[i] instanceof EntityBean){
-											EntityBean bean = (EntityBean) ob;
-											EntityBean bean2 = (EntityBean) expandedElements[i];
-											if(bean.getEjbName().equals(bean2.getEjbName())){
-												newExpandedElements.add(ob);
+											if(ob instanceof EntityBean
+													&& expandedElements[i] instanceof EntityBean){
+												EntityBean bean = (EntityBean) ob;
+												EntityBean bean2 = (EntityBean) expandedElements[i];
+												if(bean.getEjbName().equals(bean2.getEjbName())){
+													newExpandedElements.add(ob);
+												}
 											}
 										}
 									}
 								}
+								((TreeViewer) viewer).setExpandedElements(newExpandedElements.toArray());
 							}
-							((TreeViewer) viewer).setExpandedElements(newExpandedElements.toArray());
 							
 						}finally{
-							viewer.getControl().setRedraw(true);
+							if( viewer.getControl() != null &&  !viewer.getControl().isDisposed() ){
+								viewer.getControl().setRedraw(true);
+							}
 						}
 					}
 				}