[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
Thu Feb 15 17:49:53 EST 2007
User: mculpepper
Date: 07/02/15 17:49:53
Modified: core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal
PackagesModel.java
Log:
added 2 new convenience methods (for use internally) that retrieve top level packages from a specific node, and the entire object tree(pathway) to that node from each top level package. this allows us to construct the full path to each reference and update it accordingly at build time
Revision Changes Path
1.17 +82 -2 jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackagesModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PackagesModel.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/internal/PackagesModel.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- PackagesModel.java 14 Feb 2007 17:53:00 -0000 1.16
+++ PackagesModel.java 15 Feb 2007 22:49:53 -0000 1.17
@@ -41,10 +41,8 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
import org.jboss.ide.eclipse.core.util.ProjectUtil;
import org.jboss.ide.eclipse.packages.core.ExtensionManager;
-import org.jboss.ide.eclipse.packages.core.PackagesCorePlugin;
import org.jboss.ide.eclipse.packages.core.Trace;
import org.jboss.ide.eclipse.packages.core.model.IPackage;
import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
@@ -94,6 +92,88 @@
return _instance;
}
+ protected Hashtable getTopLevelPackageAndPathway (IPackageNode node)
+ {
+ ArrayList parents = new ArrayList();
+ IPackageNode tmp = node.getParent(), top = tmp;
+
+ while (tmp != null)
+ {
+ top = tmp;
+ parents.add(0, top);
+
+ tmp = tmp.getParent();
+ }
+
+ IPackage topLevelPackage = null;
+
+ if (top instanceof IPackage)
+ topLevelPackage = (IPackage)top;
+
+ Hashtable pkgAndPath = new Hashtable();
+
+ if (topLevelPackage != null)
+ pkgAndPath.put(topLevelPackage, parents);
+
+ return pkgAndPath;
+ }
+
+ /**
+ * This will return a hashtable of top-level packages and their corresponding
+ * pathways from the passed-in node. This is used for determining all the pathway possibilities
+ * for a single package node.
+ *
+ */
+ protected Hashtable getTopLevelPackagesAndPathways (IPackageNode node)
+ {
+ Hashtable pkgsAndPaths = new Hashtable();
+
+ IPackage originalSource = PackagesCore.getTopLevelPackage(node);
+ ArrayList parents = new ArrayList();
+
+ IPackageNode parent = node.getParent();
+ while (parent != null)
+ {
+ parents.add(0, parent);
+
+ parent = parent.getParent();
+ }
+ pkgsAndPaths.put(originalSource, parents);
+
+ parents = new ArrayList();
+
+ IPackageNode tmp = node.getParent(), top = tmp;
+ while (tmp != null)
+ {
+ top = tmp;
+ if (top.getNodeType() == IPackageNode.TYPE_PACKAGE)
+ {
+ IPackage pkg = (IPackage) top;
+ IPackageReference refs[] = pkg.getReferences();
+ for (int i = 0; i < refs.length; i++)
+ {
+ Hashtable pkgAndPath = getTopLevelPackageAndPathway(refs[i]);
+ Iterator iter = pkgAndPath.keySet().iterator();
+ if (iter.hasNext())
+ {
+ IPackage topLevelPackage = (IPackage) iter.next();
+ ArrayList pathway = (ArrayList) pkgAndPath.get(topLevelPackage);
+ ArrayList fullPathway = new ArrayList(parents);
+ fullPathway.addAll(pathway);
+ fullPathway.add(refs[i]);
+
+ pkgsAndPaths.put(topLevelPackage, fullPathway);
+ }
+ }
+ } else {
+ parents.add(0, top);
+ }
+ tmp = tmp.getParent();
+ }
+
+ return pkgsAndPaths;
+ }
+
public void registerProject(IProject project, IProgressMonitor monitor)
{
if (projectBeingRegistered == null)
More information about the jboss-cvs-commits
mailing list