[298475] ClassCastException occurs when try to open a session bean from the DD tree
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java index ceb18ea..1036ede 100644 --- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java +++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/OpenJEEResourceAction.java
@@ -110,21 +110,32 @@ protected void openAppropriateEditor(String c) { if(getStructuredSelection() instanceof TreeSelection){ - IProject project = (IProject) ((TreePath)((TreeSelection)getStructuredSelection()).getPaths()[0]).getSegment(0); - IType findType; - try { - findType = JavaCore.create(project).findType(c); - if(findType == null){ - return; + TreePath path = ((TreeSelection) getStructuredSelection()).getPaths()[0]; + IProject project = null; + + while (path != null) { + Object segment = path.getLastSegment(); + if (segment instanceof IProject) { + project = (IProject) segment; + break; } - openAppropriateEditor(findType.getResource()); - } catch (JavaModelException e) { - JEEUIPlugin.logError("Error during open editor", e); //$NON-NLS-1$ + path = path.getParentPath(); } - + + if (project != null) { + try { + IType findType = JavaCore.create(project).findType(c); + if(findType == null){ + return; + } + openAppropriateEditor(findType.getResource()); + } catch (JavaModelException e) { + JEEUIPlugin.logError("Error during open editor", e); //$NON-NLS-1$ + } + } } - } + protected void openAppropriateEditor(IVirtualComponent c) { if (c == null) { return; @@ -234,6 +245,8 @@ } IResource resource = WorkbenchResourceHelper.getFile((EObject)srcObject); + if(resource == null) + return; IProject project = resource.getProject(); IJavaProject javaProject = JavaCore.create(project); if(javaProject.exists()){ @@ -455,4 +468,4 @@ srcObject = obj; return true; } -} +} \ No newline at end of file