[224185] Binary Java EE 5 IArchive support
diff --git a/plugins/org.eclipse.jst.j2ee.jca/rarproject/org/eclipse/jst/j2ee/internal/jca/operations/ConnectorComponentImportOperation.java b/plugins/org.eclipse.jst.j2ee.jca/rarproject/org/eclipse/jst/j2ee/internal/jca/operations/ConnectorComponentImportOperation.java index 7f54a91..4d15d36 100644 --- a/plugins/org.eclipse.jst.j2ee.jca/rarproject/org/eclipse/jst/j2ee/internal/jca/operations/ConnectorComponentImportOperation.java +++ b/plugins/org.eclipse.jst.j2ee.jca/rarproject/org/eclipse/jst/j2ee/internal/jca/operations/ConnectorComponentImportOperation.java
@@ -24,6 +24,8 @@ import org.eclipse.jem.util.logger.proxy.Logger; import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.SaveStrategy; import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentImportDataModelProperties; +import org.eclipse.jst.j2ee.internal.archive.ComponentArchiveSaveAdapter; +import org.eclipse.jst.j2ee.internal.archive.ConnectorComponentArchiveSaveAdapter; import org.eclipse.jst.j2ee.internal.archive.operations.ConnectorComponentSaveStrategyImpl; import org.eclipse.jst.j2ee.internal.archive.operations.J2EEArtifactImportOperation; import org.eclipse.jst.jee.archive.IArchive; @@ -108,6 +110,9 @@ protected SaveStrategy createSaveStrategy(IVirtualComponent component) { ConnectorComponentSaveStrategyImpl saveStrat = new ConnectorComponentSaveStrategyImpl(component); return saveStrat; - + } + + protected ComponentArchiveSaveAdapter getArchiveSaveAdapter(IVirtualComponent virtualComponent){ + return new ConnectorComponentArchiveSaveAdapter(virtualComponent); } }
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/EARComponentArchiveSaveAdapter.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/EARComponentArchiveSaveAdapter.java index c47c6f5..7a5ff80 100644 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/EARComponentArchiveSaveAdapter.java +++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/EARComponentArchiveSaveAdapter.java
@@ -10,67 +10,12 @@ *******************************************************************************/ package org.eclipse.jst.j2ee.internal.archive; -import java.util.List; - -import org.eclipse.core.runtime.SubProgressMonitor; -import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive; -import org.eclipse.jst.j2ee.datamodel.properties.IEARComponentImportDataModelProperties; -import org.eclipse.jst.jee.archive.IArchiveResource; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; -import org.eclipse.wst.common.frameworks.datamodel.IDataModel; public class EARComponentArchiveSaveAdapter extends ComponentArchiveSaveAdapter { - public EARComponentArchiveSaveAdapter(IVirtualComponent component) { super(component); } - public void setDataModel(IDataModel dataModel) { - super.setDataModel(dataModel); - } - - - protected SubProgressMonitor subMonitor() { - return new SubProgressMonitor(progressMonitor, 10); - } - - public void setMonitor(org.eclipse.core.runtime.IProgressMonitor newMonitor) { - progressMonitor = newMonitor; - } - - protected boolean shouldSave(IArchiveResource aRes) { - - // TODO: go back and revisit it in the future. - - /*if (aRes.getType() == IArchiveResource.ARCHIVE_TYPE) { - // return getFilter().shouldSave(aFile.getURI(), getArchive()); - }*/ - return super.shouldSave(aRes); - } - - protected boolean shouldLinkAsComponentRef(Archive archive) { - if (null != dataModel) { - List list = (List) dataModel.getProperty(IEARComponentImportDataModelProperties.HANDLED_PROJECT_MODELS_LIST); - for (int i = 0; i < list.size(); i++) { - if (archive == ((IDataModel) list.get(i)).getProperty(IEARComponentImportDataModelProperties.FILE)) { - return false; - } - } - } - return true; - } - - /*protected boolean shouldSave(String uri) { - if (overwriteHandler != null) { - if (overwriteHandler.isOverwriteNone()) - return false; - return ((super.shouldSave(uri)) && (overwriteHandler.isOverwriteAll() || overwriteHandler.isOverwriteResources() || overwriteHandler.shouldOverwrite(uri))); - } - return true; - }*/ - - - - }
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactImportOperation.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactImportOperation.java index d4006aa..f78aae0 100644 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactImportOperation.java +++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/J2EEArtifactImportOperation.java
@@ -24,7 +24,6 @@ import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentImportDataModelProperties; import org.eclipse.jst.j2ee.internal.archive.ArchiveWrapper; import org.eclipse.jst.j2ee.internal.archive.ComponentArchiveSaveAdapter; -import org.eclipse.jst.j2ee.internal.archive.ConnectorComponentArchiveSaveAdapter; import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater; import org.eclipse.jst.j2ee.internal.project.ProjectSupportResourceHandler; import org.eclipse.jst.jee.archive.ArchiveOptions; @@ -120,7 +119,7 @@ } protected ComponentArchiveSaveAdapter getArchiveSaveAdapter(IVirtualComponent virtualComponent){ - return new ConnectorComponentArchiveSaveAdapter(virtualComponent); + return new ComponentArchiveSaveAdapter(virtualComponent); } /**
diff --git a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEDeployableFactory.java b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEDeployableFactory.java index 9fec645..06f68e3 100644 --- a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEDeployableFactory.java +++ b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEDeployableFactory.java
@@ -21,20 +21,15 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.jst.j2ee.application.Application; -import org.eclipse.jst.j2ee.application.Module; -import org.eclipse.jst.j2ee.client.ApplicationClient; -import org.eclipse.jst.j2ee.componentcore.util.EARArtifactEdit; -import org.eclipse.jst.j2ee.ejb.EJBJar; import org.eclipse.jst.j2ee.internal.J2EEVersionConstants; +import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil; +import org.eclipse.jst.j2ee.internal.componentcore.JavaEEBinaryComponentHelper; import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; -import org.eclipse.jst.j2ee.jca.Connector; -import org.eclipse.jst.j2ee.webapplication.WebApp; -import org.eclipse.wst.common.componentcore.ArtifactEdit; +import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities; +import org.eclipse.jst.jee.util.internal.JavaEEQuickPeek; import org.eclipse.wst.common.componentcore.ComponentCore; import org.eclipse.wst.common.componentcore.ModuleCoreNature; import org.eclipse.wst.common.componentcore.internal.StructureEdit; -import org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities; import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.componentcore.resources.IVirtualReference; @@ -108,79 +103,59 @@ protected IModule[] createBinaryModules(IVirtualComponent component) { List projectModules = new ArrayList(); - EARArtifactEdit earEdit = null; - try { - Application app = null; - IVirtualReference[] references = component.getReferences(); - for (int i=0; i<references.length; i++) { - IVirtualComponent moduleComponent = references[i].getReferencedComponent(); - // Is referenced component a J2EE binary module archive or binary utility project? - if (moduleComponent.isBinary()) { - // create an ear edit, app only if the module is binary prevents exceptions when there - // is no deployment descriptor in many cases see bug 174711 - if(earEdit == null){ - earEdit = EARArtifactEdit.getEARArtifactEditForRead(component.getProject()); - app = earEdit.getApplication(); - } - // Check if module URI exists on EAR DD for binary j2ee archive - Module j2eeModule = app.getFirstModule(references[i].getArchiveName()); - // If it is not a j2ee module and the component project is the ear, it is just an archive - // and we can ignore as it will be processed by the EAR deployable.members() method - if (j2eeModule == null && (moduleComponent.getProject() == component.getProject())) - continue; - - String moduleVersion = null; - String moduleType = null; - // Handle the binary J2EE module case - if(j2eeModule != null){ - ArtifactEdit moduleEdit = null; - try { - if (j2eeModule.isEjbModule()) { - moduleEdit = ComponentUtilities.getArtifactEditForRead(moduleComponent, J2EEProjectUtilities.EJB); - EJBJar ejbJar = (EJBJar) moduleEdit.getContentModelRoot(); - moduleType = J2EEProjectUtilities.EJB; - moduleVersion = ejbJar.getVersion(); - } - else if (j2eeModule.isWebModule()) { - moduleEdit = ComponentUtilities.getArtifactEditForRead(moduleComponent, J2EEProjectUtilities.DYNAMIC_WEB); - WebApp webApp = (WebApp) moduleEdit.getContentModelRoot(); - moduleType = J2EEProjectUtilities.DYNAMIC_WEB; - moduleVersion = webApp.getVersion(); - } - else if (j2eeModule.isConnectorModule()) { - moduleEdit = ComponentUtilities.getArtifactEditForRead(moduleComponent, J2EEProjectUtilities.JCA); - Connector connector = (Connector) moduleEdit.getContentModelRoot(); - moduleType = J2EEProjectUtilities.JCA; - moduleVersion = connector.getVersion(); - } - else if (j2eeModule.isJavaModule()) { - moduleEdit = ComponentUtilities.getArtifactEditForRead(moduleComponent, J2EEProjectUtilities.APPLICATION_CLIENT); - ApplicationClient appClient = (ApplicationClient) moduleEdit.getContentModelRoot(); - moduleType = J2EEProjectUtilities.APPLICATION_CLIENT; - moduleVersion = appClient.getVersion(); - } - } finally { - if (moduleEdit!=null) - moduleEdit.dispose(); - } - } else { // Handle the binary utility component outside the EAR case. - moduleVersion = J2EEProjectUtilities.UTILITY; - moduleType = J2EEVersionConstants.VERSION_1_0_TEXT; - } - - IModule nestedModule = createModule(moduleComponent.getDeployedName(), moduleComponent.getDeployedName(), moduleType, moduleVersion, moduleComponent.getProject()); - if (nestedModule!=null) { - J2EEFlexProjDeployable moduleDelegate = new J2EEFlexProjDeployable(moduleComponent.getProject(), moduleComponent); - moduleDelegates.put(nestedModule, moduleDelegate); - projectModules.add(nestedModule); - moduleDelegate.getURI(nestedModule); - } + IVirtualReference[] references = component.getReferences(); + for (int i = 0; i < references.length; i++) { + IVirtualComponent moduleComponent = references[i].getReferencedComponent(); + // Is referenced component a J2EE binary module archive or binary + // utility project? + if (moduleComponent.isBinary()) { + + JavaEEQuickPeek qp = JavaEEBinaryComponentHelper.getJavaEEQuickPeek(moduleComponent); + // If it is not a j2ee module and the component project is the + // ear, it is just an archive + // and we can ignore as it will be processed by the EAR + // deployable.members() method + if (qp.getType() == JavaEEQuickPeek.UNKNOWN) { + continue; + } + + String moduleType = null; + String moduleVersion = null; + + switch (qp.getType()) { + case JavaEEQuickPeek.APPLICATION_CLIENT_TYPE: + moduleType = J2EEProjectUtilities.APPLICATION_CLIENT; + break; + case JavaEEQuickPeek.WEB_TYPE: + moduleType = JavaEEProjectUtilities.DYNAMIC_WEB; + break; + case JavaEEQuickPeek.EJB_TYPE: + moduleType = JavaEEProjectUtilities.EJB; + break; + case JavaEEQuickPeek.CONNECTOR_TYPE: + moduleType = JavaEEProjectUtilities.JCA; + break; + case JavaEEQuickPeek.APPLICATION_TYPE: + moduleType = JavaEEProjectUtilities.ENTERPRISE_APPLICATION; + break; + default: + moduleType = JavaEEProjectUtilities.UTILITY; + moduleVersion = J2EEVersionConstants.VERSION_1_0_TEXT; + } + + int version = qp.getVersion(); + moduleVersion = J2EEVersionUtil.convertVersionIntToString(version); + + IModule nestedModule = createModule(moduleComponent.getDeployedName(), moduleComponent.getDeployedName(), moduleType, moduleVersion, moduleComponent.getProject()); + if (nestedModule != null) { + J2EEFlexProjDeployable moduleDelegate = new J2EEFlexProjDeployable(moduleComponent.getProject(), moduleComponent); + moduleDelegates.put(nestedModule, moduleDelegate); + projectModules.add(nestedModule); + moduleDelegate.getURI(nestedModule); } } - } finally { - if (earEdit!=null) - earEdit.dispose(); } + return (IModule[]) projectModules.toArray(new IModule[projectModules.size()]); }