[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