[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal ...
Marshall Culpepper
mculpepper at jboss.com
Fri Feb 23 09:40:49 EST 2007
User: mculpepper
Date: 07/02/23 09:40:49
Modified: core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal
PackageBuildDelegate.java
Log:
implemented fileUpdated/Removed events and fixed a bug that was causing exploded jars not to be created correctly
Revision Changes Path
1.15 +97 -12 jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackageBuildDelegate.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PackageBuildDelegate.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackageBuildDelegate.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- PackageBuildDelegate.java 21 Feb 2007 21:11:39 -0000 1.14
+++ PackageBuildDelegate.java 23 Feb 2007 14:40:49 -0000 1.15
@@ -98,6 +98,11 @@
PackagesModel.instance().addPackagesModelListener(this);
}
+ private File getPackageFile (IPackage pkg)
+ {
+ return new File(pkg.getPackageFile().getRawLocation().toFile());
+ }
+
public void projectRegistered(IProject project) {
List packages = PackagesModel.instance().getProjectPackages(project);
fillScannerCache(packages);
@@ -134,10 +139,32 @@
if (changed.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
{
updateScannerCache((IPackageFileSet) changed);
- }
incrementalBuildUnderNode(changed, nullMonitor);
}
+ else if (changed.getNodeType() == IPackageNode.TYPE_PACKAGE)
+ {
+ IPackage pkg = (IPackage) changed;
+ File packageFile = getPackageFile(pkg);
+
+ if (! packageFile.getName().equals(pkg.getName()))
+ {
+ // File name was changed, rename
+ File newPackageFile = new File(packageFile.getParent(), pkg.getName());
+ packageFile.renameTo(newPackageFile, packageFile.getArchiveDetector());
+ }
+ else if (packageFile.getDelegate().isFile() && pkg.isExploded())
+ {
+ // Changed to exploded from compressed
+ packageFile.renameTo(packageFile, ArchiveDetector.DEFAULT);
+ }
+ else if (packageFile.getDelegate().isDirectory() && !pkg.isExploded())
+ {
+ // Changed to compressed from exploded
+ packageFile.renameTo(packageFile, ArchiveDetector.NULL);
+ }
+ }
+ }
public void packageNodeRemoved(IPackageNode removed) {
synchronized (nodesToRemove)
@@ -185,6 +212,18 @@
((IPackagesBuildListener)iter.next()).finishedCollectingFileSet(fileset);
}
+ private void fireFileUpdated (IPackage topLevelPackage, IPackageFileSet fileset, IPath filePath)
+ {
+ for (Iterator iter = PackagesModel.instance().getBuildListeners().iterator(); iter.hasNext(); )
+ ((IPackagesBuildListener)iter.next()).fileUpdated(topLevelPackage, fileset, filePath);
+ }
+
+ private void fireFileRemoved (IPackage topLevelPackage, IPackageFileSet fileset, IPath filePath)
+ {
+ for (Iterator iter = PackagesModel.instance().getBuildListeners().iterator(); iter.hasNext(); )
+ ((IPackagesBuildListener)iter.next()).fileRemoved(topLevelPackage, fileset, filePath);
+ }
+
private void fireFinishedBuildingPackage (IPackage pkg)
{
for (Iterator iter = PackagesModel.instance().getBuildListeners().iterator(); iter.hasNext(); )
@@ -390,6 +429,7 @@
fireStartedCollectingFileSet(fileset);
IFile matchingFiles[] = filesetImpl.findMatchingFiles(scanner);
fireFinishedCollectingFileSet(fileset);
+
for (int i = 0; i < matchingFiles.length; i++)
{
updateFile(matchingFiles[i], new IPackageFileSet[] { fileset }, checkStamps);
@@ -398,6 +438,7 @@
fireStartedCollectingFileSet(fileset);
IPath matchingPaths[] = filesetImpl.findMatchingPaths(scanner);
fireFinishedCollectingFileSet(fileset);
+
for (int i = 0; i < matchingPaths.length; i++)
{
updatePath(matchingPaths[i], fileset, checkStamps);
@@ -717,9 +758,14 @@
private File[] createFilesetRoots (IPackageFileSet fileset)
{
+ Hashtable pkgsAndPaths = PackagesModel.instance().getTopLevelPackagesAndPathways(fileset);
+ return createFilesetRoots (fileset, pkgsAndPaths);
+ }
+
+ private File[] createFilesetRoots (IPackageFileSet fileset, Hashtable pkgsAndPaths)
+ {
ArrayList roots = new ArrayList();
- Hashtable pkgsAndPaths = PackagesModel.instance().getTopLevelPackagesAndPathways(fileset);
for (Iterator iter = pkgsAndPaths.keySet().iterator(); iter.hasNext(); )
{
IPackage topLevelPackage = (IPackage) iter.next();
@@ -749,16 +795,28 @@
}
}
+ root.mkdirs();
roots.add(root);
}
return (File[]) roots.toArray(new File[roots.size()]);
}
+ private File[] createFiles (IPackageFileSet fileset, IPath subPath, Hashtable pkgsAndPaths)
+ {
+ File[] roots = createFilesetRoots(fileset, pkgsAndPaths);
+ return createFiles (roots, subPath);
+ }
+
private File[] createFiles (IPackageFileSet fileset, IPath subPath)
{
- ArrayList files = new ArrayList();
File[] roots = createFilesetRoots(fileset);
+ return createFiles (roots, subPath);
+ }
+
+ private File[] createFiles (File[] roots, IPath subPath)
+ {
+ ArrayList files = new ArrayList();
for (int i = 0; i < roots.length; i++)
{
files.add(new File(roots[i], subPath.toString(), ArchiveDetector.NULL));
@@ -840,7 +898,11 @@
for (int i = 0; i < filesets.length; i++)
{
IPath copyTo = getFileDestinationPath(file, filesets[i]);
- File[] packageFiles = createFiles(filesets[i], copyTo);
+ Hashtable pkgsAndPaths = PackagesModel.instance().getTopLevelPackagesAndPathways(filesets[i]);
+ IPackage[] topLevelPackages = (IPackage [])
+ pkgsAndPaths.keySet().toArray(new IPackage[pkgsAndPaths.keySet().size()]);
+
+ File[] packageFiles = createFiles (filesets[i], copyTo, pkgsAndPaths);
if (checkStamps)
{
@@ -871,6 +933,8 @@
Trace.trace(getClass(), "closing file contents inputstream", Trace.DEBUG_OPTION_STREAM_CLOSE);
in.close();
+
+ fireFileUpdated(topLevelPackages[j], filesets[i], file.getFullPath());
} catch (FileNotFoundException e) {
Trace.trace(getClass(), e);
} catch (IOException e) {
@@ -901,7 +965,11 @@
synchronized (buildLock)
{
IPath copyTo = getPathDestinationPath(path, fileset);
- File[] packageFiles = createFiles(fileset, copyTo);
+ Hashtable pkgsAndPaths = PackagesModel.instance().getTopLevelPackagesAndPathways(fileset);
+ IPackage[] topLevelPackages = (IPackage [])
+ pkgsAndPaths.keySet().toArray(new IPackage[pkgsAndPaths.keySet().size()]);
+
+ File[] packageFiles = createFiles (fileset, copyTo, pkgsAndPaths);
if (checkStamps)
{
@@ -932,6 +1000,8 @@
Trace.trace(getClass(), "closing file contents input stream", Trace.DEBUG_OPTION_STREAM_CLOSE);
in.close();
+
+ fireFileUpdated(topLevelPackages[i], fileset, path);
} catch (IOException e) {
Trace.trace(getClass(), e);
}
@@ -974,13 +1044,21 @@
{
for (int i = 0; i < filesets.length; i++)
{
- File[] packagedFiles = createFiles(filesets[i], getFileDestinationPath(file, filesets[i]));
+ Hashtable pkgsAndPathways = PackagesModel.instance().getTopLevelPackageAndPathway(filesets[i]);
+ File[] packagedFiles = createFiles(filesets[i], getFileDestinationPath(file, filesets[i]), pkgsAndPathways);
+ IPackage[] topLevelPackages = (IPackage[])
+ pkgsAndPathways.keySet().toArray(new IPackage[pkgsAndPathways.keySet().size()]);
for (int j = 0; j < packagedFiles.length; j++)
{
File packagedFile = packagedFiles[j];
- if (packagedFile.exists()) packagedFile.deleteAll();
+ if (packagedFile.exists())
+ {
+ packagedFile.deleteAll();
deleteEmptyFolders(packagedFile);
+
+ fireFileRemoved(topLevelPackages[j], filesets[i], file.getFullPath());
+ }
}
}
}
@@ -991,8 +1069,13 @@
synchronized (buildLock)
{
File packagedFile = new File(getPathDestinationPath(path, fileset).toFile());
- if (packagedFile.exists()) packagedFile.deleteAll();
+ if (packagedFile.exists())
+ {
+ packagedFile.deleteAll();
deleteEmptyFolders(packagedFile);
+
+ fireFileRemoved(PackagesCore.getTopLevelPackage(fileset), fileset, path);
+ }
}
}
@@ -1062,6 +1145,7 @@
fireStartedCollectingFileSet(fileset);
IFile matchingFiles[] = ((PackageFileSetImpl)fileset).findMatchingFiles(scanner);
fireFinishedCollectingFileSet(fileset);
+
for (int i = 0; i < matchingFiles.length; i++)
{
removeFile(matchingFiles[i], new IPackageFileSet[] { fileset });
@@ -1070,6 +1154,7 @@
fireStartedCollectingFileSet(fileset);
IPath matchingPaths[] = ((PackageFileSetImpl)fileset).findMatchingPaths(scanner);
fireFinishedCollectingFileSet(fileset);
+
for (int i = 0; i < matchingPaths.length; i++)
{
removePath(matchingPaths[i], fileset);
More information about the jboss-cvs-commits
mailing list