Adapt to gerrit master Remove GWT UI and add gwtorm as new dependency. Except extending the build documentation, the documentation wasn't adapted in this change. Change-Id: Ib8a0a503715d6ee381b06cf52909282a1958a5e0
diff --git a/BUILD b/BUILD index 4de410f..c3ea47d 100644 --- a/BUILD +++ b/BUILD
@@ -12,7 +12,6 @@ gerrit_plugin( name = "verify-status", srcs = glob(["src/main/java/**/*.java"]), - gwt_module = "com.googlesource.gerrit.plugins.verifystatus.VerifyStatusForm", manifest_entries = [ "Gerrit-PluginName: verify-status", "Gerrit-Module: com.googlesource.gerrit.plugins.verifystatus.GlobalModule", @@ -23,7 +22,8 @@ "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/verify-status", ], resource_jars = [":gr-verify-status-static"], - resources = glob(["src/main/**/*"]), + resources = glob(["src/main/resources/**/*"]), + deps = ["@gwtorm//jar"], ) junit_tests(
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl new file mode 100644 index 0000000..54c792c --- /dev/null +++ b/external_plugin_deps.bzl
@@ -0,0 +1,9 @@ +load("//tools/bzl:maven_jar.bzl", "maven_jar") + +def external_plugin_deps(): + maven_jar( + name = "gwtorm", + artifact = "com.google.gerrit:gwtorm:1.20", + sha1 = "a4809769b710bc8ce3f203125630b8419f0e58b0", + src_sha1 = "cb63296276ce3228b2d83a37017a99e38ad8ed42", + )
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/HttpModule.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/HttpModule.java index cf557ba..d1f2fa5 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/HttpModule.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/HttpModule.java
@@ -15,7 +15,6 @@ package com.googlesource.gerrit.plugins.verifystatus; import com.google.gerrit.extensions.registration.DynamicSet; -import com.google.gerrit.extensions.webui.GwtPlugin; import com.google.gerrit.extensions.webui.JavaScriptPlugin; import com.google.gerrit.extensions.webui.WebUiPlugin; import com.google.inject.servlet.ServletModule; @@ -23,7 +22,6 @@ class HttpModule extends ServletModule { @Override protected void configureServlets() { - DynamicSet.bind(binder(), WebUiPlugin.class).toInstance(new GwtPlugin("verifystatus")); DynamicSet.bind(binder(), WebUiPlugin.class) .toInstance(new JavaScriptPlugin("gr-verify-status.html")); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/PostVerification.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/PostVerification.java index 18d2da7..ec481f9 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/PostVerification.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/PostVerification.java
@@ -21,7 +21,6 @@ import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; -import com.google.gerrit.reviewdb.client.LabelId; import com.google.gerrit.server.change.RevisionResource; import com.google.gerrit.server.util.time.TimeUtil; import com.google.gwtorm.server.OrmException; @@ -31,6 +30,9 @@ import com.googlesource.gerrit.plugins.verifystatus.common.VerificationInfo; import com.googlesource.gerrit.plugins.verifystatus.common.VerifyInput; import com.googlesource.gerrit.plugins.verifystatus.server.CiDb; +import com.googlesource.gerrit.plugins.verifystatus.server.DbChangeId; +import com.googlesource.gerrit.plugins.verifystatus.server.DbLabelId; +import com.googlesource.gerrit.plugins.verifystatus.server.DbPatchSetId; import com.googlesource.gerrit.plugins.verifystatus.server.PatchSetVerification; import java.sql.Timestamp; import java.util.List; @@ -131,11 +133,12 @@ } else { // add new result String job_id = UUID.randomUUID().toString(); - c = - new PatchSetVerification( - new PatchSetVerification.Key(resource.getPatchSet().getId(), new LabelId(job_id)), - value, - ts); + DbPatchSetId patchSetId = + new DbPatchSetId( + new DbChangeId(resource.getPatchSet().id().changeId().get()), + resource.getPatchSet().id().get()); + DbLabelId labelId = new DbLabelId(job_id); + c = new PatchSetVerification(new PatchSetVerification.Key(patchSetId, labelId), value, ts); c.setAbstain(ent.getValue().abstain); c.setRerun(ent.getValue().rerun); c.setUrl(ent.getValue().url); @@ -153,11 +156,14 @@ return !ups.isEmpty(); } - private Map<String, PatchSetVerification> scanLabels(RevisionResource resource, CiDb db) + private Map<String, PatchSetVerification> scanLabels(RevisionResource rsrc, CiDb db) throws OrmException { Map<String, PatchSetVerification> current = Maps.newHashMap(); - for (PatchSetVerification v : - db.patchSetVerifications().byPatchSet(resource.getPatchSet().getId())) { + DbPatchSetId id = + new DbPatchSetId( + new DbChangeId(rsrc.getPatchSet().id().changeId().get()), + rsrc.getPatchSet().id().get()); + for (PatchSetVerification v : db.patchSetVerifications().byPatchSet(id)) { current.put(v.getJobId().get(), v); } return current;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/SaveCommand.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/SaveCommand.java index 1254421..5bb2d9b 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/SaveCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/SaveCommand.java
@@ -19,10 +19,11 @@ import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.Maps; +import com.google.gerrit.entities.PatchSet; +import com.google.gerrit.exceptions.StorageException; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.restapi.IdString; import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.server.change.RevisionResource; import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.server.project.ProjectState; @@ -63,7 +64,7 @@ patchSets.add(ps); } catch (UnloggedFailure e) { throw new IllegalArgumentException(e.getMessage(), e); - } catch (OrmException e) { + } catch (StorageException e) { throw new IllegalArgumentException("database error", e); } } @@ -149,8 +150,7 @@ throws RestApiException, OrmException, IOException, PermissionBackendException { RevisionResource revResource = revisions.parse( - changes.parse(patchSet.getId().getParentKey()), - IdString.fromUrl(patchSet.getId().getId())); + changes.parse(patchSet.id().changeId()), IdString.fromUrl(patchSet.id().getId())); postVerification.apply(revResource, verify); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/ConfigInfo.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/ConfigInfo.java deleted file mode 100644 index 2d3f1db..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/ConfigInfo.java +++ /dev/null
@@ -1,61 +0,0 @@ -// Copyright (C) 2016 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gwt.core.client.JavaScriptObject; - -public class ConfigInfo extends JavaScriptObject { - final native boolean - showJobsSummaryPanel() /*-{ return this.show_jobs_summary_panel ? true : false; }-*/; - - final native boolean showJobsPanel() /*-{ return this.show_jobs_panel ? true : false; }-*/; - - final native boolean - showJobsDropDownPanel() /*-{ return this.show_jobs_drop_down_panel ? true : false; }-*/; - - final native boolean - showJobsBelowRelatedInfoBlock() /*-{ return this.show_jobs_below_related_info_block ? true : false; }-*/; - - final native boolean - enableInProgressStatus() /*-{ return this.enable_in_progress_status ? true : false; }-*/; - - final native String sortJobsPanel() /*-{ return this.sort_jobs_panel }-*/; - - final native String sortJobsDropDownPanel() /*-{ return this.sort_jobs_drop_down_panel }-*/; - - final native void setShowJobsSummaryPanel(boolean s) /*-{ this.show_jobs_summary_panel = s; }-*/; - - final native void setShowJobsPanel(boolean s) /*-{ this.show_jobs_panel = s; }-*/; - - final native void setShowJobsDropDownPanel( - boolean s) /*-{ this.show_jobs_drop_down_panel = s; }-*/; - - final native void setShowJobsBelowRelatedInfoBlock( - boolean s) /*-{ this.show_jobs_below_related_info_block = s; }-*/; - - final native void setEnableInProgressStatus() /*-{ this.enable_in_progress_status = s; }-*/; - - final native void setSortJobsPanel(String s) /*-{ this.sort_jobs_panel = s; }-*/; - - final native void setSortJobsDropDownPanel( - String s) /*-{ this.sort_jobs_drop_down_panel = s; }-*/; - - static ConfigInfo create() { - ConfigInfo g = (ConfigInfo) createObject(); - return g; - } - - protected ConfigInfo() {} -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsDropDownPanel.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsDropDownPanel.java deleted file mode 100644 index 320ab2c..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsDropDownPanel.java +++ /dev/null
@@ -1,126 +0,0 @@ -// Copyright (C) 2015 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gerrit.client.GerritUiExtensionPoint; -import com.google.gerrit.client.info.ChangeInfo; -import com.google.gerrit.client.info.ChangeInfo.RevisionInfo; -import com.google.gerrit.client.rpc.NativeMap; -import com.google.gerrit.plugin.client.FormatUtil; -import com.google.gerrit.plugin.client.Plugin; -import com.google.gerrit.plugin.client.extension.Panel; -import com.google.gerrit.plugin.client.rpc.RestApi; -import com.google.gwt.http.client.URL; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Anchor; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.InlineLabel; - -/** Extension for change screen that displays a status in the header bar. */ -public class JobsDropDownPanel extends FlowPanel { - static class Factory implements Panel.EntryPoint { - private final ConfigInfo info; - - public Factory(ConfigInfo info) { - this.info = info; - } - - @Override - public void onLoad(Panel panel) { - RevisionInfo rev = panel.getObject(GerritUiExtensionPoint.Key.REVISION_INFO).cast(); - if (rev.isEdit()) { - return; - } - - panel.setWidget(new JobsDropDownPanel(panel, info)); - } - } - - JobsDropDownPanel(Panel panel, ConfigInfo info) { - ChangeInfo change = panel.getObject(GerritUiExtensionPoint.Key.CHANGE_INFO).cast(); - String decodedChangeId = URL.decodePathSegment(change.id()); - RevisionInfo rev = panel.getObject(GerritUiExtensionPoint.Key.REVISION_INFO).cast(); - new RestApi("changes") - .id(decodedChangeId) - .view("revisions") - .id(rev.id()) - .view(Plugin.get().getPluginName(), "verifications") - .addParameter("sort", info.sortJobsDropDownPanel()) - .addParameter("filter", "CURRENT") - .get( - new AsyncCallback<NativeMap<VerificationInfo>>() { - @Override - public void onSuccess(NativeMap<VerificationInfo> result) { - if (!result.isEmpty()) { - display(result); - } - } - - @Override - public void onFailure(Throwable caught) { - // never invoked - } - }); - } - - private void display(NativeMap<VerificationInfo> jobs) { - int row = 0; - int column = 5; - Grid grid = new Grid(row, column); - for (String key : jobs.keySet()) { - grid.insertRow(row); - HorizontalPanel p = new HorizontalPanel(); - short vote = jobs.get(key).value(); - if (vote > 0) { - p.add(new Image(VerifyStatusPlugin.RESOURCES.greenCheck())); - } else if (vote < 0) { - p.add(new Image(VerifyStatusPlugin.RESOURCES.redNot())); - } else if (vote == 0) { - p.add(new Image(VerifyStatusPlugin.RESOURCES.warning())); - } - Anchor anchor = new Anchor(jobs.get(key).name(), jobs.get(key).url()); - anchor.setTitle("view logs"); - p.add(anchor); - InlineLabel durlabel = new InlineLabel(" (" + jobs.get(key).duration() + ")"); - durlabel.setTitle("duration"); - p.add(durlabel); - if (jobs.get(key).abstain()) { - Image img = new Image(VerifyStatusPlugin.RESOURCES.info()); - img.setTitle("non voting"); - p.add(img); - } - if (jobs.get(key).rerun()) { - Image img = new Image(VerifyStatusPlugin.RESOURCES.rerun()); - img.setTitle("re-run"); - p.add(img); - } - grid.setWidget(row, 1, p); - InlineLabel catLabel = new InlineLabel(jobs.get(key).category()); - catLabel.setTitle("category"); - grid.setWidget(row, 2, catLabel); - InlineLabel repLabel = new InlineLabel(jobs.get(key).reporter()); - repLabel.setTitle("reporter"); - grid.setWidget(row, 3, repLabel); - InlineLabel grLabel = new InlineLabel(FormatUtil.shortFormat(jobs.get(key).granted())); - grLabel.setTitle("date saved"); - grid.setWidget(row, 4, grLabel); - row++; - } - add(new PopDownButton("Jobs", grid)); - } -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsPanel.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsPanel.java deleted file mode 100644 index 8c237c1..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsPanel.java +++ /dev/null
@@ -1,132 +0,0 @@ -// Copyright (C) 2016 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gerrit.client.GerritUiExtensionPoint; -import com.google.gerrit.client.info.ChangeInfo; -import com.google.gerrit.client.info.ChangeInfo.RevisionInfo; -import com.google.gerrit.client.rpc.NativeMap; -import com.google.gerrit.plugin.client.Plugin; -import com.google.gerrit.plugin.client.extension.Panel; -import com.google.gerrit.plugin.client.rpc.RestApi; -import com.google.gwt.http.client.URL; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Anchor; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.InlineHyperlink; -import com.google.gwt.user.client.ui.InlineLabel; - -/** Extension for change screen that displays a status below the label info. */ -public class JobsPanel extends FlowPanel { - private final ConfigInfo info; - - static class Factory implements Panel.EntryPoint { - private final ConfigInfo info; - - public Factory(ConfigInfo info) { - this.info = info; - } - - @Override - public void onLoad(Panel panel) { - RevisionInfo rev = panel.getObject(GerritUiExtensionPoint.Key.REVISION_INFO).cast(); - if (rev.isEdit()) { - return; - } - - panel.setWidget(new JobsPanel(panel, info)); - } - } - - JobsPanel(Panel panel, ConfigInfo info) { - this.info = info; - final ChangeInfo change = panel.getObject(GerritUiExtensionPoint.Key.CHANGE_INFO).cast(); - String decodedChangeId = URL.decodePathSegment(change.id()); - final RevisionInfo rev = panel.getObject(GerritUiExtensionPoint.Key.REVISION_INFO).cast(); - new RestApi("changes") - .id(decodedChangeId) - .view("revisions") - .id(rev.id()) - .view(Plugin.get().getPluginName(), "verifications") - .addParameter("sort", info.sortJobsPanel()) - .addParameter("filter", "CURRENT") - .get( - new AsyncCallback<NativeMap<VerificationInfo>>() { - @Override - public void onSuccess(NativeMap<VerificationInfo> result) { - if (!result.isEmpty()) { - final String patchsetId = change._number() + "/" + rev.id(); - display(patchsetId, result); - } - } - - @Override - public void onFailure(Throwable caught) { - // never invoked - } - }); - } - - private void display(String patchsetId, NativeMap<VerificationInfo> jobs) { - int row = 0; - int column = 1; - Grid grid = new Grid(row, column); - for (String key : jobs.keySet()) { - HorizontalPanel p = new HorizontalPanel(); - short vote = jobs.get(key).value(); - if (vote > 0) { - p.add( - new Image( - ((vote == 2) && info.enableInProgressStatus()) - ? VerifyStatusPlugin.RESOURCES.progress() - : VerifyStatusPlugin.RESOURCES.greenCheck())); - } else if (vote < 0) { - p.add(new Image(VerifyStatusPlugin.RESOURCES.redNot())); - } else if (vote == 0) { - p.add(new Image(VerifyStatusPlugin.RESOURCES.warning())); - } - Anchor anchor = new Anchor(jobs.get(key).name(), jobs.get(key).url()); - anchor.setTitle("view logs"); - p.add(anchor); - InlineLabel label = new InlineLabel(" (" + jobs.get(key).duration() + ")"); - label.setTitle("duration"); - p.add(label); - if (jobs.get(key).rerun()) { - Image img = new Image(VerifyStatusPlugin.RESOURCES.rerun()); - img.setTitle("re-run"); - p.add(img); - } - if (jobs.get(key).abstain()) { - Image img = new Image(VerifyStatusPlugin.RESOURCES.info()); - img.setTitle("non voting"); - p.add(img); - } - grid.insertRow(row); - grid.setWidget(row, 0, p); - row++; - } - HorizontalPanel p = new HorizontalPanel(); - InlineHyperlink all = - new InlineHyperlink( - "Show All Reports", "/x/" + Plugin.get().getName() + "/jobs/" + patchsetId); - p.add(all); - grid.insertRow(row); - grid.setWidget(row, 0, p); - add(grid); - } -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsScreen.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsScreen.java deleted file mode 100644 index 29c7474..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsScreen.java +++ /dev/null
@@ -1,124 +0,0 @@ -// Copyright (C) 2016 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gerrit.client.rpc.NativeMap; -import com.google.gerrit.plugin.client.FormatUtil; -import com.google.gerrit.plugin.client.Plugin; -import com.google.gerrit.plugin.client.rpc.RestApi; -import com.google.gerrit.plugin.client.screen.Screen; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Anchor; -import com.google.gwt.user.client.ui.FlexTable; -import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; -import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.VerticalPanel; - -public class JobsScreen extends VerticalPanel { - static class Factory implements Screen.EntryPoint { - @Override - public void onLoad(final Screen screen) { - // get change and revision number from passed in patchsetId of form - // $changeNumber/$revisionNumber - String input = screen.getToken(1); - String[] patchsetId = input.split("/"); - final String changeNumber = patchsetId[0]; - final String revisionNumber = patchsetId[1]; - screen.setPageTitle("Report History for Change " + input); - screen.show(new JobsScreen(changeNumber, revisionNumber)); - } - } - - JobsScreen(String changeNumber, String revisionNumber) { - new RestApi("changes") - .id(changeNumber) - .view("revisions") - .id(revisionNumber) - .view(Plugin.get().getPluginName(), "verifications") - .addParameter("sort", "DATE") - .get( - new AsyncCallback<NativeMap<VerificationInfo>>() { - @Override - public void onSuccess(NativeMap<VerificationInfo> result) { - if (!result.isEmpty()) { - display(result); - } - } - - @Override - public void onFailure(Throwable caught) { - // never invoked - } - }); - } - - private void display(NativeMap<VerificationInfo> jobs) { - int columns = 7; - FlexTable t = new FlexTable(); - t.setStyleName("verifystatus-jobsTable"); - FlexCellFormatter fmt = t.getFlexCellFormatter(); - for (int c = 0; c < columns; c++) { - fmt.addStyleName(0, c, "dataHeader"); - fmt.addStyleName(0, c, "topMostCell"); - } - fmt.addStyleName(0, 0, "leftMostCell"); - - t.setText(0, 0, "Result"); - t.setText(0, 1, "Name"); - t.setText(0, 2, "Duration"); - t.setText(0, 3, "Voting"); - t.setText(0, 4, "Rerun"); - t.setText(0, 5, "Category"); - t.setText(0, 6, "Reporter"); - t.setText(0, 7, "Date"); - - int row = 1; - for (String key : jobs.keySet()) { - VerificationInfo vi = jobs.get(key); - - for (int c = 0; c < columns; c++) { - fmt.addStyleName(row, c, "dataCell"); - fmt.addStyleName(row, 0, "leftMostCell"); - } - short vote = vi.value(); - if (vote > 0) { - t.setWidget(row, 0, new Image(VerifyStatusPlugin.RESOURCES.greenCheck())); - } else if (vote < 0) { - t.setWidget(row, 0, new Image(VerifyStatusPlugin.RESOURCES.redNot())); - } else if (vote == 0) { - t.setWidget(row, 0, new Image(VerifyStatusPlugin.RESOURCES.warning())); - } - Anchor anchor = new Anchor(vi.name(), vi.url()); - t.setWidget(row, 1, anchor); - t.setText(row, 2, vi.duration()); - if (vi.abstain()) { - t.setText(row, 3, "non-voting"); - } else { - t.setText(row, 3, "voting"); - } - if (vi.rerun()) { - t.setText(row, 4, "Y"); - } else { - t.setText(row, 4, "N"); - } - - t.setText(row, 5, vi.category()); - t.setText(row, 6, vi.reporter()); - t.setText(row, 7, FormatUtil.shortFormat(vi.granted())); - row++; - } - add(t); - } -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsSummaryPanel.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsSummaryPanel.java deleted file mode 100644 index 503850d..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/JobsSummaryPanel.java +++ /dev/null
@@ -1,132 +0,0 @@ -// Copyright (C) 2016 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gerrit.client.GerritUiExtensionPoint; -import com.google.gerrit.client.info.ChangeInfo; -import com.google.gerrit.client.info.ChangeInfo.RevisionInfo; -import com.google.gerrit.client.rpc.NativeMap; -import com.google.gerrit.plugin.client.Plugin; -import com.google.gerrit.plugin.client.extension.Panel; -import com.google.gerrit.plugin.client.rpc.RestApi; -import com.google.gwt.http.client.URL; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.HTMLTable.CellFormatter; -import com.google.gwt.user.client.ui.Label; - -/** Extension for change screen that displays job summary table. */ -public class JobsSummaryPanel extends FlowPanel { - static class Factory implements Panel.EntryPoint { - @Override - public void onLoad(Panel panel) { - RevisionInfo rev = panel.getObject(GerritUiExtensionPoint.Key.REVISION_INFO).cast(); - if (rev.isEdit()) { - return; - } - - panel.setWidget(new JobsSummaryPanel(panel)); - } - } - - private static final String COLOR_GREEN = "#060"; - private static final String COLOR_RED = "#F00"; - - JobsSummaryPanel(Panel panel) { - final ChangeInfo change = panel.getObject(GerritUiExtensionPoint.Key.CHANGE_INFO).cast(); - String decodedChangeId = URL.decodePathSegment(change.id()); - final RevisionInfo rev = panel.getObject(GerritUiExtensionPoint.Key.REVISION_INFO).cast(); - new RestApi("changes") - .id(decodedChangeId) - .view("revisions") - .id(rev.id()) - .view(Plugin.get().getPluginName(), "verifications") - .addParameter("sort", "REPORTER") - .addParameter("filter", "CURRENT") - .get( - new AsyncCallback<NativeMap<VerificationInfo>>() { - @Override - public void onSuccess(NativeMap<VerificationInfo> result) { - if (!result.isEmpty()) { - display(result); - } - } - - @Override - public void onFailure(Throwable caught) { - // never invoked - } - }); - } - - private void display(NativeMap<VerificationInfo> jobs) { - Grid g = createGrid(2, 3); - g.setText(0, 0, "Passed"); - g.setText(0, 1, "Failed"); - g.setText(0, 2, "Unstable"); - - int pass = 0; - int fail = 0; - int unstable = 0; - for (String key : jobs.keySet()) { - int value = jobs.get(key).value(); - if (value > 0) { - pass++; - } else if (value < 0) { - fail++; - } else { - unstable++; - } - } - - Label passedLbl = new Label(Integer.toString(pass)); - passedLbl.getElement().getStyle().setColor(COLOR_GREEN); - g.setWidget(1, 0, passedLbl); - Label failedLbl = new Label(Integer.toString(fail)); - failedLbl.getElement().getStyle().setColor(COLOR_RED); - g.setWidget(1, 1, failedLbl); - Label unstableLbl = new Label(Integer.toString(unstable)); - g.setWidget(1, 2, unstableLbl); - add(g); - } - - private static Grid createGrid(int rows, int columns) { - Grid g = new Grid(rows, columns); - g.addStyleName("infoBlock"); - g.addStyleName("changeTable"); - - CellFormatter fmt = g.getCellFormatter(); - - for (int c = 0; c < columns; c++) { - fmt.addStyleName(0, c, "header"); - fmt.addStyleName(0, c, "topmost"); - } - - for (int r = 1; r < rows; r++) { - fmt.addStyleName(r, 0, "leftMostCell"); - - for (int c = 1; c < columns; c++) { - fmt.addStyleName(r, c, "dataCell"); - } - } - - for (int c = 0; c < columns; c++) { - fmt.addStyleName(rows - 1, c, "bottomheader"); - } - - return g; - } -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/PopDownButton.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/PopDownButton.java deleted file mode 100644 index 7607fe3..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/PopDownButton.java +++ /dev/null
@@ -1,103 +0,0 @@ -// Copyright (C) 2015 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gwt.dom.client.Document; -import com.google.gwt.dom.client.Style; -import com.google.gwt.dom.client.Style.FontWeight; -import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.event.logical.shared.CloseEvent; -import com.google.gwt.event.logical.shared.CloseHandler; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.PopupPanel; -import com.google.gwt.user.client.ui.Widget; -import com.google.gwtexpui.globalkey.client.GlobalKey; -import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder; - -/** - * Pop down button for header line in change screen. - * - * <p>This class implements a button that on click opens a pop down panel with the provided widget, - * similar to the "Patch Sets", "Download" or "Included In" pop down panels on the change screen. - * - * <p>This class can *only* be used within a panel that extends the header line of the change - * screen, but will not work standalone. - */ -public class PopDownButton extends Button { - private final Widget widget; - private PopupPanel popup; - - public PopDownButton(String text, Widget widget) { - // Create Button with inner div. This is required to get proper styling - // in the context of the change screen. - super((new SafeHtmlBuilder()).openDiv().append(text).closeDiv()); - getElement().removeClassName("gwt-Button"); - addClickHandler( - new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - show(); - } - }); - this.widget = widget; - } - - private void show() { - if (popup != null) { - getElement().getStyle().clearFontWeight(); - popup.hide(); - return; - } - - final Widget relativeTo = getParent(); - final PopupPanel p = - new PopupPanel(true) { - @Override - public void setPopupPosition(int left, int top) { - top -= Document.get().getBodyOffsetTop(); - - int w = Window.getScrollLeft() + Window.getClientWidth(); - int r = relativeTo.getAbsoluteLeft() + relativeTo.getOffsetWidth(); - int right = w - r; - Style style = getElement().getStyle(); - style.clearProperty("left"); - style.setPropertyPx("right", right); - style.setPropertyPx("top", top); - } - }; - Style popupStyle = p.getElement().getStyle(); - popupStyle.setBorderWidth(0, Unit.PX); - popupStyle.setBackgroundColor("#EEEEEE"); - p.addAutoHidePartner(getElement()); - p.addCloseHandler( - new CloseHandler<PopupPanel>() { - @Override - public void onClose(CloseEvent<PopupPanel> event) { - if (popup == p) { - getElement().getStyle().clearFontWeight(); - popup = null; - } - } - }); - p.add(widget); - p.showRelativeTo(relativeTo); - GlobalKey.dialog(p); - getElement().getStyle().setFontWeight(FontWeight.BOLD); - popup = p; - } -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/Resources.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/Resources.java deleted file mode 100644 index eff41cd..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/Resources.java +++ /dev/null
@@ -1,42 +0,0 @@ -// Copyright (C) 2016 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.ImageResource; - -public interface Resources extends ClientBundle { - - @Source("tick.png") - ImageResource greenCheck(); - - @Source("cross.png") - ImageResource redNot(); - - @Source("lightbulb.png") - ImageResource light(); - - @Source("information.png") - public ImageResource info(); - - @Source("exclamation.png") - public ImageResource warning(); - - @Source("donut.png") - public ImageResource rerun(); - - @Source("loader.gif") - public ImageResource progress(); -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/VerificationInfo.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/VerificationInfo.java deleted file mode 100644 index 68462a1..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/VerificationInfo.java +++ /dev/null
@@ -1,46 +0,0 @@ -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gwt.core.client.JavaScriptObject; -import com.google.gwtjsonrpc.client.impl.ser.JavaSqlTimestamp_JsonSerializer; -import java.sql.Timestamp; - -public class VerificationInfo extends JavaScriptObject { - - public final native String url() /*-{ return this.url; }-*/; - - public final native String name() /*-{ return this.name; }-*/; - - public final native String comment() /*-{ return this.comment; }-*/; - - public final native short value() /*-{ return this.value; }-*/; - - public final native boolean abstain() /*-{ return this.abstain || false; }-*/; - - public final native boolean rerun() /*-{ return this.rerun || false; }-*/; - - public final native String category() /*-{ return this.category; }-*/; - - public final native String duration() /*-{ return this.duration; }-*/; - - public final native String reporter() /*-{ return this.reporter; }-*/; - - public final Timestamp granted() { - Timestamp r = grantedTimestamp(); - if (r == null) { - String s = grantedRaw(); - if (s != null) { - r = JavaSqlTimestamp_JsonSerializer.parseTimestamp(s); - grantedTimestamp(r); - } - } - return r; - } - - private final native String grantedRaw() /*-{ return this.granted; }-*/; - - private final native Timestamp grantedTimestamp() /*-{ return this._ts }-*/; - - private final native void grantedTimestamp(Timestamp t) /*-{ this._ts = t }-*/; - - protected VerificationInfo() {} -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/VerifyStatusPlugin.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/VerifyStatusPlugin.java deleted file mode 100644 index 34de386..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/VerifyStatusPlugin.java +++ /dev/null
@@ -1,68 +0,0 @@ -// Copyright (C) 2013 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.googlesource.gerrit.plugins.verifystatus.client; - -import com.google.gerrit.client.GerritUiExtensionPoint; -import com.google.gerrit.plugin.client.Plugin; -import com.google.gerrit.plugin.client.PluginEntryPoint; -import com.google.gerrit.plugin.client.rpc.RestApi; -import com.google.gwt.core.client.GWT; -import com.google.gwt.user.client.rpc.AsyncCallback; - -public class VerifyStatusPlugin extends PluginEntryPoint { - public static final Resources RESOURCES = GWT.create(Resources.class); - - @Override - public void onPluginLoad() { - Plugin.get().screenRegex("jobs/(.*)", new JobsScreen.Factory()); - new RestApi("config") - .view("server") - .view(Plugin.get().getPluginName(), "config") - .get( - new AsyncCallback<ConfigInfo>() { - @Override - public void onSuccess(ConfigInfo info) { - if (info.showJobsSummaryPanel()) { - Plugin.get() - .panel( - GerritUiExtensionPoint.CHANGE_SCREEN_BELOW_CHANGE_INFO_BLOCK, - new JobsSummaryPanel.Factory(), - "VerifyStatusJobsSummaryPanel"); - } - if (info.showJobsPanel()) { - Plugin.get() - .panel( - info.showJobsBelowRelatedInfoBlock() - ? GerritUiExtensionPoint.CHANGE_SCREEN_BELOW_RELATED_INFO_BLOCK - : GerritUiExtensionPoint.CHANGE_SCREEN_BELOW_CHANGE_INFO_BLOCK, - new JobsPanel.Factory(info), - "VerifyStatusJobsPanel"); - } - if (info.showJobsDropDownPanel()) { - Plugin.get() - .panel( - GerritUiExtensionPoint.CHANGE_SCREEN_HEADER_RIGHT_OF_POP_DOWNS, - new JobsDropDownPanel.Factory(info), - "VerifyStatusJobsDropDownPanel"); - } - } - - @Override - public void onFailure(Throwable caught) { - // never invoked - } - }); - } -}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/cross.png b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/cross.png deleted file mode 100644 index 1514d51..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/cross.png +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/donut.png b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/donut.png deleted file mode 100644 index b3418f2..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/donut.png +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/exclamation.png b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/exclamation.png deleted file mode 100644 index c37bd06..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/exclamation.png +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/information.png b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/information.png deleted file mode 100644 index 12cd1ae..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/information.png +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/lightbulb.png b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/lightbulb.png deleted file mode 100644 index d22fde8..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/lightbulb.png +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/loader.gif b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/loader.gif deleted file mode 100644 index e40f19a..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/loader.gif +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/tick.png b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/tick.png deleted file mode 100644 index a9925a0..0000000 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/client/tick.png +++ /dev/null Binary files differ
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/init/InitPlugin.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/init/InitPlugin.java index 088e262..83da444 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/init/InitPlugin.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/init/InitPlugin.java
@@ -24,7 +24,6 @@ import com.google.gerrit.pgm.init.api.ConsoleUI; import com.google.gerrit.pgm.init.api.InitStep; import com.google.gerrit.pgm.init.api.Section; -import com.google.gerrit.reviewdb.client.CurrentSchemaVersion; import com.google.gerrit.server.config.SitePaths; import com.google.gwtorm.jdbc.JdbcExecutor; import com.google.gwtorm.jdbc.JdbcSchema; @@ -49,6 +48,7 @@ import com.googlesource.gerrit.plugins.verifystatus.server.schema.CiDataSourceType; import com.googlesource.gerrit.plugins.verifystatus.server.schema.CiDataSourceTypeGuesser; import com.googlesource.gerrit.plugins.verifystatus.server.schema.CiDatabaseModule; +import com.googlesource.gerrit.plugins.verifystatus.server.schema.CurrentSchemaVersion; import com.googlesource.gerrit.plugins.verifystatus.server.schema.SchemaVersion; import com.googlesource.gerrit.plugins.verifystatus.server.schema.UpdateUI; import java.lang.annotation.Annotation;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/CiDb.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/CiDb.java index be7b8d1..c82d357 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/CiDb.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/CiDb.java
@@ -14,7 +14,6 @@ package com.googlesource.gerrit.plugins.verifystatus.server; -import com.google.gerrit.reviewdb.server.SchemaVersionAccess; import com.google.gwtorm.server.Relation; import com.google.gwtorm.server.Schema;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbChangeId.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbChangeId.java new file mode 100644 index 0000000..14921ce --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbChangeId.java
@@ -0,0 +1,41 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.verifystatus.server; + +import com.google.gwtorm.client.Column; +import com.google.gwtorm.client.IntKey; + +public class DbChangeId extends IntKey<com.google.gwtorm.client.Key<?>> { + private static final long serialVersionUID = 1L; + + @Column(id = 1) + public int id; + + protected DbChangeId() {} + + public DbChangeId(int id) { + this.id = id; + } + + @Override + public int get() { + return id; + } + + @Override + protected void set(int newValue) { + id = newValue; + } +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbLabelId.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbLabelId.java new file mode 100644 index 0000000..811a22b --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbLabelId.java
@@ -0,0 +1,41 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.verifystatus.server; + +import com.google.gwtorm.client.Column; +import com.google.gwtorm.client.StringKey; + +public class DbLabelId extends StringKey<com.google.gwtorm.client.Key<?>> { + private static final long serialVersionUID = 1L; + + @Column(id = 1) + public String id; + + public DbLabelId() {} + + public DbLabelId(String n) { + id = n; + } + + @Override + public String get() { + return id; + } + + @Override + protected void set(String newValue) { + id = newValue; + } +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbPatchSetId.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbPatchSetId.java new file mode 100644 index 0000000..b5251c2 --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/DbPatchSetId.java
@@ -0,0 +1,52 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.verifystatus.server; + +import com.google.gwtorm.client.Column; +import com.google.gwtorm.client.IntKey; + +public final class DbPatchSetId extends IntKey<DbChangeId> { + private static final long serialVersionUID = 1L; + + @Column(id = 1) + public DbChangeId changeId; + + @Column(id = 2) + public int patchSetId; + + public DbPatchSetId() { + changeId = new DbChangeId(); + } + + public DbPatchSetId(DbChangeId changeId, int id) { + this.changeId = changeId; + this.patchSetId = id; + } + + @Override + public DbChangeId getParentKey() { + return changeId; + } + + @Override + public int get() { + return patchSetId; + } + + @Override + protected void set(int newValue) { + patchSetId = newValue; + } +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetConfig.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetConfig.java index 3ba9176..6cc7530 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetConfig.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetConfig.java
@@ -15,6 +15,7 @@ package com.googlesource.gerrit.plugins.verifystatus.server; import com.google.gerrit.extensions.annotations.PluginName; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.config.ConfigResource; import com.google.gerrit.server.config.PluginConfig; @@ -31,7 +32,7 @@ } @Override - public ConfigInfo apply(ConfigResource resource) { + public Response<ConfigInfo> apply(ConfigResource resource) { ConfigInfo info = new ConfigInfo(); info.showJobsPanel = cfg.getBoolean("showJobsPanel", true); info.showJobsDropDownPanel = cfg.getBoolean("showJobsDropDownPanel", true); @@ -41,7 +42,7 @@ info.sortJobsPanel = cfg.getEnum(JobsSorting.values(), "sortJobsPanel", JobsSorting.REPORTER); info.sortJobsDropDownPanel = cfg.getEnum(JobsSorting.values(), "sortJobsDropDownPanel", JobsSorting.REPORTER); - return info; + return Response.ok(info); } public static class ConfigInfo {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetVerifications.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetVerifications.java index 74ee698..f765ae0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetVerifications.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/GetVerifications.java
@@ -17,6 +17,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gerrit.common.Nullable; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.change.RevisionResource; import com.google.gwtorm.server.OrmException; @@ -124,12 +125,16 @@ } @Override - public Map<String, VerificationInfo> apply(RevisionResource rsrc) + public Response<Map<String, VerificationInfo>> apply(RevisionResource rsrc) throws IOException, OrmException { Map<String, VerificationInfo> out = Maps.newLinkedHashMap(); try (CiDb db = schemaFactory.open()) { - ResultSet<PatchSetVerification> rs = - db.patchSetVerifications().byPatchSet(rsrc.getPatchSet().getId()); + DbPatchSetId id = + new DbPatchSetId( + new DbChangeId(rsrc.getPatchSet().id().changeId().get()), + rsrc.getPatchSet().id().get()); + + ResultSet<PatchSetVerification> rs = db.patchSetVerifications().byPatchSet(id); List<PatchSetVerification> result = rs.toList(); List<PatchSetVerification> jobs = Lists.newLinkedList(); @@ -179,6 +184,6 @@ out.put(v.getJobId().get(), createVerificationInfo(v)); } } - return out; + return Response.ok(out); } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerification.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerification.java index 71225b7..aa30631 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerification.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerification.java
@@ -14,8 +14,6 @@ package com.googlesource.gerrit.plugins.verifystatus.server; -import com.google.gerrit.reviewdb.client.LabelId; -import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gwtorm.client.Column; import com.google.gwtorm.client.CompoundKey; import java.sql.Timestamp; @@ -23,31 +21,31 @@ public class PatchSetVerification { - public static class Key extends CompoundKey<PatchSet.Id> { + public static class Key extends CompoundKey<DbPatchSetId> { private static final long serialVersionUID = 1L; @Column(id = 1, name = Column.NONE) - protected PatchSet.Id patchSetId; + protected DbPatchSetId patchSetId; @Column(id = 2) - protected LabelId jobId; + protected DbLabelId jobId; protected Key() { - patchSetId = new PatchSet.Id(); - jobId = new LabelId(); + patchSetId = new DbPatchSetId(); + jobId = new DbLabelId(); } - public Key(PatchSet.Id ps, LabelId c) { + public Key(DbPatchSetId ps, DbLabelId c) { this.patchSetId = ps; this.jobId = c; } @Override - public PatchSet.Id getParentKey() { + public DbPatchSetId getParentKey() { return patchSetId; } - public LabelId getLabelId() { + public DbLabelId getLabelId() { return jobId; } @@ -102,11 +100,11 @@ return key; } - public PatchSet.Id getPatchSetId() { + public DbPatchSetId getPatchSetId() { return key.patchSetId; } - public LabelId getJobId() { + public DbLabelId getJobId() { return key.jobId; }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerificationAccess.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerificationAccess.java index 2bd9ffb..dc6eaef 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerificationAccess.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/PatchSetVerificationAccess.java
@@ -14,8 +14,6 @@ package com.googlesource.gerrit.plugins.verifystatus.server; -import com.google.gerrit.reviewdb.client.Change; -import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gwtorm.server.Access; import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.PrimaryKey; @@ -29,8 +27,8 @@ PatchSetVerification get(PatchSetVerification.Key key) throws OrmException; @Query("WHERE key.patchSetId.changeId = ?") - ResultSet<PatchSetVerification> byChange(Change.Id id) throws OrmException; + ResultSet<PatchSetVerification> byChange(DbChangeId id) throws OrmException; @Query("WHERE key.patchSetId = ?") - ResultSet<PatchSetVerification> byPatchSet(PatchSet.Id id) throws OrmException; + ResultSet<PatchSetVerification> byPatchSet(DbPatchSetId id) throws OrmException; }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/SchemaVersionAccess.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/SchemaVersionAccess.java new file mode 100644 index 0000000..256ab0e --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/SchemaVersionAccess.java
@@ -0,0 +1,28 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.verifystatus.server; + +import com.google.gwtorm.server.Access; +import com.google.gwtorm.server.OrmException; +import com.google.gwtorm.server.PrimaryKey; +import com.googlesource.gerrit.plugins.verifystatus.server.schema.CurrentSchemaVersion; + +/** Access interface for {@link CurrentSchemaVersion}. */ +public interface SchemaVersionAccess + extends Access<CurrentSchemaVersion, CurrentSchemaVersion.Key> { + @Override + @PrimaryKey("singleton") + CurrentSchemaVersion get(CurrentSchemaVersion.Key key) throws OrmException; +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CiDataSourceProvider.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CiDataSourceProvider.java index fcd783f..828d2e3 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CiDataSourceProvider.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CiDataSourceProvider.java
@@ -21,7 +21,6 @@ import com.google.gerrit.common.Nullable; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.events.LifecycleListener; -import com.google.gerrit.extensions.persistence.DataSourceInterceptor; import com.google.gerrit.metrics.CallbackMetric1; import com.google.gerrit.metrics.Description; import com.google.gerrit.metrics.Field; @@ -29,6 +28,7 @@ import com.google.gerrit.server.config.ConfigUtil; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.SitePaths; +import com.google.gerrit.server.logging.Metadata; import com.google.gwtorm.jdbc.SimpleDataSource; import com.google.inject.Inject; import com.google.inject.Provider; @@ -36,8 +36,6 @@ import com.google.inject.Singleton; import java.io.File; import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; @@ -118,7 +116,6 @@ String username = config.getString("username"); String password = config.getString("password"); - String interceptor = config.getString("dataSourceInterceptorClass"); boolean usePool; if (context == Context.SINGLE_USER) { @@ -149,7 +146,7 @@ } ds.setInitialSize(ds.getMinIdle()); exportPoolMetrics(ds); - return intercept(interceptor, ds); + return ds; } // Don't use the connection pool. try { @@ -162,7 +159,7 @@ if (password != null) { p.setProperty("password", password); } - return intercept(interceptor, new SimpleDataSource(p)); + return new SimpleDataSource(p); } catch (SQLException se) { throw new ProvisionException("Database unavailable", se); } @@ -174,7 +171,7 @@ "sql/connection_pool/connections", Integer.class, new Description("SQL database connections").setGauge().setUnit("connections"), - Field.ofBoolean("active")); + Field.ofBoolean("active", Metadata.Builder::partial).build()); metrics.newTrigger( cnt, new Runnable() { @@ -187,23 +184,4 @@ } }); } - - private DataSource intercept(String interceptor, DataSource ds) { - if (interceptor == null) { - return ds; - } - try { - Constructor<?> c = Class.forName(interceptor).getConstructor(); - DataSourceInterceptor datasourceInterceptor = (DataSourceInterceptor) c.newInstance(); - return datasourceInterceptor.intercept("CiDb", ds); - } catch (ClassNotFoundException - | SecurityException - | NoSuchMethodException - | IllegalArgumentException - | InstantiationException - | IllegalAccessException - | InvocationTargetException e) { - throw new ProvisionException("Cannot intercept datasource", e); - } - } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CurrentSchemaVersion.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CurrentSchemaVersion.java new file mode 100644 index 0000000..383c094 --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/CurrentSchemaVersion.java
@@ -0,0 +1,58 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.verifystatus.server.schema; + +import com.google.gwtorm.client.Column; +import com.google.gwtorm.client.StringKey; + +/** Current version of the database schema, to facilitate live upgrades. */ +public final class CurrentSchemaVersion { + public static final class Key extends StringKey<com.google.gwtorm.client.Key<?>> { + private static final long serialVersionUID = 1L; + + private static final String VALUE = "X"; + + @Column(id = 1, length = 1) + public String one = VALUE; + + public Key() {} + + @Override + public String get() { + return VALUE; + } + + @Override + protected void set(String newValue) { + assert get().equals(newValue); + } + } + + /** Construct a new, unconfigured instance. */ + public static CurrentSchemaVersion create() { + final CurrentSchemaVersion r = new CurrentSchemaVersion(); + r.singleton = new CurrentSchemaVersion.Key(); + return r; + } + + @Column(id = 1) + public Key singleton; + + /** Current version number of the schema. */ + @Column(id = 2) + public transient int versionNbr; + + public CurrentSchemaVersion() {} +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/JdbcUtil.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/JdbcUtil.java new file mode 100644 index 0000000..b59c631 --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/JdbcUtil.java
@@ -0,0 +1,34 @@ +// Copyright (C) 2012 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.verifystatus.server.schema; + +public class JdbcUtil { + public static String hostname(String hostname) { + if (hostname == null || hostname.isEmpty()) { + hostname = "localhost"; + + } else if (hostname.contains(":") && !hostname.startsWith("[")) { + hostname = "[" + hostname + "]"; + } + return hostname; + } + + public static String port(String port) { + if (port != null && !port.isEmpty()) { + return ":" + port; + } + return ""; + } +}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/MySql.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/MySql.java index e163091..6906a1f 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/MySql.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/MySql.java
@@ -14,9 +14,6 @@ package com.googlesource.gerrit.plugins.verifystatus.server.schema; -import static com.google.gerrit.server.schema.JdbcUtil.hostname; -import static com.google.gerrit.server.schema.JdbcUtil.port; - import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.SitePaths; @@ -48,8 +45,8 @@ public String getUrl() { final StringBuilder b = new StringBuilder(); b.append("jdbc:mysql://"); - b.append(hostname(config.getString("hostname"))); - b.append(port(config.getString("port"))); + b.append(JdbcUtil.hostname(config.getString("hostname"))); + b.append(JdbcUtil.port(config.getString("port"))); b.append("/"); b.append(config.getString("database")); return b.toString();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/Oracle.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/Oracle.java index 833333c..20b348a 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/Oracle.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/Oracle.java
@@ -14,9 +14,6 @@ package com.googlesource.gerrit.plugins.verifystatus.server.schema; -import static com.google.gerrit.server.schema.JdbcUtil.hostname; -import static com.google.gerrit.server.schema.JdbcUtil.port; - import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.SitePaths; @@ -48,8 +45,8 @@ public String getUrl() { final StringBuilder b = new StringBuilder(); b.append("jdbc:oracle:thin:@"); - b.append(hostname(config.getString("hostname"))); - b.append(port(config.getString("port"))); + b.append(JdbcUtil.hostname(config.getString("hostname"))); + b.append(JdbcUtil.port(config.getString("port"))); b.append(":"); b.append(config.getString("instance")); return b.toString();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/PostgreSQL.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/PostgreSQL.java index 67845a0..8038b46 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/PostgreSQL.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/PostgreSQL.java
@@ -14,9 +14,6 @@ package com.googlesource.gerrit.plugins.verifystatus.server.schema; -import static com.google.gerrit.server.schema.JdbcUtil.hostname; -import static com.google.gerrit.server.schema.JdbcUtil.port; - import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.config.SitePaths; @@ -48,8 +45,8 @@ public String getUrl() { final StringBuilder b = new StringBuilder(); b.append("jdbc:postgresql://"); - b.append(hostname(config.getString("hostname"))); - b.append(port(config.getString("port"))); + b.append(JdbcUtil.hostname(config.getString("hostname"))); + b.append(JdbcUtil.port(config.getString("port"))); b.append("/"); b.append(config.getString("database")); return b.toString();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/SchemaVersion.java b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/SchemaVersion.java index fa5db22..8f948fb 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/SchemaVersion.java +++ b/src/main/java/com/googlesource/gerrit/plugins/verifystatus/server/schema/SchemaVersion.java
@@ -15,17 +15,13 @@ package com.googlesource.gerrit.plugins.verifystatus.server.schema; import com.google.common.collect.Lists; -import com.google.gerrit.reviewdb.client.CurrentSchemaVersion; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gwtorm.jdbc.JdbcExecutor; import com.google.gwtorm.jdbc.JdbcSchema; import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.StatementExecutor; import com.google.inject.Provider; import com.googlesource.gerrit.plugins.verifystatus.server.CiDb; -import java.sql.PreparedStatement; import java.sql.SQLException; -import java.sql.Statement; import java.util.Collections; import java.util.List; @@ -55,7 +51,7 @@ return Integer.parseInt(n); } - /** @return the {@link CurrentSchemaVersion#versionNbr} this step targets. */ + /** @return the version number this step targets. */ public final int getVersionNbr() { return versionNbr; } @@ -162,43 +158,4 @@ curr.versionNbr = versionNbr; db.schemaVersion().update(Collections.singleton(curr)); } - - /** Rename an existing table. */ - protected static void renameTable(ReviewDb db, String from, String to) throws OrmException { - JdbcSchema s = (JdbcSchema) db; - try (JdbcExecutor e = new JdbcExecutor(s)) { - s.renameTable(e, from, to); - } - } - - /** Rename an existing column. */ - protected static void renameColumn(ReviewDb db, String table, String from, String to) - throws OrmException { - JdbcSchema s = (JdbcSchema) db; - try (JdbcExecutor e = new JdbcExecutor(s)) { - s.renameField(e, table, from, to); - } - } - - /** Execute an SQL statement. */ - protected static void execute(ReviewDb db, String sql) throws SQLException { - try (Statement s = newStatement(db)) { - s.execute(sql); - } - } - - /** Open a new single statement. */ - protected static Statement newStatement(ReviewDb db) throws SQLException { - return ((JdbcSchema) db).getConnection().createStatement(); - } - - /** Open a new prepared statement. */ - protected static PreparedStatement prepareStatement(ReviewDb db, String sql) throws SQLException { - return ((JdbcSchema) db).getConnection().prepareStatement(sql); - } - - /** Open a new statement executor. */ - protected static JdbcExecutor newExecutor(ReviewDb db) throws OrmException { - return new JdbcExecutor(((JdbcSchema) db).getConnection()); - } }
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md index fae7b0c..e9e1526 100644 --- a/src/main/resources/Documentation/build.md +++ b/src/main/resources/Documentation/build.md
@@ -33,7 +33,18 @@ ### Build in Gerrit tree Clone or link this plugin to the plugins directory of Gerrit's source -tree, and issue the command: +tree. + +Put the external dependency Bazel build file into the Gerrit /plugins +directory, replacing the existing empty one. + +``` + cd gerrit/plugins + rm external_plugin_deps.bzl + ln -s @PLUGIN@/external_plugin_deps.bzl . +``` + +From Gerrit source tree issue the command: ``` bazel build plugins/@PLUGIN@