Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 370251

Summary: Duplicate EAR name causes IllegalArgumentException while validation in EAR wizard
Product: [WebTools] WTP Java EE Tools Reporter: Diego Sahagun <diegosr>
Component: jst.j2eeAssignee: Diego Sahagun <diegosr>
Status: RESOLVED FIXED QA Contact: Chuck Bridgham <cbridgha>
Severity: normal    
Priority: P3 CC: diegosr, kaloyan, shr31223
Version: 3.2.5Flags: cbridgha: pmc_approved? (david_williams)
cbridgha: pmc_approved? (raghunathan.srinivasan)
cbridgha: pmc_approved? (naci.dai)
cbridgha: pmc_approved? (deboer)
cbridgha: pmc_approved? (neil.hauge)
kaloyan: pmc_approved+
cbridgha: pmc_approved? (cbridgha)
cbridgha: review+
Target Milestone: 3.3.2   
Hardware: PC   
OS: Linux   
Whiteboard: PMC_Approved
Attachments:
Description Flags
Add isRoot validation cbridgha: iplog+

Description Diego Sahagun CLA 2012-01-31 12:43:39 EST
Build Identifier: I20111209-2100

null
Error
Tue Jan 31 09:43:26 EST 2012
Unhandled event loop exception

java.lang.IllegalArgumentException: Path must include project and resource name: /EAR
    at java.lang.Throwable.<init>(Throwable.java:67)
    at org.eclipse.core.runtime.Assert.isLegal(Assert.java:62)
    at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:2163)
    at org.eclipse.core.internal.resources.Container.getFolder(Container.java:222)
    at org.eclipse.jst.j2ee.internal.earcreation.EarFacetInstallDataModelProvider.getDefaultProperty(EarFacetInstallDataModelProvider.java:64)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.getProperty(DataModelImpl.java:130)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.getStringProperty(DataModelImpl.java:153)
    at org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider.getStringProperty(AbstractDataModelProvider.java:311)
    at org.eclipse.jst.j2ee.internal.earcreation.EarFacetInstallDataModelProvider.validate(EarFacetInstallDataModelProvider.java:89)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.validateProperty(DataModelImpl.java:432)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage.validateProperty(DataModelWizardPage.java:375)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage.validateControlsBase(DataModelWizardPage.java:361)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage.validatePage(DataModelWizardPage.java:338)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage$1.run(DataModelWizardPage.java:454)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage.propertyChanged(DataModelWizardPage.java:462)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.notifyListeners(DataModelImpl.java:347)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.notifyPropertyChange(DataModelImpl.java:338)
    at org.eclipse.jst.j2ee.internal.earcreation.EarFacetInstallDataModelProvider.propertySet(EarFacetInstallDataModelProvider.java:119)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.internalSetProperty(DataModelImpl.java:182)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.setProperty(DataModelImpl.java:172)
    at org.eclipse.wst.common.componentcore.datamodel.FacetProjectCreationDataModelProvider.propertySet(FacetProjectCreationDataModelProvider.java:320)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.internalSetProperty(DataModelImpl.java:182)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.setProperty(DataModelImpl.java:172)
    at org.eclipse.wst.common.componentcore.datamodel.FacetProjectCreationDataModelProvider$3.propertyChanged(FacetProjectCreationDataModelProvider.java:138)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.notifyListeners(DataModelImpl.java:347)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.notifyPropertyChange(DataModelImpl.java:338)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.internalSetProperty(DataModelImpl.java:183)
    at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.setProperty(DataModelImpl.java:172)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper.setProperty(DataModelSynchHelper.java:189)
    at org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper$ModifyTextListener.modifyText(DataModelSynchHelper.java:74)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
    at org.eclipse.swt.widgets.Text.wmCommandChild(Text.java:2607)
    at org.eclipse.swt.widgets.Control.WM_COMMAND(Control.java:4669)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4531)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4985)
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2439)
    at org.eclipse.swt.widgets.Text.callWindowProc(Text.java:255)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)
    at org.eclipse.swt.widgets.Text.windowProc(Text.java:2251)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972)
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2545)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    at org.eclipse.jface.window.Window.open(Window.java:801)
    at org.eclipse.ui.internal.actions.NewWizardShortcutAction.run(NewWizardShortcutAction.java:135)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
    at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:977)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:893)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:91)
    at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:565)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:520)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:352)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:624)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:579)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1433)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1409)

Reproducible: Always

Steps to Reproduce:
1.- Create an EAR project called "EAR"
2.- Launch the EAR wizard, and type "EAR" in the project name field, have a look into the error view and you will see the following trace (also notice that there is not a warning shown in the wizard indicating that the project name already exists).
Comment 1 Diego Sahagun CLA 2012-01-31 12:52:55 EST
Created attachment 210325 [details]
Add isRoot validation
Comment 2 Diego Sahagun CLA 2012-01-31 13:07:44 EST
This bugzilla is a clone of a WTP 3.2.5 patches' version aimed for WTP 3.3.2 and 3.4.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=364528
Comment 3 Chuck Bridgham CLA 2012-01-31 13:32:49 EST
approved... simple check - and safe
Comment 4 Diego Sahagun CLA 2012-01-31 13:55:55 EST
* Explain why you believe this is a stop-ship defect. Or, if it is a "hotbug" (requested by an adopter) please document it as such.
 This is not a big issue but it generates an IllegalArgumentException which crashes the validation and shows an error message.

* Is there a work-around? If so, why do you believe the work-around is insufficient?
 A workaround would be to avoid using project names that start equal.

* How has the fix been tested? Is there a test case attached to the bugzilla record? Has a JUnit Test been added?
 This fix has already been incorporated to WTP 3.2.5.P and verified.

* Give a brief technical overview. Who has reviewed this fix?
 A validation was added to check if the project is being created in a root directory.
 Charles Bridgham reviewed this fix

* What is the risk associated with this fix?
 The risk is low, only a validation was added.
Comment 5 Roberto Sanchez Herrera CLA 2012-02-01 15:07:09 EST
Code committed to R3_3_maintenance and HEAD for 3.3.2 and 3.4. Resolving bug.