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