[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model ...

Marshall Culpepper mculpepper at jboss.com
Fri Feb 9 14:05:17 EST 2007


  User: mculpepper
  Date: 07/02/09 14:05:17

  Modified:    core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model 
                        PackagesCore.java
  Log:
  added support for a lazyInit flag in getProjectPackages(), also added a method for retrieving an IPackage based on a filesystem-based IPath
  
  Revision  Changes    Path
  1.12      +55 -6     jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/PackagesCore.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PackagesCore.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/PackagesCore.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -b -r1.11 -r1.12
  --- PackagesCore.java	20 Dec 2006 19:56:40 -0000	1.11
  +++ PackagesCore.java	9 Feb 2007 19:05:17 -0000	1.12
  @@ -22,6 +22,7 @@
   package org.jboss.ide.eclipse.packages.core.model;
   
   import java.util.ArrayList;
  +import java.util.Iterator;
   import java.util.List;
   
   import org.apache.tools.ant.DirectoryScanner;
  @@ -37,7 +38,10 @@
   import org.eclipse.core.runtime.QualifiedName;
   import org.jboss.ide.eclipse.packages.core.Trace;
   import org.jboss.ide.eclipse.packages.core.model.internal.PackageBuildDelegate;
  +import org.jboss.ide.eclipse.packages.core.model.internal.PackageImpl;
  +import org.jboss.ide.eclipse.packages.core.model.internal.PackageReferenceImpl;
   import org.jboss.ide.eclipse.packages.core.model.internal.PackagesModel;
  +import org.jboss.ide.eclipse.packages.core.model.internal.xb.XbPackage;
   import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
   
   public class PackagesCore {
  @@ -49,6 +53,11 @@
   	
   	public static IPackage[] getProjectPackages (IProject project, IProgressMonitor monitor)
   	{
  +		return getProjectPackages(project, monitor, true);
  +	}
  +	
  +	public static IPackage[] getProjectPackages (IProject project, IProgressMonitor monitor, boolean lazyInit)
  +	{
   		if (monitor == null) monitor = new NullProgressMonitor();
   		
   		monitor.beginTask("Fetching packages for \"" + project.getName() + "\"...", 2);
  @@ -56,9 +65,8 @@
   		monitor.worked(1);
   		
   		if (packages == null) {
  -			if (project.getFile(PackagesModel.PROJECT_PACKAGES_FILE).exists())
  +			if (lazyInit && projectHasPackages(project))
   			{
  -				// lazy init
   				PackagesModel.instance().registerProject(project, monitor);
   				packages = PackagesModel.instance().getProjectPackages(project);
   			}
  @@ -187,6 +195,18 @@
   		}
   	}
   	
  +	public static IPackage getParentPackage (IPackageNode node)
  +	{
  +		if (node != null)
  +		{
  +			IPackageNode parent = null;
  +			
  +			for (parent = node.getParent(); parent != null && parent.getNodeType() != IPackageNode.TYPE_PACKAGE; parent = parent.getParent()) { }
  +			return (IPackage) parent;
  +		}
  +		return null;
  +	}
  +	
   	public static IPackage getTopLevelPackage (IPackageNode node)
   	{
   		IPackageNode tmp = node.getParent(), top = tmp;
  @@ -212,6 +232,27 @@
   	}
   	
   	/**
  +	 * Returns the IPackage represented by the passed-in filesystem path.
  +	 * This will return null if the passed-in path does not represent an IPath.
  +	 * @param project The project the package exists in
  +	 * @param systemPath The full system path to the package
  +	 * @return an IPackage
  +	 */
  +	public static IPackage getPackageFromFilesystem (IProject project, IPath systemPath)
  +	{
  +		IPackage[] packages = getProjectPackages(project, null, false);
  +		for (int i = 0; i < packages.length; i++)
  +		{
  +			if (packages[i].getPackageFilePath().equals(systemPath))
  +			{
  +				return packages[i];
  +			}
  +		}
  +		
  +		return null;
  +	}
  +	
  +	/**
   	 * @see getPackage(IFile);
   	 * 
   	 * @param project The project
  @@ -234,12 +275,13 @@
   	 */
   	public static IPackage getPackage (IFile file)
   	{
  -		IPackage[] packages = getProjectPackages(file.getProject(), null);
  -		for (int i = 0; i < packages.length; i++)
  +		List packages = PackagesModel.instance().getProjectPackages(file.getProject());
  +		for (Iterator iter = packages.iterator(); iter.hasNext(); )
   		{
  -			if (packages[i].getPackageFile().equals(file))
  +			IPackage pkg = (IPackage) iter.next();
  +			if (pkg.getPackageFile().equals(file))
   			{
  -				return packages[i];
  +				return pkg;
   			}
   		}
   		
  @@ -293,6 +335,13 @@
   		return PackagesModel.instance().createPackage(project, isTopLevel);
   	}
   	
  +	public IPackageReference createPackageReference (IPackage pkg) {
  +		PackageImpl pkgImpl = (PackageImpl) pkg;
  +		XbPackage xbPackage = new XbPackage((XbPackage)pkgImpl.getNodeDelegate());
  +		
  +		return new PackageReferenceImpl(pkg, xbPackage);
  +	}
  +	
   	public static IPackage createDetachedPackage (IProject project, boolean isTopLevel)
   	{
   		return PackagesModel.instance().createDetachedPackage(project, isTopLevel);
  
  
  



More information about the jboss-cvs-commits mailing list