Remove unused dbProvider field from IdentifiedUser This field is also no longer used in some factory methods, which means many callers need to get updated as well. One side effect is to consolidate many of the GenericFactory#create methods. This in turn means that the remote peer provider is never null; previously the code was treating a null Provider and a Provider that returns null identically, so this should have no behavior change. Change-Id: I107fcfbd1a1d8daa15ee3afc02c8e7e709ffb3ea
diff --git a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java index 1b3b9d9..f681fd5 100644 --- a/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java +++ b/gerrit-acceptance-framework/src/test/java/com/google/gerrit/acceptance/AbstractDaemonTest.java
@@ -81,7 +81,6 @@ import com.google.gwtorm.server.SchemaFactory; import com.google.inject.Inject; import com.google.inject.Provider; -import com.google.inject.util.Providers; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.errors.ConfigInvalidException; @@ -532,7 +531,7 @@ private Context newRequestContext(TestAccount account) { return atrScope.newContext(reviewDbProvider, new SshSession(server, account), - identifiedUserFactory.create(Providers.of(db), account.getId())); + identifiedUserFactory.create(account.getId())); } protected Context setApiUser(TestAccount account) { @@ -717,7 +716,7 @@ } protected IdentifiedUser user(TestAccount testAccount) { - return identifiedUserFactory.create(Providers.of(db), testAccount.getId()); + return identifiedUserFactory.create(testAccount.getId()); } protected RevisionResource parseCurrentRevisionResource(String changeId)
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/VisibleRefFilterIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/VisibleRefFilterIT.java index cfe04a2..3e2b9a6 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/VisibleRefFilterIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/git/VisibleRefFilterIT.java
@@ -38,7 +38,6 @@ import com.google.gerrit.server.project.Util; import com.google.gerrit.testutil.DisabledReviewDb; import com.google.inject.Inject; -import com.google.inject.util.Providers; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; @@ -272,7 +271,7 @@ AcceptanceTestRequestScope.Context ctx = disableDb(); try (Repository repo = repoManager.openRepository(project)) { ProjectControl ctl = projectControlFactory.controlFor(project, - identifiedUserFactory.create(Providers.of(db), user.getId())); + identifiedUserFactory.create(user.getId())); VisibleRefFilter filter = new VisibleRefFilter( tagCache, changeCache, repo, ctl, new DisabledReviewDb(), true); Map<String, Ref> all = repo.getAllRefs();
diff --git a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/GerritPublicKeyChecker.java b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/GerritPublicKeyChecker.java index 903bf2e..fe6d719 100644 --- a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/GerritPublicKeyChecker.java +++ b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/GerritPublicKeyChecker.java
@@ -169,7 +169,7 @@ if (extId == null) { return CheckResult.bad("Key is not associated with any users"); } - IdentifiedUser user = userFactory.create(db, extId.getAccountId()); + IdentifiedUser user = userFactory.create(extId.getAccountId()); Set<String> allowedUserIds = getAllowedUserIds(user); if (allowedUserIds.isEmpty()) { return CheckResult.bad("No identities found for user");
diff --git a/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java b/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java index ebe8105..749360c 100644 --- a/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java +++ b/gerrit-gpg/src/test/java/com/google/gerrit/gpg/GerritPublicKeyCheckerTest.java
@@ -151,12 +151,12 @@ private IdentifiedUser addUser(String name) throws Exception { AuthRequest req = AuthRequest.forUser(name); Account.Id id = accountManager.authenticate(req).getAccountId(); - return userFactory.create(Providers.of(db), id); + return userFactory.create(id); } private IdentifiedUser reloadUser() { accountCache.evict(userId); - user = userFactory.create(Providers.of(db), userId); + user = userFactory.create(userId); return user; }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java b/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java index 0493df3..c7f4c4a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/IdentifiedUser.java
@@ -20,7 +20,6 @@ import com.google.gerrit.common.Nullable; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Change; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountState; import com.google.gerrit.server.account.CapabilityControl; @@ -90,29 +89,20 @@ this.disableReverseDnsLookup = disableReverseDnsLookup; } - public IdentifiedUser create(final Account.Id id) { + public IdentifiedUser create(Account.Id id) { return create((SocketAddress) null, id); } - public IdentifiedUser create(Provider<ReviewDb> db, Account.Id id) { - return new IdentifiedUser(capabilityControlFactory, starredChangesUtil, - authConfig, realm, anonymousCowardName, canonicalUrl, accountCache, - groupBackend, disableReverseDnsLookup, null, db, id, null); - } - public IdentifiedUser create(SocketAddress remotePeer, Account.Id id) { - return new IdentifiedUser(capabilityControlFactory, starredChangesUtil, - authConfig, realm, anonymousCowardName, canonicalUrl, accountCache, - groupBackend, disableReverseDnsLookup, Providers.of(remotePeer), null, - id, null); + return runAs(remotePeer, id, null); } - public CurrentUser runAs(SocketAddress remotePeer, Account.Id id, + public IdentifiedUser runAs(SocketAddress remotePeer, Account.Id id, @Nullable CurrentUser caller) { return new IdentifiedUser(capabilityControlFactory, starredChangesUtil, authConfig, realm, anonymousCowardName, canonicalUrl, accountCache, - groupBackend, disableReverseDnsLookup, Providers.of(remotePeer), null, - id, caller); + groupBackend, disableReverseDnsLookup, Providers.of(remotePeer), id, + caller); } } @@ -133,23 +123,20 @@ private final AccountCache accountCache; private final GroupBackend groupBackend; private final Boolean disableReverseDnsLookup; - private final Provider<SocketAddress> remotePeerProvider; - private final Provider<ReviewDb> dbProvider; @Inject RequestFactory( CapabilityControl.Factory capabilityControlFactory, @Nullable StarredChangesUtil starredChangesUtil, - final AuthConfig authConfig, + AuthConfig authConfig, Realm realm, - @AnonymousCowardName final String anonymousCowardName, - @CanonicalWebUrl final Provider<String> canonicalUrl, - final AccountCache accountCache, - final GroupBackend groupBackend, - @DisableReverseDnsLookup final Boolean disableReverseDnsLookup, - @RemotePeer final Provider<SocketAddress> remotePeerProvider, - final Provider<ReviewDb> dbProvider) { + @AnonymousCowardName String anonymousCowardName, + @CanonicalWebUrl Provider<String> canonicalUrl, + AccountCache accountCache, + GroupBackend groupBackend, + @DisableReverseDnsLookup Boolean disableReverseDnsLookup, + @RemotePeer Provider<SocketAddress> remotePeerProvider) { this.capabilityControlFactory = capabilityControlFactory; this.starredChangesUtil = starredChangesUtil; this.authConfig = authConfig; @@ -160,21 +147,19 @@ this.groupBackend = groupBackend; this.disableReverseDnsLookup = disableReverseDnsLookup; this.remotePeerProvider = remotePeerProvider; - this.dbProvider = dbProvider; } public IdentifiedUser create(Account.Id id) { return new IdentifiedUser(capabilityControlFactory, starredChangesUtil, authConfig, realm, anonymousCowardName, canonicalUrl, accountCache, - groupBackend, disableReverseDnsLookup, remotePeerProvider, dbProvider, - id, null); + groupBackend, disableReverseDnsLookup, remotePeerProvider, id, null); } public IdentifiedUser runAs(Account.Id id, CurrentUser caller) { return new IdentifiedUser(capabilityControlFactory, starredChangesUtil, authConfig, realm, anonymousCowardName, canonicalUrl, accountCache, - groupBackend, disableReverseDnsLookup, remotePeerProvider, dbProvider, - id, caller); + groupBackend, disableReverseDnsLookup, remotePeerProvider, id, + caller); } } @@ -196,12 +181,7 @@ private final Set<String> validEmails = Sets.newTreeSet(String.CASE_INSENSITIVE_ORDER); - @Nullable private final Provider<SocketAddress> remotePeerProvider; - - @Nullable - private final Provider<ReviewDb> dbProvider; - private final Account.Id accountId; private AccountState state; @@ -224,7 +204,6 @@ final GroupBackend groupBackend, final Boolean disableReverseDnsLookup, @Nullable final Provider<SocketAddress> remotePeerProvider, - @Nullable final Provider<ReviewDb> dbProvider, final Account.Id id, @Nullable CurrentUser realUser) { super(capabilityControlFactory); @@ -237,7 +216,6 @@ this.anonymousCowardName = anonymousCowardName; this.disableReverseDnsLookup = disableReverseDnsLookup; this.remotePeerProvider = remotePeerProvider; - this.dbProvider = dbProvider; this.accountId = id; this.realUser = realUser != null ? realUser : this; } @@ -386,14 +364,11 @@ user = user + "|" + "account-" + ua.getId().toString(); String host = null; - if (remotePeerProvider != null) { - final SocketAddress remotePeer = remotePeerProvider.get(); - if (remotePeer instanceof InetSocketAddress) { - final InetSocketAddress sa = (InetSocketAddress) remotePeer; - final InetAddress in = sa.getAddress(); - - host = in != null ? getHost(in) : sa.getHostName(); - } + SocketAddress remotePeer = remotePeerProvider.get(); + if (remotePeer instanceof InetSocketAddress) { + InetSocketAddress sa = (InetSocketAddress) remotePeer; + InetAddress in = sa.getAddress(); + host = in != null ? getHost(in) : sa.getHostName(); } if (host == null || host.isEmpty()) { host = "unknown";
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java index eaf51e4..568f816 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
@@ -967,7 +967,7 @@ if (in.getPushCertificate() != null) { out.pushCertificate = gpgApi.checkPushCertificate( in.getPushCertificate(), - userFactory.create(db, in.getUploader())); + userFactory.create(in.getUploader())); } else { out.pushCertificate = new PushCertificateInfo(); }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/SuggestChangeReviewers.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/SuggestChangeReviewers.java index 8cbdf14..40df57c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/SuggestChangeReviewers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/SuggestChangeReviewers.java
@@ -64,8 +64,7 @@ return new VisibilityControl() { @Override public boolean isVisibleTo(Account.Id account) throws OrmException { - IdentifiedUser who = - identifiedUserFactory.create(dbProvider, account); + IdentifiedUser who = identifiedUserFactory.create(account); // we can't use changeControl directly as it won't suggest reviewers // to drafts return rsrc.getControl().forUser(who).isRefVisible();
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/EmailMerge.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/EmailMerge.java index d236682..f19c0aa 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/EmailMerge.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/EmailMerge.java
@@ -112,8 +112,7 @@ @Override public CurrentUser getUser() { if (submitter != null) { - return identifiedUserFactory.create( - getReviewDbProvider(), submitter).getRealUser(); + return identifiedUserFactory.create(submitter).getRealUser(); } throw new OutOfScopeException("No user on email thread"); }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ProjectWatch.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ProjectWatch.java index 374b2e9..8a80bfe 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ProjectWatch.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ProjectWatch.java
@@ -174,8 +174,7 @@ private boolean add(Watchers matching, AccountProjectWatch w, NotifyType type) throws OrmException { - IdentifiedUser user = - args.identifiedUserFactory.create(args.db, w.getAccountId()); + IdentifiedUser user = args.identifiedUserFactory.create(w.getAccountId()); try { if (filterMatch(user, w.getFilter())) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 07c8c72..d92c2b2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
@@ -301,7 +301,7 @@ } catch (ProvisionException e) { // Doesn't match current user, continue. } - return asUser(userFactory.create(db, otherId)); + return asUser(userFactory.create(otherId)); } IdentifiedUser getIdentifiedUser() throws QueryParseException { @@ -736,7 +736,7 @@ if (!m.isEmpty()) { List<Predicate<ChangeData>> p = Lists.newArrayListWithCapacity(m.size()); for (Account.Id id : m) { - return visibleto(args.userFactory.create(args.db, id)); + return visibleto(args.userFactory.create(id)); } return Predicate.or(p); } @@ -791,7 +791,7 @@ if (g == null) { throw error("Group " + group + " not found"); } - return new OwnerinPredicate(args.db, args.userFactory, g.getUUID()); + return new OwnerinPredicate(args.userFactory, g.getUUID()); } @Operator @@ -818,7 +818,7 @@ if (g == null) { throw error("Group " + group + " not found"); } - return new ReviewerinPredicate(args.db, args.userFactory, g.getUUID()); + return new ReviewerinPredicate(args.userFactory, g.getUUID()); } @Operator
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/EqualsLabelPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/EqualsLabelPredicate.java index ff9c853..b01fdbe 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/EqualsLabelPredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/EqualsLabelPredicate.java
@@ -112,7 +112,7 @@ if (psVal == expVal) { // Double check the value is still permitted for the user. // - IdentifiedUser reviewer = userFactory.create(dbProvider, approver); + IdentifiedUser reviewer = userFactory.create(approver); try { ChangeControl cc = ccFactory.controlFor(dbProvider.get(), change, reviewer);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OwnerinPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OwnerinPredicate.java index a0c1235..467e4c5 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OwnerinPredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/OwnerinPredicate.java
@@ -16,21 +16,17 @@ import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.Change; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.query.OperatorPredicate; import com.google.gwtorm.server.OrmException; -import com.google.inject.Provider; class OwnerinPredicate extends OperatorPredicate<ChangeData> { - private final Provider<ReviewDb> dbProvider; private final IdentifiedUser.GenericFactory userFactory; private final AccountGroup.UUID uuid; - OwnerinPredicate(Provider<ReviewDb> dbProvider, - IdentifiedUser.GenericFactory userFactory, AccountGroup.UUID uuid) { + OwnerinPredicate(IdentifiedUser.GenericFactory userFactory, + AccountGroup.UUID uuid) { super(ChangeQueryBuilder.FIELD_OWNERIN, uuid.toString()); - this.dbProvider = dbProvider; this.userFactory = userFactory; this.uuid = uuid; } @@ -45,8 +41,7 @@ if (change == null) { return false; } - final IdentifiedUser owner = userFactory.create(dbProvider, - change.getOwner()); + final IdentifiedUser owner = userFactory.create(change.getOwner()); return owner.getEffectiveGroups().contains(uuid); }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ReviewerinPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ReviewerinPredicate.java index a29ac62..eb93451 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ReviewerinPredicate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ReviewerinPredicate.java
@@ -16,21 +16,17 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.AccountGroup; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.query.OperatorPredicate; import com.google.gwtorm.server.OrmException; -import com.google.inject.Provider; class ReviewerinPredicate extends OperatorPredicate<ChangeData> { - private final Provider<ReviewDb> dbProvider; private final IdentifiedUser.GenericFactory userFactory; private final AccountGroup.UUID uuid; - ReviewerinPredicate(Provider<ReviewDb> dbProvider, - IdentifiedUser.GenericFactory userFactory, AccountGroup.UUID uuid) { + ReviewerinPredicate(IdentifiedUser.GenericFactory userFactory, + AccountGroup.UUID uuid) { super(ChangeQueryBuilder.FIELD_REVIEWERIN, uuid.toString()); - this.dbProvider = dbProvider; this.userFactory = userFactory; this.uuid = uuid; } @@ -42,7 +38,7 @@ @Override public boolean match(final ChangeData object) throws OrmException { for (Account.Id accountId : object.reviewers().values()) { - IdentifiedUser reviewer = userFactory.create(dbProvider, accountId); + IdentifiedUser reviewer = userFactory.create(accountId); if (reviewer.getEffectiveGroups().contains(uuid)) { return true; }
diff --git a/gerrit-server/src/main/java/gerrit/PRED_current_user_2.java b/gerrit-server/src/main/java/gerrit/PRED_current_user_2.java index 3ee8d82..87c7138 100644 --- a/gerrit-server/src/main/java/gerrit/PRED_current_user_2.java +++ b/gerrit-server/src/main/java/gerrit/PRED_current_user_2.java
@@ -17,12 +17,10 @@ import static com.googlecode.prolog_cafe.lang.SymbolTerm.intern; import com.google.gerrit.reviewdb.client.Account; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.rules.PrologEnvironment; import com.google.gerrit.rules.StoredValues; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; -import com.google.inject.util.Providers; import com.googlecode.prolog_cafe.exceptions.IllegalTypeException; import com.googlecode.prolog_cafe.exceptions.PInstantiationException; @@ -90,14 +88,8 @@ Account.Id accountId = new Account.Id(((IntegerTerm) idTerm).intValue()); user = cache.get(accountId); if (user == null) { - ReviewDb db = StoredValues.REVIEW_DB.getOrNull(engine); IdentifiedUser.GenericFactory userFactory = userFactory(engine); - IdentifiedUser who; - if (db != null) { - who = userFactory.create(Providers.of(db), accountId); - } else { - who = userFactory.create(accountId); - } + IdentifiedUser who = userFactory.create(accountId); cache.put(accountId, who); user = who; }
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java index 6b6528e..aa23e50 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/git/LabelNormalizerTest.java
@@ -90,7 +90,7 @@ schemaCreator.create(db); userId = accountManager.authenticate(AuthRequest.forUser("user")) .getAccountId(); - user = userFactory.create(Providers.of(db), userId); + user = userFactory.create(userId); requestContext.setContext(new RequestContext() { @Override
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/project/ProjectControlTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/project/ProjectControlTest.java index f29a351..e3c382a 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/project/ProjectControlTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/project/ProjectControlTest.java
@@ -79,7 +79,7 @@ schemaCreator.create(db); Account.Id userId = accountManager.authenticate(AuthRequest.forUser("user")) .getAccountId(); - user = userFactory.create(Providers.of(db), userId); + user = userFactory.create(userId); Project.NameKey name = new Project.NameKey("project"); InMemoryRepository inMemoryRepo = repoManager.createRepository(name);
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java index bcc9b38..e9b65c8 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
@@ -154,13 +154,13 @@ Account userAccount = db.accounts().get(userId); userAccount.setPreferredEmail("user@example.com"); db.accounts().update(ImmutableList.of(userAccount)); - user = userFactory.create(Providers.of(db), userId); + user = userFactory.create(userId); requestContext.setContext(newRequestContext(userAccount.getId())); } protected RequestContext newRequestContext(Account.Id requestUserId) { final CurrentUser requestUser = - userFactory.create(Providers.of(db), requestUserId); + userFactory.create(requestUserId); return new RequestContext() { @Override public CurrentUser getUser() { @@ -1522,7 +1522,7 @@ Project.NameKey project = new Project.NameKey( repo.getRepository().getDescription().getRepositoryName()); Account.Id ownerId = owner != null ? owner : userId; - IdentifiedUser user = userFactory.create(Providers.of(db), ownerId); + IdentifiedUser user = userFactory.create(ownerId); try (BatchUpdate bu = updateFactory.create(db, project, user, TimeUtil.nowTs())) { bu.insertChange(ins);