diff options
author | Alexander Kurtakov | 2016-08-25 11:30:48 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2016-08-25 12:18:03 +0000 |
commit | b4b9c1eeebda569580a4dcc470a2f3ebbfe0285d (patch) | |
tree | 8024f55f2b01a15a0c56dc4edf95a1f8d1c6a81f | |
parent | a4dd8bddaf639194c11eacde29290454db26f324 (diff) | |
download | org.eclipse.linuxtools-b4b9c1eeebda569580a4dcc470a2f3ebbfe0285d.tar.gz org.eclipse.linuxtools-b4b9c1eeebda569580a4dcc470a2f3ebbfe0285d.tar.xz org.eclipse.linuxtools-b4b9c1eeebda569580a4dcc470a2f3ebbfe0285d.zip |
Bug 497027 - Man page plugin forces install of CDT
Code from LinuxtoolsProcessFactory class copied and simplified as some
features are not needed to remove the dep. Practically this is pure JSch
implementation.
Change-Id: Ie25d5bd5243c0ca571ce51a83eafd25d85884178
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
Reviewed-on: https://git.eclipse.org/r/79720
Reviewed-by: Mat Booth <mat.booth@redhat.com>
Tested-by: Hudson CI
5 files changed, 65 insertions, 13 deletions
diff --git a/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.core.prefs b/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.core.prefs index dd535f8817..8d6cd3c2f1 100644 --- a/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.core.prefs +++ b/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.core.prefs @@ -16,6 +16,7 @@ org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annota org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 diff --git a/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.ui.prefs b/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.ui.prefs index c43046c52c..8611630202 100644 --- a/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.ui.prefs +++ b/man/org.eclipse.linuxtools.man.core/.settings/org.eclipse.jdt.ui.prefs @@ -1,4 +1,3 @@ -#Wed Dec 09 21:56:11 EET 2009 eclipse.preferences.version=1 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=org.eclipse.jdt.ui.default.eclipse_profile @@ -14,15 +13,18 @@ sp_cleanup.add_missing_deprecated_annotations=true sp_cleanup.add_missing_methods=false sp_cleanup.add_missing_nls_tags=false sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=false sp_cleanup.add_serial_version_id=false sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=true sp_cleanup.convert_to_enhanced_for_loop=false sp_cleanup.correct_indentation=false sp_cleanup.format_source_code=true sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true @@ -38,6 +40,7 @@ sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class= sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_type_arguments=false sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false @@ -51,8 +54,10 @@ sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false sp_cleanup.use_blocks=false sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=true sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true diff --git a/man/org.eclipse.linuxtools.man.core/META-INF/MANIFEST.MF b/man/org.eclipse.linuxtools.man.core/META-INF/MANIFEST.MF index 835c7e995f..21c59602dc 100644 --- a/man/org.eclipse.linuxtools.man.core/META-INF/MANIFEST.MF +++ b/man/org.eclipse.linuxtools.man.core/META-INF/MANIFEST.MF @@ -2,11 +2,10 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: org.eclipse.linuxtools.man.core;singleton:=true -Bundle-Version: 1.4.0.qualifier +Bundle-Version: 1.5.0.qualifier Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.jface.text, - org.eclipse.linuxtools.tools.launch.core, com.jcraft.jsch Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.linuxtools.internal.man.parser;x-friends:="org.eclipse.linuxtools.man.help", diff --git a/man/org.eclipse.linuxtools.man.core/pom.xml b/man/org.eclipse.linuxtools.man.core/pom.xml index c6f01352e5..ddc5c61480 100644 --- a/man/org.eclipse.linuxtools.man.core/pom.xml +++ b/man/org.eclipse.linuxtools.man.core/pom.xml @@ -23,7 +23,7 @@ </parent> <artifactId>org.eclipse.linuxtools.man.core</artifactId> - <version>1.4.0-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> <name>Linux Tools Man Plug-in</name> diff --git a/man/org.eclipse.linuxtools.man.core/src/org/eclipse/linuxtools/internal/man/parser/ManParser.java b/man/org.eclipse.linuxtools.man.core/src/org/eclipse/linuxtools/internal/man/parser/ManParser.java index c232a2a285..c0447e6893 100644 --- a/man/org.eclipse.linuxtools.man.core/src/org/eclipse/linuxtools/internal/man/parser/ManParser.java +++ b/man/org.eclipse.linuxtools.man.core/src/org/eclipse/linuxtools/internal/man/parser/ManParser.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2015-2016 Red Hat Inc. and others. + * Copyright (c) 2009, 2016 Red Hat Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,6 +21,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; +import java.util.Properties; +import java.util.stream.Collectors; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; @@ -28,17 +30,22 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.linuxtools.internal.man.preferences.PreferenceConstants; -import org.eclipse.linuxtools.tools.launch.core.factory.LinuxtoolsProcessFactory; import org.osgi.framework.Bundle; import org.osgi.framework.FrameworkUtil; +import com.jcraft.jsch.Channel; +import com.jcraft.jsch.ChannelExec; +import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; +import com.jcraft.jsch.Session; /** * Parser for the man executable output. */ public class ManParser { + private static final int DEFAULT_SSH_PORT = 22; + /** * Gets the list of paths returned when one runs "man -w" with no other * parameters. This is the list of directories that is searched by man for @@ -139,10 +146,7 @@ public class ManParser { ? new BufferedReader(new InputStreamReader(manContent)) : null) { if (reader != null) { - String line = null; - while ((line = reader.readLine()) != null) { - sb.append(line + "\n"); //$NON-NLS-1$ - } + sb.append(reader.lines().collect(Collectors.joining("\n"))); //$NON-NLS-1$ } } catch (IOException e) { Bundle bundle = FrameworkUtil.getBundle(this.getClass()); @@ -177,9 +181,8 @@ public class ManParser { } }; try { - LinuxtoolsProcessFactory.execRemoteAndWait( - new String[] { getManExecutable(), manPage }, out, out, - user, host, password); + execRemoteAndWait(new String[] { getManExecutable(), manPage }, out, + out, user, host, password); } catch (JSchException e) { sb.setLength(0); sb.append(Messages.ManParser_RemoteAccessError); @@ -187,6 +190,50 @@ public class ManParser { return sb; } + private static Channel execRemoteAndWait(String[] args, OutputStream out, + OutputStream err, String user, String host, String password) + throws JSchException { + Channel channel = execRemote(args, out, err, user, host, password); + + while (!channel.isClosed()) { + try { + Thread.sleep(250); + } catch (InterruptedException e) { + // Thread was interrupted just return. + return channel; + } + } + + return channel; + } + + private static Channel execRemote(String[] args, OutputStream out, + OutputStream err, String user, String host, String password) + throws JSchException { + JSch jsch = new JSch(); + Session session = jsch.getSession(user, host, DEFAULT_SSH_PORT); + session.setPassword(password); + Properties config = new Properties(); + config.put("StrictHostKeyChecking", "no"); //$NON-NLS-1$//$NON-NLS-2$ + session.setConfig(config); + session.connect(); + + StringBuilder command = new StringBuilder(); + for (int i = 0; i < args.length; i++) { + command.append(args[i] + ' '); + } + + ChannelExec channel = (ChannelExec) session.openChannel("exec"); //$NON-NLS-1$ + channel.setPty(true); + channel.setCommand(command.toString()); + channel.setInputStream(null, true); + channel.setOutputStream(out, true); + channel.setExtOutputStream(err, true); + channel.connect(); + + return channel; + } + private static String getManExecutable() { IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode( FrameworkUtil.getBundle(ManParser.class).getSymbolicName()); |