Split off audit/ package from giant server package.

Change-Id: I6d983daf8a8f9449123d4963b4e9a589f6566188
This commit is contained in:
Han-Wen Nienhuys
2018-07-06 14:07:34 +02:00
parent 3fe0ac38d0
commit be5db02713
16 changed files with 152 additions and 14 deletions

View File

@@ -13,6 +13,7 @@ java_library(
"//java/com/google/gerrit/metrics", "//java/com/google/gerrit/metrics",
"//java/com/google/gerrit/reviewdb:server", "//java/com/google/gerrit/reviewdb:server",
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server/audit",
"//java/com/google/gerrit/server/git/receive", "//java/com/google/gerrit/server/git/receive",
"//java/com/google/gerrit/server/ioutil", "//java/com/google/gerrit/server/ioutil",
"//java/com/google/gerrit/server/restapi", "//java/com/google/gerrit/server/restapi",

View File

@@ -10,6 +10,7 @@ java_library(
"//java/com/google/gerrit/httpd", "//java/com/google/gerrit/httpd",
"//java/com/google/gerrit/reviewdb:server", "//java/com/google/gerrit/reviewdb:server",
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server/audit",
"//lib:gson", "//lib:gson",
"//lib:guava", "//lib:guava",
"//lib:gwtorm", "//lib:gwtorm",

View File

@@ -13,6 +13,7 @@ java_library(
"//java/com/google/gerrit/reviewdb:server", "//java/com/google/gerrit/reviewdb:server",
"//java/com/google/gerrit/util/http", "//java/com/google/gerrit/util/http",
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server/audit",
"//lib:guava", "//lib:guava",
"//lib:gwtorm", "//lib:gwtorm",
"//lib:servlet-api-3_1", "//lib:servlet-api-3_1",

View File

@@ -18,6 +18,7 @@ java_library(
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server:module", "//java/com/google/gerrit/server:module",
"//java/com/google/gerrit/server/api", "//java/com/google/gerrit/server/api",
"//java/com/google/gerrit/server/audit",
"//java/com/google/gerrit/server/cache/h2", "//java/com/google/gerrit/server/cache/h2",
"//java/com/google/gerrit/server/cache/mem", "//java/com/google/gerrit/server/cache/mem",
"//java/com/google/gerrit/server/git/receive", "//java/com/google/gerrit/server/git/receive",

View File

@@ -47,6 +47,7 @@ import com.google.gerrit.server.StartupChecks;
import com.google.gerrit.server.account.AccountDeactivator; import com.google.gerrit.server.account.AccountDeactivator;
import com.google.gerrit.server.account.InternalAccountDirectory; import com.google.gerrit.server.account.InternalAccountDirectory;
import com.google.gerrit.server.api.GerritApiModule; import com.google.gerrit.server.api.GerritApiModule;
import com.google.gerrit.server.audit.AuditModule;
import com.google.gerrit.server.cache.h2.H2CacheModule; import com.google.gerrit.server.cache.h2.H2CacheModule;
import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule; import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule;
import com.google.gerrit.server.change.ChangeCleanupRunner; import com.google.gerrit.server.change.ChangeCleanupRunner;
@@ -342,6 +343,7 @@ public class WebAppInitializer extends GuiceServletContextListener implements Fi
modules.add(new SmtpEmailSender.Module()); modules.add(new SmtpEmailSender.Module());
modules.add(new SignedTokenEmailTokenVerifier.Module()); modules.add(new SignedTokenEmailTokenVerifier.Module());
modules.add(new LocalMergeSuperSetComputation.Module()); modules.add(new LocalMergeSuperSetComputation.Module());
modules.add(new AuditModule());
// Plugin module needs to be inserted *before* the index module. // Plugin module needs to be inserted *before* the index module.
// There is the concept of LifecycleModule, in Gerrit's own extension // There is the concept of LifecycleModule, in Gerrit's own extension

View File

@@ -36,6 +36,7 @@ java_library(
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server:module", "//java/com/google/gerrit/server:module",
"//java/com/google/gerrit/server/api", "//java/com/google/gerrit/server/api",
"//java/com/google/gerrit/server/audit",
"//java/com/google/gerrit/server/cache/h2", "//java/com/google/gerrit/server/cache/h2",
"//java/com/google/gerrit/server/cache/mem", "//java/com/google/gerrit/server/cache/mem",
"//java/com/google/gerrit/server/git/receive", "//java/com/google/gerrit/server/git/receive",

View File

@@ -56,6 +56,7 @@ import com.google.gerrit.server.account.AccountDeactivator;
import com.google.gerrit.server.account.InternalAccountDirectory; import com.google.gerrit.server.account.InternalAccountDirectory;
import com.google.gerrit.server.api.GerritApiModule; import com.google.gerrit.server.api.GerritApiModule;
import com.google.gerrit.server.api.PluginApiModule; import com.google.gerrit.server.api.PluginApiModule;
import com.google.gerrit.server.audit.AuditModule;
import com.google.gerrit.server.cache.h2.H2CacheModule; import com.google.gerrit.server.cache.h2.H2CacheModule;
import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule; import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule;
import com.google.gerrit.server.change.ChangeCleanupRunner; import com.google.gerrit.server.change.ChangeCleanupRunner;
@@ -422,6 +423,7 @@ public class Daemon extends SiteProgram {
modules.add(cfgInjector.getInstance(GerritGlobalModule.class)); modules.add(cfgInjector.getInstance(GerritGlobalModule.class));
modules.add(new GerritApiModule()); modules.add(new GerritApiModule());
modules.add(new PluginApiModule()); modules.add(new PluginApiModule());
modules.add(new AuditModule());
modules.add(new SearchingChangeCacheImpl.Module(slave)); modules.add(new SearchingChangeCacheImpl.Module(slave));
modules.add(new InternalAccountDirectory.Module()); modules.add(new InternalAccountDirectory.Module());

View File

@@ -16,6 +16,7 @@ package com.google.gerrit.server.audit;
import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.server.audit.group.GroupAuditListener; import com.google.gerrit.server.audit.group.GroupAuditListener;
import com.google.gerrit.server.group.GroupAuditService;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
public class AuditModule extends AbstractModule { public class AuditModule extends AbstractModule {
@@ -24,6 +25,6 @@ public class AuditModule extends AbstractModule {
protected void configure() { protected void configure() {
DynamicSet.setOf(binder(), AuditListener.class); DynamicSet.setOf(binder(), AuditListener.class);
DynamicSet.setOf(binder(), GroupAuditListener.class); DynamicSet.setOf(binder(), GroupAuditListener.class);
bind(AuditService.class); bind(GroupAuditService.class).to(AuditService.class);
} }
} }

View File

@@ -22,12 +22,13 @@ import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.audit.group.GroupAuditListener; import com.google.gerrit.server.audit.group.GroupAuditListener;
import com.google.gerrit.server.audit.group.GroupMemberAuditEvent; import com.google.gerrit.server.audit.group.GroupMemberAuditEvent;
import com.google.gerrit.server.audit.group.GroupSubgroupAuditEvent; import com.google.gerrit.server.audit.group.GroupSubgroupAuditEvent;
import com.google.gerrit.server.group.GroupAuditService;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import java.sql.Timestamp; import java.sql.Timestamp;
@Singleton @Singleton
public class AuditService { public class AuditService implements GroupAuditService {
private static final FluentLogger logger = FluentLogger.forEnclosingClass(); private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private final DynamicSet<AuditListener> auditListeners; private final DynamicSet<AuditListener> auditListeners;
@@ -47,6 +48,7 @@ public class AuditService {
} }
} }
@Override
public void dispatchAddMembers( public void dispatchAddMembers(
Account.Id actor, Account.Id actor,
AccountGroup.UUID updatedGroup, AccountGroup.UUID updatedGroup,
@@ -63,6 +65,7 @@ public class AuditService {
} }
} }
@Override
public void dispatchDeleteMembers( public void dispatchDeleteMembers(
Account.Id actor, Account.Id actor,
AccountGroup.UUID updatedGroup, AccountGroup.UUID updatedGroup,
@@ -79,6 +82,7 @@ public class AuditService {
} }
} }
@Override
public void dispatchAddSubgroups( public void dispatchAddSubgroups(
Account.Id actor, Account.Id actor,
AccountGroup.UUID updatedGroup, AccountGroup.UUID updatedGroup,
@@ -95,6 +99,7 @@ public class AuditService {
} }
} }
@Override
public void dispatchDeleteSubgroups( public void dispatchDeleteSubgroups(
Account.Id actor, Account.Id actor,
AccountGroup.UUID updatedGroup, AccountGroup.UUID updatedGroup,

View File

@@ -0,0 +1,73 @@
java_library(
name = "audit",
srcs = glob(
["**/*.java"],
),
resource_strip_prefix = "resources",
resources = ["//resources/com/google/gerrit/server"],
visibility = ["//visibility:public"],
deps = [
"//java/com/google/gerrit/common:annotations",
"//java/com/google/gerrit/common:server",
"//java/com/google/gerrit/extensions:api",
"//java/com/google/gerrit/index",
"//java/com/google/gerrit/index:query_exception",
"//java/com/google/gerrit/index/project",
"//java/com/google/gerrit/lifecycle",
"//java/com/google/gerrit/metrics",
"//java/com/google/gerrit/prettify:server",
"//java/com/google/gerrit/reviewdb:server",
"//java/com/google/gerrit/server",
"//java/com/google/gerrit/server/ioutil",
"//java/com/google/gerrit/util/cli",
"//java/com/google/gerrit/util/ssl",
"//java/org/apache/commons/net",
"//java/org/eclipse/jgit:server",
"//lib:args4j",
"//lib:automaton",
"//lib:blame-cache",
"//lib:grappa",
"//lib:gson",
"//lib:guava",
"//lib:guava-retrying",
"//lib:gwtjsonrpc",
"//lib:gwtorm",
"//lib:jsch",
"//lib:juniversalchardet",
"//lib:mime-util",
"//lib:pegdown",
"//lib:protobuf",
"//lib:servlet-api-3_1",
"//lib:soy",
"//lib:tukaani-xz",
"//lib/auto:auto-value",
"//lib/auto:auto-value-annotations",
"//lib/bouncycastle:bcpkix-neverlink",
"//lib/bouncycastle:bcprov-neverlink",
"//lib/commons:codec",
"//lib/commons:compress",
"//lib/commons:dbcp",
"//lib/commons:lang",
"//lib/commons:net",
"//lib/commons:validator",
"//lib/flogger:api",
"//lib/guice",
"//lib/guice:guice-assistedinject",
"//lib/guice:guice-servlet",
"//lib/jgit/org.eclipse.jgit.archive:jgit-archive",
"//lib/jgit/org.eclipse.jgit:jgit",
"//lib/jsoup",
"//lib/log:jsonevent-layout",
"//lib/log:log4j",
"//lib/lucene:lucene-analyzers-common",
"//lib/lucene:lucene-core-and-backward-codecs",
"//lib/lucene:lucene-queryparser",
"//lib/mime4j:core",
"//lib/mime4j:dom",
"//lib/ow2:ow2-asm",
"//lib/ow2:ow2-asm-tree",
"//lib/ow2:ow2-asm-util",
"//lib/prolog:runtime",
"//proto:cache_java_proto",
],
)

View File

@@ -91,7 +91,6 @@ import com.google.gerrit.server.account.GroupControl;
import com.google.gerrit.server.account.GroupIncludeCacheImpl; import com.google.gerrit.server.account.GroupIncludeCacheImpl;
import com.google.gerrit.server.account.VersionedAuthorizedKeys; import com.google.gerrit.server.account.VersionedAuthorizedKeys;
import com.google.gerrit.server.account.externalids.ExternalIdModule; import com.google.gerrit.server.account.externalids.ExternalIdModule;
import com.google.gerrit.server.audit.AuditModule;
import com.google.gerrit.server.auth.AuthBackend; import com.google.gerrit.server.auth.AuthBackend;
import com.google.gerrit.server.auth.UniversalAuthBackend; import com.google.gerrit.server.auth.UniversalAuthBackend;
import com.google.gerrit.server.auth.oauth.OAuthTokenCache; import com.google.gerrit.server.auth.oauth.OAuthTokenCache;
@@ -301,7 +300,6 @@ public class GerritGlobalModule extends FactoryModule {
bind(IdentifiedUser.GenericFactory.class).in(SINGLETON); bind(IdentifiedUser.GenericFactory.class).in(SINGLETON);
bind(AccountControl.Factory.class); bind(AccountControl.Factory.class);
install(new AuditModule());
bind(UiActions.class); bind(UiActions.class);
bind(GitReferenceUpdated.class); bind(GitReferenceUpdated.class);

View File

@@ -0,0 +1,48 @@
// Copyright (C) 2018 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.google.gerrit.server.group;
import com.google.common.collect.ImmutableSet;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Account.Id;
import com.google.gerrit.reviewdb.client.AccountGroup;
import java.sql.Timestamp;
public interface GroupAuditService {
void dispatchAddMembers(
Account.Id actor,
AccountGroup.UUID updatedGroup,
ImmutableSet<Id> addedMembers,
Timestamp addedOn);
void dispatchDeleteMembers(
Account.Id actor,
AccountGroup.UUID updatedGroup,
ImmutableSet<Account.Id> deletedMembers,
Timestamp deletedOn);
void dispatchAddSubgroups(
Account.Id actor,
AccountGroup.UUID updatedGroup,
ImmutableSet<AccountGroup.UUID> addedSubgroups,
Timestamp addedOn);
void dispatchDeleteSubgroups(
Account.Id actor,
AccountGroup.UUID updatedGroup,
ImmutableSet<AccountGroup.UUID> deletedSubgroups,
Timestamp deletedOn);
}

View File

@@ -31,13 +31,13 @@ import com.google.gerrit.server.account.AccountCache;
import com.google.gerrit.server.account.GroupBackend; import com.google.gerrit.server.account.GroupBackend;
import com.google.gerrit.server.account.GroupCache; import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.account.GroupIncludeCache; import com.google.gerrit.server.account.GroupIncludeCache;
import com.google.gerrit.server.audit.AuditService;
import com.google.gerrit.server.config.AllUsersName; import com.google.gerrit.server.config.AllUsersName;
import com.google.gerrit.server.config.GerritServerId; import com.google.gerrit.server.config.GerritServerId;
import com.google.gerrit.server.extensions.events.GitReferenceUpdated; import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.LockFailureException; import com.google.gerrit.server.git.LockFailureException;
import com.google.gerrit.server.git.meta.MetaDataUpdate; import com.google.gerrit.server.git.meta.MetaDataUpdate;
import com.google.gerrit.server.group.GroupAuditService;
import com.google.gerrit.server.group.InternalGroup; import com.google.gerrit.server.group.InternalGroup;
import com.google.gerrit.server.index.group.GroupIndexer; import com.google.gerrit.server.index.group.GroupIndexer;
import com.google.gerrit.server.update.RefUpdateUtil; import com.google.gerrit.server.update.RefUpdateUtil;
@@ -89,7 +89,7 @@ public class GroupsUpdate {
private final GroupCache groupCache; private final GroupCache groupCache;
private final GroupIncludeCache groupIncludeCache; private final GroupIncludeCache groupIncludeCache;
private final Provider<GroupIndexer> indexer; private final Provider<GroupIndexer> indexer;
private final AuditService auditService; private final GroupAuditService groupAuditService;
private final RenameGroupOp.Factory renameGroupOpFactory; private final RenameGroupOp.Factory renameGroupOpFactory;
@Nullable private final IdentifiedUser currentUser; @Nullable private final IdentifiedUser currentUser;
private final AuditLogFormatter auditLogFormatter; private final AuditLogFormatter auditLogFormatter;
@@ -106,7 +106,7 @@ public class GroupsUpdate {
GroupCache groupCache, GroupCache groupCache,
GroupIncludeCache groupIncludeCache, GroupIncludeCache groupIncludeCache,
Provider<GroupIndexer> indexer, Provider<GroupIndexer> indexer,
AuditService auditService, GroupAuditService auditService,
AccountCache accountCache, AccountCache accountCache,
RenameGroupOp.Factory renameGroupOpFactory, RenameGroupOp.Factory renameGroupOpFactory,
@GerritServerId String serverId, @GerritServerId String serverId,
@@ -120,7 +120,7 @@ public class GroupsUpdate {
this.groupCache = groupCache; this.groupCache = groupCache;
this.groupIncludeCache = groupIncludeCache; this.groupIncludeCache = groupIncludeCache;
this.indexer = indexer; this.indexer = indexer;
this.auditService = auditService; this.groupAuditService = auditService;
this.renameGroupOpFactory = renameGroupOpFactory; this.renameGroupOpFactory = renameGroupOpFactory;
this.gitRefUpdated = gitRefUpdated; this.gitRefUpdated = gitRefUpdated;
this.retryHelper = retryHelper; this.retryHelper = retryHelper;
@@ -384,14 +384,14 @@ public class GroupsUpdate {
} }
if (!createdGroup.getMembers().isEmpty()) { if (!createdGroup.getMembers().isEmpty()) {
auditService.dispatchAddMembers( groupAuditService.dispatchAddMembers(
currentUser.getAccountId(), currentUser.getAccountId(),
createdGroup.getGroupUUID(), createdGroup.getGroupUUID(),
createdGroup.getMembers(), createdGroup.getMembers(),
createdGroup.getCreatedOn()); createdGroup.getCreatedOn());
} }
if (!createdGroup.getSubgroups().isEmpty()) { if (!createdGroup.getSubgroups().isEmpty()) {
auditService.dispatchAddSubgroups( groupAuditService.dispatchAddSubgroups(
currentUser.getAccountId(), currentUser.getAccountId(),
createdGroup.getGroupUUID(), createdGroup.getGroupUUID(),
createdGroup.getSubgroups(), createdGroup.getSubgroups(),
@@ -405,19 +405,19 @@ public class GroupsUpdate {
} }
if (!result.getAddedMembers().isEmpty()) { if (!result.getAddedMembers().isEmpty()) {
auditService.dispatchAddMembers( groupAuditService.dispatchAddMembers(
currentUser.getAccountId(), result.getGroupUuid(), result.getAddedMembers(), updatedOn); currentUser.getAccountId(), result.getGroupUuid(), result.getAddedMembers(), updatedOn);
} }
if (!result.getDeletedMembers().isEmpty()) { if (!result.getDeletedMembers().isEmpty()) {
auditService.dispatchDeleteMembers( groupAuditService.dispatchDeleteMembers(
currentUser.getAccountId(), result.getGroupUuid(), result.getDeletedMembers(), updatedOn); currentUser.getAccountId(), result.getGroupUuid(), result.getDeletedMembers(), updatedOn);
} }
if (!result.getAddedSubgroups().isEmpty()) { if (!result.getAddedSubgroups().isEmpty()) {
auditService.dispatchAddSubgroups( groupAuditService.dispatchAddSubgroups(
currentUser.getAccountId(), result.getGroupUuid(), result.getAddedSubgroups(), updatedOn); currentUser.getAccountId(), result.getGroupUuid(), result.getAddedSubgroups(), updatedOn);
} }
if (!result.getDeletedSubgroups().isEmpty()) { if (!result.getDeletedSubgroups().isEmpty()) {
auditService.dispatchDeleteSubgroups( groupAuditService.dispatchDeleteSubgroups(
currentUser.getAccountId(), currentUser.getAccountId(),
result.getGroupUuid(), result.getGroupUuid(),
result.getDeletedSubgroups(), result.getDeletedSubgroups(),

View File

@@ -11,6 +11,7 @@ java_library(
"//java/com/google/gerrit/metrics", "//java/com/google/gerrit/metrics",
"//java/com/google/gerrit/reviewdb:server", "//java/com/google/gerrit/reviewdb:server",
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server/audit",
"//java/com/google/gerrit/server/cache/h2", "//java/com/google/gerrit/server/cache/h2",
"//java/com/google/gerrit/server/git/receive", "//java/com/google/gerrit/server/git/receive",
"//java/com/google/gerrit/server/ioutil", "//java/com/google/gerrit/server/ioutil",

View File

@@ -26,6 +26,7 @@ java_library(
"//java/com/google/gerrit/server", "//java/com/google/gerrit/server",
"//java/com/google/gerrit/server:module", "//java/com/google/gerrit/server:module",
"//java/com/google/gerrit/server/api", "//java/com/google/gerrit/server/api",
"//java/com/google/gerrit/server/audit",
"//java/com/google/gerrit/server/cache/h2", "//java/com/google/gerrit/server/cache/h2",
"//java/com/google/gerrit/server/cache/mem", "//java/com/google/gerrit/server/cache/mem",
"//java/com/google/gerrit/server/restapi", "//java/com/google/gerrit/server/restapi",

View File

@@ -35,6 +35,7 @@ import com.google.gerrit.server.GerritPersonIdentProvider;
import com.google.gerrit.server.PluginUser; import com.google.gerrit.server.PluginUser;
import com.google.gerrit.server.api.GerritApiModule; import com.google.gerrit.server.api.GerritApiModule;
import com.google.gerrit.server.api.PluginApiModule; import com.google.gerrit.server.api.PluginApiModule;
import com.google.gerrit.server.audit.AuditModule;
import com.google.gerrit.server.cache.h2.H2CacheModule; import com.google.gerrit.server.cache.h2.H2CacheModule;
import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule; import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule;
import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsName;
@@ -178,6 +179,7 @@ public class InMemoryModule extends FactoryModule {
install(new DefaultPermissionBackendModule()); install(new DefaultPermissionBackendModule());
install(new SearchingChangeCacheImpl.Module()); install(new SearchingChangeCacheImpl.Module());
factory(GarbageCollection.Factory.class); factory(GarbageCollection.Factory.class);
install(new AuditModule());
bindScope(RequestScoped.class, PerThreadRequestScope.REQUEST); bindScope(RequestScoped.class, PerThreadRequestScope.REQUEST);