Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsanchez2012-01-26 16:38:25 +0000
committerrsanchez2012-01-26 16:38:25 +0000
commitcc78e1d9775aaa9a591b4670168ce45fe8bdd12c (patch)
tree3f561327bf8f7d7dddfbf141ce8e43f421ad079c
parentd7793b71613673429accffdf1eae3daa478bf99c (diff)
downloadwebtools.ejb.git.old-cc78e1d9775aaa9a591b4670168ce45fe8bdd12c.tar.gz
webtools.ejb.git.old-cc78e1d9775aaa9a591b4670168ce45fe8bdd12c.tar.xz
webtools.ejb.git.old-cc78e1d9775aaa9a591b4670168ce45fe8bdd12c.zip
[369444] Add session bean should not always create a ejbModule source folder in the client project
-rw-r--r--plugins/org.eclipse.jst.j2ee.ejb/ejb/org/eclipse/jst/j2ee/ejb/internal/operations/NewSessionBeanClassOperation.java45
1 files changed, 41 insertions, 4 deletions
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 cbd71901..d9aaf6cd 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2008 SAP AG and others.
+ * Copyright (c) 2007, 2012 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
*
* Contributors:
* Kaloyan Raev, kaloyan.raev@sap.com - initial API and implementation
+ * Roberto Sanchez, rsanchez@mx1.ibm.com - Allow more flexibility for source folder in EJB client
*******************************************************************************/
package org.eclipse.jst.j2ee.ejb.internal.operations;
@@ -40,12 +41,15 @@ import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.Signature;
+import org.eclipse.jst.common.jdt.internal.javalite.JavaLiteUtilities;
import org.eclipse.jst.j2ee.ejb.internal.plugin.EjbPlugin;
import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties;
import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
import org.eclipse.jst.j2ee.project.EJBUtilities;
import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.internal.operation.ArtifactEditProviderOperation;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.frameworks.internal.enablement.nonui.WFTWrappedException;
@@ -135,8 +139,19 @@ public class NewSessionBeanClassOperation extends NewEnterpriseBeanClassOperatio
String packageName = model.getStringProperty(JAVA_PACKAGE);
// Create java package if it does not exist
pack = createJavaPackage(packageName);
- if (hasInterfacesToGenerate() && EJBUtilities.hasEJBClientJARProject(getTargetProject())) {
- createJavaSourceFolderInClientJar();
+ if (hasInterfacesToGenerate() && EJBUtilities.hasEJBClientJARProject(getTargetProject())) {
+ IFolder folder = getClientSourceFolder();
+ if (!folder.exists()){
+ // If the source folder used by the EJB project does not exist in the
+ // client project, try to use the first source folder available
+ folder = getFirstJavaSourceFolderInClientJar();
+
+ if (folder == null) {
+ // If the is no source folder available, create the source
+ // folder used by the EJB project.
+ createJavaSourceFolderInClientJar();
+ }
+ }
clientPack = createJavaPackageInClientJar(packageName);
}
@@ -296,6 +311,25 @@ public class NewSessionBeanClassOperation extends NewEnterpriseBeanClassOperatio
return fragment;
}
+ // Returns the first java source folder found in the client jar project, or null if no source folder exists.
+ private IFolder getFirstJavaSourceFolderInClientJar(){
+ IFolder result = null;
+
+ IProject clientProject = EJBUtilities.getEJBClientJar(getTargetProject()).getProject();
+
+ IVirtualComponent clientVc = ComponentCore.createComponent(clientProject);
+ List<IContainer> sourceCointainers = JavaLiteUtilities.getJavaSourceContainers(clientVc);
+
+ for (IContainer container:sourceCointainers){
+ if (container instanceof IFolder && !container.getName().startsWith(".")) { //$NON-NLS-1$
+ // We only want source folders which are not hidden (i.e. its name does not begin with ".")
+ result = (IFolder)container;
+ break;
+ }
+ }
+ return result;
+ }
+
protected IFolder createJavaSourceFolderInClientJar() {
// Get the source folder name from the data model
IFolder folder = getClientSourceFolder();
@@ -386,7 +420,10 @@ public class NewSessionBeanClassOperation extends NewEnterpriseBeanClassOperatio
private IPackageFragmentRoot getClientPackageFragmentRoot() {
IFolder folder = getClientSourceFolder();
-
+ if (!folder.exists())
+ folder = getFirstJavaSourceFolderInClientJar();
+ if (folder == null)
+ return null;
IProject clientProject = EJBUtilities.getEJBClientJar(getTargetProject()).getProject();
IJavaProject clientJavaProject = JavaCore.create(clientProject);
return clientJavaProject.getPackageFragmentRoot(folder);

Back to the top