Community
Participate
Working Groups
Build Identifier: I20100608-0911 org.eclipse.wst.common.project.facet.core.FacetedProjectFrameworkException: Failed while installing EAR 5.0. at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1508) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:442) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChangesInternal(FacetedProject.java:1182) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:1118) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject$1.run(FacetedProject.java:325) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modify(FacetedProject.java:340) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.installProjectFacet(FacetedProject.java:256) at com.ibm.wbimonitor.deploy.base.EarProjectGenerator.createEAR(EarProjectGenerator.java:736) at com.ibm.wbimonitor.deploy.base.EarProjectGenerator.run(EarProjectGenerator.java:306) at com.ibm.wbimonitor.deploy.mmdeploy.MonitoringModelDeployOperation.generateCode(MonitoringModelDeployOperation.java:153) at com.ibm.wbimonitor.deploy.mmdeploy.MonitoringModelDeployOperation.run(MonitoringModelDeployOperation.java:75) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: java.lang.IllegalArgumentException: Path must include project and resource name: /StockTradeV3!@ at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63) at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:1801) at org.eclipse.core.internal.resources.Container.getFile(Container.java:207) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper.getPlatformFile(WorkbenchResourceHelper.java:442) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper$FileAdapter.getFile(WorkbenchResourceHelper.java:177) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper.computeModificationStamp(WorkbenchResourceHelper.java:336) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper.cacheSynchronizationStamp(WorkbenchResourceHelper.java:326) at org.eclipse.wst.common.internal.emfworkbench.integration.ProjectResourceSetEditImpl.createResource(ProjectResourceSetEditImpl.java:51) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandCreateResource(ResourceSetImpl.java:239) at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.getResource(ProjectResourceSetImpl.java:742) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper.getOrCreateResource(WorkbenchResourceHelper.java:380) at org.eclipse.wst.common.internal.emfworkbench.integration.EditModel.getResource(EditModel.java:685) at org.eclipse.wst.common.componentcore.internal.ModuleStructuralModel.getPrimaryResource(ModuleStructuralModel.java:332) at org.eclipse.wst.common.componentcore.internal.ModuleStructuralModel.prepareProjectModulesIfNecessary(ModuleStructuralModel.java:240) at org.eclipse.wst.common.componentcore.internal.ModuleStructuralModel.getPrimaryRootObject(ModuleStructuralModel.java:119) at org.eclipse.wst.common.componentcore.internal.StructureEdit.getComponentModelRoot(StructureEdit.java:436) at org.eclipse.wst.common.componentcore.internal.StructureEdit.getWorkbenchModules(StructureEdit.java:471) at org.eclipse.wst.common.componentcore.internal.StructureEdit.getComponent(StructureEdit.java:914) at org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent.createResource(VirtualComponent.java:122) at org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent.initializeResource(VirtualComponent.java:111) at org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent.<init>(VirtualComponent.java:146) at org.eclipse.wst.common.componentcore.internal.util.ComponentImplManager.createComponent(ComponentImplManager.java:235) at org.eclipse.wst.common.componentcore.ComponentCore.createComponent(ComponentCore.java:84) at org.eclipse.jst.j2ee.project.facet.EarFacetInstallDelegate.execute(EarFacetInstallDelegate.java:59) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1478) ... 12 more The problem is at ModuleStructuralModel line 331. URI uri = URI.createURI(compFile.getProjectRelativePath().toPortableString()); This line actually has two bugs. The first is the one which causes the issue seen here, that createURI assumes that the string being passed to it has already been escaped. Since no escaping is done here, the '#' in the project name is seen in the URI as the fragment indicator. The second bug is the use of toPortableString which states in its documentation that the format is not specified, but is only suitable for passing back to Path#fromProtableString(String). The usage here (to attempt some kind of URIifying) is incorrect. Its usage suggests that at some point issues were seen since the #getProjectRelativePath() call didn't return a URI, but the solution was incorrect. The call to #toPortableString() must be dropped and replaced with something that creates a valid URI. This can be reproduced every time by an RCP application which reads in a customer supplied project archive which contains some specifications from which an EAR ad EJB project are generated and exported. Should the EAR project contain a '#' then the above is observed. It appears to simply be the mishandling of converting file names to URIs. Reproducible: Always Steps to Reproduce: 1. Create a project with '#' or other special characters (':' will probably work sometimes too). 2. Try to add facets. 3. Observe stack traces.
org.eclipse.wst.common.modulecore 1.2.2.v201007310300