[jbosstools-commits] JBoss Tools SVN: r42297 - trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/wizards/newfile.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Thu Jun 28 20:34:32 EDT 2012


Author: scabanovich
Date: 2012-06-28 20:34:27 -0400 (Thu, 28 Jun 2012)
New Revision: 42297

Modified:
   trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/wizards/newfile/NewDSXMLWizard.java
Log:
JBIDE-11394
https://issues.jboss.org/browse/JBIDE-11394
For an EAR project, persistence.xml is looked for in EJB project component.





Modified: trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/wizards/newfile/NewDSXMLWizard.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/wizards/newfile/NewDSXMLWizard.java	2012-06-28 19:55:11 UTC (rev 42296)
+++ trunk/jst/plugins/org.jboss.tools.jst.web.ui/src/org/jboss/tools/jst/web/ui/wizards/newfile/NewDSXMLWizard.java	2012-06-29 00:34:27 UTC (rev 42297)
@@ -63,6 +63,8 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.jst.j2ee.project.WebUtilities;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
@@ -87,6 +89,9 @@
 import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
 import org.eclipse.ui.internal.wizards.newresource.ResourceMessages;
 import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
@@ -588,8 +593,10 @@
 		static final String PERSISTENCE_XML_PATH = "META-INF/persistence.xml"; //$NON-NLS-1$
 
 		private IFile findPersistenceXMLHandle() {
-			IPath containerPath = getContainerFullPath();
-			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(containerPath.segment(0));
+			IProject project = findJavaProject();
+			if(project == null) {
+				return null;
+			}
 			Set<IFolder> srcs = EclipseResourceUtil.getSourceFolders(project);
 			IFolder src = (IFolder)EclipseResourceUtil.getJavaSourceRoot(project);
 			if(src != null) {
@@ -608,6 +615,37 @@
 			
 			return null;
 		}
+
+		/**
+		 * If current project is a Java project, returns it.
+		 * If current project is a EAR project, returns a component EJB project, if it is available.
+		 * Otherwise, returns null.
+		 * @return
+		 */
+		private IProject findJavaProject() {
+			IPath containerPath = getContainerFullPath();
+			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(containerPath.segment(0));
+			if(EclipseResourceUtil.getJavaProject(project) != null) {
+				return project;
+			}
+			if(JavaEEProjectUtilities.isEARProject(project)) {
+				IVirtualComponent comp = ComponentCore.createComponent(project);
+				if(comp != null) {
+					IVirtualReference[] refComponents = comp.getReferences();
+					for (IVirtualReference virtualReference : refComponents) {
+						IVirtualComponent component = virtualReference.getReferencedComponent();
+						if(component != null && !component.isBinary() && !WebUtilities.isDynamicWebComponent(component)) {
+							IProject p = component.getProject();
+							if(JavaEEProjectUtilities.isEJBProject(p)) {
+								return p;
+							}
+						}
+					}
+				}
+			}
+			
+			return null;
+		}
 	
 		private InputStream getPersistanceXMLContent(IFile persistenceFile, IFile newFile) {
 			try {



More information about the jbosstools-commits mailing list