Merge "Fix possible NPEs in ReplaceRequest.cmd usage in ReceiveCommits"
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java
index b5c0900..d763ff1 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritResources.java
@@ -39,4 +39,7 @@
@Source("redNot.png")
public ImageResource redNot();
+
+ @Source("downloadIcon.png")
+ public ImageResource downloadIcon();
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/downloadIcon.png b/gerrit-gwtui/src/main/java/com/google/gerrit/client/downloadIcon.png
new file mode 100644
index 0000000..22ff495
--- /dev/null
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/downloadIcon.png
Binary files differ
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties
index 694ccb4..9612d05 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchConstants.properties
@@ -45,7 +45,7 @@
reviewedAnd = Reviewed &
next = next
-download = (Download)
+download = Download
fileTypeSymlink = Type: Symbolic Link
fileTypeGitlink = Type: Git Commit in Subproject
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.java
index 5dd4e1f..484db7c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.java
@@ -21,16 +21,18 @@
import com.google.gerrit.reviewdb.client.Patch;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.SpanElement;
+import com.google.gwt.dom.client.DivElement;
+import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
-import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Image;
import com.google.gwtorm.client.KeyUtil;
import java.util.LinkedList;
@@ -46,6 +48,8 @@
String selected();
String hidden();
+
+ String downloadLink();
}
public enum Side {
@@ -68,7 +72,7 @@
BoxStyle style;
@UiField
- SpanElement sideMarker;
+ DivElement sideMarker;
public PatchSetSelectBox(Side side, final PatchScreen.Type type) {
this.side = side;
@@ -88,12 +92,20 @@
if (screenType == PatchScreen.Type.UNIFIED) {
sideMarker.setInnerText((side == Side.A) ? "(-)" : "(+)");
+ } else {
+ sideMarker.getStyle().setDisplay(Display.NONE);
}
+ Anchor baseLink = null;
if (detail.getInfo().getParents().size() > 1) {
- addLink(PatchUtil.C.patchBaseAutoMerge(), null);
+ baseLink = createLink(PatchUtil.C.patchBaseAutoMerge(), null);
} else {
- addLink(PatchUtil.C.patchBase(), null);
+ baseLink = createLink(PatchUtil.C.patchBase(), null);
+ }
+
+ links.add(baseLink);
+ if (screenType == PatchScreen.Type.UNIFIED || side == Side.A) {
+ linkPanel.add(baseLink);
}
if (side == Side.B) {
@@ -102,7 +114,9 @@
for (Patch patch : script.getHistory()) {
PatchSet.Id psId = patch.getKey().getParentKey();
- addLink(Integer.toString(psId.get()), psId);
+ Anchor anchor = createLink(Integer.toString(psId.get()), psId);
+ links.add(anchor);
+ linkPanel.add(anchor);
}
if (idActive == null && side == Side.A) {
@@ -111,14 +125,13 @@
links.get(idActive.get()).setStyleName(style.selected());
}
- Anchor downloadLink = getDownloadLink();
+ Anchor downloadLink = createDownloadLink();
if (downloadLink != null) {
- linkPanel.add(new Label(" - "));
linkPanel.add(downloadLink);
}
}
- private void addLink(String label, final PatchSet.Id id) {
+ private Anchor createLink(String label, final PatchSet.Id id) {
final Anchor anchor = new Anchor(label);
anchor.addClickHandler(new ClickHandler() {
@Override
@@ -143,11 +156,10 @@
});
- links.add(anchor);
- linkPanel.add(anchor);
+ return anchor;
}
- private Anchor getDownloadLink() {
+ private Anchor createDownloadLink() {
boolean isCommitMessage = Patch.COMMIT_MSG.equals(script.getNewName());
if (isCommitMessage || (side == Side.A && 0 >= script.getA().size())
@@ -161,8 +173,14 @@
String sideURL = (side == Side.A) ? "1" : "0";
final String base = GWT.getHostPageBaseURL() + "cat/";
- final Anchor anchor = new Anchor(PatchUtil.C.download());
+ Image image = new Image(Gerrit.RESOURCES.downloadIcon());
+
+ final Anchor anchor = new Anchor();
anchor.setHref(base + KeyUtil.encode(key.toString()) + "^" + sideURL);
+ anchor.setTitle(PatchUtil.C.download());
+ anchor.setStyleName(style.downloadLink());
+ DOM.insertBefore(anchor.getElement(), image.getElement(),
+ DOM.getFirstChild(anchor.getElement()));
return anchor;
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml
index 2c4bd5d..2fd183c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchSetSelectBox.ui.xml
@@ -28,18 +28,21 @@
.wrapper {
width: 100%;
+ text-align: center;
+ font-size: 0; /* inline-block spacing fix */
}
- .patchSetLabel {
- font-weight: bold;
+ .linkPanel {
+ display: inline-block;
}
.linkPanel > div {
display: inline-block;
- padding: 3px;
+ float: left;
}
.linkPanel {
+ overflow: hidden; /* div clear fix */
font-size: 12px;
}
@@ -47,6 +50,27 @@
padding: 3px;
display: inline-block;
text-decoration: none;
+ float: left;
+ }
+
+ .patchSetLabel {
+ font-weight: bold;
+ float: left;
+ padding: 3px;
+ }
+
+ .sideMarker {
+ padding: 3px;
+ }
+
+ .downloadLink {
+ float: left;
+ padding: 1px !important;
+ margin-left: 3px;
+ }
+
+ .downloadLink > a {
+ text-size: 0;
}
.selected {
@@ -56,6 +80,7 @@
.sideMarker {
font-family: monospace;
+ float: left;
}
.hidden {
@@ -64,7 +89,10 @@
</ui:style>
<g:HTMLPanel styleName='wrapper'>
- <g:HTMLPanel styleName='{style.linkPanel}' ui:field='linkPanel'><span class='{style.patchSetLabel}'><ui:text from="{cons.patchSet}" /></span> <span class='{style.sideMarker}' ui:field='sideMarker'></span>: </g:HTMLPanel>
+ <g:HTMLPanel styleName='{style.linkPanel}' ui:field='linkPanel'>
+ <div class='{style.patchSetLabel}'><ui:text from="{cons.patchSet}" /></div>
+ <div class='{style.sideMarker}' ui:field='sideMarker'></div>
+ </g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderSideBySide.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderSideBySide.ui.xml
index 424e6e5..d6fd717 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderSideBySide.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderSideBySide.ui.xml
@@ -26,6 +26,7 @@
width: 100%;
background-color: trimColor;
overflow: hidden;
+ font-size: 0; /* inline-block spacing fix */
}
.wrapper .box {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderUnified.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderUnified.ui.xml
index e26e96a..24acfa3 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderUnified.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/patches/PatchTableHeaderUnified.ui.xml
@@ -24,6 +24,7 @@
.wrapper {
width: 100%;
background-color: trimColor;
+ font-size: 0; /* inline-block spacing fix */
}
.wrapper .box {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
index 7562fee..4d80193 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
@@ -856,7 +856,7 @@
} else {
errors.put(Error.UPDATE, ctl.getRefName());
}
- reject(cmd, "can not update the reference as a fast forward");
+ reject(cmd);
}
}