[171459] Empty directories flag
diff --git a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/ZipFileLoadStrategyImpl.java b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/ZipFileLoadStrategyImpl.java index 5f9c188..7452cad 100644 --- a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/ZipFileLoadStrategyImpl.java +++ b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/strategy/ZipFileLoadStrategyImpl.java
@@ -21,6 +21,7 @@ import java.util.zip.ZipFile; import org.eclipse.jst.j2ee.commonarchivecore.internal.File; +import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil; /** @@ -32,7 +33,7 @@ public class ZipFileLoadStrategyImpl extends LoadStrategyImpl { protected java.io.File file; protected ZipFile zipFile; - + /** * ZipFileLoadStrategy constructor comment. */ @@ -96,7 +97,7 @@ aFile.setLastModified(entry.getTime()); list.add(aFile); } - } else { + } else if(includeEmptyDirectories) { File aFile = createDirectory(entry.getName()); aFile.setDirectoryEntry(true); aFile.setSize(entry.getSize()); @@ -158,4 +159,30 @@ public void setZipFile(java.util.zip.ZipFile newZipFile) { zipFile = newZipFile; } + + /** + * This field is used to determine whether empty directories should be included in the + * file list of this archive. The default value is set to {@link #ArchiveUtil.INCLUDE_EMPTY_DIRECTORIES} + */ + private boolean includeEmptyDirectories = ArchiveUtil.INCLUDE_EMPTY_DIRECTORIES; + + /** + * If this value has not been set, the default is defined by {@link #ArchiveUtil.INCLUDE_EMPTY_DIRECTORIES}. + * + * If this value is <code>true></code> then empty directories will be included in {@link #getFiles()}. + * + * @see #setIncludeEmptyDirectories(boolean) + */ + public boolean isIncludeEmptyDirectories() { + return includeEmptyDirectories; + } + + /** + * If this value has not been set, the default is defined by {@link #ArchiveUtil.INCLUDE_EMPTY_DIRECTORIES}. + * + * @see #isIncludeEmptyDirectories() + */ + public void setIncludeEmptyDirectories(boolean includeEmptyDirectories) { + this.includeEmptyDirectories = includeEmptyDirectories; + } }
diff --git a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/ArchiveUtil.java b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/ArchiveUtil.java index bfe9dd1..3ecab13 100644 --- a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/ArchiveUtil.java +++ b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/ArchiveUtil.java
@@ -43,6 +43,7 @@ import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.ArchiveException; import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.EmptyResourceException; import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveURIConverterImpl; +import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.ZipFileLoadStrategyImpl; import org.eclipse.jst.j2ee.internal.J2EEConstants; import org.eclipse.jst.j2ee.internal.J2EEVersionConstants; import org.eclipse.jst.j2ee.internal.common.XMLResource; @@ -85,6 +86,14 @@ protected static String tempDirectoryName; protected static java.io.File tempDirectory; + + /** + * Flag to indicate whether empty directories should be included during import; defaults to true. + * + * @see ZipFileLoadStrategyImpl#isIncludeEmptyDirectories() + */ + public static boolean INCLUDE_EMPTY_DIRECTORIES = true; + public static String classNameToJavaUri(String className) { return className.replace('.', '/').concat(DOT_JAVA);