[136464] JS Web Lib imports
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportListContentProvider.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportListContentProvider.java
index 02e3da8..31474d9 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportListContentProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportListContentProvider.java
@@ -18,6 +18,8 @@
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive;
+import org.eclipse.jst.j2ee.commonarchivecore.internal.WARFile;
+import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveConstants;
import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentImportDataModelProperties;
import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
@@ -84,7 +86,12 @@
public String getColumnText(Object element, int columnIndex) {
IDataModel dataModel = (IDataModel) element;
if (columnIndex == 0) {
- return ((Archive) dataModel.getProperty(IJ2EEComponentImportDataModelProperties.FILE)).getURI();
+ Archive archive = (Archive) dataModel.getProperty(IJ2EEComponentImportDataModelProperties.FILE);
+ if (archive.getURI().startsWith(ArchiveConstants.WEBAPP_LIB_URI)) {
+ String parentWarFileName = ((WARFile) archive.eContainer()).getName();
+ return parentWarFileName + "#" + archive.getURI(); //$NON-NLS-1$
+ }
+ return archive.getURI();
} else if (columnIndex == 1) {
return dataModel.getStringProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME);
}
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebComponentLoadStrategyImpl.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebComponentLoadStrategyImpl.java
index 261230f..b77d273 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebComponentLoadStrategyImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/internal/web/archive/operations/WebComponentLoadStrategyImpl.java
@@ -60,15 +60,19 @@
String uri = iLibModule.getRuntimePath().makeRelative().toString() + "/" + diskFile.getName(); //$NON-NLS-1$
addExternalFile(uri, diskFile);
} else {
- String name = ""; //$NON-NLS-1$
+ String name = null;
String archiveName = iLibModule.getArchiveName();
- if( archiveName != null && archiveName != "" ) //$NON-NLS-1$
+ if (archiveName != null && archiveName.length() > 0) {
name = archiveName;
-
- else
- name = looseComponent.getName() + ".jar" ; //$NON-NLS-1$
-
- String uri = iLibModule.getRuntimePath().makeRelative().toString() + "/" + name; //$NON-NLS-1$
+ } else {
+ name = looseComponent.getName() + ".jar"; //$NON-NLS-1$
+ }
+ String prefix = iLibModule.getRuntimePath().makeRelative().toString();
+ if (prefix.length() > 0 && prefix.charAt(prefix.length() - 1)!= '/') {
+ prefix += "/"; //$NON-NLS-1$
+ }
+
+ String uri = prefix + name;
try {
Archive utilJAR = J2EEProjectUtilities.asArchive(uri, looseComponent.getProject(), isExportSource());
if (utilJAR == null)
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java
index d4788df..45c812a 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/EARComponentImportOperation.java
@@ -12,6 +12,7 @@
import java.io.FileNotFoundException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -27,6 +28,8 @@
import org.eclipse.jst.j2ee.application.internal.operations.IAddComponentToEnterpriseApplicationDataModelProperties;
import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive;
import org.eclipse.jst.j2ee.commonarchivecore.internal.EARFile;
+import org.eclipse.jst.j2ee.commonarchivecore.internal.WARFile;
+import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveConstants;
import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.SaveStrategy;
import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil;
import org.eclipse.jst.j2ee.componentcore.util.EARArtifactEdit;
@@ -60,27 +63,45 @@
List modelsToImport = (List) model.getProperty(IEARComponentImportDataModelProperties.HANDLED_PROJECT_MODELS_LIST);
try {
IDataModel importModel = null;
- List allModels = (List) model.getProperty(IEARComponentImportDataModelProperties.ALL_PROJECT_MODELS_LIST);
+ for (int i = modelsToImport.size() - 1; i > 0; i--) {
+ importModel = (IDataModel) modelsToImport.get(i);
+ Archive nestedArchive = (Archive) importModel.getProperty(IEARComponentImportDataModelProperties.FILE);
+ if (nestedArchive.getURI().startsWith(ArchiveConstants.WEBAPP_LIB_URI)) {
+ WARFile owningWar = (WARFile) nestedArchive.eContainer();
+ modelsToImport.remove(importModel);
+ for (int j = 0; j < modelsToImport.size(); j++) {
+ IDataModel warModel = (IDataModel) modelsToImport.get(j);
+ if (warModel.getProperty(IEARComponentImportDataModelProperties.FILE) == owningWar) {
+ //TODO this is bad, but don't have access to the plugin where this constant is defined.
+ String propertyName = "WARImportDataModel.WEB_LIB_ARCHIVES_SELECTED";
+ List list = (List) warModel.getProperty(propertyName);
+ if (list == Collections.EMPTY_LIST) {
+ list = new ArrayList();
+ warModel.setProperty(propertyName, list);
+ }
+ list.add(nestedArchive);
+ }
+ }
+ }
+ }
+
List componentToAdd = new ArrayList();
Map componentToURIMap = new HashMap();
- for (int i = 0; i < allModels.size(); i++) {
- importModel = (IDataModel) allModels.get(i);
- if (modelsToImport.contains(importModel)) {
- String archiveUri = ((Archive) importModel.getProperty(IEARComponentImportDataModelProperties.FILE)).getURI();
- importModel.setProperty(IJ2EEComponentImportDataModelProperties.CLOSE_ARCHIVE_ON_DISPOSE, Boolean.FALSE);
- IDataModel compCreationModel = importModel.getNestedModel(IJ2EEComponentImportDataModelProperties.NESTED_MODEL_J2EE_COMPONENT_CREATION);
- if (compCreationModel.isProperty(IJ2EEFacetProjectCreationDataModelProperties.MODULE_URI))
- compCreationModel.setProperty(IJ2EEFacetProjectCreationDataModelProperties.MODULE_URI, archiveUri);
- try {
- importModel.getDefaultOperation().execute(monitor, info);
- } catch (ExecutionException e) {
- Logger.getLogger().logError(e);
- }
- IVirtualComponent component = (IVirtualComponent) importModel.getProperty(IJ2EEComponentImportDataModelProperties.COMPONENT);
- componentToAdd.add(component);
- componentToURIMap.put(component, archiveUri);
-
+ for (int i = 0; i < modelsToImport.size(); i++) {
+ importModel = (IDataModel) modelsToImport.get(i);
+ Archive nestedArchive = (Archive) importModel.getProperty(IEARComponentImportDataModelProperties.FILE);
+ importModel.setProperty(IJ2EEComponentImportDataModelProperties.CLOSE_ARCHIVE_ON_DISPOSE, Boolean.FALSE);
+ IDataModel compCreationModel = importModel.getNestedModel(IJ2EEComponentImportDataModelProperties.NESTED_MODEL_J2EE_COMPONENT_CREATION);
+ if (compCreationModel.isProperty(IJ2EEFacetProjectCreationDataModelProperties.MODULE_URI))
+ compCreationModel.setProperty(IJ2EEFacetProjectCreationDataModelProperties.MODULE_URI, nestedArchive.getURI());
+ try {
+ importModel.getDefaultOperation().execute(monitor, info);
+ } catch (ExecutionException e) {
+ Logger.getLogger().logError(e);
}
+ IVirtualComponent component = (IVirtualComponent) importModel.getProperty(IJ2EEComponentImportDataModelProperties.COMPONENT);
+ componentToAdd.add(component);
+ componentToURIMap.put(component, nestedArchive.getURI());
}
if (componentToAdd.size() > 0) {
IDataModel addComponentsDM = DataModelFactory.createDataModel(new AddComponentToEnterpriseApplicationDataModelProvider());
@@ -171,17 +192,17 @@
} else {
String compSearchName = manifestURI.substring(0, manifestURI.length() - 4);
IVirtualReference vRef = earComponent.getReference(compSearchName);
- if(vRef == null){
- IVirtualReference [] refs = earComponent.getReferences();
+ if (vRef == null) {
+ IVirtualReference[] refs = earComponent.getReferences();
String archiveName = null;
- for(int refCount = 0; vRef == null && refCount < refs.length; refCount++){
- archiveName = refs[refCount].getArchiveName();
- if(null != archiveName && archiveName.equals(manifestURI)){
+ for (int refCount = 0; vRef == null && refCount < refs.length; refCount++) {
+ archiveName = refs[refCount].getArchiveName();
+ if (null != archiveName && archiveName.equals(manifestURI)) {
vRef = refs[refCount];
}
}
}
-
+
if (null != vRef && nestedComponent.getProject() != vRef.getReferencedComponent().getProject()) {
IProject project = vRef.getReferencedComponent().getProject();
extraEntries.add(JavaCore.newProjectEntry(project.getFullPath(), true));