summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Hamalainen <mika.hamalainen@accenture.com>2011-08-03 09:51:44 +0300
committerMika Hamalainen <mika.hamalainen@accenture.com>2011-08-03 09:52:33 +0300
commit9e7eb6c453f05425562a40b7f97dc8db7f8e38d5 (patch)
tree05ac64474b0bec1bd6a4c9af79b9a8d6312dfe60
parentdb6cb1467ddc6f3f1618dc8da0a568a6b6769545 (diff)
v2.2.1 fix for topic reviews feature
Modified topic reviews to work with v2.2.1. Changed schema version to allow schema fixes for coming releases. Change-Id: I22d2715ed8c72a0c961b76c2a3f01f26bcbc655d
-rw-r--r--gerrit-common/src/main/java/com/google/gerrit/common/data/ApprovalDetail.java25
-rw-r--r--gerrit-common/src/main/java/com/google/gerrit/common/data/CommonDetail.java10
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java15
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java60
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java2
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties2
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java3
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/TopicLink.java2
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/AddReviewer.java2
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetPublishDetailFactory.java68
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/RestoreTopic.java6
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/SubmitAction.java48
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/TopicDetailFactory.java20
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java12
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/TopicUtil.java5
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java2
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java10
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java58
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java114
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java2
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_8111655.java (renamed from gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_99.java)4
21 files changed, 113 insertions, 357 deletions
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/ApprovalDetail.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/ApprovalDetail.java
index f06321bce1..15250daf9c 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/ApprovalDetail.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/ApprovalDetail.java
@@ -20,7 +20,6 @@ import com.google.gerrit.reviewdb.SetApproval;
import java.sql.Timestamp;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -68,34 +67,12 @@ public abstract class ApprovalDetail<T extends SetApproval<?>> {
}
}
return null;
+ }
public abstract Map<ApprovalCategory.Id, T> getApprovalMap();
public abstract void sortFirst();
- }
-
- public void approved(String label) {
- if (approved == null) {
- approved = new HashSet<String>();
- }
- approved.add(label);
- }
-
- public void rejected(String label) {
- if (rejected == null) {
- rejected = new HashSet<String>();
- }
- rejected.add(label);
- }
-
- public boolean isApproved(String label) {
- return approved != null && approved.contains(label);
- }
-
- public boolean isRejected(String label) {
- return rejected != null && rejected.contains(label);
- }
public abstract void add(final T ca);
}
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/CommonDetail.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/CommonDetail.java
index 4f6c14f4ed..a8aea7059f 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/CommonDetail.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/CommonDetail.java
@@ -31,7 +31,6 @@ public abstract class CommonDetail {
protected List<ChangeInfo> neededBy;
protected Set<ApprovalCategory.Id> missingApprovals;
protected boolean canSubmit;
- protected List<SubmitRecord> submitRecords;
public AccountInfoCache getAccounts() {
return accounts;
@@ -112,13 +111,4 @@ public abstract class CommonDetail {
public void setMissingApprovals(Set<ApprovalCategory.Id> a) {
missingApprovals = a;
}
-
-
- public void setSubmitRecords(List<SubmitRecord> all) {
- submitRecords = all;
- }
-
- public List<SubmitRecord> getSubmitRecords() {
- return submitRecords;
- }
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
index b5c2bcaa31..b3bfd8efc2 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
@@ -85,13 +85,13 @@ public class Dispatcher {
public static String toPatch(final String type, final Patch.Key id) {
return "patch," + type + "," + id.toString();
+ }
+
public static String toPublish(ChangeSet.Id cs) {
Topic.Id c = cs.getParentKey();
return "/t/" + c + "/" + cs.get() + ",publish";
}
- }
-
public static String toAccountGroup(final AccountGroup.Id id) {
return "admin,group," + id.toString();
}
@@ -131,7 +131,7 @@ public class Dispatcher {
} else if (token.startsWith("change,publish,")) {
publish(token);
- } else if (matchPrefix("/t/", token)) {
+ } else if (token.startsWith("/t/")) {
topic(token);
} else if (MINE.equals(token) || token.startsWith("mine,")) {
@@ -271,8 +271,9 @@ public class Dispatcher {
return new NotFoundScreen();
}
- private static void publish(String token) {
- String rest = skip(token);
+ private static void topic(final String token) {
+ final String p = "/t/";
+ String rest = skip(p, token);
int c = rest.lastIndexOf(',');
String panel = null;
if (0 <= c) {
@@ -316,6 +317,7 @@ public class Dispatcher {
}
}
+ private static void publish(String token) {
new AsyncSplit(token) {
public void onSuccess() {
Gerrit.display(token, select());
@@ -326,6 +328,9 @@ public class Dispatcher {
if (token.startsWith(p))
return new PublishCommentScreen(PatchSet.Id.parse(skip(p, token)));
return new NotFoundScreen();
+ }
+ }.onSuccess();
+ }
private static void publish(final ChangeSet.Id cs) {
String token = toPublish(cs);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
index a129664b65..cfc5a796dd 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
@@ -34,6 +34,7 @@ import com.google.gerrit.reviewdb.Account;
import com.google.gerrit.reviewdb.ApprovalCategory;
import com.google.gerrit.reviewdb.ApprovalCategoryValue;
import com.google.gerrit.reviewdb.Change;
+import com.google.gerrit.reviewdb.PatchSetApproval;
import com.google.gerrit.reviewdb.SetApproval;
import com.google.gerrit.reviewdb.Topic;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -134,46 +135,33 @@ public class ApprovalTable extends Composite {
return AccountDashboardLink.link(accountCache, id);
}
- public void display(final Change change, final Set<ApprovalCategory.Id> need,
- final List<ApprovalDetail> rows) {
- changeId = change.getId();
+ void display(ChangeDetail detail) {
+ List<PatchSetApprovalDetail> rows = detail.getApprovals();
+ topicId = null;
+ changeId = detail.getChange().getId();
+ display(detail.getChange().getStatus().isOpen(), rows);
+ }
+
+ void display(TopicDetail detail) {
+ List<ChangeSetApprovalDetail> rows = detail.getApprovals();
+ topicId = detail.getTopic().getId();
+ changeId = null;
+ display(detail.getTopic().getStatus().isOpen(), rows);
+ }
+
+ private <T extends SetApproval<?>, U extends ApprovalDetail<T>>
+ void display(final boolean open, final List<U> rows) {
+
if (rows.isEmpty()) {
table.setVisible(false);
} else {
table.resizeRows(1 + rows.size());
for (int i = 0; i < rows.size(); i++) {
- displayRow(i + 1, rows.get(i), change);
+ displayRow(i + 1, rows.get(i));
}
table.setVisible(true);
}
- display(detail.getTopic().getStatus().isOpen(), rows, detail.getSubmitRecords());
- }
-
- private <T extends SetApproval<?>, U extends ApprovalDetail<T>> void display(
- final boolean status, final List<U> rows,
- final List<SubmitRecord> records) {
- List<String> columns = new ArrayList<String>();
-
- final Element missingList = missing.getElement();
- while (DOM.getChildCount(missingList) > 0) {
- DOM.removeChild(missingList, DOM.getChild(missingList, 0));
- }
-
- missing.setVisible(false);
- if (need != null) {
- for (final ApprovalType at : types) {
- if (need.contains(at.getCategory().getId())) {
- final Element li = DOM.createElement("li");
- li.setClassName(Gerrit.RESOURCES.css().missingApproval());
- DOM.setInnerText(li, Util.M.needApproval(at.getCategory().getName(),
- at.getMax().formatValue(), at.getMax().getName()));
- DOM.appendChild(missingList, li);
- missing.setVisible(true);
- }
- }
- }
- addReviewer.setVisible(Gerrit.isSignedIn() && change.getStatus().isOpen());
}
private void doAddReviewer() {
@@ -222,7 +210,6 @@ public class ApprovalTable extends Composite {
final ChangeDetail r = result.getChange();
if (r != null) {
setAccountInfoCache(r.getAccounts());
- display(r.getChange(), r.getMissingApprovals(), r.getApprovals());
}
}
@@ -279,9 +266,10 @@ public class ApprovalTable extends Composite {
}
private <T extends SetApproval<?>, U extends ApprovalDetail<T>> void displayRow(
- final Change change) {
+ final int row, final U ad) {
final CellFormatter fmt = table.getCellFormatter();
- final Map<ApprovalCategory.Id, PatchSetApproval> am = ad.getApprovalMap();
+ final Account.Id aId = ad.getAccount();
+ final Map<ApprovalCategory.Id, T> am = ad.getApprovalMap();
final StringBuilder hint = new StringBuilder();
int col = 0;
@@ -309,7 +297,7 @@ public class ApprovalTable extends Composite {
for (final ApprovalType type : types) {
fmt.setStyleName(row, col, Gerrit.RESOURCES.css().approvalscore());
- final PatchSetApproval ca = am.get(type.getCategory().getId());
+ final T ca = am.get(type.getCategory().getId());
if (ca == null || ca.getValue() == 0) {
table.clearCell(row, col);
col++;
@@ -359,7 +347,7 @@ public class ApprovalTable extends Composite {
public void onSuccess(ReviewerResult result) {
if (result.getErrors().isEmpty()) {
final ChangeDetail r = result.getChange();
- display(r.getChange(), r.getMissingApprovals(), r.getApprovals());
+ display(r);
} else {
new ErrorDialog(result.getErrors().get(0).toString()).center();
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
index 202c94e175..31132e668b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
@@ -79,6 +79,8 @@ public interface ChangeConstants extends Constants {
String approvalTableReviewer();
String approvalTableAddReviewer();
+ String approvalTableRemoveNotPermitted();
+ String approvalTableCouldNotRemove();
String changeInfoBlockOwner();
String changeInfoBlockProject();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
index a2affefb48..33b7d7c58e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
@@ -56,6 +56,8 @@ changeScreenComments = Comments
approvalTableReviewer = Reviewer
approvalTableAddReviewer = Add Reviewer
+approvalTableRemoveNotPermitted = Not allowed to remove reviewer
+approvalTableCouldNotRemove = Could not remove reviewer
changeInfoBlockOwner = Owner
changeInfoBlockProject = Project
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
index 86df16c142..ea7c7e458b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
@@ -309,8 +309,7 @@ public class ChangeScreen extends Screen {
.getCurrentPatchSetDetail().getInfo(), detail.getAccounts());
dependsOn.display(detail.getDependsOn());
neededBy.display(detail.getNeededBy());
- approvals.display(detail.getChange(), detail.getMissingApprovals(), detail
- .getApprovals());
+ approvals.display(detail);
for (PatchSet pId : detail.getPatchSets()) {
if (patchesList != null) {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/TopicLink.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/TopicLink.java
index 21a48f9fe2..a9cda57e6b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/TopicLink.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/TopicLink.java
@@ -25,7 +25,7 @@ public class TopicLink extends InlineHyperlink {
private final Topic.Id topicId;
public static String permalink(final Topic.Id t) {
- return GWT.getHostPageBaseURL() + "/t/" + t.get() + "/";
+ return GWT.getHostPageBaseURL() + "/topic," + t.get() + "/";
}
public TopicLink(String topic, Topic.Id topicId) {
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/AddReviewer.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/AddReviewer.java
index 8e15d78dde..b86f8e5474 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/AddReviewer.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/AddReviewer.java
@@ -130,6 +130,4 @@ class AddReviewer extends Handler<ReviewerResult> {
result.setChange(changeDetailFactory.create(changeId).call());
return result;
}
-
- }
}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetPublishDetailFactory.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetPublishDetailFactory.java
index e80cbcdb12..daa8caf205 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetPublishDetailFactory.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetPublishDetailFactory.java
@@ -18,7 +18,6 @@ import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.common.data.ApprovalTypes;
import com.google.gerrit.common.data.ChangeSetPublishDetail;
import com.google.gerrit.common.data.PermissionRange;
-import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.common.errors.NoSuchEntityException;
import com.google.gerrit.httpd.rpc.Handler;
import com.google.gerrit.reviewdb.ChangeSet;
@@ -28,6 +27,7 @@ import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.reviewdb.Topic;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountInfoCacheFactory;
+import com.google.gerrit.server.project.CanSubmitResult;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.NoSuchTopicException;
@@ -103,75 +103,23 @@ final class ChangeSetPublishDetailFactory extends Handler<ChangeSetPublishDetail
if (topic.getStatus().isOpen()
&& changeSetId.equals(topic.currentChangeSetId())) {
- Map<String, PermissionRange> rangeByName =
- new HashMap<String, PermissionRange>();
- for (PermissionRange r : control.getLabelRanges()) {
- if (r.isLabel()) {
- rangeByName.put(r.getLabel(), r);
- }
- }
- allowed = new ArrayList<PermissionRange>();
+ allowed = new ArrayList<PermissionRange>(control.getLabelRanges());
+ Collections.sort(allowed);
given = db.changeSetApprovals() //
.byChangeSetUser(changeSetId, user.getAccountId()) //
.toList();
-
- boolean couldSubmit = false;
- List<SubmitRecord> submitRecords = control.canSubmit(db, changeSetId,
- changeControlFactory, approvalTypes, topicFunctionState);
- for (SubmitRecord rec : submitRecords) {
- if (rec.status == SubmitRecord.Status.OK) {
- couldSubmit = true;
- }
-
- if (rec.labels != null) {
- int ok = 0;
-
- for (SubmitRecord.Label lbl : rec.labels) {
- boolean canMakeOk = false;
- PermissionRange range = rangeByName.get(lbl.label);
- if (range != null) {
- if (!allowed.contains(range)) {
- allowed.add(range);
- }
-
- ApprovalType at = approvalTypes.byLabel(lbl.label);
- if (at != null && at.getMax().getValue() == range.getMax()) {
- canMakeOk = true;
- } else if (at == null) {
- canMakeOk = true;
- }
- }
-
- switch (lbl.status) {
- case OK:
- ok++;
- break;
-
- case NEED:
- if (canMakeOk) {
- ok++;
- }
- break;
- }
- }
-
- if (rec.status == SubmitRecord.Status.NOT_READY
- && ok == rec.labels.size()) {
- couldSubmit = true;
- }
- }
- }
-
- if (couldSubmit && control.getRefControl().canSubmit()) {
- detail.setCanSubmit(true);
- }
}
detail.setLabels(allowed);
detail.setGiven(given);
detail.setAccounts(aic.create());
+ final CanSubmitResult canSubmitResult = control.canSubmit(changeSetId);
+ if (canSubmitResult == CanSubmitResult.OK) {
+ detail.setCanSubmit(true);
+ }
+
return detail;
}
}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/RestoreTopic.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/RestoreTopic.java
index f5892d5e65..521cf05431 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/RestoreTopic.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/RestoreTopic.java
@@ -21,8 +21,8 @@ import com.google.gerrit.httpd.rpc.Handler;
import com.google.gerrit.reviewdb.*;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.TopicUtil;
+import com.google.gerrit.server.mail.AbandonedSender;
import com.google.gerrit.server.mail.EmailException;
-import com.google.gerrit.server.mail.RestoredSender;
import com.google.gerrit.server.project.InvalidChangeOperationException;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.NoSuchTopicException;
@@ -41,7 +41,7 @@ class RestoreTopic extends Handler<TopicDetail> {
private final TopicControl.Factory topicControlFactory;
private final ReviewDb db;
private final IdentifiedUser currentUser;
- private final RestoredSender.Factory restoredSenderFactory;
+ private final AbandonedSender.Factory restoredSenderFactory;
private final TopicDetailFactory.Factory topicDetailFactory;
private final ChangeSet.Id changeSetId;
@@ -53,7 +53,7 @@ class RestoreTopic extends Handler<TopicDetail> {
@Inject
RestoreTopic(final TopicControl.Factory topicControlFactory,
final ReviewDb db, final IdentifiedUser currentUser,
- final RestoredSender.Factory restoredSenderFactory,
+ final AbandonedSender.Factory restoredSenderFactory,
final TopicDetailFactory.Factory topicDetailFactory,
@Assisted final ChangeSet.Id changeSetId,
@Assisted @Nullable final String message, final ChangeHookRunner hooks) {
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/SubmitAction.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/SubmitAction.java
index af0c83b820..c9a9fad309 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/SubmitAction.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/SubmitAction.java
@@ -15,7 +15,6 @@
package com.google.gerrit.httpd.rpc.topic;
import com.google.gerrit.common.data.ApprovalTypes;
-import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.common.data.TopicDetail;
import com.google.gerrit.common.errors.NoSuchEntityException;
import com.google.gerrit.httpd.rpc.Handler;
@@ -26,6 +25,7 @@ import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.TopicUtil;
import com.google.gerrit.server.git.MergeOp;
import com.google.gerrit.server.git.MergeQueue;
+import com.google.gerrit.server.project.CanSubmitResult;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.NoSuchTopicException;
@@ -87,51 +87,13 @@ class SubmitAction extends Handler<TopicDetail> {
final TopicControl topicControl =
topicControlFactory.validateFor(topicId);
- List<SubmitRecord> result = topicControl.canSubmit(db, changeSetId, changeControlFactory,
+ CanSubmitResult result = topicControl.canSubmit(db, changeSetId, changeControlFactory,
approvalTypes, topicFunctionState);
- if (result.isEmpty()) {
- throw new IllegalStateException("Cannot submit");
- }
-
- switch (result.get(0).status) {
- case OK:
+ if (result == CanSubmitResult.OK) {
TopicUtil.submit(changeSetId, user, db, opFactory, merger);
return topicDetailFactory.create(topicId).call();
-
- case NOT_READY: {
- for (SubmitRecord.Label lbl : result.get(0).labels) {
- switch (lbl.status) {
- case OK:
- break;
-
- case REJECT:
- throw new IllegalStateException("Blocked by " + lbl.label);
-
- case NEED:
- throw new IllegalStateException("Needs " + lbl.label);
-
- case IMPOSSIBLE:
- throw new IllegalStateException("Cannnot submit, check project access");
-
- default:
- throw new IllegalArgumentException("Unknown status " + lbl.status);
- }
- }
- throw new IllegalStateException("Cannot submit");
- }
-
- case CLOSED:
- throw new IllegalStateException("Topic is closed");
-
- case RULE_ERROR:
- if (result.get(0).errorMessage != null) {
- throw new IllegalStateException(result.get(0).errorMessage);
- } else {
- throw new IllegalStateException("Internal rule error");
- }
-
- default:
- throw new IllegalStateException("Uknown status " + result.get(0).status);
+ } else {
+ throw new IllegalStateException(result.getMessage());
}
}
}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/TopicDetailFactory.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/TopicDetailFactory.java
index 367afae190..625965396c 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/TopicDetailFactory.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/TopicDetailFactory.java
@@ -18,7 +18,6 @@ import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.common.data.ApprovalTypes;
import com.google.gerrit.common.data.ChangeInfo;
import com.google.gerrit.common.data.ChangeSetApprovalDetail;
-import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.common.data.TopicDetail;
import com.google.gerrit.common.errors.NoSuchEntityException;
import com.google.gerrit.httpd.rpc.Handler;
@@ -38,6 +37,7 @@ import com.google.gerrit.reviewdb.TopicMessage;
import com.google.gerrit.server.AnonymousUser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountInfoCacheFactory;
+import com.google.gerrit.server.project.CanSubmitResult;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.NoSuchTopicException;
@@ -107,6 +107,7 @@ public class TopicDetailFactory extends Handler<TopicDetail> {
if (changeSet == null) {
throw new NoSuchEntityException();
}
+ final CanSubmitResult canSubmitResult = control.canSubmit(changeSet.getId());
aic.want(topic.getOwner());
@@ -120,22 +121,7 @@ public class TopicDetailFactory extends Handler<TopicDetail> {
topicId));
detail.setCanRevert(topic.getStatus() == AbstractEntity.Status.MERGED && control.canAddChangeSet());
-
- if (detail.getTopic().getStatus().isOpen()) {
- List<SubmitRecord> submitRecords = control.canSubmit(db, changeSet.getId(),
- changeControlFactory, approvalTypes, functionState);
- for (SubmitRecord rec : submitRecords) {
- if (rec.labels != null) {
- for (SubmitRecord.Label lbl : rec.labels) {
- aic.want(lbl.appliedBy);
- }
- }
- if (rec.status == SubmitRecord.Status.OK && control.getRefControl().canSubmit()) {
- detail.setCanSubmit(true);
- }
- }
- detail.setSubmitRecords(submitRecords);
- }
+ detail.setCanSubmit(canSubmitResult == CanSubmitResult.OK);
loadChangeSets();
loadMessages();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
index 3903d77e95..5ad8431127 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
@@ -216,7 +216,7 @@ public class ChangeUtil {
public static void abandon(final PatchSet.Id patchSetId,
final IdentifiedUser user, final String message, final ReviewDb db,
- final AbandonedSender.Factory abandonedSenderFactory,
+ final AbandonedSender.Factory senderFactory,
final ChangeHookRunner hooks) throws NoSuchChangeException,
InvalidChangeOperationException, EmailException, OrmException {
abandon(patchSetId, user, message, db, senderFactory, hooks, true);
@@ -274,7 +274,7 @@ public class ChangeUtil {
db.patchSetApprovals().update(approvals);
// Email the reviewers
- final AbandonedSender cm = abandonedSenderFactory.create(updatedChange);
+ final AbandonedSender cm = senderFactory.create(updatedChange);
cm.setFrom(user.getAccountId());
cm.setChangeMessage(cmsg);
cm.send();
@@ -412,7 +412,7 @@ public class ChangeUtil {
public static void restore(final PatchSet.Id patchSetId,
final IdentifiedUser user, final String message, final ReviewDb db,
- final AbandonedSender.Factory abandonedSenderFactory,
+ final AbandonedSender.Factory senderFactory,
final ChangeHookRunner hooks) throws NoSuchChangeException,
InvalidChangeOperationException, EmailException, OrmException {
restore(patchSetId, user, message, db, senderFactory, hooks, true);
@@ -420,7 +420,7 @@ public class ChangeUtil {
public static void restore(final PatchSet.Id patchSetId,
final IdentifiedUser user, final String message, final ReviewDb db,
- final RestoredSender.Factory senderFactory,
+ final AbandonedSender.Factory senderFactory,
final ChangeHookRunner hooks, final boolean sendMail) throws NoSuchChangeException,
InvalidChangeOperationException, EmailException, OrmException {
final Change.Id changeId = patchSetId.getParentKey();
@@ -460,7 +460,6 @@ public class ChangeUtil {
"Change is not abandoned or patchset is not latest");
}
- final boolean sendMail, final String err)
db.changeMessages().insert(Collections.singleton(cmsg));
final List<PatchSetApproval> approvals =
@@ -471,12 +470,13 @@ public class ChangeUtil {
db.patchSetApprovals().update(approvals);
// Email the reviewers
- final AbandonedSender cm = abandonedSenderFactory.create(updatedChange);
+ final AbandonedSender cm = senderFactory.create(updatedChange);
cm.setFrom(user.getAccountId());
cm.setChangeMessage(cmsg);
cm.send();
hooks.doChangeRestoreHook(updatedChange, user.getAccount(), message);
+ }
public static Set<Account.Id> addReviewers(final Set<Account.Id> reviewerIds, final ReviewDb db,
final PatchSet.Id psid, final ApprovalCategory.Id addReviewerCategoryId,
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/TopicUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/TopicUtil.java
index 41e6ecb6b0..fba6ce0ac4 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/TopicUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/TopicUtil.java
@@ -44,7 +44,6 @@ import com.google.gerrit.server.project.TopicControl;
import com.google.gerrit.server.mail.AbandonedSender;
import com.google.gerrit.server.mail.AddReviewerSender;
import com.google.gerrit.server.mail.EmailException;
-import com.google.gerrit.server.mail.RestoredSender;
import com.google.gerrit.server.mail.RevertedSender;
import com.google.gwtorm.client.AtomicUpdate;
import com.google.gwtorm.client.OrmConcurrencyException;
@@ -300,7 +299,7 @@ public class TopicUtil {
public static void restore(final ChangeSet.Id changeSetId,
final IdentifiedUser user, final String message, final ReviewDb db,
- final RestoredSender.Factory restoredSenderFactory,
+ final AbandonedSender.Factory restoredSenderFactory,
final ChangeHookRunner hooks) throws NoSuchChangeException,
NoSuchTopicException, InvalidChangeOperationException,
EmailException, OrmException {
@@ -363,7 +362,7 @@ public class TopicUtil {
// TODO Topic support in AbandonedSender
// Meanwhile, sending mails in "behalf" of the last change of the topic
if (lastChange != null) {
- final RestoredSender cm = restoredSenderFactory.create(lastChange);
+ final AbandonedSender cm = restoredSenderFactory.create(lastChange);
cm.setFrom(user.getAccountId());
cm.setTopicMessage(tmsg);
cm.send();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
index 1bd02c5db4..69611baa98 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
@@ -188,7 +188,7 @@ public class ProjectConfig extends VersionedMetaData {
p.setUseContributorAgreements(rc.getBoolean(RECEIVE, KEY_REQUIRE_CONTRIBUTOR_AGREEMENT, false));
p.setUseSignedOffBy(rc.getBoolean(RECEIVE, KEY_REQUIRE_SIGNED_OFF_BY, false));
p.setRequireChangeID(rc.getBoolean(RECEIVE, KEY_REQUIRE_CHANGE_ID, false));
- p.setAllowTopicReview(getBoolean(rc, RECEIVE, KEY_ALLOW_TOPIC_REVIEW, false));
+ p.setAllowTopicReview(rc.getBoolean(RECEIVE, KEY_ALLOW_TOPIC_REVIEW, false));
p.setSubmitType(rc.getEnum(SUBMIT, null, KEY_ACTION, defaultSubmitAction));
p.setUseContentMerge(rc.getBoolean(SUBMIT, null, KEY_MERGE_CONTENT, false));
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 733d69015b..dd89a5a44a 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
@@ -920,7 +920,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
return;
}
- requestReplace(cmd, changeEnt, newCommit);
+ requestReplace(cmd, changeEnt, newCommit, null, 0);
}
private boolean requestReplace(final ReceiveCommand cmd, final Change change,
@@ -940,7 +940,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
ChangeSet.Id csId = topic != null ? topic.currentChangeSetId() : null;
final ReplaceRequest req =
- new ReplaceRequest(change.getId(), newCommit, cmd);
+ new ReplaceRequest(change.getId(), newCommit, cmd,
topicId, csId, pos);
if (replaceByChange.containsKey(req.ontoChange)) {
reject(cmd, "duplicate request");
@@ -1229,7 +1229,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
//
for (Change c : toReplace.keySet()) {
final int position = cOrder.indexOf(toReplace.get(c)) + toUpdate.size();
- if (requestReplace(newChange, false, c, toReplace.get(c), t, position)) {
+ if (requestReplace(newChange, c, toReplace.get(c), t, position)) {
continue;
} else {
if (t != null) restoreOnTopicError(t);
@@ -1942,7 +1942,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
final int position;
ReplaceRequest(final Change.Id toChange, final RevCommit newCommit,
- final ReceiveCommand cmd) {
+ final ReceiveCommand cmd,
final Topic.Id topicId, final ChangeSet.Id csId,
final int position) {
this.ontoChange = toChange;
@@ -2216,7 +2216,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
for (final String changeId : c.getFooterLines(CHANGE_ID)) {
final Change.Id onto = byKey.get(new Change.Key(changeId.trim()));
if (onto != null) {
- toClose.add(new ReplaceRequest(onto, c, cmd));
+ toClose.add(new ReplaceRequest(onto, c, cmd, null, null, 0));
break;
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
index 4165c1e6db..fcf7455ba7 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
@@ -219,59 +219,12 @@ public class ChangeControl {
/** @return {@link CanSubmitResult#OK}, or a result with an error message. */
public CanSubmitResult canSubmit(final PatchSet.Id patchSetId) {
- return canSubmit(db, patchSetId, false);
+ return canSubmit(patchSetId, false);
}
-
- public CanSubmitResult canSubmit(final PatchSet.Id patchSetId) {
- if (change.getStatus().isClosed()) {
- return new CanSubmitResult("Change " + change.getId() + " is closed");
- }
- if (!patchSetId.equals(change.currentPatchSetId())) {
- return new CanSubmitResult("Patch set " + patchSetId + " is not current");
- }
- if (!getRefControl().canSubmit()) {
- return new CanSubmitResult("User does not have permission to submit");
- }
- if (!(getCurrentUser() instanceof IdentifiedUser)) {
- return new CanSubmitResult("User is not signed-in");
- }
- return CanSubmitResult.OK;
- }
-
- /** @return {@link CanSubmitResult#OK}, or a result with an error message. */
- public CanSubmitResult canSubmit(final PatchSet.Id patchSetId, final ReviewDb db,
- final ApprovalTypes approvalTypes,
- FunctionState.Factory functionStateFactory)
- throws OrmException {
-
- CanSubmitResult result = canSubmit(patchSetId);
- if (result != CanSubmitResult.OK) {
- return result;
- }
-
- final List<PatchSetApproval> all =
- db.patchSetApprovals().byPatchSet(patchSetId).toList();
-
- final FunctionState fs =
- functionStateFactory.create(change, patchSetId, all);
-
- for (ApprovalType c : approvalTypes.getApprovalTypes()) {
- CategoryFunction.forCategory(c.getCategory()).run(c, fs);
- }
- for (ApprovalType type : approvalTypes.getApprovalTypes()) {
- if (!fs.isValid(type)) {
- return new CanSubmitResult("Requires " + type.getCategory().getName());
- }
- }
-
- return CanSubmitResult.OK;
- }
-}
-
-
- public List<SubmitRecord> canSubmit(ReviewDb db, PatchSet.Id patchSetId,
- boolean fromTopic) {
+ public CanSubmitResult canSubmit(final PatchSet.Id patchSetId,
+ final boolean fromTopic) {
+ // FIXME Add topic handling
if (change.getStatus().isClosed()) {
return new CanSubmitResult("Change " + change.getId() + " is closed");
}
@@ -280,9 +233,6 @@ public class ChangeControl {
}
if (!getRefControl().canSubmit()) {
return new CanSubmitResult("User does not have permission to submit");
- rec.status = SubmitRecord.Status.NOT_READY;
-
- } else if ("ok".equals(submitRecord.name())) {
}
if (!(getCurrentUser() instanceof IdentifiedUser)) {
return new CanSubmitResult("User is not signed-in");
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
index 82b8513331..83cb4d2676 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
@@ -17,16 +17,18 @@ package com.google.gerrit.server.project;
import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.common.data.ApprovalTypes;
import com.google.gerrit.common.data.PermissionRange;
-import com.google.gerrit.common.data.SubmitRecord;
import com.google.gerrit.reviewdb.Change;
import com.google.gerrit.reviewdb.ChangeSet;
import com.google.gerrit.reviewdb.ChangeSetApproval;
import com.google.gerrit.reviewdb.ChangeSetElement;
+import com.google.gerrit.reviewdb.PatchSetApproval;
import com.google.gerrit.reviewdb.Project;
import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.reviewdb.Topic;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
+import com.google.gerrit.server.workflow.CategoryFunction;
+import com.google.gerrit.server.workflow.FunctionState;
import com.google.gerrit.server.workflow.TopicCategoryFunction;
import com.google.gerrit.server.workflow.TopicFunctionState;
import com.google.gwtorm.client.OrmException;
@@ -154,7 +156,7 @@ public class TopicControl {
return isOwner() // owner (aka creator) of the change can abandon
|| getRefControl().isOwner() // branch owner can abandon
|| getProjectControl().isOwner() // project owner can abandon
- || getCurrentUser().getCapabilities().canAdministrateServer() // site administers are god
+ || getCurrentUser().isAdministrator() // site administers are god
;
}
@@ -209,7 +211,7 @@ public class TopicControl {
//
if (getRefControl().isOwner() // branch owner
|| getProjectControl().isOwner() // project owner
- || getCurrentUser().getCapabilities().canAdministrateServer()) {
+ || getCurrentUser().isAdministrator()) {
return true;
}
}
@@ -217,99 +219,47 @@ public class TopicControl {
return false;
}
- public List<SubmitRecord> canSubmit(ReviewDb db, ChangeSet.Id changeSetId,
+ public CanSubmitResult canSubmit(ReviewDb db, ChangeSet.Id changeSetId,
final ChangeControl.Factory changeControlFactory,
final ApprovalTypes approvalTypes, final TopicFunctionState.Factory functionStateFactory)
throws NoSuchChangeException, OrmException {
- if (topic.getStatus().isClosed()) {
- SubmitRecord rec = new SubmitRecord();
- rec.status = SubmitRecord.Status.CLOSED;
- return Collections.singletonList(rec);
- }
-
- if (!changeSetId.equals(topic.currentChangeSetId())) {
- SubmitRecord rec = new SubmitRecord();
- rec.status = SubmitRecord.Status.RULE_ERROR;
- rec.errorMessage = "Patch set " + changeSetId + " is not current";
- return Collections.singletonList(rec);
- }
-
- boolean doSubmit = true;
- final List<ChangeSetElement> topicChangeSet = db.changeSetElements().byChangeSet(changeSetId).toList();
- List<Change> changesInTopic = new ArrayList<Change>();
- for (ChangeSetElement cse : topicChangeSet) {
- changesInTopic.add(db.changes().get(cse.getChangeId()));
+ CanSubmitResult result = canSubmit(changeSetId);
+ if (result != CanSubmitResult.OK) {
+ return result;
}
- for (Change change : changesInTopic) {
- ChangeControl cc = changeControlFactory.controlFor(change);
- List<SubmitRecord> result = cc.canSubmit(db, change.currentPatchSetId(), true);
- if (result.isEmpty()) {
- throw new IllegalStateException("Cannot submit");
- }
- SubmitRecord rec = new SubmitRecord();
- if (result.get(0).status.equals(SubmitRecord.Status.NOT_READY)) {
- for (SubmitRecord.Label lbl : result.get(0).labels) {
- switch (lbl.status) {
- case OK:
- case NEED:
- break;
- default:
- rec.status = result.get(0).status;
- doSubmit = false;
- }
- }
- } else if (!result.get(0).status.equals(SubmitRecord.Status.OK)) {
- rec.status = result.get(0).status;
- doSubmit = false;
- }
- }
-
- // TODO This checks must be done using the new Prolog implementation
- // Now we need to properly check if the topic can be submitted
- //
final List<ChangeSetApproval> all =
db.changeSetApprovals().byChangeSet(changeSetId).toList();
final TopicFunctionState fs =
- functionStateFactory.create(topic, changeSetId, all);
+ functionStateFactory.create(topic, changeSetId, all);
+
+ for (ApprovalType c : approvalTypes.getApprovalTypes()) {
+ TopicCategoryFunction.forCategory(c.getCategory()).run(c, fs);
+ }
- List<SubmitRecord.Label> labels = new ArrayList<SubmitRecord.Label>();
- SubmitRecord rec = new SubmitRecord();
- rec.status = SubmitRecord.Status.NOT_READY;
for (ApprovalType type : approvalTypes.getApprovalTypes()) {
- TopicCategoryFunction.forCategory(type.getCategory()).run(type, fs);
- SubmitRecord.Label label = new SubmitRecord.Label();
- label.label = type.getCategory().getLabelName();
- label.status = SubmitRecord.Label.Status.NEED;
- labels.add(label);
- for (final ChangeSetApproval csa : fs.getApprovals(type)) {
- if (!fs.isValid(type)) {
- rec.status = SubmitRecord.Status.NOT_READY;
- if (type.isMaxNegative(csa)) {
- label.status = SubmitRecord.Label.Status.REJECT;
- label.appliedBy = csa.getAccountId();
- }
- } else {
- if (type.isMaxPositive(csa)) {
- label.status = SubmitRecord.Label.Status.OK;
- label.appliedBy = csa.getAccountId();
- }
- }
+ if (!fs.isValid(type)) {
+ return new CanSubmitResult("Requires " + type.getCategory().getName());
}
}
- rec.labels = labels;
+ return CanSubmitResult.OK;
+ }
- if (doSubmit) {
- rec.status = SubmitRecord.Status.OK;
- for (SubmitRecord.Label lbl : labels) {
- if (!lbl.status.equals(SubmitRecord.Label.Status.OK)) {
- rec.status = SubmitRecord.Status.NOT_READY;
- break;
- }
- }
- } else rec.status = SubmitRecord.Status.NOT_READY;
- return Collections.singletonList(rec);
+ public CanSubmitResult canSubmit(ChangeSet.Id changeSetId) {
+ if (topic.getStatus().isClosed()) {
+ return new CanSubmitResult("topic " + topic.getId() + " is closed");
+ }
+ if (!changeSetId.equals(topic.currentChangeSetId())) {
+ return new CanSubmitResult("Change set " + changeSetId + " is not current");
+ }
+ if (!getRefControl().canSubmit()) {
+ return new CanSubmitResult("User does not have permission to submit");
+ }
+ if (!(getCurrentUser() instanceof IdentifiedUser)) {
+ return new CanSubmitResult("User is not signed-in");
+ }
+ return CanSubmitResult.OK;
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java
index b8fe184cc1..1fc51b0129 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersion.java
@@ -32,7 +32,7 @@ import java.util.List;
/** A version of the database schema. */
public abstract class SchemaVersion {
/** The current schema version. */
- private static final Class<? extends SchemaVersion> C = Schema_98.class;
+ private static final Class<? extends SchemaVersion> C = Schema_8111655.class;
public static class Module extends AbstractModule {
@Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_99.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_8111655.java
index 32ad7d1720..45841200a2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_99.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_8111655.java
@@ -17,9 +17,9 @@ package com.google.gerrit.server.schema;
import com.google.inject.Inject;
import com.google.inject.Provider;
-public class Schema_99 extends SchemaVersion {
+public class Schema_8111655 extends SchemaVersion {
@Inject
- Schema_99(Provider<Schema_58> prior) {
+ Schema_8111655(Provider<Schema_55> prior) {
super(prior);
}
} \ No newline at end of file