Refactor v2 advertisement into own function

A subsequent patch needs dynamic generation of this advertisement
depending on a configuration variable in the underlying repository, so
refactor it into a function instead of using a constant list.

Change-Id: Ie00584add1fb56c9e88c7b57f75703981ea5bb85
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 4538ce2..ea6bd3a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -119,14 +119,6 @@
  * Implements the server side of a fetch connection, transmitting objects.
  */
 public class UploadPack {
-	// UploadPack sends these lines as the first response to a client that
-	// supports protocol version 2.
-	private static final String[] v2CapabilityAdvertisement = {
-		"version 2", //$NON-NLS-1$
-		COMMAND_LS_REFS,
-		COMMAND_FETCH + '=' + OPTION_SHALLOW
-	};
-
 	/** Policy the server uses to validate client requests */
 	public static enum RequestPolicy {
 		/** Client may only ask for objects the server advertised a reference for. */
@@ -1117,13 +1109,21 @@
 				.format(JGitText.get().unknownTransportCommand, command));
 	}
 
+	private List<String> getV2CapabilityAdvertisement() {
+		ArrayList<String> caps = new ArrayList<>();
+		caps.add("version 2"); //$NON-NLS-1$
+		caps.add(COMMAND_LS_REFS);
+		caps.add(COMMAND_FETCH + '=' + OPTION_SHALLOW);
+		return caps;
+	}
+
 	private void serviceV2() throws IOException {
 		if (biDirectionalPipe) {
 			// Just like in service(), the capability advertisement
 			// is sent only if this is a bidirectional pipe. (If
 			// not, the client is expected to call
 			// sendAdvertisedRefs() on its own.)
-			for (String s : v2CapabilityAdvertisement) {
+			for (String s : getV2CapabilityAdvertisement()) {
 				pckOut.writeString(s + "\n"); //$NON-NLS-1$
 			}
 			pckOut.end();
@@ -1287,7 +1287,7 @@
 		if (useProtocolV2()) {
 			// The equivalent in v2 is only the capabilities
 			// advertisement.
-			for (String s : v2CapabilityAdvertisement) {
+			for (String s : getV2CapabilityAdvertisement()) {
 				adv.writeOne(s);
 			}
 			adv.end();