Author: cutting Date: Thu Aug 16 15:56:37 2007 New Revision: 566879 URL: http://svn.apache.org/viewvc?view=rev&rev=566879 Log: HADOOP-1437. Updates to Eclipse plugin, also move it to 0.14.0 release. Contributed by Christophe Taton.
Modified: lucene/hadoop/trunk/CHANGES.txt lucene/hadoop/trunk/src/contrib/eclipse-plugin/.classpath lucene/hadoop/trunk/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF lucene/hadoop/trunk/src/contrib/eclipse-plugin/build.xml lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/SWTUserInfo.java lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java Modified: lucene/hadoop/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=566879&r1=566878&r2=566879 ============================================================================== --- lucene/hadoop/trunk/CHANGES.txt (original) +++ lucene/hadoop/trunk/CHANGES.txt Thu Aug 16 15:56:37 2007 @@ -28,9 +28,6 @@ HADOOP-1610. Add metrics for failed tasks. (Devaraj Das via tomwhite) - HADOOP-1437. Add Eclipse plugin in contrib. - (Eugene Hung and Christophe Taton via cutting) - OPTIMIZATIONS HADOOP-1565. Reduce memory usage of NameNode by replacing @@ -592,6 +589,9 @@ 158. HADOOP-1717. Fix TestDFSUpgradeFromImage to work on Solaris. (nigel via cutting) + +159. HADOOP-1437. Add Eclipse plugin in contrib. + (Eugene Hung and Christophe Taton via cutting) Release 0.13.0 - 2007-06-08 Modified: lucene/hadoop/trunk/src/contrib/eclipse-plugin/.classpath URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/eclipse-plugin/.classpath?view=diff&rev=566879&r1=566878&r2=566879 ============================================================================== --- lucene/hadoop/trunk/src/contrib/eclipse-plugin/.classpath (original) +++ lucene/hadoop/trunk/src/contrib/eclipse-plugin/.classpath Thu Aug 16 15:56:37 2007 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="src/java"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="output" path="bin"/> Modified: lucene/hadoop/trunk/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF?view=diff&rev=566879&r1=566878&r2=566879 ============================================================================== --- lucene/hadoop/trunk/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF (original) +++ lucene/hadoop/trunk/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF Thu Aug 16 15:56:37 2007 @@ -24,5 +24,5 @@ org.eclipse.team.cvs.ssh2, com.jcraft.jsch Eclipse-LazyStart: true -Bundle-ClassPath: bin/ +Bundle-ClassPath: classes/ Bundle-Vendor: Apache Hadoop Modified: lucene/hadoop/trunk/src/contrib/eclipse-plugin/build.xml URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/eclipse-plugin/build.xml?view=diff&rev=566879&r1=566878&r2=566879 ============================================================================== --- lucene/hadoop/trunk/src/contrib/eclipse-plugin/build.xml (original) +++ lucene/hadoop/trunk/src/contrib/eclipse-plugin/build.xml Thu Aug 16 15:56:37 2007 @@ -36,9 +36,10 @@ <target name="jar" depends="compile" unless="skip.contrib"> <jar jarfile="${build.dir}/hadoop-${name}.jar" - basedir="${build.classes}" - manifest="META-INF/MANIFEST.MF" - /> + manifest="${root}/META-INF/MANIFEST.MF"> + <fileset dir="${build.dir}" includes="classes/"/> + <fileset dir="${root}" includes="resources/ plugin.xml"/> + </jar> </target> </project> Modified: lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/SWTUserInfo.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/SWTUserInfo.java?view=diff&rev=566879&r1=566878&r2=566879 ============================================================================== --- lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/SWTUserInfo.java (original) +++ lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/SWTUserInfo.java Thu Aug 16 15:56:37 2007 @@ -34,17 +34,26 @@ import com.jcraft.jsch.UserInfo; /** - * Data structure for retaining user login information + * SWT Forms to prompt for passwords or for keyboard interactive + * authentication */ public abstract class SWTUserInfo implements UserInfo, UIKeyboardInteractive { + /** + * Password that was last tried; this to prevent sending many times the + * "saved" password if it does not work + */ + private String triedPassword = null; + public SWTUserInfo() { } + /* @inheritDoc */ public String getPassphrase() { return this.getPassword(); } + /* @inheritDoc */ public abstract String getPassword(); public abstract void setPassword(String pass); @@ -53,6 +62,7 @@ this.setPassword(pass); } + /* @inheritDoc */ public boolean promptPassphrase(final String arg0) { Display.getDefault().syncExec(new Runnable() { public void run() { @@ -64,37 +74,46 @@ } public boolean promptPassword(final String arg0) { - // check if password is already set to prevent the second session from - // querying again -- eyhung - // how to prevent bad passwords? - if (this.getPassword() == null) { + /* + * Ask the user for the password if we don't know it, or if we now it but + * already tried it + */ + if ((this.getPassword() == null) + || this.getPassword().equals(this.triedPassword)) { Display.getDefault().syncExec(new Runnable() { public void run() { Shell parent = Display.getDefault().getActiveShell(); String password = new PasswordDialog(parent).prompt(arg0); + SWTUserInfo.this.triedPassword = password; SWTUserInfo.this.setPassword(password); } }); } + return this.getPassword() != null; } - private boolean result; + /** + * To store the result of the Yes/No message dialog + */ + private boolean yesNoResult; + /* @inheritDoc */ public boolean promptYesNo(final String arg0) { Display.getDefault().syncExec(new Runnable() { public void run() { - result = + yesNoResult = MessageDialog.openQuestion( Display.getDefault().getActiveShell(), "SSH Question Dialog", arg0); } }); - return result; + return yesNoResult; } + /* @inheritDoc */ public void showMessage(final String arg0) { Display.getDefault().syncExec(new Runnable() { public void run() { @@ -103,6 +122,9 @@ }); } + /** + * To store the answers from the keyboard interactive dialog + */ private String[] interactiveAnswers; /* @inheritDoc */ @@ -124,12 +146,11 @@ * Simple password prompting dialog */ public static class PasswordDialog extends Dialog { + private Text text; private String password; - private Label title; - private String message; protected PasswordDialog(Shell parentShell) { @@ -159,7 +180,7 @@ panel.setLayout(new GridLayout(2, false)); panel.setLayoutData(new GridData(GridData.FILL_BOTH)); - title = new Label(panel, SWT.NONE); + Label title = new Label(panel, SWT.NONE); GridData span2 = new GridData(GridData.FILL_HORIZONTAL); span2.horizontalSpan = 2; title.setLayoutData(span2); Modified: lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java?view=diff&rev=566879&r1=566878&r2=566879 ============================================================================== --- lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java (original) +++ lucene/hadoop/trunk/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java Thu Aug 16 15:56:37 2007 @@ -101,8 +101,6 @@ */ private String name; - // the machine that we are tunneling through to get to the Hadoop server - /** * Host name of the tunneling machine */ @@ -169,7 +167,7 @@ session.setUserInfo(new SWTUserInfo() { @Override public String getPassword() { - return password; + return HadoopServer.this.password; } @Override @@ -182,6 +180,7 @@ try { session.connect(); } catch (JSchException jse) { + // Reset password in case the authentication failed if (jse.getMessage().equals("Auth fail")) this.password = null; throw jse; @@ -210,6 +209,7 @@ try { session.connect(); } catch (JSchException jse) { + // Reset password in case the authentication failed if (jse.getMessage().equals("Auth fail")) this.password = null; throw jse; @@ -246,20 +246,23 @@ tunnelHostName, 22); tunnel.setTimeout(0); tunnel.setPortForwardingL(tunnelPort, hostName, port); + tunnel.setUserInfo(new SWTUserInfo() { @Override public String getPassword() { - return tunnelPassword; + return HadoopServer.this.tunnelPassword; } @Override public void setPassword(String password) { - tunnelPassword = password; + HadoopServer.this.tunnelPassword = password; } }); + try { tunnel.connect(); } catch (JSchException jse) { + // Reset password in case the authentication failed if (jse.getMessage().equals("Auth fail")) this.tunnelPassword = null; throw jse; @@ -282,12 +285,22 @@ } } - public String getHostName() { + /** + * Return the effective host name to use to contact the server. The + * effective host name might be "localhost" if we setup a tunnel. + * + * @return the effective host name to use contact the server + */ + public String getEffectiveHostName() { if ((tunnelHostName != null) && (tunnelHostName.length() > 0)) { return "localhost"; } - return hostName; + return this.hostName; + } + + public String getHostName() { + return this.hostName; } public void setHostname(String hostname) { @@ -346,8 +359,8 @@ */ public URL getJobTrackerUrl() throws MalformedURLException { if (tunnelHostName == null) { - return new URL("http://" + getHostName() + ":" + JOB_TRACKER_PORT - + "/jobtracker.jsp"); + return new URL("http://" + getEffectiveHostName() + ":" + + JOB_TRACKER_PORT + "/jobtracker.jsp"); } else { try { createHttpTunnel(JOB_TRACKER_PORT); @@ -461,7 +474,7 @@ // jar.buildJar(monitor).toString()); copy.setAttribute("hadoop.jarrable", jar.toMemento()); - copy.setAttribute("hadoop.host", this.getHostName()); + copy.setAttribute("hadoop.host", this.getEffectiveHostName()); copy.setAttribute("hadoop.user", this.getUserName()); copy.setAttribute("hadoop.serverid", this.id); copy.setAttribute("hadoop.path", this.getInstallPath());