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

Marshall Culpepper mculpepper at jboss.com
Mon Nov 20 16:06:03 EST 2006


  User: mculpepper
  Date: 06/11/20 16:06:03

  Added:       core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/types   
                        JARPackageType.java AbstractPackageType.java
                        IPackageType.java
  Log:
  Added initial support for IPackageType for rob to start playing.. needs more testing
  
  Revision  Changes    Path
  1.1      date: 2006/11/20 21:06:03;  author: mculpepper;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/types/JARPackageType.java
  
  Index: JARPackageType.java
  ===================================================================
  package org.jboss.ide.eclipse.packages.core.model.types;
  
  import org.eclipse.core.resources.IContainer;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.ResourcesPlugin;
  import org.eclipse.core.runtime.Assert;
  import org.eclipse.core.runtime.IPath;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.jdt.core.IJavaProject;
  import org.eclipse.jdt.core.JavaCore;
  import org.eclipse.jdt.core.JavaModelException;
  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;
  import org.jboss.ide.eclipse.packages.core.model.IPackageFileSetWorkingCopy;
  import org.jboss.ide.eclipse.packages.core.model.IPackageWorkingCopy;
  import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  
  /**
   * The default JAR package type will simply jar-up all the classes in a project's output directory, and place it in the top-level of the project.
   * The name of the resulting JAR will be the project's name followed by a ".jar" extension.
   * @author Marshall
   */
  public class JARPackageType extends AbstractPackageType {
  
  	public static final String TYPE_ID = "org.jboss.ide.eclipse.packages.core.jar";
  
  	public IPackage createDefaultConfiguration(IProject project, IProgressMonitor monitor)
  	{
  		Assert.isNotNull(project);
  		
  		IJavaProject javaProject = JavaCore.create(project);
  		Assert.isNotNull(javaProject);
  		
  		if (monitor == null) monitor = new NullProgressMonitor();
  		
  		monitor.beginTask("Creating default JAR configuration for java project \"" + project.getName() + "\"", 2);
  		
  		IPath outputPath;
  		try {
  			outputPath = javaProject.getOutputLocation();
  		} catch (JavaModelException e) {
  			Trace.trace(JARPackageType.class, e);
  			return null;
  		}
  		
  		IContainer outputContainer = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(outputPath);
  		
  		IPackage jar = PackagesCore.createPackage(project, true);
  		IPackageWorkingCopy jarWC = jar.createPackageWorkingCopy();
  		
  		jarWC.setDestinationContainer(project);
  		jarWC.setExploded(false);
  		jarWC.setName(project.getName() + ".jar");
  		jarWC.setPackageType(this);
  		jar = jarWC.savePackage();
  		
  		IPackageFileSet classes = PackagesCore.createPackageFileSet(project);
  		IPackageFileSetWorkingCopy classesWC = classes.createFileSetWorkingCopy();
  		classesWC.setIncludesPattern("**/*");
  		classesWC.setSourceContainer(outputContainer);
  		classes = classesWC.saveFileSet();
  		jar.addChild(classes);
  		
  		monitor.worked(1);
  		monitor.done();
  		
  		return jar;
  	}
  }
  
  
  
  1.1      date: 2006/11/20 21:06:03;  author: mculpepper;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/types/AbstractPackageType.java
  
  Index: AbstractPackageType.java
  ===================================================================
  package org.jboss.ide.eclipse.packages.core.model.types;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.jboss.ide.eclipse.packages.core.model.IPackage;
  
  /**
   * All package types should extend this base class
   * @author Marshall
   */
  public abstract class AbstractPackageType implements IPackageType {
  
  	protected String id;
  	protected String label;
  	
  	public String getId() {
  		return id;
  	}
  
  	public String getLabel() {
  		return label;
  	}
  
  	public void setId(String id) {
  		this.id = id;
  	}
  
  	public void setLabel(String label) {
  		this.label = label;
  	}
  
  }
  
  
  
  1.1      date: 2006/11/20 21:06:03;  author: mculpepper;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/model/types/IPackageType.java
  
  Index: IPackageType.java
  ===================================================================
  package org.jboss.ide.eclipse.packages.core.model.types;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.jboss.ide.eclipse.packages.core.model.IPackage;
  
  /**
   * This interface represents a package type (i.e. JAR,WAR,SAR etc).
   * 
   * A package type's main focus right now is to provide a default "template" Package for a given Project, making it easier
   * for users and adopters to automatically adapt projects into a deployable package type.
   * 
   * @author Marshall
   */
  public interface IPackageType {
  
  	/**
  	 * @return The ID for this PackageType, i.e. "jar", "war" etc
  	 */
  	public String getId();
  	
  	/**
  	 * @return The label for this PackageType (usually shown in UI)
  	 */
  	public String getLabel();
  	
  	/**
  	 * This will create a "default" packaging configuration for this project using this package type.
  	 * 
  	 * If the passed-in project does not support this package type, a null IPackage should be returned.
  	 * 
  	 * @param project The project to create the packages configuration for
  	 * @return The top level package that was created
  	 */
  	public IPackage createDefaultConfiguration(IProject project, IProgressMonitor monitor);
  	
  }
  
  
  



More information about the jboss-cvs-commits mailing list