Author: rob.stryker(a)jboss.com
Date: 2009-10-19 23:57:27 -0400 (Mon, 19 Oct 2009)
New Revision: 18175
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublishUtil.java
Removed:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/TestClass.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/ISSHDeploymentConstants.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerBehaviourDelegate.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHZippedJSTPublisher.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/editor/SSHDeploymentModuleTab.java
Log:
JBIDE-5048 - step 1 removing hard-coded details :(
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -19,6 +19,7 @@
public static String UserLabel;
public static String PassLabel;
public static String DeployRootFolder;
+ public static String HostsLabel;
public static String EditorZipDeployments;
public static String EditorSetDeployCommandLabel;
public static String SSHDeploymentSectionTitle;
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/Messages.properties 2009-10-20
03:57:27 UTC (rev 18175)
@@ -1,6 +1,7 @@
browse=Browse...
UserLabel=Username
PassLabel=Password
+HostsLabel=SSH Hosts File
DeployRootFolder=Deployment Folder
EditorZipDeployments=Deploy projects as compressed archives
EditorSetUserCommandLabel=Set Username
Deleted:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/TestClass.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/TestClass.java 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/TestClass.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -1,164 +0,0 @@
-package org.jboss.ide.eclipse.as.ssh;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import com.jcraft.jsch.Channel;
-import com.jcraft.jsch.ChannelExec;
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.Session;
-import com.jcraft.jsch.UserInfo;
-
-public class TestClass {
- public static void main(String[] arg) {
- FileInputStream fis = null;
- try {
-
-
- String lfile =
"/home/rob/apps/eclipse/workspaces/runtime/run12/.metadata/.plugins/org.jboss.ide.eclipse.as.core/SCP_Remote_Server_at_localhost/deploy/TEST10.jar";
- String rfile = "/home/rob/scptest999.jar";
- String host = "oxbeef.net";
- // username and password will be given via UserInfo interface.
- ServerUserInfo ui = new ServerUserInfo();
-
- JSch jsch = new JSch();
- Session session = jsch.getSession(ui.getUser(), host, 22);
- jsch.setKnownHosts(ui.getHostsFile());
- session.setUserInfo(ui);
- session.connect();
-
- // exec 'scp -t rfile' remotely
- String command = "scp -p -t " + rfile;
- Channel channel = session.openChannel("exec");
- ((ChannelExec) channel).setCommand(command);
-
- // get I/O streams for remote scp
- OutputStream out = channel.getOutputStream();
- InputStream in = channel.getInputStream();
-
- channel.connect();
-
- if (checkAck(in) != 0) {
- System.exit(0);
- }
-
- // send "C0644 filesize filename", where filename should not include
- // '/'
- long filesize = (new File(lfile)).length();
- command = "C0644 " + filesize + " ";
- if (lfile.lastIndexOf('/') > 0) {
- command += lfile.substring(lfile.lastIndexOf('/') + 1);
- } else {
- command += lfile;
- }
- command += "\n";
- System.out.println(command);
- out.write(command.getBytes());
- out.flush();
- if (checkAck(in) != 0) {
- System.exit(0);
- }
-
- // send a content of lfile
- fis = new FileInputStream(lfile);
- byte[] buf = new byte[1024];
- while (true) {
- int len = fis.read(buf, 0, buf.length);
- if (len <= 0)
- break;
- out.write(buf, 0, len); // out.flush();
- }
- fis.close();
- fis = null;
- // send '\0'
- buf[0] = 0;
- out.write(buf, 0, 1);
- out.flush();
- if (checkAck(in) != 0) {
- System.exit(0);
- }
- out.close();
-
- channel.disconnect();
- session.disconnect();
-
- System.exit(0);
- } catch (Exception e) {
- System.out.println(e);
- try {
- if (fis != null)
- fis.close();
- } catch (Exception ee) {
- }
- }
- }
-
- static int checkAck(InputStream in) throws IOException {
- int b = in.read();
- // b may be 0 for success,
- // 1 for error,
- // 2 for fatal error,
- // -1
- if (b == 0)
- return b;
- if (b == -1)
- return b;
-
- if (b == 1 || b == 2) {
- StringBuffer sb = new StringBuffer();
- int c;
- do {
- c = in.read();
- sb.append((char) c);
- } while (c != '\n');
- if (b == 1) { // error
- System.out.print(sb.toString());
- }
- if (b == 2) { // fatal error
- System.out.print(sb.toString());
- }
- }
- return b;
- }
-
- public static class ServerUserInfo implements UserInfo {
- private String user = "rob";
- private String password = "p3nh2ogo";
- private String hostsFile = "/home/rob/.ssh/known_hosts";
- public String getPassword() {
- return password;
- }
-
- public String getUser() {
- return user;
- }
-
- public String getHostsFile() {
- return hostsFile;
- }
-
- public String getPassphrase() {
- return null;
- }
-
- public boolean promptPassphrase(String message) {
- return true;
- }
-
- public boolean promptPassword(String message) {
- return true;
- }
-
- public void showMessage(String message) {
- // TODO eh?
- }
-
- public boolean promptYesNo(String message) {
- // TODO Auto-generated method stub
- return false;
- }
- }
-}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/ISSHDeploymentConstants.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/ISSHDeploymentConstants.java 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/ISSHDeploymentConstants.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -1,6 +1,7 @@
package org.jboss.ide.eclipse.as.ssh.server;
public interface ISSHDeploymentConstants {
+ public static final String HOSTS_FILE =
"org.jboss.ide.eclipse.as.ssh.server.hostsFile"; //$NON-NLS-1$
public static final String DEPLOY_DIRECTORY =
"org.jboss.ide.eclipse.as.ssh.server.deployDirectory"; //$NON-NLS-1$
public static final String USERNAME =
"org.jboss.ide.eclipse.as.ssh.server.username"; //$NON-NLS-1$
public static final String PASSWORD =
"org.jboss.ide.eclipse.as.ssh.server.password"; //$NON-NLS-1$
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublishUtil.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublishUtil.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHPublishUtil.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -0,0 +1,25 @@
+package org.jboss.ide.eclipse.as.ssh.server;
+
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.internal.Server;
+
+public class SSHPublishUtil {
+ public static boolean getZipsSSHDeployments(IServer server) {
+ return ((Server)server).getAttribute(ISSHDeploymentConstants.ZIP_DEPLOYMENTS_PREF,
false);
+ }
+ public static String getDeployDir(IServer server) {
+ return ((Server)server).getAttribute(ISSHDeploymentConstants.DEPLOY_DIRECTORY,
"/home");
+ }
+
+ public static String getUser(IServer server) {
+ return ((Server)server).getAttribute(ISSHDeploymentConstants.USERNAME,
"username");
+ }
+
+ public static String getPass(IServer server) {
+ return ((Server)server).getAttribute(ISSHDeploymentConstants.PASSWORD,
"password");
+ }
+
+ public static String getHostsFile(IServer server) {
+ return ((Server)server).getAttribute(ISSHDeploymentConstants.HOSTS_FILE, (String)null);
+ }
+}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerBehaviourDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerBehaviourDelegate.java 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHServerBehaviourDelegate.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -27,7 +27,7 @@
return new SSHPublishMethod(); // TODO FIX THIS in superclass
}
- public static class SSHPublishMethod extends LocalPublishMethod {
+ public class SSHPublishMethod extends LocalPublishMethod {
public static final String SSH_PUBLISH_METHOD = "ssh"; //$NON-NLS-1$
@Override
@@ -45,7 +45,7 @@
IProgressMonitor monitor) throws CoreException {
try {
- ServerUserInfo info = new ServerUserInfo();
+ ServerUserInfo info = new ServerUserInfo(getServer());
JSch jsch = new JSch();
session = jsch.getSession(info.getUser(), behaviour.getServer().getHost(), 22);
jsch.setKnownHosts(info.getHostsFile());
@@ -69,9 +69,14 @@
public static class ServerUserInfo implements UserInfo {
- private String user = "rob";
- private String password = "p3nh2ogo";
- private String hostsFile = "/home/rob/.ssh/known_hosts";
+ private String user;
+ private String password;
+ private String hostsFile;
+ public ServerUserInfo(IServer server) {
+ user = SSHPublishUtil.getUser(server);
+ password = SSHPublishUtil.getPass(server);
+ hostsFile = SSHPublishUtil.getHostsFile(server);
+ }
public String getPassword() {
return password;
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHZippedJSTPublisher.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHZippedJSTPublisher.java 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/server/SSHZippedJSTPublisher.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -45,7 +45,7 @@
IDeployableServer ds = ServerConverter.getDeployableServer(server);
boolean shouldAccept = ds != null
&& ModuleCoreNature.isFlexibleProject(module[0].getProject())
- && true; // TODO ds.zipsWTPDeployments();
+ && SSHPublishUtil.getZipsSSHDeployments(server);
return shouldAccept;
}
@@ -73,7 +73,6 @@
if( publishType == IJBossServerPublisher.REMOVE_PUBLISH) {
System.out.println("remove remote");
} else {
- // TODO FIX THIS
String deployFolder = getRemoteDeployFolder(server);
String deployFile = new
Path(deployFolder).append(outputFilepath.lastSegment()).toString();
launchCopyCommand(method2.getSession(),
@@ -112,7 +111,6 @@
command += localFile;
}
command += "\n";
- System.out.println(command);
out.write(command.getBytes());
out.flush();
if (checkAck(in) != 0) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/editor/SSHDeploymentModuleTab.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/editor/SSHDeploymentModuleTab.java 2009-10-20
02:44:36 UTC (rev 18174)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ssh/src/org/jboss/ide/eclipse/as/ssh/ui/editor/SSHDeploymentModuleTab.java 2009-10-20
03:57:27 UTC (rev 18175)
@@ -11,10 +11,14 @@
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
@@ -28,6 +32,7 @@
import
org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader.DeploymentPreferences;
import org.jboss.ide.eclipse.as.ssh.Messages;
import org.jboss.ide.eclipse.as.ssh.server.ISSHDeploymentConstants;
+import org.jboss.ide.eclipse.as.ssh.server.SSHPublishUtil;
import org.jboss.ide.eclipse.as.ssh.server.SSHServerBehaviourDelegate.SSHPublishMethod;
import org.jboss.ide.eclipse.as.ui.editor.IDeploymentEditorTab;
import org.jboss.ide.eclipse.as.ui.editor.ModuleDeploymentPage;
@@ -68,11 +73,11 @@
return random;
}
- private Text userText, passText, deployText;
- private ModifyListener userListener, passListener, deployListener;
+ private Text userText, passText, deployText, hostsFileText;
+ private ModifyListener userListener, passListener, deployListener, hostsListener;
private ServerAttributeHelper helper;
- private Button zipDeployWTPProjects;
- private SelectionListener zipListener;
+ private Button zipDeployWTPProjects, browseHostsFileButton;
+ private SelectionListener zipListener, browseHostsButtonListener;
protected Composite createDefaultComposite(Composite parent) {
@@ -98,7 +103,7 @@
Control top = descriptionLabel;
Composite inner = toolkit.createComposite(composite);
- inner.setLayout(new GridLayout(3, true));
+ inner.setLayout(new GridLayout(3, false));
FormData innerData = new FormData();
innerData.top = new FormAttachment(descriptionLabel, 5);
@@ -113,7 +118,7 @@
Label label = toolkit.createLabel(inner,
Messages.DeployRootFolder);
label.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
- deployText = toolkit.createText(inner, getDeployDir(), SWT.BORDER);
+ deployText = toolkit.createText(inner,
SSHPublishUtil.getDeployDir(page.getServer().getOriginal()), SWT.BORDER);
deployListener = new ModifyListener() {
public void modifyText(ModifyEvent e) {
page.execute(new SetDeployDirCommand());
@@ -126,7 +131,7 @@
Label userLabel = toolkit.createLabel(inner,
Messages.UserLabel);
userLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
- userText = toolkit.createText(inner, getUser(), SWT.BORDER);
+ userText = toolkit.createText(inner,
SSHPublishUtil.getUser(page.getServer().getOriginal()), SWT.BORDER);
userListener = new ModifyListener() {
public void modifyText(ModifyEvent e) {
page.execute(new SetUserCommand());
@@ -140,16 +145,46 @@
Label passLabel = toolkit.createLabel(inner,
Messages.PassLabel);
passLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
- passText = toolkit.createText(inner, getPass(), SWT.BORDER);
+ passText = toolkit.createText(inner,
SSHPublishUtil.getPass(page.getServer().getOriginal()), SWT.BORDER);
passListener = new ModifyListener() {
public void modifyText(ModifyEvent e) {
page.execute(new SetPasswordCommand());
}
};
- passText.addModifyListener(deployListener);
+ passText.addModifyListener(passListener);
passText.setEnabled(true);
passText.setLayoutData(textData);
+ Label hostsLabel = toolkit.createLabel(inner,
+ Messages.HostsLabel);
+ hostsLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE));
+ Composite hostsFileComposite = new Composite(inner, SWT.NONE);
+ hostsFileComposite.setLayoutData(textData);
+ hostsFileComposite.setLayout(new GridLayout(2,false));
+
+ hostsFileText = toolkit.createText(hostsFileComposite,
SSHPublishUtil.getHostsFile(page.getServer().getOriginal()), SWT.BORDER);
+ hostsListener = new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ page.execute(new SetHostsFileCommand());
+ }
+ };
+ hostsFileText.addModifyListener(hostsListener);
+ hostsFileText.setEnabled(true);
+ GridData hostsFileData = new GridData(SWT.LEFT, SWT.CENTER, true, false);
+ hostsFileData.widthHint = 200;
+ hostsFileData.grabExcessHorizontalSpace = true;
+ hostsFileText.setLayoutData(hostsFileData);
+
+ browseHostsFileButton = toolkit.createButton(hostsFileComposite, Messages.browse,
SWT.PUSH);
+ browseHostsButtonListener = new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ browseForHostsSelected();
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ };
+ browseHostsFileButton.addSelectionListener(browseHostsButtonListener);
+
zipDeployWTPProjects = toolkit.createButton(composite,
Messages.EditorZipDeployments, SWT.CHECK);
boolean zippedPublisherAvailable = isSSHZippedPublisherAvailable();
@@ -190,6 +225,15 @@
return false;
}
+ protected void browseForHostsSelected() {
+ FileDialog d = new FileDialog(new Shell());
+ d.setFilterPath(page.makeGlobal(hostsFileText.getText()));
+ String x = d.open();
+ if (x != null) {
+ hostsFileText.setText(x);
+ }
+ }
+
public class SetPropertyCommand extends ServerCommand {
protected String oldDir;
protected String newDir;
@@ -237,6 +281,13 @@
passListener, ISSHDeploymentConstants.PASSWORD);
}
}
+
+ public class SetHostsFileCommand extends SetPropertyCommand {
+ public SetHostsFileCommand() {
+ super(Messages.EditorSetPasswordCommandLabel, hostsFileText,
+ hostsListener, ISSHDeploymentConstants.HOSTS_FILE);
+ }
+ }
public class SetZipCommand extends ServerCommand {
boolean oldVal;
@@ -259,18 +310,8 @@
}
}
- private String getDeployDir() {
- return helper.getAttribute(ISSHDeploymentConstants.DEPLOY_DIRECTORY,
"/home");
- }
+
- private String getUser() {
- return helper.getAttribute(ISSHDeploymentConstants.USERNAME, "username");
- }
-
- private String getPass() {
- return helper.getAttribute(ISSHDeploymentConstants.PASSWORD, "password");
- }
-
private boolean getZipsSSHDeployments() {
return helper.getAttribute(ISSHDeploymentConstants.ZIP_DEPLOYMENTS_PREF, false);
}