Author: rob.stryker(a)jboss.com
Date: 2009-10-21 18:48:20 -0400 (Wed, 21 Oct 2009)
New Revision: 18211
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHSingleFilePublisher.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublisher.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/DeployAction.java
Log:
JBIDE-5048 - step 3, making single file publisher also work
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml 2009-10-21 19:44:06 UTC (rev
18210)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/plugin.xml 2009-10-21 22:48:20 UTC (rev
18211)
@@ -73,6 +73,11 @@
priority="3"
zipDelegate="false">
</publisher>
+ <publisher
+ class="org.jboss.ide.eclipse.as.ssh.server.SSHSingleFilePublisher"
+ priority="3"
+ zipDelegate="false">
+ </publisher>
</extension>
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublisher.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublisher.java 2009-10-21
19:44:06 UTC (rev 18210)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublisher.java 2009-10-21
22:48:20 UTC (rev 18211)
@@ -209,7 +209,7 @@
return PublishUtil.getDeployPath(moduleTree,
getRemoteDeployFolder(server.getServer()));
}
- protected static String getRemoteDeployFolder(IServer server) {
+ public static String getRemoteDeployFolder(IServer server) {
return ((Server)server).getAttribute(ISSHDeploymentConstants.DEPLOY_DIRECTORY,
(String)null);
}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHSingleFilePublisher.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHSingleFilePublisher.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHSingleFilePublisher.java 2009-10-21
22:48:20 UTC (rev 18211)
@@ -0,0 +1,109 @@
+package org.jboss.ide.eclipse.as.ssh.server;
+
+import java.io.File;
+
+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.osgi.util.NLS;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.model.IModuleResourceDelta;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
+import org.jboss.ide.eclipse.as.core.Messages;
+import org.jboss.ide.eclipse.as.core.extensions.events.IEventCodes;
+import org.jboss.ide.eclipse.as.core.modules.SingleDeployableFactory;
+import
org.jboss.ide.eclipse.as.core.modules.SingleDeployableFactory.SingleDeployableModuleDelegate;
+import org.jboss.ide.eclipse.as.core.publishers.PublishUtil;
+import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerPublishMethod;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerPublisher;
+import org.jboss.ide.eclipse.as.core.util.FileUtil;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+import org.jboss.ide.eclipse.as.ssh.server.SSHServerBehaviourDelegate.SSHPublishMethod;
+
+public class SSHSingleFilePublisher implements IJBossServerPublisher {
+
+ public SSHSingleFilePublisher() {
+ }
+
+ public boolean accepts(String method, IServer server, IModule[] module) {
+ if( !method.equals(SSHPublishMethod.SSH_PUBLISH_METHOD))
+ return false;
+ if( module == null )
+ return true;
+ IDeployableServer ds = ServerConverter.getDeployableServer(server);
+ boolean shouldAccept = ds != null
+ && module.length == 1
+ &&
module[0].getModuleType().getId().equals(SingleDeployableFactory.MODULE_TYPE);
+ return shouldAccept;
+ }
+
+ public int getPublishState() {
+ return IServer.PUBLISH_STATE_NONE;
+ }
+
+ private IDeployableServer server;
+ private SSHPublishMethod publishMethod;
+ private int publishState = IServer.PUBLISH_STATE_NONE;
+ public IStatus publishModule(IJBossServerPublishMethod method,
+ IServer server, IModule[] module, int publishType,
+ IModuleResourceDelta[] delta, IProgressMonitor monitor)
+ throws CoreException {
+ this.server = ServerConverter.getDeployableServer(server);
+ this.publishMethod = (SSHPublishMethod)method;
+ IModule module2 = module[0];
+
+ IStatus status = null;
+ if(publishType == REMOVE_PUBLISH){
+ status = unpublish(this.server, module2, monitor);
+ } else if( publishType == FULL_PUBLISH || publishType == INCREMENTAL_PUBLISH){
+ // if there's no change, do nothing. Otherwise, on change or add,
re-publish
+ status = publish(this.server, module2, monitor);
+ }
+ return status;
+ }
+
+ protected IStatus publish(IDeployableServer server, IModule module, IProgressMonitor
monitor) {
+ SingleDeployableModuleDelegate delegate =
(SingleDeployableModuleDelegate)module.loadAdapter(SingleDeployableModuleDelegate.class,
new NullProgressMonitor());
+ if( delegate != null ) {
+ IPath sourcePath = delegate.getGlobalSourcePath();
+ String destFolder = SSHPublisher.getRemoteDeployFolder(server.getServer());
+ IPath destFile = new Path(destFolder).append(sourcePath.lastSegment());
+ try {
+ SSHPublisher.mkdirAndCopy(publishMethod.getSession(), sourcePath.toOSString(),
destFile.toString());
+ } catch( CoreException ce ) {
+ return ce.getStatus();
+ }
+ } else {
+ // error can't do nuffin
+ publishState = IServer.PUBLISH_STATE_UNKNOWN;
+ }
+ return Status.OK_STATUS;
+ }
+
+ protected IStatus unpublish(IDeployableServer server, IModule module, IProgressMonitor
monitor) throws CoreException {
+ SingleDeployableModuleDelegate delegate =
(SingleDeployableModuleDelegate)module.loadAdapter(SingleDeployableModuleDelegate.class,
new NullProgressMonitor());
+ if( delegate != null ) {
+ IPath sourcePath = delegate.getGlobalSourcePath();
+ String destFolder = SSHPublisher.getRemoteDeployFolder(server.getServer());
+ IPath destFile = new Path(destFolder).append(sourcePath.lastSegment());
+ SSHZippedJSTPublisher.launchCommand(publishMethod.getSession(), "rm -rf " +
destFile.toString());
+ } else {
+ // deleted module. o noes. Ignore it.
+ publishState = IServer.PUBLISH_STATE_UNKNOWN;
+ Status status = new Status(IStatus.WARNING, JBossServerCorePlugin.PLUGIN_ID,
IEventCodes.SINGLE_FILE_UNPUBLISH_MNF,
+ NLS.bind(Messages.DeleteModuleFail, module.getName()), null);
+ return status;
+ }
+ Status status = new Status(IStatus.OK, JBossServerCorePlugin.PLUGIN_ID,
IEventCodes.SINGLE_FILE_UNPUBLISH_SUCCESS,
+ NLS.bind(Messages.ModuleDeleted, module.getName()), null);
+ return status;
+ }
+
+
+}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/DeployAction.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/DeployAction.java 2009-10-21
19:44:06 UTC (rev 18210)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/DeployAction.java 2009-10-21
22:48:20 UTC (rev 18211)
@@ -55,6 +55,7 @@
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.internal.PublishServerJob;
import org.eclipse.wst.server.ui.internal.ImageResource;
import org.jboss.ide.eclipse.as.core.modules.SingleDeployableFactory;
import
org.jboss.ide.eclipse.as.core.modules.SingleDeployableFactory.UndeployFromServerJob;
@@ -186,8 +187,8 @@
try {
IServerWorkingCopy copy = server.createWorkingCopy();
copy.modifyModules(modules, new IModule[0], new NullProgressMonitor());
- IServer saved = copy.save(false, new NullProgressMonitor());
- saved.publish(IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor());
+ IServer saved = copy.save(false, new NullProgressMonitor());
+ new PublishServerJob(saved).schedule();
} catch( CoreException ce ) {
errorStatus = new Status(IStatus.ERROR, JBossServerUIPlugin.PLUGIN_ID,
Messages.ActionDelegatePublishFailed, ce);
errorTitle = Messages.ActionDelegateCannotPublish;