fixes for flexible project structure: committed for JL
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEDeleteAction.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEDeleteAction.java index 8dff76e..a89dcd8 100644 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEDeleteAction.java +++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEDeleteAction.java
@@ -52,8 +52,8 @@ import org.eclipse.ui.actions.DeleteResourceAction; import org.eclipse.ui.actions.SelectionListenerAction; import org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin; -import org.eclipse.wst.common.modulecore.ArtifactEdit; -import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.WorkbenchModule; +import org.eclipse.wst.common.modulecore.internal.util.IModuleConstants; import com.ibm.wtp.common.logger.proxy.Logger; import com.ibm.wtp.emf.workbench.ProjectUtilities; @@ -157,7 +157,13 @@ } protected boolean isJ2EEModule(Object o) { - return CommonUtil.isDeploymentDescriptorRoot(o, false) || isJ2EEProject(o); + if (o instanceof WorkbenchModule) { + WorkbenchModule module = (WorkbenchModule) o; + String moduleType = module.getModuleType().getModuleTypeId(); + //TODO need to add connector, app client, ear, ejb client + return moduleType.equals(IModuleConstants.JST_WEB_MODULE) || moduleType.equals(IModuleConstants.JST_EJB_MODULE); + } + return CommonUtil.isDeploymentDescriptorRoot(o, false); } protected boolean isApplication(Object o) { @@ -370,26 +376,6 @@ } } - protected boolean isJ2EEProject(Object o) { - boolean retVal = false; - if (o instanceof JavaProject) { - o = ((JavaProject) o).getProject(); - } - if (o instanceof IProject) { - IProject project = (IProject) o; - ArtifactEdit edit = null; - try { - edit = ModuleCore.getFirstArtifactEditForRead(project); - if (edit!= null) - retVal = true; - } finally { - if (edit!=null) - edit.dispose(); - } - } - return retVal; - } - protected boolean isJ2EEApplicationProject(Object o) { boolean retVal = false; if (o instanceof IProject) {
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEModuleRenameChange.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEModuleRenameChange.java index d659600..6c52083 100644 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEModuleRenameChange.java +++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EEModuleRenameChange.java
@@ -19,25 +19,19 @@ import java.lang.reflect.InvocationTargetException; import java.util.Collections; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Status; import org.eclipse.jst.j2ee.internal.dialogs.J2EERenameUIConstants; -import org.eclipse.jst.j2ee.internal.earcreation.EARNatureRuntime; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin; -import org.eclipse.jst.j2ee.internal.project.J2EENature; import org.eclipse.jst.j2ee.internal.rename.RenameModuleOperation; import org.eclipse.jst.j2ee.internal.rename.RenameOptions; -import org.eclipse.jst.j2ee.internal.rename.RenameUtilityJarMetadataOperation; -import org.eclipse.jst.j2ee.internal.rename.UpdateWebContextRootMetadataOperation; import org.eclipse.jst.j2ee.internal.web.util.WebArtifactEdit; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.RefactoringStatus; -import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.WorkbenchModule; /** @@ -49,10 +43,10 @@ public class J2EEModuleRenameChange extends Change { private String newName; - private IProject target; + private WorkbenchModule target; private boolean renameDependencies; - public J2EEModuleRenameChange(IProject target, String newName, boolean renameDependencies) { + public J2EEModuleRenameChange(WorkbenchModule target, String newName, boolean renameDependencies) { this.target = target; this.newName = newName; this.renameDependencies = renameDependencies; @@ -98,17 +92,14 @@ RenameModuleOperation renameOp = new RenameModuleOperation(getRenameOptions()); renameOp.run(pm); - IProject newTarget = ResourcesPlugin.getWorkspace().getRoot().getProject(this.newName); - if (newTarget.isAccessible()) { - String contextRoot = getServerContextRoot(newTarget); - //if (webNature != null) { - //new UpdateWebContextRootMetadataOperation(newTarget, webNature.getContextRoot()).run(pm); - if(contextRoot.equals("") == false){ //$NON-NLS-1$ - new UpdateWebContextRootMetadataOperation(newTarget, contextRoot).run(pm); - } else if (J2EENature.getRegisteredRuntime(newTarget) == null) - new RenameUtilityJarMetadataOperation(this.target, newTarget).run(pm); - } - + //String contextRoot = getServerContextRoot(); + // TODO fix up rename and context root operations + //if (webNature != null) { + //new UpdateWebContextRootMetadataOperation(newTarget, webNature.getContextRoot()).run(pm); +// if(contextRoot.equals("") == false){ //$NON-NLS-1$ +// new UpdateWebContextRootMetadataOperation(target, contextRoot).run(pm); +// } else if (J2EENature.getRegisteredRuntime(target) == null) +// new RenameUtilityJarMetadataOperation(target, newTarget).run(pm); } catch (InvocationTargetException e) { //Ignore } catch (InterruptedException e) { @@ -117,10 +108,10 @@ return null; } - protected String getServerContextRoot(IProject project) { + protected String getServerContextRoot() { WebArtifactEdit webEdit = null; try{ - webEdit = (WebArtifactEdit) ModuleCore.getFirstArtifactEditForRead(project); + webEdit = WebArtifactEdit.getWebArtifactEditForRead(target); if (webEdit != null) return webEdit.getServerContextRoot(); } finally { @@ -137,7 +128,8 @@ RenameOptions options = new RenameOptions(); options.setNewName(this.newName); options.setSelectedProjects(Collections.singletonList(this.target)); - options.setIsEARRename(EARNatureRuntime.getRuntime(this.target) != null); + // TODO check module type for EAR type + //options.setIsEARRename(EARNatureRuntime.getRuntime(this.target) != null); options.setRenameModuleDependencies(this.renameDependencies); options.setRenameModules(true); options.setRenameProjects(false);
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EERenameAction.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EERenameAction.java index 30b3db2..989279d 100644 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EERenameAction.java +++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/J2EERenameAction.java
@@ -18,8 +18,8 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IStatus; +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; -import org.eclipse.jdt.internal.core.JavaProject; import org.eclipse.jdt.ui.actions.SelectionDispatchAction; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.ErrorDialog; @@ -35,7 +35,6 @@ import org.eclipse.jst.j2ee.internal.dialogs.J2EERenameDialog; import org.eclipse.jst.j2ee.internal.dialogs.J2EERenameUIConstants; import org.eclipse.jst.j2ee.internal.dialogs.RenameModuleDialog; -import org.eclipse.jst.j2ee.internal.earcreation.EAREditModel; import org.eclipse.jst.j2ee.internal.earcreation.EARNatureRuntime; import org.eclipse.jst.j2ee.internal.listeners.IValidateEditListener; import org.eclipse.jst.j2ee.internal.listeners.ValidateEditListener; @@ -44,15 +43,16 @@ import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages; import org.eclipse.jst.j2ee.internal.rename.RenameModuleOperation; import org.eclipse.jst.j2ee.internal.rename.RenameOptions; -import org.eclipse.jst.j2ee.internal.web.util.WebArtifactEdit; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.RenameResourceAction; import org.eclipse.ui.actions.SelectionListenerAction; import org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin; -import org.eclipse.wst.common.modulecore.ArtifactEdit; import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.UnresolveableURIException; +import org.eclipse.wst.common.modulecore.WorkbenchModule; +import org.eclipse.wst.common.modulecore.WorkbenchModuleResource; import com.ibm.wtp.common.logger.proxy.Logger; import com.ibm.wtp.emf.workbench.ProjectUtilities; @@ -62,7 +62,7 @@ protected Shell shell; //Used for EAR rename protected Set referencedProjects; - protected List projects; + protected List modules; protected RenameOptions options; // added for IRefactoringAction behavior protected ISelectionProvider provider = null; @@ -92,7 +92,7 @@ renameModuleOperation = null; } referencedProjects = null; - projects = null; + modules = null; options = null; } @@ -136,7 +136,8 @@ Iterator it = sel.iterator(); while (it.hasNext()) { Object o = it.next(); - if (!CommonUtil.isDeploymentDescriptorRoot(o, false) && !isJ2EEProject(o)) + //TODO check for j2ee workbench module selection + if (!CommonUtil.isDeploymentDescriptorRoot(o, false) /*&& !isJ2EEProject(o)*/) return false; } return true; @@ -154,32 +155,45 @@ } - protected List getProjects() { - if (projects == null) { - projects = new ArrayList(); + protected List getModules() { + if (modules == null) { + modules = new ArrayList(); IStructuredSelection sel = (StructuredSelection) getSelection(); Iterator iterator = sel.iterator(); - IProject project = null; + WorkbenchModule module = null; Object o = null; while (iterator.hasNext()) { o = iterator.next(); - if (o instanceof JavaProject) { - o = ((JavaProject) o).getProject(); - } - if (o instanceof IProject) { - projects.add(o); + if (o instanceof WorkbenchModule) { + modules.add(o); } else if (o instanceof EObject) { EObject obj = (EObject) o; - project = ProjectUtilities.getProject(obj); - if (project == null) - throw new RuntimeException(J2EEUIMessages.getResourceString("Project_should_not_be_null_1_ERROR_")); //$NON-NLS-1$ - projects.add(project); + IProject project = ProjectUtilities.getProject(obj); + ModuleCore moduleCore = null; + try { + moduleCore = ModuleCore.getModuleCoreForRead(project); + URI uri = obj.eResource().getURI(); + WorkbenchModuleResource[] resources = moduleCore.findWorkbenchModuleResourcesBySourcePath(uri); + for (int i=0; i<resources.length; i++) { + module = resources[i].getModule(); + if (module !=null) + break; + } + if (module == null) + throw new RuntimeException(J2EEUIMessages.getResourceString("Project_should_not_be_null_1_ERROR_")); //$NON-NLS-1$ + modules.add(module); + } catch (UnresolveableURIException e) { + //Ignore + } finally { + if (moduleCore !=null) + moduleCore.dispose(); + } } else { throw new RuntimeException(J2EEUIMessages.getResourceString("Non-project_in_selection_2_ERROR_")); //$NON-NLS-1$ } } } - return projects; + return modules; } /** @@ -187,27 +201,29 @@ */ public void run() { try { - List localProjects = getProjects(); - if (localProjects.size() != 1) + List localModules = getModules(); + if (localModules.size() != 1) return; - IProject project = (IProject) localProjects.get(0); + WorkbenchModule module = (WorkbenchModule) localModules.get(0); J2EERenameDialog dlg = null; // if all we are doing is renaming an EAR, let the base platform do it if (isSelectionAllApplications()) { RenameResourceAction action = new RenameResourceAction(shell); - action.selectionChanged(new StructuredSelection(project)); + action.selectionChanged(new StructuredSelection(module)); action.run(); } else { - String contextRoot = getServerContextRoot(project); - dlg = new RenameModuleDialog(shell, project.getName(), contextRoot); + String contextRoot = ""; //$NON-NLS-1$ + //TODO add context root to the module model + //contextRoot = module.getServerContextRoot(); + dlg = new RenameModuleDialog(shell, module.getDeployedName(), contextRoot); dlg.open(); if (dlg.getReturnCode() == Window.CANCEL) return; options = dlg.getRenameOptions(); if (options != null) - options.setSelectedProjects(localProjects); + options.setSelectedProjects(localModules); if (!(ensureEditorsSaved() && validateState())) return; @@ -232,19 +248,20 @@ } protected void computeReferencedProjects() { - getProjects(); + getModules(); referencedProjects = new HashSet(); - for (int i = 0; i < projects.size(); i++) { - IProject project = (IProject) projects.get(i); - EARNatureRuntime runtime = EARNatureRuntime.getRuntime(project); - if (runtime == null) - continue; - EAREditModel editModel = runtime.getEarEditModelForRead(this); - try { - referencedProjects.addAll(editModel.getModuleMappedProjects()); - } finally { - editModel.releaseAccess(this); - } + for (int i = 0; i < modules.size(); i++) { + //WorkbenchModule module = (WorkbenchModule) modules.get(i); + //TODO fix up code here for modules instead of projects +// EARNatureRuntime runtime = EARNatureRuntime.getRuntime(project); +// if (runtime == null) +// continue; +// EAREditModel editModel = runtime.getEarEditModelForRead(this); +// try { +// referencedProjects.addAll(editModel.getModuleMappedProjects()); +// } finally { +// editModel.releaseAccess(this); +// } } } @@ -299,10 +316,10 @@ // only web projects should have a context root String newContextRoot = options.getNewContextRoot(); if (newContextRoot != null && options.shouldRenameProjects()) { - IProject project = (IProject) getProjects().get(0); + //WorkbenchModule module = (WorkbenchModule) getModules().get(0); try { - IProject newProject = project.getWorkspace().getRoot().getProject(options.getNewName()); - setServerContextRoot(newProject, newContextRoot); + // TODO add server context root to the module model + //module.setServerContextRoot(newContextRoot); } catch (Throwable t) { //Ignore } @@ -336,26 +353,6 @@ } } - protected boolean isJ2EEProject(Object o) { - boolean retVal = false; - if (o instanceof JavaProject) { - o = ((JavaProject) o).getProject(); - } - if (o instanceof IProject) { - IProject project = (IProject) o; - ArtifactEdit edit = null; - try { - edit = ModuleCore.getFirstArtifactEditForRead(project); - if (edit!= null) - retVal = true; - } finally { - if (edit!=null) - edit.dispose(); - } - } - return retVal; - } - protected boolean isJ2EEApplicationProject(Object o) { boolean retVal = false; if (o instanceof IProject) { @@ -403,30 +400,4 @@ ErrorDialog.openError(shell, null, null, status, IStatus.ERROR); } - - protected String getServerContextRoot(IProject project) { - WebArtifactEdit webEdit = null; - try{ - webEdit = (WebArtifactEdit) ModuleCore.getFirstArtifactEditForRead(project); - if(webEdit != null) { - return webEdit.getServerContextRoot(); - } - } finally { - if( webEdit != null ) - webEdit.dispose(); - } - return ""; //$NON-NLS-1$ - } - - protected void setServerContextRoot(IProject project, String contextRoot) { - WebArtifactEdit webEdit = null; - try{ - webEdit = (WebArtifactEdit) ModuleCore.getFirstArtifactEditForRead(project); - if(webEdit != null) - webEdit.setServerContextRoot(contextRoot); - } finally{ - if( webEdit != null ) - webEdit.dispose(); - } - } } \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java index 35dc20f..b612ded 100644 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java +++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/actions/OpenJ2EEResourceAction.java
@@ -16,6 +16,7 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jem.java.JavaClass; @@ -59,6 +60,9 @@ import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel; import org.eclipse.wst.common.modulecore.ArtifactEdit; import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.UnresolveableURIException; +import org.eclipse.wst.common.modulecore.WorkbenchModule; +import org.eclipse.wst.common.modulecore.WorkbenchModuleResource; import sun.misc.Service; @@ -284,10 +288,20 @@ // Handle Servlet Link case else { linkName = ((ServletLink) link).getServletLink(); + URI uri = link.eResource().getURI(); + ModuleCore moduleCore = null; WebArtifactEdit webEdit = null; WebApp webApp = null; try{ - webEdit = (WebArtifactEdit) ModuleCore.getFirstArtifactEditForRead(p); + moduleCore = ModuleCore.getModuleCoreForRead(p); + WorkbenchModuleResource[] resources = moduleCore.findWorkbenchModuleResourcesBySourcePath(uri); + WorkbenchModule module = null; + for (int i=0; i<resources.length; i++) { + module = resources[i].getModule(); + if (module != null) + break; + } + webEdit = WebArtifactEdit.getWebArtifactEditForRead(module); if(webEdit != null) webApp = (WebApp) webEdit.getDeploymentDescriptorRoot(); if (webApp == null) @@ -296,7 +310,11 @@ if (servlet == null) return; javaClass = servlet.getServletClass(); + } catch (UnresolveableURIException e) { + //Ignore } finally{ + if (moduleCore != null) + moduleCore.dispose(); if( webEdit != null ) webEdit.dispose(); }
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebModuleCreationOperation.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebModuleCreationOperation.java index 8d0b28a..32104ae 100644 --- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebModuleCreationOperation.java +++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebModuleCreationOperation.java
@@ -33,6 +33,7 @@ import org.eclipse.jst.j2ee.internal.J2EEConstants; import org.eclipse.jst.j2ee.internal.web.operations.WebEditModel; import org.eclipse.jst.j2ee.internal.web.operations.WebPropertiesUtil; +import org.eclipse.jst.j2ee.internal.web.util.WebArtifactEdit; import org.eclipse.wst.common.frameworks.internal.WTPProjectUtilities; import org.eclipse.wst.common.internal.emfworkbench.operation.EditModelOperation; import org.eclipse.wst.common.modulecore.ModuleCore; @@ -54,15 +55,6 @@ protected void createProject(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { super.createProject(monitor); - //TODO add contextRoot and contentName to workbechModule - //J2EEWebNatureRuntime nature = J2EEWebNatureRuntime.getRuntime(((WebModuleCreationDataModel)operationDataModel).getTargetProject()); - //WebArtifactEdit webArtifactEdit = (WebArtifactEdit)ModuleCore.getFirstArtifactEditForRead(((WebModuleCreationDataModel)operationDataModel).getTargetProject()); - //nature.getWebSettings().setWebContentName(operationDataModel.getStringProperty(WebModuleCreationDataModel.WEB_CONTENT)); - //nature.getWebSettings().setContextRoot(operationDataModel.getStringProperty(webArtifactEdit.getContextRoot())); - //URIConverter uriConverter = ((ProjectResourceSet) nature.getResourceSet()).getURIConverter(); - //dont need this, keeps nature in synch with websetting file - //if (uriConverter instanceof J2EEModuleWorkbenchURIConverterImpl) - // ((J2EEModuleWorkbenchURIConverterImpl) uriConverter).recomputeContainersIfNecessary(); } protected void createDeploymentDescriptor(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { @@ -96,6 +88,7 @@ super.execute(monitor); J2EEModuleCreationDataModel dataModel = (J2EEModuleCreationDataModel) operationDataModel; if (dataModel.getBooleanProperty(WebModuleCreationDataModel.MIGRATE_WEB_SETTINGS)) { + //TODO migrate websettings file? //IProject project = dataModel.getProjectDataModel().getProject(); //webNature.getWebSettings().write(); //project.getFile(webNature.getWebSettingsPath()).refreshLocal(0, monitor); @@ -135,6 +128,23 @@ WorkbenchModule webModule = addWorkbenchModule(projectModules, getModuleName()+".war", createModuleURI()); //$NON-NLS-1$ addResource(webModule, getModuleRelativeFile(getWebContentSourcePath(), getProject()), getWebContentDeployPath()); addResource(webModule, getModuleRelativeFile(getJavaSourceSourcePath(), getProject()), getJavaSourceDeployPath()); + WebArtifactEdit webArtifactEdit = null; + try { + webArtifactEdit = WebArtifactEdit.getWebArtifactEditForWrite(webModule); + if (webArtifactEdit != null) { + webArtifactEdit.setServerContextRoot(operationDataModel.getStringProperty(WebModuleCreationDataModel.CONTEXT_ROOT)); + // TODO add contentName setting + //nature.getWebSettings().setWebContentName(operationDataModel.getStringProperty(WebModuleCreationDataModel.WEB_CONTENT)); + } + } finally { + if (webArtifactEdit!=null) + webArtifactEdit.dispose(); + } + //TODO do we need to keep this web content stuff? + //URIConverter uriConverter = ((ProjectResourceSet) nature.getResourceSet()).getURIConverter(); + //dont need this, keeps nature in synch with websetting file + //if (uriConverter instanceof J2EEModuleWorkbenchURIConverterImpl) + // ((J2EEModuleWorkbenchURIConverterImpl) uriConverter).recomputeContainersIfNecessary(); } /**
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/WebPropertiesUtil.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/WebPropertiesUtil.java index 4b4e717..1d2510d 100644 --- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/WebPropertiesUtil.java +++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/operations/WebPropertiesUtil.java
@@ -520,8 +520,8 @@ } public static IFolder getModuleServerRoot(IProject project) { - //TODO needs to be implemented - return null; + //TODO need to implement module server root properly + return project.getFolder("WebContent"); } public static IFolder getWebLibFolder(IProject project) {
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationDataModel.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationDataModel.java index 6e4abf4..37f4a2f 100644 --- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationDataModel.java +++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationDataModel.java
@@ -102,7 +102,7 @@ protected void init() { super.init(); - getJavaProjectCreationDataModel().setProperty(ProjectCreationDataModel.PROJECT_NATURES, new String[]{J2EENatureID}); + //getJavaProjectCreationDataModel().setProperty(ProjectCreationDataModel.PROJECT_NATURES, new String[]{J2EENatureID}); //set it so it pushes it down to ServerTargeting setProperty(J2EE_MODULE_VERSION, getDefaultProperty(J2EE_MODULE_VERSION)); applicationCreationDataModel.addListener(this);
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationOperation.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationOperation.java index 5da3214..bce161c 100644 --- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationOperation.java +++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/operations/J2EEModuleCreationOperation.java
@@ -41,6 +41,7 @@ import org.eclipse.jst.j2ee.internal.J2EEConstants; import org.eclipse.jst.j2ee.internal.project.J2EENature; import org.eclipse.jst.j2ee.internal.project.ManifestFileCreationAction; +import org.eclipse.wst.common.modulecore.WorkbenchModule; public abstract class J2EEModuleCreationOperation extends J2EEArtifactCreationOperation { /** @@ -92,8 +93,7 @@ javaProjectOperation.doRun(monitor); updateClasspath(projectModel); J2EEModuleCreationDataModel dataModel = (J2EEModuleCreationDataModel) operationDataModel; - J2EENature nature = (J2EENature) dataModel.getProjectDataModel().getProject().getNature(dataModel.getJ2EENatureID()); - setVersion(nature, monitor); + //setVersion(nature, monitor); addServerTarget(monitor); } @@ -139,9 +139,10 @@ } } - protected void setVersion(J2EENature nature, IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { + protected void setVersion(WorkbenchModule module, IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { J2EEModuleCreationDataModel dataModel = (J2EEModuleCreationDataModel) operationDataModel; - nature.setModuleVersion(dataModel.getIntProperty(J2EEModuleCreationDataModel.J2EE_MODULE_VERSION)); + //TODO set module version? + //module.setModuleVersion(dataModel.getIntProperty(J2EEModuleCreationDataModel.J2EE_MODULE_VERSION)); }
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java index 73e2817..067b08e 100644 --- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java +++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java
@@ -18,12 +18,13 @@ import org.eclipse.jst.j2ee.internal.project.IWebNatureConstants; import org.eclipse.jst.j2ee.internal.web.archive.operations.WebModuleCreationDataModel; import org.eclipse.jst.j2ee.internal.web.operations.ConvertWebProjectDataModel; -import org.eclipse.jst.j2ee.internal.web.util.WebArtifactEdit; import org.eclipse.jst.servlet.ui.internal.wizard.ConvertToWebModuleTypeWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.wst.common.internal.emfworkbench.operation.EditModelOperationDataModel; import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.UnresolveableURIException; +import org.eclipse.wst.common.modulecore.WorkbenchModule; import org.eclipse.wst.web.internal.operation.StaticWebNatureRuntime; import com.ibm.wtp.common.logger.proxy.Logger; @@ -83,21 +84,6 @@ } /** - * make sure a web project is selected. - */ - public boolean isValidProject(IProject aProject) - { - WebArtifactEdit webEdit = null; - try { - webEdit = (WebArtifactEdit) ModuleCore.getFirstArtifactEditForRead(aProject); - return webEdit!=null; - } finally { - if (webEdit != null) - webEdit.dispose(); - } - } - - /** * selectionChanged method comment. */ public void selectionChanged(IAction action, ISelection selection) @@ -120,10 +106,15 @@ fSelection = (IStructuredSelection) selection; - Object selectedProject = fSelection.getFirstElement(); - if( !(selectedProject instanceof IProject) ) return false; - - project = (IProject) selectedProject; - return isValidProject(project); + Object selectedObject = fSelection.getFirstElement(); + if( !(selectedObject instanceof WorkbenchModule) ) + return false; + //TODO need to make sure set input of module + try { + project = ModuleCore.getContainingProject(((WorkbenchModule)selectedObject).getHandle()); + } catch (UnresolveableURIException e) { + return false; + } + return true; } } \ No newline at end of file
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddServletWizard.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddServletWizard.java index 977985c..a11778d 100644 --- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddServletWizard.java +++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddServletWizard.java
@@ -19,6 +19,9 @@ import org.eclipse.wst.common.frameworks.operations.WTPOperation; import org.eclipse.wst.common.frameworks.operations.WTPOperationDataModel; import org.eclipse.wst.common.internal.emfworkbench.operation.EditModelOperationDataModel; +import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.UnresolveableURIException; +import org.eclipse.wst.common.modulecore.WorkbenchModule; /** * New servlet wizard @@ -50,7 +53,14 @@ model.setProperty(NewJavaClassDataModel.SUPERCLASS, NewServletClassDataModel.SERVLET_SUPERCLASS); model.setProperty(NewJavaClassDataModel.INTERFACES, ((NewServletClassDataModel)model).getServletInterfaces()); - IProject project = getDefaultWebProject(); + WorkbenchModule workbenchModule = getDefaultWebModule(); + //TODO set the workbench module on the data model + IProject project = null; + try { + ModuleCore.getContainingProject(workbenchModule.getHandle()); + } catch(UnresolveableURIException e) { + //Ignore + } if (project != null) model.setProperty(EditModelOperationDataModel.PROJECT_NAME, project.getName()); return model;
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebJavaClassDestinationWizardPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebJavaClassDestinationWizardPage.java index 847bdfb..9d9fa0a 100644 --- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebJavaClassDestinationWizardPage.java +++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebJavaClassDestinationWizardPage.java
@@ -11,13 +11,12 @@ package org.eclipse.jst.servlet.ui.internal.wizard; import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.wizard.IWizardPage; -import org.eclipse.jst.j2ee.internal.web.util.WebArtifactEdit; import org.eclipse.wst.common.frameworks.operations.WTPOperationDataModel; -import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.WorkbenchModule; +import org.eclipse.wst.common.modulecore.internal.util.IModuleConstants; import com.ibm.wtp.emf.workbench.ProjectUtilities; @@ -34,16 +33,10 @@ return new ViewerFilter() { public boolean select(Viewer viewer, Object parent, Object element) { boolean ret = false; - if (element instanceof IProject) { - WebArtifactEdit webEdit = null; - try { - IProject project = (IProject) element; - webEdit = (WebArtifactEdit) ModuleCore.getFirstArtifactEditForRead(project); - ret = webEdit!=null; - } finally { - if (webEdit != null) - webEdit.dispose(); - } + if (element instanceof WorkbenchModule) { + WorkbenchModule module = (WorkbenchModule) element; + String moduleType = module.getModuleType().getModuleTypeId(); + return moduleType.equals(IModuleConstants.JST_WEB_MODULE); } else if (element instanceof IFolder) { IFolder folder = (IFolder) element; // only show source folders
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebWizard.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebWizard.java index cf168f2..c3e0e9b 100644 --- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebWizard.java +++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebWizard.java
@@ -11,6 +11,9 @@ package org.eclipse.jst.servlet.ui.internal.wizard; import org.eclipse.core.resources.IProject; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin; @@ -20,8 +23,11 @@ import org.eclipse.wst.common.frameworks.operations.WTPOperation; import org.eclipse.wst.common.frameworks.operations.WTPOperationDataModel; import org.eclipse.wst.common.frameworks.ui.WTPWizard; -import org.eclipse.wst.common.modulecore.ArtifactEdit; import org.eclipse.wst.common.modulecore.ModuleCore; +import org.eclipse.wst.common.modulecore.UnresolveableURIException; +import org.eclipse.wst.common.modulecore.WorkbenchModule; +import org.eclipse.wst.common.modulecore.WorkbenchModuleResource; +import org.eclipse.wst.common.modulecore.internal.util.IModuleConstants; import com.ibm.wtp.emf.workbench.ProjectUtilities; @@ -68,30 +74,53 @@ createDefaultModel(); } - protected IProject getDefaultWebProject() { + protected WorkbenchModule getDefaultWebModule() { IProject project = null; IStructuredSelection selection = getCurrentSelection(); if (selection != null && selection.getFirstElement() != null) { - project = ProjectUtilities.getProject(selection.getFirstElement()); - } - if (project == null) { - IProject[] projects = ProjectUtilities.getAllProjects(); - ArtifactEdit edit = null; - for (int i = 0; i < projects.length; i++) { - //TODO this assumes only web projects and one module per project for now - try { - edit = ModuleCore.getFirstArtifactEditForRead(projects[i]); - if (edit != null) { - project = projects[i]; - break; - } - } finally { - if (edit != null) - edit.dispose(); + Object selectedObject = selection.getFirstElement(); + if (selectedObject instanceof WorkbenchModule) + return (WorkbenchModule) selectedObject; + project = ProjectUtilities.getProject(selectedObject); + URI uri = null; + if (selectedObject instanceof Resource) + uri = ((Resource)selectedObject).getURI(); + if (selectedObject instanceof EObject) + uri = ((EObject)selectedObject).eResource().getURI(); + if (uri == null) + return null; + ModuleCore moduleCore = null; + WorkbenchModule module = null; + try { + moduleCore = ModuleCore.getModuleCoreForRead(project); + WorkbenchModuleResource[] resources = moduleCore.findWorkbenchModuleResourcesBySourcePath(uri); + for (int i=0; i<resources.length; i++) { + module = resources[i].getModule(); + if (module != null) + return module; } + } catch(UnresolveableURIException e) { + //Ignore + } finally { + if (moduleCore != null) + moduleCore.dispose(); } } - return project; + + IProject[] projects = ProjectUtilities.getAllProjects(); + ModuleCore moduleCore = null; + for (int i = 0; i < projects.length; i++) { + try { + moduleCore = ModuleCore.getModuleCoreForRead(projects[i]); + WorkbenchModule[] modules = moduleCore.findWorkbenchModuleByType(IModuleConstants.JST_WEB_MODULE); + if (modules.length>0) + return modules[0]; + } finally { + if (moduleCore != null) + moduleCore.dispose(); + } + } + return null; } protected IStructuredSelection getCurrentSelection() {
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARExportPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARExportPage.java index 246f0b6..63f3d1a 100644 --- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARExportPage.java +++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARExportPage.java
@@ -21,7 +21,6 @@ import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons; -import org.eclipse.jst.j2ee.internal.project.IWebNatureConstants; import org.eclipse.jst.j2ee.internal.wizard.J2EEModuleExportPage; import org.eclipse.jst.servlet.ui.internal.plugin.WEBUIMessages;