Merge "EventDispatcher: Remove db parameter from event firing methods"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/EventBroker.java b/gerrit-server/src/main/java/com/google/gerrit/common/EventBroker.java
index 97bc2e5..0029768 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/common/EventBroker.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/common/EventBroker.java
@@ -33,6 +33,7 @@
import com.google.gerrit.server.project.ProjectState;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.google.inject.Singleton;
/** Distributes Events to listeners if they are allowed to see them */
@@ -60,21 +61,25 @@
protected final ChangeNotes.Factory notesFactory;
+ protected final Provider<ReviewDb> dbProvider;
+
@Inject
public EventBroker(DynamicSet<UserScopedEventListener> listeners,
DynamicSet<EventListener> unrestrictedListeners,
ProjectCache projectCache,
- ChangeNotes.Factory notesFactory) {
+ ChangeNotes.Factory notesFactory,
+ Provider<ReviewDb> dbProvider) {
this.listeners = listeners;
this.unrestrictedListeners = unrestrictedListeners;
this.projectCache = projectCache;
this.notesFactory = notesFactory;
+ this.dbProvider = dbProvider;
}
@Override
- public void postEvent(Change change, ChangeEvent event, ReviewDb db)
+ public void postEvent(Change change, ChangeEvent event)
throws OrmException {
- fireEvent(change, event, db);
+ fireEvent(change, event);
}
@Override
@@ -88,8 +93,8 @@
}
@Override
- public void postEvent(Event event, ReviewDb db) throws OrmException {
- fireEvent(event, db);
+ public void postEvent(Event event) throws OrmException {
+ fireEvent(event);
}
protected void fireEventForUnrestrictedListeners(Event event) {
@@ -98,10 +103,10 @@
}
}
- protected void fireEvent(Change change, ChangeEvent event, ReviewDb db)
+ protected void fireEvent(Change change, ChangeEvent event)
throws OrmException {
for (UserScopedEventListener listener : listeners) {
- if (isVisibleTo(change, listener.getUser(), db)) {
+ if (isVisibleTo(change, listener.getUser())) {
listener.onEvent(event);
}
}
@@ -126,9 +131,9 @@
fireEventForUnrestrictedListeners(event);
}
- protected void fireEvent(Event event, ReviewDb db) throws OrmException {
+ protected void fireEvent(Event event) throws OrmException {
for (UserScopedEventListener listener : listeners) {
- if (isVisibleTo(event, listener.getUser(), db)) {
+ if (isVisibleTo(event, listener.getUser())) {
listener.onEvent(event);
}
}
@@ -143,7 +148,7 @@
return pe.controlFor(user).isVisible();
}
- protected boolean isVisibleTo(Change change, CurrentUser user, ReviewDb db)
+ protected boolean isVisibleTo(Change change, CurrentUser user)
throws OrmException {
if (change == null) {
return false;
@@ -153,6 +158,7 @@
return false;
}
ProjectControl pc = pe.controlFor(user);
+ ReviewDb db = dbProvider.get();
return pc.controlFor(db, change).isVisible(db);
}
@@ -165,16 +171,16 @@
return pc.controlForRef(branchName).isVisible();
}
- protected boolean isVisibleTo(Event event, CurrentUser user, ReviewDb db)
+ protected boolean isVisibleTo(Event event, CurrentUser user)
throws OrmException {
if (event instanceof RefEvent) {
RefEvent refEvent = (RefEvent) event;
String ref = refEvent.getRefName();
if (PatchSet.isChangeRef(ref)) {
Change.Id cid = PatchSet.Id.fromRef(ref).getParentKey();
- Change change = notesFactory
- .create(db, refEvent.getProjectNameKey(), cid).getChange();
- return isVisibleTo(change, user, db);
+ Change change = notesFactory.create(
+ dbProvider.get(), refEvent.getProjectNameKey(), cid).getChange();
+ return isVisibleTo(change, user);
}
return isVisibleTo(refEvent.getBranchNameKey(), user);
} else if (event instanceof ProjectEvent) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java b/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java
index 913fae3..46b979a 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/common/EventDispatcher.java
@@ -17,7 +17,6 @@
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.events.ChangeEvent;
import com.google.gerrit.server.events.Event;
import com.google.gerrit.server.events.ProjectEvent;
@@ -32,10 +31,9 @@
*
* @param change The change that the event is related to
* @param event The event to post
- * @param db The database
* @throws OrmException
*/
- void postEvent(Change change, ChangeEvent event, ReviewDb db)
+ void postEvent(Change change, ChangeEvent event)
throws OrmException;
/**
@@ -62,7 +60,6 @@
* for those use cases.
*
* @param event The event to post.
- * @param db The database.
*/
- void postEvent(Event event, ReviewDb db) throws OrmException;
+ void postEvent(Event event) throws OrmException;
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/common/StreamEventsApiListener.java b/gerrit-server/src/main/java/com/google/gerrit/common/StreamEventsApiListener.java
index 85f4c59..788147f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/common/StreamEventsApiListener.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/common/StreamEventsApiListener.java
@@ -287,7 +287,7 @@
event.changer = accountAttributeSupplier(ev.getEditor());
event.oldTopic = ev.getOldTopic();
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -305,7 +305,7 @@
event.patchSet = patchSetAttributeSupplier(change, patchSet);
event.uploader = accountAttributeSupplier(ev.getUploader());
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -325,7 +325,7 @@
event.approvals = approvalsAttributeSupplier(change,
ev.getNewApprovals(), ev.getOldApprovals());
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -344,7 +344,7 @@
psUtil.current(db.get(), notes));
event.reviewer = accountAttributeSupplier(ev.getReviewer());
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -371,7 +371,7 @@
event.added = hashtagArray(ev.getAddedHashtags());
event.removed = hashtagArray(ev.getRemovedHashtags());
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -410,7 +410,7 @@
event.patchSet = patchSetAttributeSupplier(change, ps);
event.uploader = accountAttributeSupplier(ev.getPublisher());
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -431,7 +431,7 @@
event.approvals = approvalsAttributeSupplier(
change, ev.getApprovals(), ev.getOldApprovals());
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -450,7 +450,7 @@
psUtil.current(db.get(), notes));
event.reason = ev.getReason();
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -469,7 +469,7 @@
psUtil.current(db.get(), notes));
event.newRev = ev.getNewRevisionId();
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
@@ -488,7 +488,7 @@
psUtil.current(db.get(), notes));
event.reason = ev.getReason();
- dispatcher.get().postEvent(change, event, db.get());
+ dispatcher.get().postEvent(change, event);
} catch (OrmException e) {
log.error("Failed to dispatch event", e);
}
diff --git a/plugins/replication b/plugins/replication
index a0cf9a2..b9c11b4 160000
--- a/plugins/replication
+++ b/plugins/replication
@@ -1 +1 @@
-Subproject commit a0cf9a2919ba11feef712cf6e6390669a46d24c5
+Subproject commit b9c11b4d4ed37f566e6e2daa11d96e1ca3d23c02