diff options
author | Ivan Frade <ifrade@google.com> | 2022-11-03 16:23:34 -0400 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org <gerrit@eclipse.org> | 2022-11-03 16:23:34 -0400 |
commit | a385955ccfd5563ff3f752e0744f52727b89a43c (patch) | |
tree | 0d9d775a677e9c61102452f66995851ae7545faa | |
parent | e7adcac9f3dec697e26ef6fc0bfd300d68a0935e (diff) | |
parent | e8068188f134b2b6a0d96314a3642154a1b66ab4 (diff) | |
download | jgit-a385955ccfd5563ff3f752e0744f52727b89a43c.tar.gz jgit-a385955ccfd5563ff3f752e0744f52727b89a43c.zip |
Merge "FirstWant: Parse client session-id if received."
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/transport/parser/FirstWantTest.java | 12 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/parser/FirstWant.java | 23 |
2 files changed, 31 insertions, 4 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/transport/parser/FirstWantTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/transport/parser/FirstWantTest.java index 1e8ce8ef11..230f6a4081 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/transport/parser/FirstWantTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/transport/parser/FirstWantTest.java @@ -27,7 +27,8 @@ public class FirstWantTest { @Test public void testFirstWantWithOptions() throws PackProtocolException { String line = "want b9d4d1eb2f93058814480eae9e1b67550f46ee38 " - + "no-progress include-tag ofs-delta agent=JGit/unknown"; + + "no-progress include-tag ofs-delta agent=JGit/unknown " + + "session-id=the.client.sid"; FirstWant r = FirstWant.fromLine(line); assertEquals("want b9d4d1eb2f93058814480eae9e1b67550f46ee38", @@ -37,6 +38,7 @@ public class FirstWantTest { Arrays.asList("no-progress", "include-tag", "ofs-delta")); assertEquals(expectedCapabilities, capabilities); assertEquals("JGit/unknown", r.getAgent()); + assertEquals("the.client.sid", r.getClientSID()); } @Test @@ -94,4 +96,12 @@ public class FirstWantTest { assertEquals(r.getCapabilities().size(), 0); assertEquals("pack.age/Version", r.getAgent()); } + + @Test + public void testFirstWantValidSessionID() throws PackProtocolException { + FirstWant r = FirstWant + .fromLine(makeFirstWantLine("session-id=client.session.id")); + assertEquals(r.getCapabilities().size(), 0); + assertEquals("client.session.id", r.getClientSID()); + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/parser/FirstWant.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/parser/FirstWant.java index 8138f06452..30d629665f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/parser/FirstWant.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/transport/parser/FirstWant.java @@ -10,6 +10,7 @@ package org.eclipse.jgit.internal.transport.parser; import static org.eclipse.jgit.transport.GitProtocolConstants.OPTION_AGENT; +import static org.eclipse.jgit.transport.GitProtocolConstants.OPTION_SESSION_ID; import java.util.Collections; import java.util.HashSet; @@ -43,8 +44,13 @@ public class FirstWant { @Nullable private final String agent; + @Nullable + private final String clientSID; + private static final String AGENT_PREFIX = OPTION_AGENT + '='; + private static final String SESSION_ID_PREFIX = OPTION_SESSION_ID + '='; + /** * Parse the first want line in the protocol v0/v1 pack negotiation. * @@ -58,6 +64,7 @@ public class FirstWant { String wantLine; Set<String> capabilities; String agent = null; + String clientSID = null; if (line.length() > 45) { String opt = line.substring(45); @@ -70,6 +77,9 @@ public class FirstWant { for (String clientCapability : opt.split(" ")) { //$NON-NLS-1$ if (clientCapability.startsWith(AGENT_PREFIX)) { agent = clientCapability.substring(AGENT_PREFIX.length()); + } else if (clientCapability.startsWith(SESSION_ID_PREFIX)) { + clientSID = clientCapability + .substring(SESSION_ID_PREFIX.length()); } else { opts.add(clientCapability); } @@ -81,14 +91,15 @@ public class FirstWant { capabilities = Collections.emptySet(); } - return new FirstWant(wantLine, capabilities, agent); + return new FirstWant(wantLine, capabilities, agent, clientSID); } private FirstWant(String line, Set<String> capabilities, - @Nullable String agent) { + @Nullable String agent, @Nullable String clientSID) { this.line = line; this.capabilities = capabilities; this.agent = agent; + this.clientSID = clientSID; } /** @return non-capabilities part of the line. */ @@ -98,7 +109,7 @@ public class FirstWant { /** * @return capabilities parsed from the line as an immutable set (excluding - * agent). + * agent and session-id). */ public Set<String> getCapabilities() { return capabilities; @@ -109,4 +120,10 @@ public class FirstWant { public String getAgent() { return agent; } + + /** @return client session-id parsed from the line. */ + @Nullable + public String getClientSID() { + return clientSID; + } } |