diff options
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/ArchiveWrapper.java')
-rw-r--r-- | plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/ArchiveWrapper.java | 573 |
1 files changed, 0 insertions, 573 deletions
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/ArchiveWrapper.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/ArchiveWrapper.java deleted file mode 100644 index 9d10f3741..000000000 --- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/ArchiveWrapper.java +++ /dev/null @@ -1,573 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.j2ee.internal.archive; - -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -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.WebModule; -import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive; -import org.eclipse.jst.j2ee.commonarchivecore.internal.EARFile; -import org.eclipse.jst.j2ee.commonarchivecore.internal.EJBJarFile; -import org.eclipse.jst.j2ee.commonarchivecore.internal.ModuleFile; -import org.eclipse.jst.j2ee.commonarchivecore.internal.WARFile; -import org.eclipse.jst.j2ee.commonarchivecore.internal.impl.FileImpl; -import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil; -import org.eclipse.jst.j2ee.ejb.EJBJar; -import org.eclipse.jst.j2ee.internal.J2EEConstants; -import org.eclipse.jst.j2ee.internal.J2EEVersionConstants; -import org.eclipse.jst.j2ee.internal.archive.operations.EARArchiveOpsResourceHandler; -import org.eclipse.jst.javaee.application.Application; -import org.eclipse.jst.javaee.application.Module; -import org.eclipse.jst.jee.archive.ArchiveModelLoadException; -import org.eclipse.jst.jee.archive.ArchiveOpenFailureException; -import org.eclipse.jst.jee.archive.IArchive; -import org.eclipse.jst.jee.archive.IArchiveResource; -import org.eclipse.jst.jee.util.internal.JavaEEQuickPeek; - -public class ArchiveWrapper { - - //TODO remove commonArchive; possibly remove this entire class and - //code directly to IArchive - private Archive commonArchive = null; - private IArchive archive = null; - private JavaEEQuickPeek jqp = null; - - public ArchiveWrapper(IArchive archive) { - this.archive = archive; - JavaEEArchiveUtilities jea = JavaEEArchiveUtilities.INSTANCE; - jqp = jea.getJavaEEQuickPeek(archive); - } - - public ArchiveWrapper(Archive mFile) { - this.commonArchive = mFile; - int type = J2EEConstants.UNKNOWN; - - if (mFile.isApplicationClientFile()) { - type = J2EEConstants.APPLICATION_CLIENT_TYPE; - } else if (mFile.isEARFile()) { - type = J2EEConstants.APPLICATION_TYPE; - } else if (mFile.isEJBJarFile()) { - type = J2EEConstants.EJB_TYPE; - } else if (mFile.isWARFile()) { - type = J2EEConstants.WEB_TYPE; - } else if (mFile.isRARFile()) { - type = J2EEConstants.CONNECTOR_TYPE; - } - if (type != J2EEConstants.UNKNOWN) { - int version = ArchiveUtil.getFastSpecVersion((ModuleFile) mFile); - jqp = new JavaEEQuickPeek(type, version); - } else { - jqp = new JavaEEQuickPeek(null); - } - } - - public JavaEEQuickPeek getJavaEEQuickPeek() { - return jqp; - } - - public Archive getCommonArchive() { - return (Archive) commonArchive; - } - - public Object getUnderLyingArchive() { - if (archive != null) { - return archive; - } - if (commonArchive != null) { - return commonArchive; - } - fail(); - return null; - } - - private ArchiveWrapper cachedParent = null; - - public ArchiveWrapper getParent() { - if (null != cachedParent) { - return cachedParent; - } - if (archive != null) { - cachedParent = new ArchiveWrapper(archive.getArchive()); - return cachedParent; - } - if (commonArchive != null) { - cachedParent = new ArchiveWrapper((Archive) commonArchive.eContainer()); - return cachedParent; - } - fail(); - return null; - } - - public IArchive getIArchive() { - return archive; - } - - public void close() { - try { - if (commonArchive != null && commonArchive.isOpen()) { - commonArchive.close(); - } - if (archive != null && archive.isOpen()) { - JavaEEArchiveUtilities.INSTANCE.closeArchive(archive); - } - } catch (RuntimeException e) { - Logger.getLogger().logError(e); - throw e; - } - } - - public IPath getPath() { - if (commonArchive != null) { - IPath path = new Path(commonArchive.getURI()); - return path; - } - if (archive != null) { - return archive.getPath(); - } - fail(); - return null; - } - - private void fail() { - throw new RuntimeException("ArchiveWrapper is inconsistent."); - } - - public int getSize() { - if (commonArchive != null) - return commonArchive.getFiles().size(); - else - return archive.getArchiveResources().size(); - } - - private List<ArchiveWrapper> cachedWebLibs; - - public List<ArchiveWrapper> getWebLibs() { - if (cachedWebLibs != null) { - return cachedWebLibs; - } - if (jqp.getType() != J2EEVersionConstants.WEB_TYPE) { - fail(); - } - - cachedWebLibs = new ArrayList<ArchiveWrapper>(); - - if (commonArchive != null) { - WARFile war = (WARFile) commonArchive; - List libs = war.getLibArchives(); - for (int i = 0; i < libs.size(); i++) { - cachedWebLibs.add(new ArchiveWrapper((Archive) libs.get(i))); - } - return cachedWebLibs; - } - if (archive != null) { - List<IArchiveResource> resources = archive.getArchiveResources(); - for (IArchiveResource resource : resources) { - if (resource.getType() != IArchiveResource.DIRECTORY_TYPE) { - IPath path = resource.getPath(); - if (path.segmentCount() > 2) { - if (path.segment(0).equals("WEB-INF") && path.segment(1).equals("lib")) { - String lastSegment = path.lastSegment(); - if (lastSegment.endsWith("jar") || lastSegment.endsWith("zip")) { - IArchive webLib; - try { - webLib = archive.getNestedArchive(resource); - cachedWebLibs.add(new ArchiveWrapper(webLib)); - } catch (ArchiveOpenFailureException e) { - Logger.getLogger().logError(e); - } - } - } - } - } - } - return cachedWebLibs; - } - fail(); - return null; - } - - private List <String>cachedDDMappedModuleURIs = null; - - public List<String> getDDMappedModuleURIs() { - if(cachedDDMappedModuleURIs != null){ - return cachedDDMappedModuleURIs; - } - if (jqp.getType() != J2EEVersionConstants.APPLICATION_TYPE) { - fail(); - } - - cachedDDMappedModuleURIs = new ArrayList<String>(); - - if (commonArchive != null) { - EARFile ear = (EARFile) commonArchive; - List earMods = ear.getModuleFiles(); - for (int i = 0; i < earMods.size(); i++) { - cachedDDMappedModuleURIs.add(((Archive) earMods.get(i)).getURI()); - } - return cachedDDMappedModuleURIs; - } else if(archive != null) { - if(archive.containsArchiveResource(new Path(J2EEConstants.APPLICATION_DD_URI))){ - if(jqp.getJavaEEVersion() == JavaEEQuickPeek.JEE_5_0_ID){ - try { - Application application = (Application) archive.getModelObject(); - List modules = application.getModules(); - for(int i=0;i<modules.size();i++){ - Module module = (Module)modules.get(i); - String uri = module.getUri(); - cachedDDMappedModuleURIs.add(uri); - } - } catch (ArchiveModelLoadException e) { - Logger.getLogger().logError(e); - } - } else { - try{ - org.eclipse.jst.j2ee.application.Application application = (org.eclipse.jst.j2ee.application.Application)archive.getModelObject(); - List modules = application.getModules(); - for(int i=0;i<modules.size();i++){ - org.eclipse.jst.j2ee.application.Module module = (org.eclipse.jst.j2ee.application.Module)modules.get(i); - String uri = module.getUri(); - cachedDDMappedModuleURIs.add(uri); - } - }catch (ArchiveModelLoadException e) { - Logger.getLogger().logError(e); - } - } - } - } - return cachedDDMappedModuleURIs; - } - - - private List<ArchiveWrapper> cachedEARModules; - - public List<ArchiveWrapper> getEarModules() { - if (cachedEARModules != null) { - return cachedEARModules; - } - if (jqp.getType() != J2EEVersionConstants.APPLICATION_TYPE) { - fail(); - } - cachedEARModules = new ArrayList<ArchiveWrapper>(); - - if (commonArchive != null) { - EARFile ear = (EARFile) commonArchive; - List earMods = ear.getModuleFiles(); - for (int i = 0; i < earMods.size(); i++) { - cachedEARModules.add(new ArchiveWrapper((Archive) earMods.get(i))); - } - return cachedEARModules; - } - if (archive != null) { - List<IArchiveResource> resources = archive.getArchiveResources(); - for (IArchiveResource resource : resources) { - if (resource.getType() != IArchiveResource.DIRECTORY_TYPE) { - IPath path = resource.getPath(); - if (path.segmentCount() > 0) { - String lastSegment = path.lastSegment(); - if (lastSegment.endsWith("jar") || lastSegment.endsWith("zip") || lastSegment.endsWith("rar") || lastSegment.endsWith("war")) { - IArchive earmodule; - try { - earmodule = archive.getNestedArchive(resource); - cachedEARModules.add(new ArchiveWrapper(earmodule)); - } catch (ArchiveOpenFailureException e) { - Logger.getLogger().logError(e); - } - } - } - } - } - return cachedEARModules; - } - fail(); - return null; - } - - public String getName() { - if (commonArchive != null) { - return commonArchive.getName(); - } - if (archive != null) { - return archive.getPath().lastSegment(); - } - fail(); - return null; - } - - public boolean isModule() { - if (isApplicationClientFile()) { - return true; - } - if (isWARFile()) { - return true; - } - if (isEJBJarFile()) { - return true; - } - if (isRARFile()) { - return true; - } - return false; - } - - public boolean isApplicationClientFile() { - if (commonArchive != null) - return commonArchive.isApplicationClientFile(); - if (archive != null) - return (JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(archive).getType() == J2EEConstants.APPLICATION_CLIENT_TYPE); - fail(); - return false; - } - - public boolean isWARFile() { - if (commonArchive != null) - return commonArchive.isWARFile(); - if (archive != null) - return (JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(archive).getType() == J2EEConstants.WEB_TYPE); - fail(); - return false; - } - - public boolean isEJBJarFile() { - if (commonArchive != null) - return commonArchive.isEJBJarFile(); - if (archive != null) - return (JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(archive).getType() == J2EEConstants.EJB_TYPE); - fail(); - return false; - } - - public boolean isEarFile() { - if (commonArchive != null) - return commonArchive.isEARFile(); - if (archive != null) - return (JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(archive).getType() == J2EEConstants.APPLICATION_TYPE); - fail(); - return false; - } - - public boolean isRARFile() { - if (commonArchive != null) - return commonArchive.isRARFile(); - if (archive != null) - return (JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(archive).getType() == J2EEConstants.CONNECTOR_TYPE); - fail(); - return false; - } - - // This is an array so we can tell the difference between initialized and null vs not initialized - private String[] cachedWebContextRoot = null; - - public String getWebContextRoot() { - if (cachedWebContextRoot != null) { - return cachedWebContextRoot[0]; - } - - if (!isWARFile()) { - fail(); - return null; - } - cachedWebContextRoot = new String[1]; - - if (commonArchive != null) { - cachedWebContextRoot[0] = ((WebModule) ((EARFile) commonArchive.getContainer()).getModule(commonArchive.getURI(), null)).getContextRoot(); - return cachedWebContextRoot[0]; - } - if (archive != null) { - IArchive earArchive = archive.getArchive(); - if(earArchive.containsArchiveResource(new Path(J2EEConstants.APPLICATION_DD_URI))){ - JavaEEQuickPeek earJQP = JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(earArchive); - if(earJQP.getJavaEEVersion() == JavaEEQuickPeek.JEE_5_0_ID){ - try { - Application application = (Application) earArchive.getModelObject(); - String moduleName = archive.getPath().toString(); - Module module = (Module) application.getFirstModule(moduleName); - if(module != null){ - cachedWebContextRoot[0] = module.getWeb().getContextRoot(); - } else { - cachedWebContextRoot[0] = getDefaultContextRoot(); - } - } catch (ArchiveModelLoadException e) { - Logger.getLogger().logError(e); - } - } else { - try{ - org.eclipse.jst.j2ee.application.Application application = (org.eclipse.jst.j2ee.application.Application)earArchive.getModelObject(); - String moduleName = archive.getPath().toString(); - org.eclipse.jst.j2ee.application.WebModule module = (org.eclipse.jst.j2ee.application.WebModule)application.getFirstModule(moduleName); - if(module == null){ - cachedWebContextRoot[0] = null; - } else { - cachedWebContextRoot[0] = module.getContextRoot(); - } - } catch (ArchiveModelLoadException e) { - Logger.getLogger().logError(e); - } - } - } else { - cachedWebContextRoot[0] = getDefaultContextRoot(); - } - return cachedWebContextRoot[0]; - } - fail(); - return null; - } - - private String getDefaultContextRoot() { - //J2EE spec 8.3.1.3.c (pg 149) - String contextRoot = archive.getPath().toString(); - contextRoot = contextRoot.substring(0, contextRoot.lastIndexOf('.')); - return contextRoot; - } - - // This is an array so we can tell the difference between initialized and null vs not initialized - private HashMap<ArchiveWrapper, ArchiveWrapper> cachedEJBClientArchiveWrapper = null; - - public ArchiveWrapper getEJBClientArchiveWrapper(ArchiveWrapper ejbWrapper) { - if (cachedEJBClientArchiveWrapper == null) { - cachedEJBClientArchiveWrapper = new HashMap<ArchiveWrapper, ArchiveWrapper>(); - } - - if(cachedEJBClientArchiveWrapper.containsKey(ejbWrapper)){ - return cachedEJBClientArchiveWrapper.get(ejbWrapper); - } - - - if (!ejbWrapper.isEJBJarFile() || !isEarFile()) { - fail(); - return null; - } - - ArchiveWrapper ejbClientArchiveWrapper = null; - try{ - if (commonArchive != null) { - try { - EJBJar jar = ((EJBJarFile) ejbWrapper.getUnderLyingArchive()).getDeploymentDescriptor(); - if (jar != null) { - if (jar.getEjbClientJar() != null) { - String clientName = jar.getEjbClientJar(); - ejbClientArchiveWrapper = new ArchiveWrapper((Archive) ((EARFile) commonArchive).getFile(clientName)); - } - } - return ejbClientArchiveWrapper; - } catch (FileNotFoundException e) { - Logger.getLogger().logError(e); - } - } - if (archive != null) { - try { - JavaEEQuickPeek jqp = JavaEEArchiveUtilities.INSTANCE.getJavaEEQuickPeek(ejbWrapper.archive); - String clientJarName = null; - if(jqp.getVersion() == J2EEVersionConstants.EJB_3_0_ID){ - if(ejbWrapper.archive.containsArchiveResource(new Path(J2EEConstants.EJBJAR_DD_URI))){ - org.eclipse.jst.javaee.ejb.EJBJar edd = (org.eclipse.jst.javaee.ejb.EJBJar) ejbWrapper.archive.getModelObject(); - clientJarName = edd.getEjbClientJar(); - } - } else { - EJBJar jar = (EJBJar)ejbWrapper.archive.getModelObject(); - if (jar != null) { - clientJarName = jar.getEjbClientJar(); - } - } - - if (null != clientJarName) { - IPath clientJarPath = new Path(clientJarName); - if(archive.containsArchiveResource(clientJarPath)){ - IArchiveResource clientJar = archive.getArchiveResource(clientJarPath); - if(null != clientJar){ - if (clientJar.getType() == IArchiveResource.ARCHIVE_TYPE) { - ejbClientArchiveWrapper = new ArchiveWrapper((IArchive) clientJar); - } else { - try { - ejbClientArchiveWrapper = new ArchiveWrapper(archive.getNestedArchive(clientJar)); - } catch (ArchiveOpenFailureException e) { - Logger.getLogger().logError(e); - } - } - } - } else { - Logger.getLogger().logWarning(EARArchiveOpsResourceHandler.bind(EARArchiveOpsResourceHandler.MISSING_CLIENT_JAR, new Object[] {clientJarName, ejbWrapper.getName(), archive.getPath()})); - } - } - return ejbClientArchiveWrapper; - } catch (FileNotFoundException e) { - Logger.getLogger().logError(e); - } catch (ArchiveModelLoadException e) { - Logger.getLogger().logError(e); - } - } - } finally { - cachedEJBClientArchiveWrapper.put(ejbWrapper, ejbClientArchiveWrapper); - } - fail(); - return null; - } - - private List<ArchiveWrapper> cachedEARUtilitiesAndWebLibs = null; - - public List<ArchiveWrapper> getEARUtilitiesAndWebLibs() { - if (null != cachedEARUtilitiesAndWebLibs) { - return cachedEARUtilitiesAndWebLibs; - } - - if (!isEarFile()) { - fail(); - return null; - } - - cachedEARUtilitiesAndWebLibs = new ArrayList<ArchiveWrapper>(); - if (commonArchive != null) { - List files = commonArchive.getFiles(); - for (int i = 0; i < files.size(); i++) { - FileImpl file = (FileImpl) files.get(i); - if (file.isArchive() && !file.isModuleFile() && file.getURI().endsWith(".jar")) { //$NON-NLS-1$ - cachedEARUtilitiesAndWebLibs.add(new ArchiveWrapper((Archive) file)); - } - if (file.isWARFile()) { - ArchiveWrapper wrapper = new ArchiveWrapper((Archive) file); - cachedEARUtilitiesAndWebLibs.addAll(wrapper.getWebLibs()); - } - } - return cachedEARUtilitiesAndWebLibs; - } - if (archive != null) { - List files = archive.getArchiveResources(); - for (int i = 0; i < files.size(); i++) { - IArchiveResource file = (IArchiveResource) files.get(i); - String lastSegment = file.getPath().lastSegment(); - if (lastSegment.endsWith(".jar") || lastSegment.endsWith(".rar") || lastSegment.endsWith(".war") || lastSegment.endsWith("zip")) { - IArchive nestedArchive; - try { - nestedArchive = archive.getNestedArchive(file); - ArchiveWrapper nestedWrapper = new ArchiveWrapper(nestedArchive); - if (nestedWrapper.isWARFile()) { - cachedEARUtilitiesAndWebLibs.addAll(nestedWrapper.getWebLibs()); - } else if (!nestedWrapper.isModule()) { - cachedEARUtilitiesAndWebLibs.add(nestedWrapper); - } - } catch (ArchiveOpenFailureException e) { - Logger.getLogger().logError(e); - } - } - } - return cachedEARUtilitiesAndWebLibs; - - } - fail(); - return null; - } - -}
\ No newline at end of file |