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 {