From 4ca5d9b49494c88d4aa91a6ee1061bca547cd445 Mon Sep 17 00:00:00 2001
From: Greg Watson <g.watson@computer.org>
Date: Thu, 14 May 2015 11:33:48 -0400
Subject: [PATCH] Add host service for local connection.

Change-Id: I9ebf08e00839ec2d4e6affba5ccfeecadae9fc47
Signed-off-by: Greg Watson <g.watson@computer.org>
---
 bundles/org.eclipse.remote.core/plugin.xml    |   5 +
 .../local/LocalConnectionHostService.java     | 112 ++++++++++++++++++
 2 files changed, 117 insertions(+)
 create mode 100644 bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java

diff --git a/bundles/org.eclipse.remote.core/plugin.xml b/bundles/org.eclipse.remote.core/plugin.xml
index 85324367874..6d5154b1b81 100644
--- a/bundles/org.eclipse.remote.core/plugin.xml
+++ b/bundles/org.eclipse.remote.core/plugin.xml
@@ -40,6 +40,11 @@
             factory="org.eclipse.remote.internal.core.services.local.LocalCommandShellService$Factory"
             service="org.eclipse.remote.core.IRemoteCommandShellService">
       </connectionService>
+      <connectionService
+            connectionTypeId="org.eclipse.remote.LocalServices"
+            factory="org.eclipse.remote.internal.core.services.local.LocalConnectionHostService$Factory"
+            service="org.eclipse.remote.core.IRemoteConnectionHostService">
+      </connectionService>
       <processService
             connectionTypeId="org.eclipse.remote.LocalServices"
             factory="org.eclipse.remote.internal.core.services.local.LocalProcess$Factory"
diff --git a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java
new file mode 100644
index 00000000000..8afc56c3ec6
--- /dev/null
+++ b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/services/local/LocalConnectionHostService.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM Corporation 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.core.services.local;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnection.Service;
+import org.eclipse.remote.core.IRemoteConnectionHostService;
+
+public class LocalConnectionHostService implements IRemoteConnectionHostService {
+
+	private final IRemoteConnection connection;
+
+	public LocalConnectionHostService(IRemoteConnection connection) {
+		this.connection = connection;
+	}
+
+	public static class Factory implements IRemoteConnectionHostService.Factory {
+		@SuppressWarnings("unchecked")
+		@Override
+		public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
+			if (service.equals(IRemoteConnectionHostService.class)) {
+				return (T) new LocalConnectionHostService(remoteConnection);
+			}
+			return null;
+		}
+	}
+
+	@Override
+	public IRemoteConnection getRemoteConnection() {
+		return this.connection;
+	}
+
+	@Override
+	public String getHostname() {
+		try {
+			return InetAddress.getLocalHost().getHostName();
+		} catch (UnknownHostException e) {
+			return "unknown"; //$NON-NLS-1$
+		}
+	}
+
+	@Override
+	public int getPort() {
+		return 0;
+	}
+
+	@Override
+	public int getTimeout() {
+		return 0;
+	}
+
+	@Override
+	public boolean useLoginShell() {
+		return true;
+	}
+
+	@Override
+	public String getUsername() {
+		return System.getProperty("user.name"); //$NON-NLS-1$
+	}
+
+	@Override
+	public void setHostname(String hostname) {
+		// Ignored
+	}
+
+	@Override
+	public void setPassphrase(String passphrase) {
+		// Ignored
+	}
+
+	@Override
+	public void setPassword(String password) {
+		// Ignored
+	}
+
+	@Override
+	public void setPort(int port) {
+		// Ignored
+	}
+
+	@Override
+	public void setTimeout(int timeout) {
+		// Ignored
+	}
+
+	@Override
+	public void setUseLoginShell(boolean useLogingShell) {
+		// Ignored
+	}
+
+	@Override
+	public void setUsePassword(boolean usePassword) {
+		// Ignored
+	}
+
+	@Override
+	public void setUsername(String username) {
+		// Ignored
+	}
+}