[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/packages ...

Robert Stryker rawblem at gmail.com
Fri Dec 22 18:24:42 EST 2006


  User: rawb    
  Date: 06/12/22 18:24:42

  Added:       as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/packages    
                        WarPackageType.java
                        ObscurelyNamedPackageTypeSuperclass.java
                        EarPackageType.java ModulePackageTypeConverter.java
  Log:
  New PackageTypes for marshall.
  Added deploy-only server (cannot start or stop)
  Other associated changes. 
  
  Revision  Changes    Path
  1.1      date: 2006/12/22 23:24:42;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/packages/WarPackageType.java
  
  Index: WarPackageType.java
  ===================================================================
  /**
   * JBoss, a Division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
  * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.as.core.packages;
  
  import org.eclipse.core.resources.IContainer;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.Assert;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.core.runtime.Path;
  import org.eclipse.jdt.core.IJavaProject;
  import org.eclipse.jdt.core.JavaCore;
  import org.eclipse.jst.server.core.IWebModule;
  import org.eclipse.wst.server.core.IModule;
  import org.eclipse.wst.server.core.IModuleArtifact;
  import org.eclipse.wst.server.core.internal.ServerPlugin;
  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.IPackageFolder;
  import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
  import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
  
  /**
   *
   * @author rob.stryker at jboss.com
   */
  public class WarPackageType extends ObscurelyNamedPackageTypeSuperclass {
  
  	public String getAssociatedModuleType() {
  		return "jst.web";
  	}
  
  	public IPackage createDefaultConfiguration(IProject project, IProgressMonitor monitor) {
  		IModule mod = getModule(project);
  		if( mod == null ) 
  			return createDefaultConfiguration2(project, monitor);
  		else
  			return createDefaultConfigFromModule(mod, monitor);
  	}
  	
  	protected IPackage createDefaultConfiguration2(IProject project, IProgressMonitor monitor) {
  		IPackage topLevel = createGenericIPackage(project, null, project.getName() + ".war");
  		topLevel.setDestinationContainer(project);
  		IPackageFolder webinf = addFolder(project, topLevel, WEBINF);
  		IPackageFolder metainf = addFolder(project, topLevel, METAINF);
  		IPackageFolder lib = addFolder(project, metainf, LIB);
  		addFileset(project, metainf, WEBCONTENT + Path.SEPARATOR + METAINF, null);
  		addFileset(project, webinf, WEBCONTENT + Path.SEPARATOR + WEBINF, null);
  		return topLevel;
  	}
  
  	protected IPackage createDefaultConfigFromModule(IModule mod, IProgressMonitor monitor) {
  		try {
  			IProject project = mod.getProject();
  
  			IPackage topLevel = createGenericIPackage(project, null, project.getName() + ".war");
  			topLevel.setDestinationContainer(project);
  			IPackageFolder webinf = addFolder(project, topLevel, WEBINF);
  			IPackageFolder metainf = addFolder(project, topLevel, METAINF);
  			IPackageFolder lib = addFolder(project, metainf, LIB);
  			addFileset(project, metainf, WEBCONTENT + Path.SEPARATOR + METAINF, null);
  			addFileset(project, webinf, WEBCONTENT + Path.SEPARATOR + WEBINF, null);
  
  			IWebModule webModule = (IWebModule)mod.loadAdapter(IWebModule.class, monitor);
  			IModule[] childModules = webModule.getModules();
  			
  			for (int i = 0; i < childModules.length; i++) {
  				IModule child = childModules[i];
  				// package each child and add
  				lib.addChild(createGenericIPackage(child.getProject(), null, child.getProject().getName() + ".jar"));
  			}
  			return topLevel;
  		} catch( Exception e ) {
  			e.printStackTrace();
  		}
  		return null;
  	}
  }
  
  
  1.1      date: 2006/12/22 23:24:42;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/packages/ObscurelyNamedPackageTypeSuperclass.java
  
  Index: ObscurelyNamedPackageTypeSuperclass.java
  ===================================================================
  /**
   * JBoss, a Division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
  * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.as.core.packages;
  
  import org.eclipse.core.resources.IContainer;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.Assert;
  import org.eclipse.core.runtime.IPath;
  import org.eclipse.core.runtime.Path;
  import org.eclipse.jdt.core.IJavaProject;
  import org.eclipse.jdt.core.JavaCore;
  import org.eclipse.jdt.core.JavaModelException;
  import org.eclipse.wst.server.core.IModule;
  import org.eclipse.wst.server.core.IModuleArtifact;
  import org.eclipse.wst.server.core.internal.ServerPlugin;
  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.IPackageFolder;
  import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
  import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  import org.jboss.ide.eclipse.packages.core.model.types.AbstractPackageType;
  import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
  
  /**
   *
   * @author rob.stryker at jboss.com
   */
  public abstract class ObscurelyNamedPackageTypeSuperclass extends AbstractPackageType {
  	protected static final String METAINF = "META-INF";
  	protected static final String WEBINF = "WEB-INF";
  	protected static final String LIB = "lib";
  	protected static final String WEBCONTENT = "WebContent";
  	protected static final String EARCONTENT = "EarContent";
  
  
  	protected boolean isModuleType(IModule module, String moduleTypeId){	
  		if(module.getModuleType()!=null && moduleTypeId.equals(module.getModuleType().getId()))
  			return true;
  		return false;
  	}
  
  	protected IModule getModule(IProject project) {
  		IModuleArtifact moduleArtifact = ServerPlugin.loadModuleArtifact(project);
  		return moduleArtifact == null ? null : moduleArtifact.getModule();
  	}
  	
  	// Find the source folder, then create the IPackage appropriately
  	public static IPackage createGenericIPackage(IProject project, String deployDirectory, String packageName) {
  		try {
  			IJavaProject javaProject = JavaCore.create(project);
  			Assert.isNotNull(javaProject);
  			
  			IPath sourcePath;
  			try {
  				sourcePath = javaProject.getOutputLocation();
  			} catch (JavaModelException e) {
  				e.printStackTrace();
  				return null;
  			}
  			sourcePath = sourcePath.removeFirstSegments(1);
  			IContainer sourcePathContainer = project.getFolder(sourcePath);
  			return createGenericIPackage(project, deployDirectory, packageName, sourcePathContainer);
  		} catch( Exception e ) {
  			e.printStackTrace();
  		}
  		return null;
  	} 
  	
  	// Create a detached package with some generic settings
  	public static IPackage createGenericIPackage(IProject project, String deployDirectory, String packageName, IContainer sourceContainer) {
  		IPackage jar = PackagesCore.createDetachedPackage(project, true);
  			
  		if( deployDirectory != null ) {
  			jar.setDestinationFolder(new Path(deployDirectory));
  			jar.setExploded(false);
  		}
  		jar.setName(packageName);
  			
  		IPackageFileSet classes = PackagesCore.createDetachedPackageFileSet(project);
  		classes.setIncludesPattern("**/*");
  		classes.setSourceContainer(sourceContainer);
  		jar.addChild(classes);
  		return jar;
  	}
  
  	
  	protected static IPackageFolder addFolder(IProject project, IPackageNode parent, String name) {
  		IPackageFolder folder = PackagesCore.createPackageFolder(project);
  		folder.setName(name);
  		parent.addChild(folder);
  		return folder;
  	}
  	protected static IPackageFileSet addFileset(IProject project, IPackageNode parent, String sourcePath, String includePattern) {
  		IPackageFileSet fs = PackagesCore.createPackageFileSet(project);
  		Assert.isNotNull(project);
  		IJavaProject javaProject = JavaCore.create(project);
  		Assert.isNotNull(javaProject);
  		IContainer sourceContainer = project.getFolder(new Path(sourcePath));
  
  		fs.setSourceContainer(sourceContainer);
  		fs.setIncludesPattern(  includePattern == null ?  "**/*" : includePattern );
  		parent.addChild(fs);
  		return fs;
  	}
  	
  	public int getSupportFor(IProject project) {
  		String modType = getAssociatedModuleType();
  		IModule module = getModule(project);
  
  		if( modType == null )  // we require no module type
  			return IPackageType.SUPPORT_FULL;
  			
  		if( module == null ) // project is not a module
  			return IPackageType.SUPPORT_FULL;
  
  		// module and modType match
  		if( modType.equals(module.getModuleType().getId())) 
  			return IPackageType.SUPPORT_FULL;
  
  		// it's some other module type. Not Best Match
  		return IPackageType.SUPPORT_CONDITIONAL; 
  	}
  	public abstract String getAssociatedModuleType();
  	
  }
  
  
  
  1.1      date: 2006/12/22 23:24:42;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/packages/EarPackageType.java
  
  Index: EarPackageType.java
  ===================================================================
  /**
   * JBoss, a Division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
  * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.as.core.packages;
  
  import org.eclipse.core.resources.IContainer;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.jst.server.core.IEnterpriseApplication;
  import org.eclipse.wst.server.core.IModule;
  import org.jboss.ide.eclipse.packages.core.model.IPackage;
  import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
  
  /**
   *
   * @author rob.stryker at jboss.com
   */
  public class EarPackageType extends ObscurelyNamedPackageTypeSuperclass {
  	public String getAssociatedModuleType() {
  		return "jst.ear";
  	}
  
  	public IPackage createDefaultConfiguration(IProject project, IProgressMonitor monitor) {
  		IModule mod = getModule(project);
  		if( mod != null ) 
  			return createDefaultConfigFromModule(mod, monitor);
  		else
  			return createDefaultConfiguration2(project, monitor);
  	}
  	
  	public IPackage createDefaultConfiguration2(IProject project,
  			IProgressMonitor monitor) {
  		return null;
  	}
  
  	public IPackage createDefaultConfigFromModule(IModule module,
  			IProgressMonitor monitor) {
  		IProject project = module.getProject();
  		IContainer sourceContainer = project.getFolder(EARCONTENT);
  
  		IPackage topLevel = createGenericIPackage(project, null, project.getName() + ".ear", sourceContainer);
  		addFileset(project, topLevel, EARCONTENT, "**/*.*");
  		
  		// now add children
  		IEnterpriseApplication earModule = (IEnterpriseApplication)module.loadAdapter(IEnterpriseApplication.class, monitor);
  		IModule[] childModules = earModule.getModules();
  		for( int i = 0; i < childModules.length; i++ ) {
  			IModule child = childModules[i];
  			IPackageType type = ModulePackageTypeConverter.getPackageTypeFor(child);
  			IPackage childPack;
  			if( type == null ) {
  				childPack = createGenericIPackage(child.getProject(), null, child.getProject().getName() + ".jar");
  			} else {
  				childPack = type.createDefaultConfiguration(child.getProject(), new NullProgressMonitor());
  			}
  			topLevel.addChild(childPack);
  		}
  
  		return topLevel;
  	}
  }
  
  
  
  1.1      date: 2006/12/22 23:24:42;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/packages/ModulePackageTypeConverter.java
  
  Index: ModulePackageTypeConverter.java
  ===================================================================
  /**
   * JBoss, a Division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
  * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.as.core.packages;
  
  import org.eclipse.wst.server.core.IModule;
  import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
  
  /**
   *
   * @author rob.stryker at jboss.com
   */
  public class ModulePackageTypeConverter {
  	public static final String WAR_PACKAGE_TYPE = "org.jboss.ide.eclipse.as.core.packages.warPackage";
  	public static final String EAR_PACKAGE_TYPE = "org.jboss.ide.eclipse.as.core.packages.earPackage";
  	public static IPackageType getPackageTypeFor(IModule module) {
  		String modType = module.getModuleType().getId();
  		if("jst.web".equals(modType)) {
  			return PackagesCore.getPackageType(WAR_PACKAGE_TYPE);
  		} else if("jst.ear".equals(modType)) {
  			return PackagesCore.getPackageType(EAR_PACKAGE_TYPE);
  		}
  
  		return null;
  	}
  }
  
  
  



More information about the jboss-cvs-commits mailing list