Class TestProtocol<C>
- java.lang.Object
-
- org.eclipse.jgit.transport.TransportProtocol
-
- org.eclipse.jgit.transport.TestProtocol<C>
-
- Type Parameters:
C
- the connection type
public class TestProtocol<C> extends TransportProtocol
Protocol for transport between manually-specified repositories in tests.Remote repositories are registered using
register(Object, Repository)
, after which they can be accessed using the returned URI. As this class provides both the client side (the protocol) and the server side, the caller is responsible for setting up and passing the connection context, whatever form that may take.Unlike the other built-in protocols, which are automatically-registered singletons, callers are expected to register/unregister specific protocol instances on demand with
Transport.register(TransportProtocol)
.- Since:
- 4.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
TestProtocol.Handle
private class
TestProtocol.TransportInternal
-
Nested classes/interfaces inherited from class org.eclipse.jgit.transport.TransportProtocol
TransportProtocol.URIishField
-
-
Field Summary
Fields Modifier and Type Field Description private static BasePackFetchConnection.FetchConfig
fetchConfig
private java.util.HashMap<URIish,TestProtocol.Handle>
handles
(package private) ReceivePackFactory<C>
receivePackFactory
private static java.lang.String
SCHEME
(package private) UploadPackFactory<C>
uploadPackFactory
-
Constructor Summary
Constructors Constructor Description TestProtocol(UploadPackFactory<C> uploadPackFactory, ReceivePackFactory<C> receivePackFactory)
Constructor for TestProtocol.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getName()
Get text name of the protocol suitable for display to a user.java.util.Set<TransportProtocol.URIishField>
getOptionalFields()
Get immutable set of URIishFields that may be filled in.java.util.Set<TransportProtocol.URIishField>
getRequiredFields()
Get immutable set of URIishFields that must be filled in.java.util.Set<java.lang.String>
getSchemes()
Get immutable set of schemes supported by this protocol.Transport
open(URIish uri, Repository local, java.lang.String remoteName)
Open a Transport instance to the other repository.URIish
register(C req, Repository remote)
Register a repository connection over the internal test protocol.(package private) static void
setFetchConfig(BasePackFetchConnection.FetchConfig c)
-
Methods inherited from class org.eclipse.jgit.transport.TransportProtocol
canHandle, canHandle, getDefaultPort, open
-
-
-
-
Field Detail
-
SCHEME
private static final java.lang.String SCHEME
- See Also:
- Constant Field Values
-
fetchConfig
private static BasePackFetchConnection.FetchConfig fetchConfig
-
uploadPackFactory
final UploadPackFactory<C> uploadPackFactory
-
receivePackFactory
final ReceivePackFactory<C> receivePackFactory
-
handles
private final java.util.HashMap<URIish,TestProtocol.Handle> handles
-
-
Constructor Detail
-
TestProtocol
public TestProtocol(UploadPackFactory<C> uploadPackFactory, ReceivePackFactory<C> receivePackFactory)
Constructor for TestProtocol.- Parameters:
uploadPackFactory
- factory for creatingUploadPack
used by all connections from this protocol instance.receivePackFactory
- factory for creatingReceivePack
used by all connections from this protocol instance.
-
-
Method Detail
-
getName
public java.lang.String getName()
Get text name of the protocol suitable for display to a user.- Specified by:
getName
in classTransportProtocol
- Returns:
- text name of the protocol suitable for display to a user.
-
getSchemes
public java.util.Set<java.lang.String> getSchemes()
Get immutable set of schemes supported by this protocol.- Overrides:
getSchemes
in classTransportProtocol
- Returns:
- immutable set of schemes supported by this protocol.
-
open
public Transport open(URIish uri, Repository local, java.lang.String remoteName) throws NotSupportedException, TransportException
Open a Transport instance to the other repository.Implementations should avoid making remote connections until an operation on the returned Transport is invoked, however they may fail fast here if they know a connection is impossible, such as when using the local filesystem and the target path does not exist.
Implementations may access implementation-specific configuration options within
local.getConfig()
using the remote block named by theremoteName
, if the name is non-null.- Specified by:
open
in classTransportProtocol
- Parameters:
uri
- address of the Git repository.local
- the local repository that will communicate with the other Git repository.remoteName
- name of the remote, if the remote as configured inlocal
; otherwise null.- Returns:
- the transport.
- Throws:
NotSupportedException
- this protocol does not support the URI.TransportException
- the transport cannot open this URI.
-
getRequiredFields
public java.util.Set<TransportProtocol.URIishField> getRequiredFields()
Get immutable set of URIishFields that must be filled in.- Overrides:
getRequiredFields
in classTransportProtocol
- Returns:
- immutable set of URIishFields that must be filled in.
-
getOptionalFields
public java.util.Set<TransportProtocol.URIishField> getOptionalFields()
Get immutable set of URIishFields that may be filled in.- Overrides:
getOptionalFields
in classTransportProtocol
- Returns:
- immutable set of URIishFields that may be filled in.
-
setFetchConfig
static void setFetchConfig(BasePackFetchConnection.FetchConfig c)
-
register
public URIish register(C req, Repository remote)
Register a repository connection over the internal test protocol.- Parameters:
req
- connection context. This instance is reused for all connections made using this protocol; if it is stateful and usable only for one connection, the same repository should be registered multiple times.remote
- remote repository to connect to.- Returns:
- a URI that can be used to connect to this repository for both fetch and push.
-
-