/*
* Copyright (C) 2020, Thomas Wolf <thomas.wolf@paranor.ch> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.transport;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.eclipse.jgit.annotations.NonNull;
An abstraction for a SSH config storage, like the OpenSSH ~/.ssh/config file.
Since: 5.8
/**
* An abstraction for a SSH config storage, like the OpenSSH ~/.ssh/config file.
*
* @since 5.8
*/
public interface SshConfigStore {
Locate the configuration for a specific host request.
Params: - hostName –
to look up
- port –
the user supplied; <= 0 if none
- userName – the user supplied, may be
null
or empty if none given
Returns: the configuration for the requested name.
/**
* Locate the configuration for a specific host request.
*
* @param hostName
* to look up
* @param port
* the user supplied; <= 0 if none
* @param userName
* the user supplied, may be {@code null} or empty if none given
* @return the configuration for the requested name.
*/
@NonNull
HostConfig lookup(@NonNull String hostName, int port, String userName);
A host entry from the ssh config. Any merging of global values and of
several matching host entries, %-substitutions, and ~ replacement have
all been done.
/**
* A host entry from the ssh config. Any merging of global values and of
* several matching host entries, %-substitutions, and ~ replacement have
* all been done.
*/
interface HostConfig {
Retrieves the value of a single-valued key, or the first if the key has multiple values. Keys are case-insensitive, so getValue("HostName") == getValue("HOSTNAME")
. Params: - key –
to get the value of
Returns: the value, or null
if none
/**
* Retrieves the value of a single-valued key, or the first if the key
* has multiple values. Keys are case-insensitive, so
* {@code getValue("HostName") == getValue("HOSTNAME")}.
*
* @param key
* to get the value of
* @return the value, or {@code null} if none
*/
String getValue(String key);
Retrieves the values of a multi- or list-valued key. Keys are case-insensitive, so getValue("HostName") == getValue("HOSTNAME")
. Params: - key –
to get the values of
Returns: a possibly empty list of values
/**
* Retrieves the values of a multi- or list-valued key. Keys are
* case-insensitive, so
* {@code getValue("HostName") == getValue("HOSTNAME")}.
*
* @param key
* to get the values of
* @return a possibly empty list of values
*/
List<String> getValues(String key);
Retrieves an unmodifiable map of all single-valued options, with
case-insensitive lookup by keys.
Returns: all single-valued options
/**
* Retrieves an unmodifiable map of all single-valued options, with
* case-insensitive lookup by keys.
*
* @return all single-valued options
*/
@NonNull
Map<String, String> getOptions();
Retrieves an unmodifiable map of all multi- or list-valued options,
with case-insensitive lookup by keys.
Returns: all multi-valued options
/**
* Retrieves an unmodifiable map of all multi- or list-valued options,
* with case-insensitive lookup by keys.
*
* @return all multi-valued options
*/
@NonNull
Map<String, List<String>> getMultiValuedOptions();
}
An empty HostConfig
. /**
* An empty {@link HostConfig}.
*/
static final HostConfig EMPTY_CONFIG = new HostConfig() {
@Override
public String getValue(String key) {
return null;
}
@Override
public List<String> getValues(String key) {
return Collections.emptyList();
}
@Override
public Map<String, String> getOptions() {
return Collections.emptyMap();
}
@Override
public Map<String, List<String>> getMultiValuedOptions() {
return Collections.emptyMap();
}
};
}