From e63f1c94f8f9a5b10da6c1e5932da33eb805230a Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Sat, 18 Aug 2012 15:51:03 -0700 Subject: [PATCH] Mark fields of BaseReceivePack private None of these should have been exposed to base classes. The majority of them are private implementation details that are not required by a subclass in order to interact with the base protocol definition. The few that are needed should be visible as accessor methods, so the internals can be modified without breaking the public JGit API. Change-Id: I874179105c9c37703307facbbf99387c52bf772c Signed-off-by: Matthias Sohn --- .../jgit/transport/BaseReceivePack.java | 42 +++++++++++-------- .../eclipse/jgit/transport/ReceivePack.java | 13 +++++- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java index 218b72988..2e2de8216 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -136,10 +136,10 @@ public abstract class BaseReceivePack { } /** Database we write the stored objects into. */ - protected final Repository db; + private final Repository db; /** Revision traversal support over {@link #db}. */ - protected final RevWalk walk; + private final RevWalk walk; /** * Is the client connection a bi-directional socket or pipe? @@ -152,22 +152,22 @@ public abstract class BaseReceivePack { * If false, this class runs in a read everything then output results mode, * making it suitable for single round-trip systems RPCs such as HTTP. */ - protected boolean biDirectionalPipe = true; + private boolean biDirectionalPipe = true; /** Expecting data after the pack footer */ - protected boolean expectDataAfterPackFooter; + private boolean expectDataAfterPackFooter; /** Should an incoming transfer validate objects? */ - protected boolean checkReceivedObjects; + private boolean checkReceivedObjects; /** Should an incoming transfer permit create requests? */ - protected boolean allowCreates; + private boolean allowCreates; /** Should an incoming transfer permit delete requests? */ - protected boolean allowDeletes; + private boolean allowDeletes; /** Should an incoming transfer permit non-fast-forward requests? */ - protected boolean allowNonFastForwards; + private boolean allowNonFastForwards; private boolean allowOfsDelta; @@ -212,23 +212,20 @@ public abstract class BaseReceivePack { private PackParser parser; /** The refs we advertised as existing at the start of the connection. */ - protected Map refs; + private Map refs; /** All SHA-1s shown to the client, which can be possible edges. */ - protected Set advertisedHaves; + private Set advertisedHaves; /** Capabilities requested by the client. */ - protected Set enabledCapabilities; + private Set enabledCapabilities; private List commands; private StringBuilder advertiseError; - /** If {@link BasePackPushConnection#CAPABILITY_REPORT_STATUS} is enabled. */ - protected boolean reportStatus; - /** If {@link BasePackPushConnection#CAPABILITY_SIDE_BAND_64K} is enabled. */ - protected boolean sideBand; + private boolean sideBand; /** Lock around the received pack file, while updating refs. */ private PackLock packLock; @@ -872,9 +869,7 @@ public abstract class BaseReceivePack { /** Enable capabilities based on a previously read capabilities line. */ protected void enableCapabilities() { - reportStatus = enabledCapabilities.contains(CAPABILITY_REPORT_STATUS); - - sideBand = enabledCapabilities.contains(CAPABILITY_SIDE_BAND_64K); + sideBand = isCapabilityEnabled(CAPABILITY_SIDE_BAND_64K); if (sideBand) { OutputStream out = rawOut; @@ -886,6 +881,17 @@ public abstract class BaseReceivePack { } } + /** + * Check if the peer requested a capability. + * + * @param name + * protocol name identifying the capability. + * @return true if the peer requested the capability to be enabled. + */ + protected boolean isCapabilityEnabled(String name) { + return enabledCapabilities.contains(name); + } + /** @return true if a pack is expected based on the list of commands. */ protected boolean needPack() { for (final ReceiveCommand cmd : commands) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java index 9630f7853..fb30d99fc 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java @@ -43,6 +43,8 @@ package org.eclipse.jgit.transport; +import static org.eclipse.jgit.transport.BasePackPushConnection.CAPABILITY_REPORT_STATUS; + import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -63,6 +65,9 @@ public class ReceivePack extends BaseReceivePack { /** Hook to report on the commands after execution. */ private PostReceiveHook postReceive; + /** If {@link BasePackPushConnection#CAPABILITY_REPORT_STATUS} is enabled. */ + private boolean reportStatus; + private boolean echoCommandFailures; /** @@ -162,8 +167,14 @@ public class ReceivePack extends BaseReceivePack { } } + @Override + protected void enableCapabilities() { + reportStatus = isCapabilityEnabled(CAPABILITY_REPORT_STATUS); + super.enableCapabilities(); + } + private void service() throws IOException { - if (biDirectionalPipe) { + if (isBiDirectionalPipe()) { sendAdvertisedRefs(new PacketLineOutRefAdvertiser(pckOut)); pckOut.flush(); } else