Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/NestedArchiveLoadStrategyImpl.java')
-rw-r--r--plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/NestedArchiveLoadStrategyImpl.java260
1 files changed, 0 insertions, 260 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/NestedArchiveLoadStrategyImpl.java b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/NestedArchiveLoadStrategyImpl.java
deleted file mode 100644
index def55bcd4..000000000
--- a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/NestedArchiveLoadStrategyImpl.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 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.commonarchivecore.internal.strategy;
-
-
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.CommonArchiveResourceHandler;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.File;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.NestedJarException;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.FileIterator;
-import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.NestedArchiveIterator;
-
-
-/**
- * Load strategy used as a last resort to read entries from jars inside of jars. It is a last resort
- * because of the poor perfomance involved, as the contents of the zip entries are not cached, and
- * sequential scan searches will cause the zip stream to be inflated on each search. Whenever
- * possible,
- *
- * @link {TempFileLoadStrategy} should be used.
- */
-public class NestedArchiveLoadStrategyImpl extends LoadStrategyImpl {
- /**
- * Index to improve lookup performance - not used if in Runtime to reduce footprint
- */
- protected Map urisToPositions;
- protected LoadStrategy parent;
-
- /**
- * NestedArchiveLoadStrategyImpl constructor comment.
- */
- public NestedArchiveLoadStrategyImpl(LoadStrategy parentStrategy) {
- super();
- setParent(parentStrategy);
- }
-
- protected void buildIndex() {
- Map map = new HashMap();
- try {
- ZipInputStream zis = getZipInputStream();
- ZipEntry entry = null;
- long position = 0;
- while ((entry = zis.getNextEntry()) != null) {
- position++;
- map.put(entry.getName(), new Long(position));
- }
- } catch (IOException iox) {
- throwNestedJarException(iox);
- }
- setUrisToPositions(map);
- }
-
- /**
- * @see com.ibm.etools.archive.impl.LoadStrategyImpl
- */
- protected boolean primContains(String uri) {
- if (usingIndex())
- return containsUsingIndex(uri);
- return containsSequentially(uri);
- }
-
-
- protected boolean containsSequentially(String uri) {
- ZipInputStream zis = null;
- try {
- zis = getZipInputStreamSkippedTo(uri);
- return zis != null;
- } catch (IOException ex) {
- return false;
- } finally {
- if (zis != null) {
- try {
- zis.close();
- } catch (IOException ioe) {
- //Ignore
- }
- }
- }
- }
-
-
- protected boolean containsUsingIndex(String uri) {
- return getUrisToPositions().containsKey(uri);
- }
-
-
- /**
- * Used internally; clients should not need to call
- */
- public FileIterator getFileIterator() throws IOException {
- if (((Archive) getContainer()).getOptions().isReadOnly())
- return new NestedArchiveIterator(getContainer().getFiles(), getZipInputStream());
- return super.getFileIterator();
- }
-
- /**
- * @see com.ibm.etools.archive.impl.LoadStrategyImpl
- */
- public java.util.List getFiles() {
- List list = new ArrayList(500);
- ZipInputStream zis = null;
- try {
- zis = getZipInputStream();
- ZipEntry entry = zis.getNextEntry();
- while (entry != null) {
- if (!entry.isDirectory()) {
- File aFile = createFile(entry.getName());
- aFile.setSize(entry.getSize());
- aFile.setLastModified(entry.getTime());
- list.add(aFile);
- }
- entry = zis.getNextEntry();
- }
- } catch (IOException iox) {
- throwNestedJarException(iox);
- } finally {
- if (zis != null) {
- try {
- zis.close();
- } catch (IOException iox) {
- //Ignore
- }
- }
- }
- return list;
- }
-
- /**
- * @see com.ibm.etools.archive.impl.LoadStrategyImpl
- */
- public java.io.InputStream getInputStream(String uri) throws IOException, FileNotFoundException {
- if (usingIndex())
- return getInputStreamUsingIndex(uri);
- return getInputStreamSequentially(uri);
- }
-
- protected java.io.InputStream getInputStreamSequentially(String uri) throws IOException, FileNotFoundException {
- return new java.io.BufferedInputStream(getZipInputStreamSkippedTo(uri));
- }
-
- protected java.io.InputStream getInputStreamUsingIndex(String uri) throws IOException, FileNotFoundException {
- Long position = (Long) getUrisToPositions().get(uri);
- if (position == null)
- throw new FileNotFoundException();
- ZipInputStream zis = getZipInputStream();
- long pos = position.longValue();
- for (long i = 0; i < pos; i++) {
- zis.getNextEntry();
- }
- return new java.io.BufferedInputStream(zis);
- }
-
- /**
- * Insert the method's description here. Creation date: (12/07/00 6:12:36 PM)
- *
- * @return com.ibm.etools.archive.LoadStrategy
- */
- public org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.LoadStrategy getParent() {
- return parent;
- }
-
- /**
- * Insert the method's description here. Creation date: (12/07/00 4:38:21 PM)
- *
- * @return java.util.Map
- */
- public java.util.Map getUrisToPositions() {
- if (usingIndex() && urisToPositions == null)
- buildIndex();
- return urisToPositions;
- }
-
- protected ZipInputStream getZipInputStream() throws IOException, FileNotFoundException {
- String uri = getContainer().getURI();
- InputStream in = getParent().getInputStream(uri);
- return new ZipInputStream(in);
- }
-
- protected ZipInputStream getZipInputStreamSkippedTo(String uri) throws IOException, FileNotFoundException {
- if (uri == null)
- throw new NullPointerException(CommonArchiveResourceHandler.Null_uri_EXC_); // = "Null uri"
- ZipInputStream zis = null;
- ZipEntry entry = null;
- try {
- zis = getZipInputStream();
- entry = zis.getNextEntry();
- while (entry != null) {
- if (uri.equals(entry.getName()))
- return zis;
- entry = zis.getNextEntry();
- }
- } finally {
- // entry was not found so close the stream
- if (entry == null && zis != null) {
- try {
- zis.close();
- } catch (IOException ioe) {
- //Ignore
- }
- }
- }
- throw new FileNotFoundException(uri);
- }
-
- /**
- * Insert the method's description here. Creation date: (12/07/00 6:12:36 PM)
- *
- * @param newParent
- * com.ibm.etools.archive.LoadStrategy
- */
- public void setParent(org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.LoadStrategy newParent) {
- parent = newParent;
- }
-
- /**
- * Insert the method's description here. Creation date: (12/07/00 4:38:21 PM)
- *
- * @param newUrisToPositions
- * java.util.Map
- */
- public void setUrisToPositions(java.util.Map newUrisToPositions) {
- urisToPositions = newUrisToPositions;
- }
-
- /**
- * An exception was caught reading the nested jar; throws a runtime exception
- */
- protected void throwNestedJarException(Exception caughtException) {
- throw new NestedJarException(CommonArchiveResourceHandler.getString(CommonArchiveResourceHandler.nested_jar_EXC_, (new Object[]{getContainer().getURI(), getParent().getContainer().getURI()})), caughtException);// = "An error occurred reading {0} from {1}"
- }
-
- /**
- * Don't use the index in the runtime environment; reduce footprint
- */
- public boolean usingIndex() {
- return false;
- //return !com.ibm.etools.archive.util.ArchiveUtil.isRuntime();
- }
-
-
-}

Back to the top