[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers ...
Robert Stryker
rob.stryker at jboss.com
Mon Mar 19 18:49:34 EDT 2007
User: rawb
Date: 07/03/19 18:49:34
Modified: as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers
PackagesPublisher.java IJBossServerPublisher.java
NullPublisher.java
Added: as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers
PublisherEventLogger.java JstPublisher.java
Removed: as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers
JstPackagesPublisher.java
Log:
Integration with packages
Removal of path publisher for individual files
Changes to event log label providers
Revision Changes Path
1.13 +100 -151 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.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- PackagesPublisher.java 8 Mar 2007 22:31:51 -0000 1.12
+++ PackagesPublisher.java 19 Mar 2007 22:49:34 -0000 1.13
@@ -21,7 +21,8 @@
*/
package org.jboss.ide.eclipse.as.core.publishers;
-import org.eclipse.core.resources.IResource;
+import java.util.ArrayList;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -29,15 +30,16 @@
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.IModuleResourceDelta;
import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
+import org.jboss.ide.eclipse.as.core.ServerConverter;
import org.jboss.ide.eclipse.as.core.model.EventLogModel;
-import org.jboss.ide.eclipse.as.core.model.PackagesListener;
-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.module.PackageModuleFactory.PackagedModuleDelegate;
+import org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.PublishEvent;
+import org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.PublisherFileUtilListener;
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.core.util.ResourceUtil;
import org.jboss.ide.eclipse.packages.core.model.IPackage;
@@ -47,173 +49,120 @@
*/
public class PackagesPublisher implements IJBossServerPublisher {
- // 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";
-
protected IDeployableServer server;
- protected EventLogRoot eventRoot;
+ protected IModuleResourceDelta[] delta;
+ protected EventLogTreeItem eventRoot;
- public PackagesPublisher(IDeployableServer server) {
+ public PackagesPublisher(IDeployableServer server, EventLogTreeItem eventContext) {
this.server = server;
- eventRoot = EventLogModel.getModel(server.getServer()).getRoot();
+ eventRoot = eventContext;
+ }
+ public PackagesPublisher(IServer server, EventLogTreeItem eventContext) {
+ this( ServerConverter.getDeployableServer(server), eventContext);
}
+ public void setDelta(IModuleResourceDelta[] delta) {
+ this.delta = delta;
+ }
+
+
public int getPublishState() {
return IServer.PUBLISH_STATE_NONE;
}
public void publishModule(int kind, int deltaKind, int modulePublishState,
- IModule[] module, IProgressMonitor monitor) throws CoreException {
-
+ IModule module, IProgressMonitor monitor) throws CoreException {
+ try {
// if it's being removed
if( deltaKind == ServerBehaviourDelegate.REMOVED ) {
- removeModule(module, monitor);
+ removeModule(module, kind, deltaKind, monitor);
return;
}
if( deltaKind == ServerBehaviourDelegate.ADDED || deltaKind == ServerBehaviourDelegate.CHANGED) {
- boolean incremental = (kind == IServer.PUBLISH_INCREMENTAL);
- publishModule(incremental, module, monitor);
+ publishModule(module, kind, deltaKind, modulePublishState, monitor);
return;
}
-
- if( kind == IServer.PUBLISH_INCREMENTAL ) {
- boolean incremental = false;
- if( modulePublishState == IServer.PUBLISH_STATE_NONE ) incremental = false;
- if( modulePublishState == IServer.PUBLISH_STATE_INCREMENTAL ) incremental = true;
- publishModule(incremental, module, monitor);
- return;
- }
-
- if( kind == IServer.PUBLISH_FULL ) {
- publishModule(false, module, monitor);
- return;
+ }catch(Exception e) {
+ e.printStackTrace();
}
}
- protected void removeModule(IModule[] module, IProgressMonitor monitor) {
-
+ protected void removeModule(IModule module, int kind, int deltaKind, IProgressMonitor monitor) {
+ IPackage pack = getPackage(module);
// remove all of the deployed items
- PublishEvent event = new PublishEvent(eventRoot, REMOVE_TOP_EVENT, module[0]);
- EventLogModel.markChanged(eventRoot);
- for( int i = 0; i < module.length; i++ ) {
- PackagedModuleDelegate delegate = (PackagedModuleDelegate)module[i].loadAdapter(PackagedModuleDelegate.class, new NullProgressMonitor());
- IPackage pack = delegate.getPackage();
+ PublishEvent event = PublisherEventLogger.createSingleModuleTopEvent(eventRoot, module, kind, deltaKind);
IPath sourcePath = pack.getPackageFilePath();
IPath destPath = new Path(server.getDeployDirectory()).append(sourcePath.lastSegment());
- boolean success = FileUtil.safeDelete(destPath.toFile());
- addRemoveEvent(event, pack, destPath, success ? SUCCESS : FAILURE);
- }
+ // remove the entire file or folder
+ PublisherFileUtilListener listener = new PublisherFileUtilListener(event);
+ FileUtil.safeDelete(destPath.toFile(), listener);
}
- protected void publishModule(boolean incremental, IModule[] module, IProgressMonitor monitor) {
- PublishEvent event = new PublishEvent(eventRoot, PUBLISH_TOP_EVENT, module[0]);
- EventLogModel.markChanged(eventRoot);
- for( int i = 0; i < module.length; i++ ) {
- PackagedModuleDelegate delegate = (PackagedModuleDelegate)module[i].loadAdapter(PackagedModuleDelegate.class, new NullProgressMonitor());
- IPackage pack = delegate.getPackage();
+ protected void publishModule(IModule module, int kind, int deltaKind, int modulePublishState, IProgressMonitor monitor) {
+ PublishEvent event = PublisherEventLogger.createSingleModuleTopEvent(eventRoot, module, kind, deltaKind);
+ IPackage pack = getPackage(module);
IPath sourcePath = ResourceUtil.makeAbsolute(pack.getPackageFilePath(), pack.isDestinationInWorkspace());
- IPath destPathRoot = new Path(server.getDeployDirectory()).append(sourcePath.lastSegment());
+ IPath destPathRoot = new Path(server.getDeployDirectory());
+
+ // if destination is deploy directory... no need to re-copy!
+ if( destPathRoot.toOSString().equals(pack.getDestinationPath().toOSString())) {
+ // fire null publish event
+ return;
+ }
- if( incremental ) {
- IPath[] removed = PackagesListener.getInstance().getRemovedFiles(pack);
- IPath[] updated = PackagesListener.getInstance().getUpdatedFiles(pack);
+ PublisherFileUtilListener listener = new PublisherFileUtilListener(event);
- IPath suffix, destPath;
+ if( shouldPublishIncremental(module, kind, deltaKind, modulePublishState) ) {
+ IPath sourcePrefix = sourcePath.removeLastSegments(1);
+ IPath destPath;
+
+ ArrayList updated2 = new ArrayList();
+ ArrayList removed2 = new ArrayList();
+ fillFromDelta(updated2, removed2, delta);
+ IPath[] updated = (IPath[]) updated2.toArray(new IPath[updated2.size()]);
+ IPath[] removed = (IPath[]) removed2.toArray(new IPath[removed2.size()]);
+ // incrementally remove removed files
for( int j = 0; j < removed.length; j++ ) {
- if( sourcePath.isPrefixOf(updated[j])) {
- suffix = updated[j].removeFirstSegments(sourcePath.segmentCount());
- destPath = destPathRoot.append(suffix);
- FileUtil.completeDelete(destPath.toFile());
- }
+ destPath = destPathRoot.append(removed[j]);
+ FileUtil.completeDelete(destPath.toFile(), listener);
}
+ // incrementally update updated files
for( int j = 0; j < updated.length; j++ ) {
- if( sourcePath.isPrefixOf(updated[j])) {
- suffix = updated[j].removeFirstSegments(sourcePath.segmentCount());
- destPath = destPathRoot.append(suffix);
- FileUtil.fileSafeCopy(updated[j].toFile(), destPath.toFile());
- }
+ destPath = destPathRoot.append(updated[j]);
+ IPath srcp = sourcePrefix.append(updated[j]);
+ FileUtil.fileSafeCopy(srcp.toFile(), destPath.toFile(), listener);
}
+
} else {
- // full publish
- FileUtil.fileSafeCopy(sourcePath.toFile(), destPathRoot.toFile());
+ // full publish, copy whole folder or file
+ FileUtil.fileSafeCopy(sourcePath.toFile(), destPathRoot.append(sourcePath.lastSegment()).toFile(), listener);
}
}
+ protected boolean shouldPublishIncremental(IModule module, int kind, int deltaKind, int modulePublishState) {
+ if(modulePublishState == IServer.PUBLISH_STATE_FULL || kind == IServer.PUBLISH_FULL)
+ return false;
+ return true;
}
- 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;
+ protected void fillFromDelta(ArrayList updated2, ArrayList removed2, IModuleResourceDelta[] delta) {
+ for( int j = 0; j < delta.length; j++ ) {
+ switch(delta[j].getKind()) {
+ case IModuleResourceDelta.ADDED:
+ case IModuleResourceDelta.CHANGED:
+ updated2.add(delta[j].getModuleResource().getModuleRelativePath());
+ break;
+ case IModuleResourceDelta.REMOVED:
+ removed2.add(delta[j].getModuleResource().getModuleRelativePath());
+ 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 = "PackagesPublisherMoveEvent.MOVE_DESTINATION";
- public static final String MOVE_SOURCE = "PackagesPublisherMoveEvent.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());
- }
+ protected IPackage getPackage(IModule module) {
+ PackagedModuleDelegate delegate = (PackagedModuleDelegate)module.loadAdapter(PackagedModuleDelegate.class, new NullProgressMonitor());
+ return delegate == null ? null : delegate.getPackage();
}
}
1.4 +1 -26 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.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- IJBossServerPublisher.java 22 Dec 2006 23:24:42 -0000 1.3
+++ IJBossServerPublisher.java 19 Mar 2007 22:49:34 -0000 1.4
@@ -28,33 +28,8 @@
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)
+ 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 +1 -1 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/NullPublisher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NullPublisher.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/NullPublisher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- NullPublisher.java 30 Nov 2006 16:14:59 -0000 1.2
+++ NullPublisher.java 19 Mar 2007 22:49:34 -0000 1.3
@@ -37,7 +37,7 @@
}
public void publishModule(int kind, int deltaKind, int modulePublishState,
- IModule[] module, IProgressMonitor monitor) throws CoreException {
+ IModule module, IProgressMonitor monitor) throws CoreException {
// delta = [no_change, added, changed, removed] = [0,1,2,3]
// kind = [incremental, full, auto, clean] = [1,2,3,4]
//ASDebug.p("Publishing with kind,deltakind = " + kind + "," + deltaKind, this);
1.1 date: 2007/03/19 22:49:34; author: rawb; state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/PublisherEventLogger.java
Index: PublisherEventLogger.java
===================================================================
package org.jboss.ide.eclipse.as.core.publishers;
import java.io.File;
import org.eclipse.wst.server.core.IModule;
import org.jboss.ide.eclipse.as.core.model.EventLogModel;
import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
import org.jboss.ide.eclipse.as.core.util.FileUtil.IFileUtilListener;
public class PublisherEventLogger {
public static final String PUBLISH_MAJOR_TYPE = "org.jboss.ide.eclipse.as.core.publishers.Events.MajorType";
public static final String MODULE_NAME = "org.jboss.ide.eclipse.as.core.publishers.Events.Properties.ModuleName";
public static 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());
}
}
// type
public static final String MULTIPLE_MODULE_TOP_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.MULTIPLE_MODULE_TOP_EVENT";
// properties
public static final String MULTIPLE_MODULE_MODULE_COUNT = "org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.MULTIPLE_MODULE_MODULE_COUNT";
public static PublishEvent createMultipleModuleTopLevelEvent(EventLogTreeItem parent, int numMods) {
PublishEvent event = new PublishEvent(parent, MULTIPLE_MODULE_TOP_EVENT );
event.setProperty(MULTIPLE_MODULE_MODULE_COUNT, new Integer(numMods));
EventLogModel.markChanged(parent);
return event;
}
// type
public static final String SINGLE_MODULE_TOP_EVENT = "org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.SINGLE_MODULE_TOP_EVENT";
// properties
public static final String MODULE_KIND = "org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.MODULE_KIND";
public static final String DELTA_KIND = "org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.DELTA_KIND";
public static PublishEvent createSingleModuleTopEvent(EventLogTreeItem parent, IModule module, int kind, int deltaKind) {
PublishEvent event = new PublishEvent(parent, SINGLE_MODULE_TOP_EVENT);
event.setProperty(MODULE_KIND, new Integer(kind));
event.setProperty(DELTA_KIND, new Integer(deltaKind));
event.setProperty(MODULE_NAME, module.getName());
EventLogModel.markChanged(parent);
return event;
}
public static PublishEvent createRemoveResultsEvent() {
return null;
}
public static class PublisherFileUtilListener implements IFileUtilListener {
EventLogTreeItem log;
public PublisherFileUtilListener(EventLogTreeItem log) {
this.log = log;
}
public void fileCoppied(File source, File dest, boolean result, Exception e) {
new CoppiedEvent(log, source, dest, result, e);
EventLogModel.markChanged(log);
}
public void fileDeleted(File file, boolean result, Exception e) {
new DeletedEvent(log, file, result, e);
EventLogModel.markChanged(log);
}
public void folderDeleted(File file, boolean result, Exception e) {
new DeletedEvent(log, file, result, e);
EventLogModel.markChanged(log);
}
}
// event types
public static final String FILE_EVENT_MAJOR_TYPE = "org.jboss.ide.eclipse.as.core.publishers.Events.FILE_EVENT_MAJOR_TYPE";
public static final String FOLDER_DELETED_EVENT = "org.jboss.ide.eclipse.as.core.publishers.Events.FOLDER_DELETED_EVENT";
public static final String FILE_DELETED_EVENT = "org.jboss.ide.eclipse.as.core.publishers.Events.FILE_DELETED_EVENT";
public static final String FILE_COPPIED_EVENT = "org.jboss.ide.eclipse.as.core.publishers.Events.FILE_COPPIED_EVENT";
// properties
public static final String SUCCESS_PROPERTY = "org.jboss.ide.eclipse.as.core.publishers.Events.Properties.SUCCESS_PROPERTY";
public static final String SOURCE_PROPERTY = "org.jboss.ide.eclipse.as.core.publishers.Events.Properties.SOURCE_PROPERTY";
public static final String DEST_PROPERTY = "org.jboss.ide.eclipse.as.core.publishers.Events.Properties.DEST_PROPERTY";
public static final String EXCEPTION_MESSAGE = "org.jboss.ide.eclipse.as.core.publishers.Events.Properties.EXCEPTION_PROPERTY";
public static class DeletedEvent extends EventLogTreeItem {
public DeletedEvent(EventLogTreeItem parent, File file, boolean result, Exception e) {
super(parent, FILE_EVENT_MAJOR_TYPE, file.isDirectory() ? FOLDER_DELETED_EVENT : FILE_DELETED_EVENT);
setProperty(SUCCESS_PROPERTY, new Boolean(result));
setProperty(DEST_PROPERTY, file.getAbsolutePath());
if( e != null )
setProperty(EXCEPTION_MESSAGE, e.getMessage());
}
}
public static class CoppiedEvent extends EventLogTreeItem {
public CoppiedEvent(EventLogTreeItem parent, File source, File destination, boolean result, Exception e) {
super(parent, FILE_EVENT_MAJOR_TYPE, FILE_COPPIED_EVENT);
setProperty(SOURCE_PROPERTY, source.getAbsolutePath());
setProperty(DEST_PROPERTY, destination.getAbsolutePath());
setProperty(SUCCESS_PROPERTY, new Boolean(result));
if( e != null )
setProperty(EXCEPTION_MESSAGE, e.getMessage());
}
}
}
1.4 +69 -342 jbosside/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/publishers/JstPublisher.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: JstPublisher.java
===================================================================
RCS file: JstPublisher.java
diff -N JstPublisher.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ JstPublisher.java 19 Mar 2007 22:49:34 -0000 1.4
@@ -0,0 +1,115 @@
+/**
+ * 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.publishers;
+
+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.core.runtime.Status;
+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.JBossServerCorePlugin;
+import org.jboss.ide.eclipse.as.core.model.EventLogModel;
+import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
+import org.jboss.ide.eclipse.as.core.packages.ModulePackageTypeConverter;
+import org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.PublishEvent;
+import org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.PublisherFileUtilListener;
+import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.util.FileUtil;
+import org.jboss.ide.eclipse.packages.core.model.IPackage;
+import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
+import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
+
+/**
+ * This class provides a default implementation for
+ * packaging different types of flexible projects. It uses
+ * the built-in heirarchy of the projects to do so.
+ *
+ * @author rob.stryker at jboss.com
+ */
+public class JstPublisher extends PackagesPublisher {
+
+ public static final int BUILD_FAILED_CODE = 100;
+ public static final int PACKAGE_UNDETERMINED_CODE = 101;
+
+ public JstPublisher(IServer server, EventLogTreeItem context) {
+ super(server, context);
+ }
+
+ public void publishModule(int kind, int deltaKind, int modulePublishState,
+ IModule module, IProgressMonitor monitor) throws CoreException {
+ IStatus status;
+ if(ServerBehaviourDelegate.REMOVED == deltaKind){
+ status = unpublish(server, module, kind, deltaKind, modulePublishState, 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
+ status = publish(server, module, kind, deltaKind, modulePublishState, monitor);
+ } else if( ServerBehaviourDelegate.NO_CHANGE != deltaKind && kind == IServer.PUBLISH_INCREMENTAL ){
+ status = publish(server, module, kind, deltaKind, modulePublishState, monitor);
+ }
+ }
+
+ protected IStatus publish(IDeployableServer jbServer, IModule module, int kind,
+ int deltaKind, int modulePublishState, IProgressMonitor monitor) throws CoreException {
+ PublishEvent event = PublisherEventLogger.createSingleModuleTopEvent(eventRoot, module, kind, deltaKind);
+ EventLogModel.markChanged(eventRoot);
+ IPackage topLevel = createTopPackage(module, jbServer.getDeployDirectory(), monitor);
+ if( topLevel != null ) {
+ Throwable t = null;
+ try {
+ PackagesCore.buildPackage(topLevel, new NullProgressMonitor());
+ } catch( Exception e ) {
+ return new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, BUILD_FAILED_CODE, "", e);
+ }
+ } else {
+ return new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, PACKAGE_UNDETERMINED_CODE, "", null);
+ }
+ return new Status(IStatus.OK, JBossServerCorePlugin.PLUGIN_ID, IStatus.OK, "", null);
+ }
+
+ protected IStatus unpublish(IDeployableServer jbServer, IModule module,
+ int kind, int deltaKind, int modulePublishKind, IProgressMonitor monitor) throws CoreException {
+ PublishEvent event = PublisherEventLogger.createSingleModuleTopEvent(eventRoot, module, kind, deltaKind);
+ IPackage topLevel = createTopPackage(module, jbServer.getDeployDirectory(), monitor);
+ if( topLevel != null ) {
+ IPath path = topLevel.getPackageFilePath();
+ FileUtil.safeDelete(path.toFile(), new PublisherFileUtilListener(event));
+ } else {
+ return new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, PACKAGE_UNDETERMINED_CODE, "", null);
+ }
+ return new Status(IStatus.OK, JBossServerCorePlugin.PLUGIN_ID, IStatus.OK, "", 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.setDestinationPath(new Path(deployDir));
+ return topLevel;
+ }
+ return null;
+ }
+}
More information about the jboss-cvs-commits
mailing list