[272220] Core Exception thrown from EJB 3 New Session Bean wizard
diff --git a/plugins/org.eclipse.jst.j2ee.ejb/ejb/org/eclipse/jst/j2ee/ejb/internal/operations/NewSessionBeanClassOperation.java b/plugins/org.eclipse.jst.j2ee.ejb/ejb/org/eclipse/jst/j2ee/ejb/internal/operations/NewSessionBeanClassOperation.java
index 91ffbff..3c84160 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/ejb/org/eclipse/jst/j2ee/ejb/internal/operations/NewSessionBeanClassOperation.java
+++ b/plugins/org.eclipse.jst.j2ee.ejb/ejb/org/eclipse/jst/j2ee/ejb/internal/operations/NewSessionBeanClassOperation.java
@@ -17,9 +17,12 @@
import static org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties.JAVA_PACKAGE_FRAGMENT_ROOT;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -30,6 +33,7 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.codegen.jet.JETException;
+import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
@@ -294,14 +298,33 @@
// If folder does not exist, create the folder with the specified path
if (!folder.exists()) {
try {
- folder.create(true, true, null);
+ createFolder( folder, false );
} catch (CoreException e) {
EjbPlugin.getDefault().getLogger().logError(e);
}
+
+ IProject clientProject = EJBUtilities.getEJBClientJar(getTargetProject()).getProject();
+ IJavaProject jProject = JavaCore.create( clientProject );
+ if( jProject != null ){
+ IClasspathEntry newEntry = JavaCore.newSourceEntry( folder.getFullPath() );
+
+ List<IClasspathEntry> cp = new ArrayList<IClasspathEntry>();
+ IClasspathEntry[] classPath;
+ try {
+ classPath = jProject.getRawClasspath();
+ cp.addAll( Arrays.asList( classPath ) );
+ cp.add( newEntry );
+ jProject.setRawClasspath( cp.toArray( new IClasspathEntry[ cp.size() ] ), null );
+ } catch (JavaModelException e) {
+ EjbPlugin.getDefault().getLogger().logError(e);
+ }
+
+ }
+
}
// Return the source folder
return folder;
- }
+ }
protected IPackageFragment createJavaPackageInClientJar(String packageName) {
IPackageFragmentRoot packRoot = getClientPackageFragmentRoot();
@@ -396,4 +419,19 @@
// Return the package
return pack;
}
+
+ private static void createFolder( final IFolder folder,
+ final boolean isDerived ) throws CoreException {
+ if( ! folder.exists() ){
+
+ final IContainer parent = folder.getParent();
+
+ if( parent instanceof IFolder ){
+ createFolder( (IFolder) parent, isDerived );
+ }
+
+ folder.create( true, true, null );
+ folder.setDerived( isDerived );
+ }
+ }
}