Author: akazakov
Date: 2008-12-11 14:04:23 -0500 (Thu, 11 Dec 2008)
New Revision: 12558
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamUtil.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-3335
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamUtil.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamUtil.java 2008-12-11
17:37:07 UTC (rev 12557)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamUtil.java 2008-12-11
19:04:23 UTC (rev 12558)
@@ -16,6 +16,8 @@
import java.util.jar.JarFile;
import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.project.EarUtilities;
import org.jboss.tools.seam.core.project.facet.SeamRuntime;
/**
@@ -113,4 +115,39 @@
}
return packageName;
}
+
+ /**
+ * Finds referencing Seam war project
+ * @param project
+ * @return
+ */
+ public static ISeamProject findReferencingSeamWarProjectForProject(IProject project) {
+ return findReferencingSeamWarProjectForProject(project, true);
+ }
+
+ /**
+ * Finds referencing Seam war project
+ * @param project
+ * @param searchInEARs if "true" then try to search web projects in parent EAR
project.
+ * @return
+ */
+ public static ISeamProject findReferencingSeamWarProjectForProject(IProject project,
boolean searchInEARs) {
+ IProject[] referencing = J2EEProjectUtilities.getReferencingWebProjects(project);
+ for (int i = 0; i < referencing.length; i++) {
+ ISeamProject seamProject = SeamCorePlugin.getSeamProject(referencing[i], false);
+ if(seamProject!=null) {
+ return seamProject;
+ }
+ }
+ if(searchInEARs) {
+ referencing = J2EEProjectUtilities.getReferencingEARProjects(project);
+ for (int i = 0; i < referencing.length; i++) {
+ ISeamProject seamProject = findReferencingSeamWarProjectForProject(referencing[i],
false);
+ if(seamProject!=null) {
+ return seamProject;
+ }
+ }
+ }
+ return null;
+ }
}
\ No newline at end of file
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java 2008-12-11
17:37:07 UTC (rev 12557)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java 2008-12-11
19:04:23 UTC (rev 12558)
@@ -163,7 +163,7 @@
public String getParentProjectName() {
IEclipsePreferences p = getSeamPreferences();
- return p == null ? null : p.get("seam.parent.project", null);
+ return p == null ? null : p.get(ISeamFacetDataModelProperties.SEAM_PARENT_PROJECT,
null);
}
public ISeamProject getParentProject() {
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java 2008-12-11
17:37:07 UTC (rev 12557)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/project/facet/SeamFacetAbstractInstallDelegate.java 2008-12-11
19:04:23 UTC (rev 12558)
@@ -76,7 +76,6 @@
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
-import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IDelegate;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
@@ -852,50 +851,62 @@
final IDataModel model) {
IScopeContext projectScope = new ProjectScope(project);
IEclipsePreferences prefs = projectScope.getNode(SeamCorePlugin.PLUGIN_ID);
-
- prefs.put(JBOSS_AS_DEPLOY_AS, model.getProperty(JBOSS_AS_DEPLOY_AS).toString());
prefs.put(SEAM_SETTINGS_VERSION, SEAM_SETTINGS_VERSION_1_1);
- if(model.getProperty(SEAM_RUNTIME_NAME)!=null) {
- prefs.put(SEAM_RUNTIME_NAME, model.getProperty(SEAM_RUNTIME_NAME).toString());
+ boolean standaloneProject = true;
+ if(projectType==ProjectType.EJB) {
+ // Try to find parent web seam project for that ejb project.
+ ISeamProject parentWebProject =
SeamUtil.findReferencingSeamWarProjectForProject(project);
+ if(parentWebProject!=null) {
+ // set parent web Seam project.
+ prefs.put(SEAM_PARENT_PROJECT, parentWebProject.getProject().getName());
+ standaloneProject = false;
+ }
}
- if(model.getProperty(SEAM_CONNECTION_PROFILE)!=null) {
- prefs.put(SEAM_CONNECTION_PROFILE,
model.getProperty(SEAM_CONNECTION_PROFILE).toString());
- }
- prefs.put(SESSION_BEAN_PACKAGE_NAME,
model.getProperty(SESSION_BEAN_PACKAGE_NAME).toString());
- prefs.put(ENTITY_BEAN_PACKAGE_NAME,
model.getProperty(ENTITY_BEAN_PACKAGE_NAME).toString());
- prefs.put(TEST_CASES_PACKAGE_NAME,
model.getProperty(TEST_CASES_PACKAGE_NAME).toString());
- prefs.put(TEST_CREATING, "false"); //$NON-NLS-1$
- prefs.put(SEAM_TEST_PROJECT, project.getName());
- IVirtualComponent component = ComponentCore.createComponent(project);
- IVirtualFolder rootFolder = component.getRootFolder();
- IContainer webRootFolder = rootFolder.getFolder(new
Path("/")).getUnderlyingFolder(); //$NON-NLS-1$
- String webRootFolderPath = webRootFolder.getFullPath().toString();
- IPath srcRootFolder = null;
- if(projectType == ProjectType.WAR) {
- srcRootFolder = rootFolder.getFolder(new
Path("/WEB-INF/classes")).getUnderlyingFolder().getParent().getFullPath();
//$NON-NLS-1$
- } else if(projectType == ProjectType.EJB) {
- try {
- srcRootFolder = getSrcFolder(project).getFullPath();
- } catch (JavaModelException e) {
- SeamCorePlugin.getPluginLog().logError(e);
- srcRootFolder = new Path(""); //$NON-NLS-1$
+ if(standaloneProject) {
+ prefs.put(JBOSS_AS_DEPLOY_AS, model.getProperty(JBOSS_AS_DEPLOY_AS).toString());
+ if(model.getProperty(SEAM_RUNTIME_NAME)!=null) {
+ prefs.put(SEAM_RUNTIME_NAME, model.getProperty(SEAM_RUNTIME_NAME).toString());
}
+ if(model.getProperty(SEAM_CONNECTION_PROFILE)!=null) {
+ prefs.put(SEAM_CONNECTION_PROFILE,
model.getProperty(SEAM_CONNECTION_PROFILE).toString());
+ }
+ prefs.put(SESSION_BEAN_PACKAGE_NAME,
model.getProperty(SESSION_BEAN_PACKAGE_NAME).toString());
+ prefs.put(ENTITY_BEAN_PACKAGE_NAME,
model.getProperty(ENTITY_BEAN_PACKAGE_NAME).toString());
+ prefs.put(TEST_CASES_PACKAGE_NAME,
model.getProperty(TEST_CASES_PACKAGE_NAME).toString());
+ prefs.put(TEST_CREATING, "false"); //$NON-NLS-1$
+ prefs.put(SEAM_TEST_PROJECT, project.getName());
+
+ IVirtualComponent component = ComponentCore.createComponent(project);
+ IVirtualFolder rootFolder = component.getRootFolder();
+ IContainer webRootFolder = rootFolder.getFolder(new
Path("/")).getUnderlyingFolder(); //$NON-NLS-1$
+ String webRootFolderPath = webRootFolder.getFullPath().toString();
+ IPath srcRootFolder = null;
+ if(projectType == ProjectType.WAR) {
+ srcRootFolder = rootFolder.getFolder(new
Path("/WEB-INF/classes")).getUnderlyingFolder().getParent().getFullPath();
//$NON-NLS-1$
+ } else if(projectType == ProjectType.EJB) {
+ try {
+ srcRootFolder = getSrcFolder(project).getFullPath();
+ } catch (JavaModelException e) {
+ SeamCorePlugin.getPluginLog().logError(e);
+ srcRootFolder = new Path(""); //$NON-NLS-1$
+ }
+ }
+ if(projectType == ProjectType.WAR) {
+ prefs.put(WEB_CONTENTS_FOLDER, webRootFolderPath);
+ } else {
+ prefs.put(WEB_CONTENTS_FOLDER, srcRootFolder.toString());
+ }
+
+ if(!isWarConfiguration(model)) {
+ prefs.put(SEAM_EJB_PROJECT, project.getName());
+ prefs.put(SEAM_EAR_PROJECT, project.getName());
+ }
+ prefs.put(ENTITY_BEAN_SOURCE_FOLDER, srcRootFolder.toString());
+ prefs.put(SESSION_BEAN_SOURCE_FOLDER, srcRootFolder.toString());
+ prefs.put(TEST_SOURCE_FOLDER, srcRootFolder.toString());
}
- if(projectType == ProjectType.WAR) {
- prefs.put(WEB_CONTENTS_FOLDER, webRootFolderPath);
- } else {
- prefs.put(WEB_CONTENTS_FOLDER, srcRootFolder.toString());
- }
- if(!isWarConfiguration(model)) {
- prefs.put(SEAM_EJB_PROJECT, project.getName());
- prefs.put(SEAM_EAR_PROJECT, project.getName());
- }
- prefs.put(ENTITY_BEAN_SOURCE_FOLDER, srcRootFolder.toString());
- prefs.put(SESSION_BEAN_SOURCE_FOLDER, srcRootFolder.toString());
- prefs.put(TEST_SOURCE_FOLDER, srcRootFolder.toString());
-
try {
prefs.flush();
} catch (BackingStoreException e) {