[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers ...
Robert Stryker
rawblem at gmail.com
Fri Dec 22 18:24:42 EST 2006
User: rawb
Date: 06/12/22 18:24:42
Modified: as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers
PackagesPublisher.java PathPublisher.java
IJBossServerPublisher.java
JstPackagesPublisher.java
Log:
New PackageTypes for marshall.
Added deploy-only server (cannot start or stop)
Other associated changes.
Revision Changes Path
1.4 +147 -29 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PackagesPublisher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PackagesPublisher.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PackagesPublisher.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- PackagesPublisher.java 11 Dec 2006 15:49:06 -0000 1.3
+++ PackagesPublisher.java 22 Dec 2006 23:24:42 -0000 1.4
@@ -28,13 +28,18 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
-import org.jboss.ide.eclipse.as.core.server.JBossServer;
+import org.jboss.ide.eclipse.as.core.model.EventLogModel;
+import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogRoot;
+import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
+import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
import org.jboss.ide.eclipse.as.core.util.FileUtil;
+import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
import org.jboss.ide.eclipse.packages.core.model.IPackage;
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
@@ -43,9 +48,31 @@
* @author rob.stryker at jboss.com
*/
public class PackagesPublisher implements IJBossServerPublisher {
- private JBossServer server;
- public PackagesPublisher(JBossServer jbServer) {
- this.server = jbServer;
+
+ // Event Constants
+ public static final String REMOVE_TOP_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_TOP_EVENT";
+ public static final String REMOVE_PACKAGE_SUCCESS = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_PACKAGE_SUCCESS";
+ public static final String REMOVE_PACKAGE_FAIL = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_PACKAGE_FAIL";
+ public static final String REMOVE_PACKAGE_SKIPPED = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.REMOVE_PACKAGE_SKIPPED";
+
+
+ public static final String PUBLISH_TOP_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PUBLISH_TOP_EVENT";
+ public static final String PROJECT_BUILD_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PROJECT_BUILD_EVENT";
+ public static final String MOVE_PACKAGE_SUCCESS = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.MOVE_PACKAGE_SUCCESS";
+ public static final String MOVE_PACKAGE_FAIL = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.MOVE_PACKAGE_FAIL";
+ public static final String MOVE_PACKAGE_SKIP = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.MOVE_PACKAGE_SKIP";
+
+// public static final String PACKAGE_NOT_PUBLISHED = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PACKAGE_NOT_PUBLISHED";
+// public static final String PACKAGE_NOT_REMOVED = "org.jboss.ide.eclipse.as.core.publishers.PackagesPublisher.PACKAGE_NOT_REMOVED";
+
+
+
+ private IDeployableServer server;
+ private EventLogRoot eventRoot;
+
+ public PackagesPublisher(IDeployableServer server) {
+ this.server = server;
+ eventRoot = EventLogModel.getModel(server.getServer()).getRoot();
}
public int getPublishState() {
return IServer.PUBLISH_STATE_NONE;
@@ -82,57 +109,148 @@
}
protected void removeModule(IModule[] module, IProgressMonitor monitor) {
+
// remove all of the deployed items
- System.out.println("removing module " + module[0].getName());
+ PublishEvent event = new PublishEvent(eventRoot, REMOVE_TOP_EVENT, module[0]);
+ EventLogModel.markChanged(eventRoot);
String projectName = module[0].getName();
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
if( project.exists() ) {
IPackage[] packages = PackagesCore.getProjectPackages(project, new NullProgressMonitor());
for( int i = 0; i < packages.length; i++ ) {
+
+ try {
+
if( packages[i].isDestinationInWorkspace()) {
IFile file = packages[i].getPackageFile();
IPath sourcePath = file.getLocation();
- IPath destPath = new Path(server.getDeployDirectory(true)).append(sourcePath.lastSegment());
- destPath.toFile().delete();
+ IPath destPath = new Path(server.getDeployDirectory()).append(sourcePath.lastSegment());
+ boolean success = destPath.toFile().delete();
+ addRemoveEvent(event, packages[i], destPath, success ? SUCCESS : FAILURE);
} else {
IPath path = packages[i].getPackageFilePath();
- Path deployDir = new Path(server.getDeployDirectory(true));
+ Path deployDir = new Path(server.getDeployDirectory());
if( path.toOSString().startsWith(deployDir.toOSString())) {
- try {
- path.toFile().delete();
- } catch( Exception e ) {
- e.printStackTrace();
+ boolean success = path.toFile().delete();
+ addRemoveEvent(event, packages[i], path, success ? SUCCESS : FAILURE);
+ } else {
+ addRemoveEvent(event, packages[i], path, SKIPPED, null);
}
}
+ } catch( Exception e ) {
+ IPath dest = packages[i].getPackageFile().getLocation();
+ addRemoveEvent(event, packages[i], dest, FAILURE, e);
}
}
}
}
+
+
protected void publishModule(boolean incremental, IModule[] module, IProgressMonitor monitor) {
- System.out.println("publishing module " + module[0].getName());
+ PublishEvent event = new PublishEvent(eventRoot, PUBLISH_TOP_EVENT, module[0]);
+ EventLogModel.markChanged(eventRoot);
int inc2 = incremental ? IncrementalProjectBuilder.INCREMENTAL_BUILD : IncrementalProjectBuilder.FULL_BUILD;
String projectName = module[0].getName();
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
try {
+ addBuildEvent(event, project, inc2);
PackagesCore.buildProject(project, inc2, monitor);
IPackage[] packages = PackagesCore.getProjectPackages(project, new NullProgressMonitor());
for( int i = 0; i < packages.length; i++ ) {
if( packages[i].isDestinationInWorkspace()) {
- try {
// destination is workspace. Move it.
IFile file = packages[i].getPackageFile();
IPath sourcePath = file.getLocation();
- IPath destPath = new Path(server.getDeployDirectory(true)).append(sourcePath.lastSegment());
- FileUtil.copyFile(sourcePath.toFile(), destPath.toFile());
- } catch( Exception e ) {
- e.printStackTrace();
- }
+ IPath destPath = new Path(server.getDeployDirectory()).append(sourcePath.lastSegment());
+ IStatus status = FileUtil.copyFile(sourcePath.toFile(), destPath.toFile());
+ addMoveEvent(event, packages[i], packages[i].isDestinationInWorkspace(), sourcePath, destPath, status.isOK() ? SUCCESS : FAILURE, status.getException());
+ } else {
+ IPath sourcePath = packages[i].getPackageFilePath();
+ addMoveEvent(event, packages[i], packages[i].isDestinationInWorkspace(), sourcePath, sourcePath, SKIPPED, null);
}
}
}catch( Exception ce ) {
+ ce.printStackTrace();
}
}
+
+ protected void addBuildEvent(PublishEvent parent, IProject project, int incremental ) {
+ EventLogModel.markChanged(parent);
+ }
+ protected void addMoveEvent(PublishEvent parent, IPackage pack, boolean inWorkspace,
+ IPath sourcePath, IPath destPath, int success, Throwable e) {
+ String specType = null;
+ switch( success ) {
+ case SUCCESS: specType = MOVE_PACKAGE_SUCCESS; break;
+ case FAILURE: specType = MOVE_PACKAGE_FAIL; break;
+ case SKIPPED: specType = MOVE_PACKAGE_SKIP; break;
+ }
+ new PackagesPublisherMoveEvent(parent, specType, pack, sourcePath, destPath, e );
+ EventLogModel.markChanged(parent);
+ }
+
+
+
+ protected void addRemoveEvent(PublishEvent parent, IPackage pack, IPath dest, int success ) {
+ addRemoveEvent(parent, pack, dest, success, null);
+ }
+ protected void addRemoveEvent(PublishEvent parent, IPackage pack, IPath dest, int success, Exception e ) {
+ String specType = null;
+ switch( success ) {
+ case SUCCESS: specType = REMOVE_PACKAGE_SUCCESS; break;
+ case FAILURE: specType = REMOVE_PACKAGE_FAIL; break;
+ case SKIPPED: specType = REMOVE_PACKAGE_SKIPPED; break;
+ }
+ PackagesPublisherRemoveEvent event =
+ new PackagesPublisherRemoveEvent(parent, specType, pack, dest, e);
+ EventLogModel.markChanged(parent);
+ }
+
+ public static class PackagesPublisherRemoveEvent extends EventLogTreeItem {
+ // property names
+ public static final String PACKAGE_NAME = "PackagesPublisherRemoveEvent.PACKAGE_NAME";
+ public static final String DESTINATION = "PackagesPublisherRemoveEvent.DESTINATION";
+ public static final String EXCEPTION_MESSAGE = "PackagesPublisherRemoveEvent.EXCEPTION_MESSAGE";
+
+
+ public PackagesPublisherRemoveEvent(SimpleTreeItem parent, String specificType,
+ IPackage pack, IPath dest, Exception e ) {
+ super(parent, PUBLISH_MAJOR_TYPE, specificType);
+ setProperty(PACKAGE_NAME, pack.getName());
+ setProperty(DESTINATION, dest.toOSString());
+ if( e != null )
+ setProperty(EXCEPTION_MESSAGE, e.getLocalizedMessage());
+ }
+ }
+ public static class PackagesPublisherMoveEvent extends EventLogTreeItem {
+ // property names
+ public static final String PACKAGE_NAME = "PackagesPublisherRemoveEvent.PACKAGE_NAME";
+ public static final String MOVE_DESTINATION = "PackagesPublisherRemoveEvent.MOVE_DESTINATION";
+ public static final String MOVE_SOURCE = "PackagesPublisherRemoveEvent.MOVE_SOURCE";
+ public static final String EXCEPTION_MESSAGE = "PackagesPublisherRemoveEvent.EXCEPTION_MESSAGE";
+
+
+ public PackagesPublisherMoveEvent(SimpleTreeItem parent, String specificType,
+ IPackage pack, IPath source, IPath dest, Throwable e ) {
+ super(parent, PUBLISH_MAJOR_TYPE, specificType);
+ setProperty(PACKAGE_NAME, pack.getName());
+ setProperty(MOVE_SOURCE, source.toOSString());
+ setProperty(MOVE_DESTINATION, dest.toOSString());
+ if( e != null )
+ setProperty(EXCEPTION_MESSAGE, e.getLocalizedMessage());
+ }
+ }
+ public static class PackagesPublisherBuildEvent extends EventLogTreeItem {
+ // property names
+ public static final String BUILD_TYPE = "PackagesPublisherRemoveEvent.BUILD_TYPE";
+
+ public PackagesPublisherBuildEvent(SimpleTreeItem parent, String specificType, int type) {
+ super(parent, PUBLISH_MAJOR_TYPE, specificType);
+ setProperty(BUILD_TYPE, new Integer(type));
+ }
+ }
+
}
1.3 +5 -3 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PathPublisher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PathPublisher.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PathPublisher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- PathPublisher.java 30 Nov 2006 16:14:59 -0000 1.2
+++ PathPublisher.java 22 Dec 2006 23:24:42 -0000 1.3
@@ -35,12 +35,14 @@
import org.jboss.ide.eclipse.as.core.module.JBossModuleDelegate;
import org.jboss.ide.eclipse.as.core.server.JBossServer;
import org.jboss.ide.eclipse.as.core.server.JBossServerBehavior;
+import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.server.stripped.DeployableServerBehavior;
import org.jboss.ide.eclipse.as.core.util.FileUtil;
public class PathPublisher implements IJBossServerPublisher {
- private JBossServer server;
- private JBossServerBehavior behavior;
+ private IDeployableServer server;
+ private DeployableServerBehavior behavior;
private int publishState;
public static final String TARGET_FILENAME = "_TARGET_FILENAME_";
@@ -48,7 +50,7 @@
public static final String DEST_FILENAME = "_DEST_FILENAME_";
- public PathPublisher(JBossServer server, JBossServerBehavior behavior) {
+ public PathPublisher(IDeployableServer server, DeployableServerBehavior behavior) {
this.server = server;
this.behavior = behavior;
publishState = IServer.PUBLISH_STATE_NONE;
1.3 +27 -0 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/IJBossServerPublisher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: IJBossServerPublisher.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/IJBossServerPublisher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- IJBossServerPublisher.java 30 Nov 2006 16:14:59 -0000 1.2
+++ IJBossServerPublisher.java 22 Dec 2006 23:24:42 -0000 1.3
@@ -24,10 +24,37 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.wst.server.core.IModule;
+import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
+import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
public interface IJBossServerPublisher {
+ // event constants
+ public static final String PUBLISH_MAJOR_TYPE = "org.jboss.ide.eclipse.as.core.publishers.MajorType";
+ public static final String MODULE_NAME = "org.jboss.ide.eclipse.as.core.publishers.ModuleName";
+ public static final int PUBLISH = 0;
+ public static final int REMOVE = 1;
+ public static final int SUCCESS = 0;
+ public static final int FAILURE = 1;
+ public static final int SKIPPED = 2;
+
+
+
+
public void publishModule(int kind, int deltaKind, int modulePublishState,
IModule[] module, IProgressMonitor monitor)
throws CoreException;
public int getPublishState();
+
+ public class PublishEvent extends EventLogTreeItem {
+ public PublishEvent(SimpleTreeItem parent, String specificType) {
+ super(parent, PUBLISH_MAJOR_TYPE, specificType);
+ }
+ public PublishEvent(SimpleTreeItem parent, String specificType, IModule module) {
+ super(parent, PUBLISH_MAJOR_TYPE, specificType);
+ setProperty(MODULE_NAME, module.getName());
+ }
+
+
+ }
+
}
1.3 +42 -253 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/JstPackagesPublisher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: JstPackagesPublisher.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/JstPackagesPublisher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- JstPackagesPublisher.java 13 Dec 2006 18:35:49 -0000 1.2
+++ JstPackagesPublisher.java 22 Dec 2006 23:24:42 -0000 1.3
@@ -21,9 +21,6 @@
*/
package org.jboss.ide.eclipse.as.core.publishers;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -31,28 +28,16 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jst.server.core.IEnterpriseApplication;
-import org.eclipse.jst.server.core.IWebModule;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.internal.DeletedModule;
import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
-import org.jboss.ide.eclipse.as.core.server.JBossServer;
-import org.jboss.ide.eclipse.packages.core.Trace;
+import org.jboss.ide.eclipse.as.core.packages.ModulePackageTypeConverter;
+import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
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.IPackageFolder;
-import org.jboss.ide.eclipse.packages.core.model.IPackageFolderWorkingCopy;
-import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
-import org.jboss.ide.eclipse.packages.core.model.IPackageWorkingCopy;
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
-import org.jboss.ide.eclipse.packages.core.model.internal.PackagesModel;
-import org.jboss.ide.eclipse.packages.core.model.types.JARPackageType;
+import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
/**
* This class provides a default implementation for packaging different types of projects
@@ -60,16 +45,10 @@
*/
public class JstPackagesPublisher implements IJBossServerPublisher {
- private static final String METAINF = "META-INF";
- private static final String WEBINF = "WEB-INF";
- private static final String LIB = "lib";
- private static final String WEBCONTENT = "WebContent";
- private static final String EARCONTENT = "EarContent";
-
private int state;
- private JBossServer server;
+ private IDeployableServer server;
- public JstPackagesPublisher(JBossServer server) {
+ public JstPackagesPublisher(IDeployableServer server) {
this.server = server;
state = IServer.PUBLISH_STATE_NONE;
}
@@ -82,244 +61,54 @@
IModule[] module, IProgressMonitor monitor) throws CoreException {
checkClosed(module);
if(ServerBehaviourDelegate.REMOVED == deltaKind){
- JstPackagesAssembler publisher = new JstPackagesAssembler();
- publisher.initialize(module,server);
- publisher.unpublish(monitor);
+ unpublish(server, module, monitor);
} else if( ServerBehaviourDelegate.NO_CHANGE != deltaKind || kind == IServer.PUBLISH_FULL || kind == IServer.PUBLISH_CLEAN ){
// if there's no change, do nothing. Otherwise, on change or add, re-publish
- JstPackagesAssembler publisher = new JstPackagesAssembler();
- publisher.initialize(module,server);
- publisher.publish(monitor);
- }
- }
- private void checkClosed(IModule[] module) throws CoreException {
- for(int i=0;i<module.length;i++) {
- if(module[i] instanceof DeletedModule) {
- IStatus status = new Status(IStatus.ERROR,JBossServerCorePlugin.PLUGIN_ID,0, "Failure", null);
- throw new CoreException(status);
- }
+ publish(server, module, monitor);
}
}
- public static class JstPackagesAssembler {
- public static final int WAR = 1;
- public static final int EAR = 2;
- public static final int SAR = 3;
- public static final int OTHER = 4;
-
-
- private IModule[] module;
- private JBossServer jbServer;
-
- private int assembleType;
-
- public void initialize(IModule[] module, JBossServer server) {
- this.module = module;
- this.jbServer = server;
- if( module.length == 1 ) {
- if(isModuleType(module[0], "jst.web")) {
- assembleType = WAR;
- } else if(isModuleType(module[0], "jst.ear")) {
- assembleType = EAR;
- } else {
- assembleType = OTHER;
- }
- }
- }
-
- private boolean isModuleType(IModule module, String moduleTypeId){
- if(module.getModuleType()!=null && moduleTypeId.equals(module.getModuleType().getId()))
- return true;
- return false;
- }
-
- public IPackage[] getPackages() {
- IProject proj = module[0].getProject();
- if( proj != null) {
- IPackage[] projPackages = PackagesCore.getProjectPackages(proj, new NullProgressMonitor());
- if( projPackages.length > 0 ) {
- return projPackages;
- }
- }
-
- return new IPackage[] { createTopPackage(new NullProgressMonitor())};
- }
-
- public IPackage createTopPackage(IProgressMonitor monitor) {
- IPackage topLevel = null;
- switch( assembleType ) {
- case WAR:
- topLevel = createWarPackages(module[0], monitor); break;
- case EAR:
- topLevel = createEarPackages(module[0], monitor); break;
- case OTHER:
- topLevel = createOtherPackages(module[0], monitor); break;
- default: break;
- }
- return topLevel;
- }
-
- public IStatus[] publish(IProgressMonitor monitor) throws CoreException {
- IPackage topLevel = createTopPackage(monitor);
+ protected IStatus[] publish(IDeployableServer jbServer, IModule[] module, IProgressMonitor monitor) throws CoreException {
+ IPackage topLevel = createTopPackage(module[0], jbServer.getDeployDirectory(), monitor);
if( topLevel != null ) {
PackagesCore.buildPackage(topLevel, new NullProgressMonitor());
- PackagesModel.instance().removePackage((IPackage)topLevel);
- }
- return null;
- }
-
- public static IPackage createGenericIPackage(IModule module, String deployDirectory, String packageName) {
- try {
-
- IProject project = module.getProject();
- Assert.isNotNull(project);
-
- 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(module, deployDirectory, packageName, sourcePathContainer);
- } catch( Exception e ) {
- e.printStackTrace();
}
return null;
}
+ protected IStatus[] unpublish(IDeployableServer jbServer, IModule[] module, IProgressMonitor monitor) throws CoreException {
+ IPackage topLevel = createTopPackage(module[0], jbServer.getDeployDirectory(), monitor);
+ if( topLevel.isDestinationInWorkspace() ) {
+ String deployDir = jbServer.getDeployDirectory();
- public static IPackage createGenericIPackage(IModule module, String deployDirectory, String packageName, IContainer sourceContainer) {
- IProject project = module.getProject();
- Assert.isNotNull(project);
- IPackage jar = PackagesCore.createPackage(project, true);
- IPackageWorkingCopy jarWC = jar.createPackageWorkingCopy();
-
- if( deployDirectory != null ) {
- jarWC.setDestinationFolder(new Path(deployDirectory));
- jarWC.setExploded(false);
- }
- jarWC.setName(packageName);
- jar = jarWC.savePackage();
-
- IPackageFileSet classes = PackagesCore.createPackageFileSet(project);
- IPackageFileSetWorkingCopy classesWC = classes.createFileSetWorkingCopy();
- classesWC.setIncludesPattern("**/*");
- classesWC.setSourceContainer(sourceContainer);
- classes = classesWC.saveFileSet();
- jar.addChild(classes);
- return jar;
- }
-
- public IPackage createWarPackages(IModule module, IProgressMonitor monitor) {
- try {
- IProject proj = module.getProject();
- IPackage topLevel = createGenericIPackage(module, jbServer.getDeployDirectory(), proj.getName() + ".war");
- IPackageFolder webinf = addFolder(proj, topLevel, WEBINF);
- IPackageFolder metainf = addFolder(proj, topLevel, METAINF);
- IPackageFolder lib = addFolder(proj, metainf, LIB);
- addFileset(proj, metainf, WEBCONTENT + Path.SEPARATOR + METAINF, null);
- addFileset(proj, webinf, WEBCONTENT + Path.SEPARATOR + WEBINF, null);
-
- IWebModule webModule = (IWebModule)module.loadAdapter(IWebModule.class, monitor);
- IModule[] childModules = webModule.getModules();
-
- for (int i = 0; i < childModules.length; i++) {
- IModule child = childModules[i];
- JstPackagesAssembler assembler = new JstPackagesAssembler();
- assembler.initialize(new IModule[] {child}, jbServer);
- IPackage[] childPackages = assembler.getPackages();
- if( childPackages.length > 0 ) {
- for( int j = 0; j < childPackages.length; j++ ) {
- lib.addChild(childPackages[j]);
- }
+ IPath path = topLevel.getPackageFile().getRawLocation();
+ IPath p = new Path(deployDir).append(path.lastSegment());
+ p.toFile().delete();
} else {
- lib.addChild(createGenericIPackage(child, null, child.getProject().getName() + ".jar"));
- }
- }
- return topLevel;
- } catch( Exception e ) {
- e.printStackTrace();
+ IPath path = topLevel.getPackageFilePath();
+ path.toFile().delete();
}
+
return null;
}
- public IPackage createEarPackages(IModule module, IProgressMonitor monitor) {
- IProject proj = module.getProject();
- IContainer sourceContainer = proj.getFolder(EARCONTENT);
-
- IPackage topLevel = createGenericIPackage(module, jbServer.getDeployDirectory(), proj.getName() + ".ear", sourceContainer);
- addFileset(proj, 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];
- JstPackagesAssembler assembler = new JstPackagesAssembler();
- assembler.initialize(new IModule[] {child}, jbServer);
- IPackage[] childPackages = assembler.getPackages();
- if( childPackages.length > 0 ) {
- for( int j = 0; j < childPackages.length; j++ ) {
- topLevel.addChild(childPackages[j]);
- }
- } else {
- topLevel.addChild(createGenericIPackage(child, null, child.getProject().getName() + ".jar"));
- }
- }
- PackagesCore.buildPackage(topLevel, new NullProgressMonitor());
- PackagesModel.instance().removePackage((IPackage)topLevel);
- return null;
+ protected void checkClosed(IModule[] module) throws CoreException {
+ for(int i=0;i<module.length;i++) {
+ if(module[i] instanceof DeletedModule) {
+ IStatus status = new Status(IStatus.ERROR,JBossServerCorePlugin.PLUGIN_ID,0, "Failure", null);
+ throw new CoreException(status);
}
- public IPackage createOtherPackages(IModule module, IProgressMonitor monitor) {
- return createGenericIPackage(module, null, module.getName() + ".jar");
}
-
- public IStatus[] unpublish(IProgressMonitor monitor) throws CoreException {
- String deployDir = jbServer.getDeployDirectory();
- String fileName = module[0].getProject().getName();
- String ext = ".jar";
- switch( assembleType ) {
- case WAR: ext = ".war"; break;
- case EAR: ext = ".ear"; break;
- case SAR: ext = ".sar"; break;
- case OTHER: ext = ".jar"; break;
- default: ext = ".jar"; break;
}
- IPath filePath = new Path(deployDir).append(fileName + ext);
- filePath.toFile().delete();
- return null;
+ protected IPackage createTopPackage(IModule module, String deployDir, IProgressMonitor monitor) {
+ IPackageType type = ModulePackageTypeConverter.getPackageTypeFor(module);
+ if( type != null ) {
+ IPackage topLevel = type.createDefaultConfiguration(module.getProject(), monitor);
+ topLevel.setDestinationFolder(new Path(deployDir));
+ //topLevel.setDestinationFolder(new Path("c:\\test"));
+ return topLevel;
}
-
-
- protected static IPackageFolder addFolder(IProject project, IPackageNode parent, String name) {
- IPackageFolder folder = PackagesCore.createPackageFolder(project);
- IPackageFolderWorkingCopy folderWC = folder.createFolderWorkingCopy();
- folderWC.setName(name);
- folder = folderWC.saveFolder();
- parent.addChild(folder);
- return folder;
- }
- protected static IPackageFileSet addFileset(IProject project, IPackageNode parent, String sourcePath, String includePattern) {
- IPackageFileSet fs = PackagesCore.createPackageFileSet(project);
- IPackageFileSetWorkingCopy fswc = fs.createFileSetWorkingCopy();
- Assert.isNotNull(project);
- IJavaProject javaProject = JavaCore.create(project);
- Assert.isNotNull(javaProject);
- IContainer sourceContainer = project.getFolder(new Path(sourcePath));
-
- fswc.setSourceContainer(sourceContainer);
- fswc.setIncludesPattern( includePattern == null ? "**/*" : includePattern );
- fs = fswc.saveFileSet();
- parent.addChild(fs);
- return fs;
+ return null;
}
-}
-
}
More information about the jboss-cvs-commits
mailing list