Author: rob.stryker(a)jboss.com
Date: 2007-05-31 19:58:03 -0400 (Thu, 31 May 2007)
New Revision: 2085
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/TrueZipUtil.java
Log:
fixing bugs, empty folders were being left
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java 2007-05-31
17:42:15 UTC (rev 2084)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/build/ArchiveBuildDelegate.java 2007-05-31
23:58:03 UTC (rev 2085)
@@ -130,8 +130,8 @@
/**
* Incremental build.
* Parameters are instance sof changed IPath objects
- * Will search only the given node for descendent filesets
- * @param archive An archive to limit the scope to, or null if the entire model
+ * Will search only the given node for matching descendent filesets
+ * @param archive An archive to limit the scope to, or null if the entire default
model
* @param addedChanged A list of added or changed resource paths
* @param removed A list of removed resource paths
*/
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java 2007-05-31
17:42:15 UTC (rev 2084)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/model/internal/ArchiveFileSetImpl.java 2007-05-31
23:58:03 UTC (rev 2085)
@@ -109,7 +109,7 @@
* @see IArchiveFileSet#getSourcePath()
*/
public IPath getSourcePath() {
- return new Path(filesetDelegate.getDir());
+ return filesetDelegate.getDir() == null ? null : new Path(filesetDelegate.getDir());
}
/*
@@ -179,7 +179,7 @@
*/
public void setSourcePath (IPath path) {
Assert.isNotNull(path);
- IPath src = getGlobalSourcePath();
+ IPath src = getSourcePath();
attributeChanged(SOURCE_PATH_ATTRIBUTE, src == null ? null : src.toString(), path ==
null ? null : path.toString());
filesetDelegate.setDir(path.toString());
rescanRequired = true;
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java 2007-05-31
17:42:15 UTC (rev 2084)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/ModelUtil.java 2007-05-31
23:58:03 UTC (rev 2085)
@@ -159,6 +159,7 @@
* @return
*/
public static IPath getBaseFile(IArchiveNode node, IPath absolutePath) {
+ IArchiveNode parameterNode = node;
ArrayList list = new ArrayList();
while( node != null && !(node instanceof ArchiveModelNode)) {
list.add(node);
@@ -182,10 +183,11 @@
}
}
- if( absolutePath != null && node.getNodeType() ==
IArchiveNode.TYPE_ARCHIVE_FILESET ) {
- IArchiveFileSet fs = ((IArchiveFileSet)node);
- if( fs.getSourcePath().isPrefixOf(absolutePath)) {
-
lastConcrete.append(absolutePath.removeFirstSegments(fs.getSourcePath().segmentCount()));
+ if( absolutePath != null && parameterNode.getNodeType() ==
IArchiveNode.TYPE_ARCHIVE_FILESET ) {
+ IArchiveFileSet fs = ((IArchiveFileSet)parameterNode);
+ IPath sourcePath = fs.isInWorkspace() ?
workspacePathToAbsolutePath(fs.getSourcePath()) : fs.getSourcePath();
+ if( sourcePath.isPrefixOf(absolutePath)) {
+ lastConcrete =
lastConcrete.append(absolutePath.removeFirstSegments(sourcePath.segmentCount()));
}
}
return lastConcrete;
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java 2007-05-31
17:42:15 UTC (rev 2084)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/ModelTruezipBridge.java 2007-05-31
23:58:03 UTC (rev 2085)
@@ -29,6 +29,7 @@
import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeVisitor;
import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
import de.schlichtherle.io.ArchiveDetector;
@@ -56,12 +57,11 @@
}
public static void cleanFolder(IArchiveFolder folder) {
- cleanFolder(folder, true);
+ cleanFolder(getFile(folder), true);
}
- public static void cleanFolder(IArchiveFolder folder, boolean sync) {
- final File file = getFile(folder);
- TrueZipUtil.deleteEmptyFolders(file);
+ public static void cleanFolder(java.io.File folder, boolean sync) {
+ TrueZipUtil.deleteEmptyChildren(folder);
if( sync )
TrueZipUtil.sync();
}
@@ -87,7 +87,7 @@
// Let them know which files were removed, for events
public static IPath[] fullFilesetRemove(final IArchiveFileSet fileset, boolean sync) {
IPath[] paths = fileset.findMatchingPaths();
- ArrayList list = new ArrayList();
+ final ArrayList list = new ArrayList();
list.addAll(Arrays.asList(paths));
for( int i = 0; i < paths.length; i++ ) {
if( !ModelUtil.otherFilesetMatchesPath(fileset, paths[i])) {
@@ -97,7 +97,22 @@
list.remove(paths[i]);
}
}
-
+
+ // kinda ugly here. delete all empty folders beneath
+ cleanFolder(getFile(fileset), false);
+
+ // now ensure all mandatory child folders are still there
+ fileset.getParent().accept(new IArchiveNodeVisitor() {
+ public boolean visit(IArchiveNode node) {
+ if( node.getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
+ createFile(node);
+ } else if( node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FOLDER) {
+ createFile(node);
+ }
+ return true;
+ }
+ } );
+
if( sync )
TrueZipUtil.sync();
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/TrueZipUtil.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/TrueZipUtil.java 2007-05-31
17:42:15 UTC (rev 2084)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.core/src/main/org/jboss/ide/eclipse/archives/core/util/internal/TrueZipUtil.java 2007-05-31
23:58:03 UTC (rev 2085)
@@ -109,6 +109,13 @@
file.deleteAll();
}
+ public static void deleteEmptyChildren(java.io.File file) {
+ if( file.isDirectory() ) {
+ java.io.File[] children = file.listFiles();
+ for( int i = 0; i < children.length; i++ )
+ deleteEmptyFolders(children[i]);
+ }
+ }
public static void deleteEmptyFolders(java.io.File file ) {
if( file.isDirectory() ) {
java.io.File[] children = file.listFiles();
Show replies by date