1
2
3
4
5
6
7
8
9
10 package org.eclipse.jgit.internal.transport.parser;
11
12
13 import java.util.Collections;
14 import java.util.HashMap;
15 import java.util.Map;
16
17 import org.eclipse.jgit.annotations.NonNull;
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public final class FirstCommand {
34 private final String line;
35 private final Map<String, String> capabilities;
36
37
38
39
40
41
42
43
44 @NonNull
45 public static FirstCommand fromLine(String line) {
46 int nul = line.indexOf('\0');
47 if (nul < 0) {
48 return new FirstCommand(line,
49 Collections.<String, String> emptyMap());
50 }
51 String[] splitCapablities = line.substring(nul + 1).split(" ");
52 Map<String, String> options = new HashMap<>();
53
54 for (String c : splitCapablities) {
55 int i = c.indexOf("=");
56 if (i != -1) {
57 options.put(c.substring(0, i), c.substring(i + 1));
58 } else {
59 options.put(c, null);
60 }
61 }
62
63 return new FirstCommand(line.substring(0, nul),
64 Collections.<String, String> unmodifiableMap(options));
65 }
66
67 private FirstCommand(String line, Map<String, String> capabilities) {
68 this.line = line;
69 this.capabilities = capabilities;
70 }
71
72
73 @NonNull
74 public String getLine() {
75 return line;
76 }
77
78
79 @NonNull
80 public Map<String, String> getCapabilities() {
81 return capabilities;
82 }
83 }