Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/ComponentLoadStrategyImpl.java')
-rw-r--r--plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/ComponentLoadStrategyImpl.java692
1 files changed, 0 insertions, 692 deletions
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/ComponentLoadStrategyImpl.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/ComponentLoadStrategyImpl.java
deleted file mode 100644
index 462461d91..000000000
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/operations/ComponentLoadStrategyImpl.java
+++ /dev/null
@@ -1,692 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 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.operations;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
-import java.util.zip.ZipFile;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
-import org.eclipse.jem.util.logger.proxy.Logger;
-import org.eclipse.jst.j2ee.classpathdep.IClasspathDependencyConstants;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.File;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.ResourceLoadException;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.FileIterator;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.FileIteratorImpl;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.impl.ContainerImpl;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.LoadStrategyImpl;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil;
-import org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent;
-import org.eclipse.jst.j2ee.internal.J2EEConstants;
-import org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyManifestUtil;
-import org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyVirtualComponent;
-import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
-import org.eclipse.jst.j2ee.internal.project.ProjectSupportResourceHandler;
-import org.eclipse.wst.common.componentcore.ArtifactEdit;
-import org.eclipse.wst.common.componentcore.UnresolveableURIException;
-import org.eclipse.wst.common.componentcore.internal.ArtifactEditModel;
-import org.eclipse.wst.common.componentcore.internal.ComponentResource;
-import org.eclipse.wst.common.componentcore.internal.DependencyType;
-import org.eclipse.wst.common.componentcore.internal.StructureEdit;
-import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
-import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.componentcore.resources.IVirtualContainer;
-import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
-import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
-import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
-import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
-
-public abstract class ComponentLoadStrategyImpl extends LoadStrategyImpl {
-
- protected static final String DOT_PROJECT = ".project"; //$NON-NLS-1$
- protected static final String DOT_CLASSPATH = ".classpath"; //$NON-NLS-1$
- protected static final String DOT_SETTINGS = ".settings"; //$NON-NLS-1$
- protected static final String DOT_CVS_IGORE = ".cvsignore"; //$NON-NLS-1$
-
- protected IVirtualComponent vComponent;
- protected boolean exportSource;
- protected ArtifactEdit artifactEdit;
- private List zipFiles = new ArrayList();
- private List javaClasspathURIs = new ArrayList();
- protected boolean includeClasspathComponents = true;
-
- protected class FilesHolder {
-
- private Map urisToFiles = new HashMap();
- private Map urisToResources = new HashMap();
- private Map resourcesToURI = new HashMap();
- private Map urisToDiskFiles;
- private Map urisToZipEntry = new HashMap();
-
- public void removeIFile(IFile file) {
- String uri = (String) resourcesToURI.get(file);
- remove(uri);
- }
-
- public void remove(String uri) {
- urisToFiles.remove(uri);
- Object resource = urisToResources.remove(uri);
- if (resource != null) {
- resourcesToURI.remove(resource);
- }
- if (urisToDiskFiles != null) {
- urisToDiskFiles.remove(uri);
- }
- }
-
- public void addDirectory(File directory) {
- String uri = directory.getURI();
- urisToFiles.put(uri, directory);
- }
-
- public void addFile(File file) {
- String uri = file.getURI();
- urisToFiles.put(uri, file);
- }
-
- public void addFile(File file, java.io.File externalDiskFile) {
- String uri = file.getURI();
- urisToFiles.put(uri, file);
- if (null == urisToDiskFiles) {
- urisToDiskFiles = new HashMap();
- }
- urisToDiskFiles.put(uri, externalDiskFile);
- }
-
- public void addFile(File file, IResource resource) {
- String uri = file.getURI();
- urisToFiles.put(uri, file);
- urisToResources.put(uri, resource);
- }
-
- public InputStream getInputStream(String uri) throws IOException, FileNotFoundException {
- java.io.File diskFile = null;
-
- if (urisToDiskFiles != null && urisToDiskFiles.containsKey(uri)) {
- diskFile = (java.io.File) urisToDiskFiles.get(uri);
- } else if (urisToResources != null && urisToResources.containsKey(uri)) {
- IResource resource = (IResource) urisToResources.get(uri);
- diskFile = new java.io.File(resource.getLocation().toOSString());
- } else {
- Map fileURIMap = (Map) urisToZipEntry.get(uri);
- Iterator it = fileURIMap.keySet().iterator();
-
- String sourceFileUri = ""; //$NON-NLS-1$
- ZipFile zipFile = null;
-
- // there is only one key, pair
- while (it.hasNext()) {
- sourceFileUri = (String) it.next();
- zipFile = (ZipFile) fileURIMap.get(sourceFileUri);
- }
- ZipEntry entry = zipFile.getEntry(sourceFileUri);
- InputStream in = zipFile.getInputStream(entry);
- return in;
- }
- return new FileInputStream(diskFile);
- }
-
- public List getFiles() {
- return new ArrayList(urisToFiles.values());
- }
-
- public boolean contains(String uri) {
- return urisToFiles.containsKey(uri);
- }
-
- public void addEntry(ZipEntry entry, ZipFile zipFile, IPath runtimePath) {
- String uri = runtimePath == null ? null : runtimePath.toString();
- String fileURI = ""; //$NON-NLS-1$
- if (uri != null) {
- if (!uri.equals("/")) //$NON-NLS-1$
- fileURI = uri + entry.getName();
- else
- fileURI = entry.getName();
- } else {
- fileURI = entry.getName();
- }
-
- File file = createFile(fileURI);
-
- Map fileURIMap = new HashMap();
- fileURIMap.put(entry.getName(), zipFile);
-
- urisToZipEntry.put(file.getURI(), fileURIMap);
- urisToFiles.put(file.getURI(), file);
- }
- }
-
- protected FilesHolder filesHolder;
-
- private Exception exception; //TEMP TODO REMOVE
-
- private IVirtualFile manifestFile = null;
-
- public ComponentLoadStrategyImpl(IVirtualComponent vComponent) {
- this(vComponent, true);
- }
-
- public ComponentLoadStrategyImpl(IVirtualComponent vComponent, boolean includeClasspathComponents) {
- this.vComponent = vComponent;
- filesHolder = new FilesHolder();
- exception = new Exception();
- this.includeClasspathComponents = includeClasspathComponents;
- if (includeClasspathComponents) {
- this.manifestFile = vComponent.getRootFolder().getFile(new Path(J2EEConstants.MANIFEST_URI));
- saveJavaClasspathReferences();
- }
- }
-
- public boolean contains(String uri) {
- IVirtualFolder rootFolder = vComponent.getRootFolder();
- return rootFolder.getFile(new Path(uri)).exists();
- }
-
- protected void initializeResourceSet() {
- resourceSet = WorkbenchResourceHelperBase.getResourceSet(vComponent.getProject());
- }
-
- protected boolean primContains(String uri) {
- return false;
- }
-
- public List getFiles() {
- aggregateSourceFiles();
- aggregateClassFiles();
- addUtilities();
- return filesHolder.getFiles();
- }
-
- /**
- * Adds library cp entries that point to class folders and have been tagged with the publish/export attribute.
- */
- protected void addMappedClassFolders(final IPath targetRuntimePath) {
- // retrieve all mapped class folders
- if (vComponent instanceof J2EEModuleVirtualComponent) {
- try {
- final J2EEModuleVirtualComponent j2eeComponent = (J2EEModuleVirtualComponent) vComponent;
- final IVirtualReference[] cpRefs = j2eeComponent.getJavaClasspathReferences();
- for (int j = 0; j < cpRefs.length; j++) {
- final IVirtualReference ref = cpRefs[j];
- final IPath runtimePath = ref.getRuntimePath();
- // only process mappings with the specified runtime path
- if (ref.getReferencedComponent() instanceof ClasspathDependencyVirtualComponent
- && runtimePath.equals(targetRuntimePath)) {
- final ClasspathDependencyVirtualComponent comp = (ClasspathDependencyVirtualComponent) ref.getReferencedComponent();
- if (comp.isClassFolder()) {
- final IContainer classFolder = comp.getClassFolder();
- if (classFolder != null && classFolder.exists()) {
- aggregateOutputFiles(new IResource[]{classFolder}, runtimePath.makeRelative(), classFolder.getProjectRelativePath().segmentCount());
- }
- }
- }
- }
- } catch (CoreException e) {
- Logger.getLogger().logError(e);
- }
- }
- }
-
- protected void saveJavaClasspathReferences() {
- if (vComponent instanceof J2EEModuleVirtualComponent) {
- final J2EEModuleVirtualComponent j2eeComp = (J2EEModuleVirtualComponent) vComponent;
- final IVirtualReference[] refs = j2eeComp.getJavaClasspathReferences();
- if (refs == null) {
- return;
- }
- for (int i = 0; i < refs.length; i++) {
- if (refs[i].getRuntimePath().equals(IClasspathDependencyConstants.RUNTIME_MAPPING_INTO_CONTAINER_PATH)) {
- javaClasspathURIs.add(refs[i].getArchiveName());
- }
- }
- }
- }
-
- protected void addUtilities() {
- IVirtualReference[] components = vComponent.getReferences();
- for (int i = 0; i < components.length; i++) {
- IVirtualReference reference = components[i];
- IVirtualComponent referencedComponent = reference.getReferencedComponent();
- if (referencedComponent.isBinary() && reference.getDependencyType() == DependencyType.CONSUMES) {
- java.io.File diskFile = ((VirtualArchiveComponent) referencedComponent).getUnderlyingDiskFile();
- ZipFile zipFile;
- IPath path = reference.getRuntimePath();
- try {
- zipFile = new ZipFile(diskFile);
- zipFiles.add(zipFile);
- Enumeration enumeration = zipFile.entries();
- while (enumeration.hasMoreElements()) {
- ZipEntry entry = (ZipEntry) enumeration.nextElement();
- filesHolder.addEntry(entry, zipFile, path);
- }
- } catch (ZipException e) {
- Logger.getLogger().logError(e);
- } catch (IOException e) {
- Logger.getLogger().logError(e);
- }
- }
- }
- }
-
- /**
- * This is a cache of the IResource roots for all java source folders and is used by
- * {@link #inJavaSrc(IVirtualResource)}.
- */
- private IResource[] sourceRoots = null;
-
- protected void aggregateSourceFiles() {
- try {
- IVirtualFolder rootFolder = vComponent.getRootFolder();
- IVirtualResource[] members = rootFolder.members();
- IPackageFragmentRoot[] srcPkgs = J2EEProjectUtilities.getSourceContainers(vComponent.getProject());
- sourceRoots = new IResource[srcPkgs.length];
- for (int i = 0; i < srcPkgs.length; i++) {
- sourceRoots[i] = srcPkgs[i].getCorrespondingResource();
- }
- inJavaSrc = false;
- aggregateFiles(members);
- } catch (CoreException e) {
- Logger.getLogger().logError(e);
- }
- }
-
- protected void aggregateClassFiles() {
- StructureEdit se = null;
- try {
- IPackageFragmentRoot[] sourceRoots = J2EEProjectUtilities.getSourceContainers(vComponent.getProject());
- se = StructureEdit.getStructureEditForRead(vComponent.getProject());
- for (int i = 0; i < sourceRoots.length; i++) {
- IPath outputPath = sourceRoots[i].getRawClasspathEntry().getOutputLocation();
- if (outputPath == null) {
- IProject project = vComponent.getProject();
- if (project.hasNature(JavaCore.NATURE_ID)) {
- IJavaProject javaProject = JavaCore.create(project);
- outputPath = javaProject.getOutputLocation();
- }
- }
- if (outputPath != null) {
- IContainer javaOutputContainer = outputPath.segmentCount() > 1 ? (IContainer) ResourcesPlugin.getWorkspace().getRoot().getFolder(outputPath) : (IContainer) ResourcesPlugin.getWorkspace().getRoot().getProject(outputPath.lastSegment());
- IPath runtimePath = null;
- try {
- ComponentResource[] componentResources = se.findResourcesBySourcePath(sourceRoots[i].getResource().getProjectRelativePath());
- if (componentResources.length > 0) {
- IPath tmpRuntimePath = componentResources[0].getRuntimePath();
- IPath tmpSourcePath = componentResources[0].getSourcePath();
- if (!tmpRuntimePath.equals(tmpSourcePath)) {
- while (tmpSourcePath.segmentCount() > 0 && tmpRuntimePath.segmentCount() > 0 && tmpRuntimePath.lastSegment().equals(tmpSourcePath.lastSegment())) {
- tmpRuntimePath = tmpRuntimePath.removeLastSegments(1);
- tmpSourcePath = tmpSourcePath.removeLastSegments(1);
- }
- if (tmpRuntimePath.segmentCount() != 0) {
- runtimePath = tmpRuntimePath.makeRelative();
- }
- }
- }
- } catch (UnresolveableURIException e) {
- Logger.getLogger().logError(e);
- }
- if (null == runtimePath) {
- runtimePath = new Path(""); //$NON-NLS-1$
- }
- aggregateOutputFiles(new IResource[]{javaOutputContainer}, runtimePath, javaOutputContainer.getProjectRelativePath().segmentCount());
- }
- }
- } catch (CoreException e) {
- Logger.getLogger().logError(e);
- } finally {
- if (se != null) {
- se.dispose();
- }
- }
- }
-
- protected boolean aggregateOutputFiles(IResource[] resources, final IPath runtimePathPrefix, int outputFolderSegmentCount) throws CoreException {
- boolean fileAdded = false;
- for (int i = 0; i < resources.length; i++) {
- File cFile = null;
- if (!resources[i].exists()) {
- continue;
- }
- // We have to avoid duplicates between the source and output folders (non-java
- // resources)
- IPath runtimePath = runtimePathPrefix.append(resources[i].getProjectRelativePath().removeFirstSegments(outputFolderSegmentCount));
- String uri = runtimePath == null ? null : runtimePath.toString();
- if (uri == null)
- continue;
- if (resources[i].getType() == IResource.FILE) {
- if (!shouldInclude(uri))
- continue;
- cFile = createFile(uri);
- cFile.setLastModified(getLastModified(resources[i]));
- filesHolder.addFile(cFile, resources[i]);
- fileAdded = true;
- } else if (shouldInclude((IContainer) resources[i])) {
- IResource[] nestedResources = ((IContainer) resources[i]).members();
- aggregateOutputFiles(nestedResources, runtimePathPrefix, outputFolderSegmentCount);
- if(!filesHolder.contains(uri)){
- if (!shouldInclude(uri))
- continue;
- cFile = createDirectory(uri);
- cFile.setLastModified(getLastModified(resources[i]));
- filesHolder.addDirectory(cFile);
- fileAdded = true;
- }
- }
- }
- return fileAdded;
- }
-
- /**
- * This is used to track whether {@link #aggregateFiles(IVirtualResource[])} is currently within a Java Source folder.
- */
- private boolean inJavaSrc = false;
-
- protected boolean aggregateFiles(IVirtualResource[] virtualResources) throws CoreException {
- boolean fileAdded = false;
- for (int i = 0; i < virtualResources.length; i++) {
- File cFile = null;
- if (!virtualResources[i].exists()) {
- continue;
- }
- // We have to avoid duplicates between the source and output folders (non-java
- // resources)
- IPath runtimePath = virtualResources[i].getRuntimePath();
- String uri = runtimePath == null ? null : runtimePath.toString();
- if (uri == null)
- continue;
- if (uri.charAt(0) == IPath.SEPARATOR) {
- uri = uri.substring(1);
- }
- if (filesHolder.contains(uri))
- continue;
-
- if (virtualResources[i].getType() == IVirtualResource.FILE) {
- if (!shouldInclude(uri))
- continue;
- IResource resource = virtualResources[i].getUnderlyingResource();
- // want to ignore derived resources nested within Java src directories; this covers the case where
- // a user has nested a Java output directory within a Java src directory (note: should ideally be
- // respecting Java src path exclusion filters)
- if (inJavaSrc && resource.isDerived()) {
- continue;
- }
- cFile = createFile(uri);
- cFile.setLastModified(getLastModified(resource));
- filesHolder.addFile(cFile, resource);
- fileAdded = true;
- } else if (shouldInclude((IVirtualContainer) virtualResources[i])) {
- boolean inJavaSrcAtThisLevel = inJavaSrc;
- try {
- if (!inJavaSrc) {
- // if not already inside a Java src dir, check again
- inJavaSrc = inJavaSrc(virtualResources[i]);
- }
- IVirtualResource[] nestedVirtualResources = ((IVirtualContainer) virtualResources[i]).members();
- aggregateFiles(nestedVirtualResources);
- if(!filesHolder.contains(uri)){
- if (!shouldInclude(uri))
- continue;
- IResource resource = virtualResources[i].getUnderlyingResource();
- if (inJavaSrc && resource.isDerived()) {
- continue;
- }
- cFile = createDirectory(uri);
- cFile.setLastModified(getLastModified(resource));
- filesHolder.addDirectory(cFile);
- fileAdded = true;
- }
- } finally {
- inJavaSrc = inJavaSrcAtThisLevel;
- }
- }
- }
- return fileAdded;
- }
-
- /**
- * Determines if the specified IVirtualResource maps to a IResource that is contained within a Java src root.
- * @param virtualResource IVirtualResource to check.
- * @param sourceRoots Current Java src roots.
- * @return True if contained in a Java src root, false otherwise.
- */
- protected boolean inJavaSrc(final IVirtualResource virtualResource) {
- if (sourceRoots.length == 0) {
- return false;
- }
- // all mapped resources must be associated with Java src for the resource to be considered in Java src
- final IResource[] resources = virtualResource.getUnderlyingResources();
- boolean inJavaSrc = false;
- for (int i = 0; i < resources.length; i++) {
- inJavaSrc = false;
- for (int j = 0; j < sourceRoots.length; j++) {
- if (sourceRoots[j].getFullPath().isPrefixOf(resources[i].getFullPath())) {
- inJavaSrc = true;
- break;
- }
- }
- // if this one was not in Java src, can break
- if (!inJavaSrc) {
- break;
- }
- }
-
- return inJavaSrc;
- }
-
- protected long getLastModified(IResource aResource) {
- return aResource.getLocation().toFile().lastModified();
- }
-
- public void setExportSource(boolean newExportSource) {
- exportSource = newExportSource;
- }
-
- public boolean isExportSource() {
- return exportSource;
- }
-
- protected boolean shouldInclude(IContainer aContainer) {
- return true;
- }
-
- protected boolean shouldInclude(IVirtualContainer vContainer) {
- IContainer iContainer = (IContainer) vContainer.getUnderlyingResource();
- return shouldInclude(iContainer);
- }
-
- protected boolean shouldInclude(String uri) {
- if (uri.length() == 0 || DOT_PROJECT.equals(uri) || DOT_CLASSPATH.equals(uri) || uri.endsWith(DOT_CVS_IGORE) || uri.startsWith(DOT_SETTINGS)){
- return false;
- }
- return isExportSource() || !isSource(uri);
- }
-
- protected boolean isSource(String uri) {
- if (uri == null)
- return false;
- return uri.endsWith(ArchiveUtil.DOT_JAVA) || uri.endsWith(ArchiveUtil.DOT_SQLJ);
- }
-
- protected void addExternalFile(String uri, java.io.File externalDiskFile) {
- File aFile = createFile(uri);
- filesHolder.addFile(aFile, externalDiskFile);
- }
-
- public InputStream getInputStream(String uri) throws IOException, FileNotFoundException {
- // If the MANIFEST.MF of a module component is being requested and that module component references
- // Java build path-based components, need to dynamically update the manifest classpath to reflect the resolved
- // contributions from the build path
- if (includeClasspathComponents &&
- uri.equals(J2EEConstants.MANIFEST_URI) && !javaClasspathURIs.isEmpty() &&
- manifestFile != null && manifestFile.getUnderlyingFile() != null &&
- manifestFile.getUnderlyingFile().exists()) {
- //update the manifest classpath for the component
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ClasspathDependencyManifestUtil.updateManifestClasspath(manifestFile.getUnderlyingFile(), javaClasspathURIs, baos);
- return new ByteArrayInputStream(baos.toByteArray());
- }
-
- if (filesHolder.contains(uri)) {
- return filesHolder.getInputStream(uri);
- }
- IVirtualFolder rootFolder = vComponent.getRootFolder();
- IVirtualResource vResource = rootFolder.findMember(uri);
- String filePath = null;
- if (null != vResource && vResource.exists()) {
- filePath = vResource.getUnderlyingResource().getLocation().toOSString();
- java.io.File file = new java.io.File(filePath);
- return new FileInputStream(file);
- }
- String eString = EARArchiveOpsResourceHandler.ARCHIVE_OPERATION_FileNotFound;
- throw new FileNotFoundException(eString);
- }
-
- public Collection getLoadedMofResources() {
- Collection resources = super.getLoadedMofResources();
- Collection resourcesToRemove = new ArrayList();
- Iterator iterator = resources.iterator();
- while (iterator.hasNext()) {
- Resource res = (Resource) iterator.next();
- //only remove component files that are in the settings directory
- if (res.getURI().toString().endsWith(IModuleConstants.COMPONENT_FILE_NAME) && res.getURI().segmentsList().contains(IModuleConstants.DOT_SETTINGS))
- resourcesToRemove.add(res);
- }
- if (null != resourcesToRemove) {
- resources.removeAll(resourcesToRemove);
- }
-
- return resources;
- }
-
- protected synchronized ArtifactEdit getArtifactEditForRead() {
- if(artifactEdit == null){
- artifactEdit = ArtifactEdit.getArtifactEditForRead(vComponent);
- }
- return artifactEdit;
- }
-
- public Resource getMofResource(String uri) throws FileNotFoundException, ResourceLoadException {
- return getArtifactEditForRead().getResource(URI.createURI(uri));
- }
-
- public boolean isClassLoaderNeeded() {
- return false;
- }
-
- public IVirtualComponent getComponent() {
- return vComponent;
- }
-
- protected IProgressMonitor monitor = null;
-
- public void setProgressMonitor(IProgressMonitor monitor){
- this.monitor = monitor;
- }
-
- protected final int FILE_SAVE_WORK = 100;
-
- public FileIterator getFileIterator() throws IOException {
- return new FileIteratorImpl(getContainer().getFiles()){
- protected SubProgressMonitor lastSubMon = null;
- boolean firstVisit = true;
-
- public File next() {
- if(firstVisit){
- firstVisit = false;
- if(monitor != null){
- monitor.beginTask(ProjectSupportResourceHandler.getString(ProjectSupportResourceHandler.Exporting_archive, new Object [] { getContainer().getURI() }), files.size() * FILE_SAVE_WORK);
- }
- }
- if(lastSubMon != null){
- lastSubMon.done();
- lastSubMon = null;
- } else if(monitor != null){
- monitor.worked(FILE_SAVE_WORK);
- }
- File file = super.next();
- if(monitor != null){
- if(file.isContainer() && ComponentLoadStrategyImpl.class.isInstance(((ContainerImpl)file).getLoadStrategy())){
- ComponentLoadStrategyImpl ls = (ComponentLoadStrategyImpl)((ContainerImpl)file).getLoadStrategy();
- lastSubMon = new SubProgressMonitor(monitor, FILE_SAVE_WORK, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
- ls.setProgressMonitor(lastSubMon);
- } else {
- monitor.subTask(file.getURI());
- }
- }
- return file;
- }
- };
-
- }
-
- public void close() {
- if(Thread.currentThread().toString().toLowerCase().indexOf("finalizer") != -1){
- System.err.println("Opener of Archive didn't close! "+this);
- exception.printStackTrace(System.err);
- }
-
- try{
- Iterator it = zipFiles.iterator();
- while (it.hasNext()) {
- ZipFile file = (ZipFile) it.next();
- try {
- file.close();
- } catch (IOException e) {
- Logger.getLogger().logError(e);
- }
- }
- } finally{
- try{
- synchronized(this) {
- if(artifactEdit != null){
- ArtifactEditModel editModel = (ArtifactEditModel)artifactEdit.getAdapter(ArtifactEditModel.class);
- if(editModel != null && !editModel.isDisposed()){
- artifactEdit.dispose();
- }
- artifactEdit = null;
- }
- }
- } finally {
- super.close();
- }
- }
-
- }
-}

Back to the top