308056 - Incorrect deployment of variable based dependencies in EAR
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java index 7a803e1..260a95c 100644 --- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java +++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java
@@ -73,11 +73,6 @@ } else { uri = moduleComp.getName() + IJ2EEModuleConstants.JAR_EXT; } - } else { - String prefix = ref.getRuntimePath().makeRelative().toString(); - if (prefix.length() > 0) { - uri = prefix + "/" + uri; //$NON-NLS-1$ - } } return uri; } @@ -169,13 +164,13 @@ for (int i = 0; i < members.length; i++) { if (IVirtualResource.FILE == members[i].getType()) { if(folder.isDynamicComponent((IVirtualFile)members[i])){ - String archiveName = members[i].getRuntimePath().toString().substring(1); + IPath archiveFullPath = new Path(members[i].getRuntimePath().toString()); boolean shouldInclude = true; for (int j = 0; j < hardReferences.size() && shouldInclude; j++) { - String tempArchiveName = ((IVirtualReference) hardReferences.get(j)).getArchiveName(); - if (null != tempArchiveName && tempArchiveName.equals(archiveName)) { + IVirtualReference tmpRef = ((IVirtualReference) hardReferences.get(j)); + IPath tmpFullPath = tmpRef.getRuntimePath().append(tmpRef.getArchiveName()); + if( tmpFullPath.equals(archiveFullPath)) shouldInclude = false; - } } if (shouldInclude) { IResource iResource = members[i].getUnderlyingResource(); @@ -183,7 +178,8 @@ IVirtualReference dynamicRef = ComponentCore.createReference(earComponent, dynamicComponent); if( dynamicComponent instanceof J2EEModuleVirtualArchiveComponent) ((J2EEModuleVirtualArchiveComponent)dynamicComponent).setDeploymentPath(members[i].getRuntimePath()); - dynamicRef.setArchiveName(archiveName); + dynamicRef.setArchiveName(archiveFullPath.lastSegment()); + dynamicRef.setRuntimePath(archiveFullPath.removeLastSegments(1)); if (null == dynamicReferences) { dynamicReferences = new ArrayList(); }