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