CreateChange: Don't use Factory
Circular dependency was removed: ChangeJson depends on ChangesCollection ChangesCollection depends on CreateChange CreateChange depends on ChangeJson and now CreateChange can be used directly in ChangesCollection. The enables us to move both (ChangesCollection and CreateChange) in singelton scope. Change-Id: I896cfa562305aa5121bbc61ade4196dd78d624f9
This commit is contained in:
committed by
Shawn Pearce
parent
bb3af5ced7
commit
7141ba2fbb
@@ -45,17 +45,17 @@ import java.util.List;
|
||||
class ChangesImpl implements Changes {
|
||||
private final ChangesCollection changes;
|
||||
private final ChangeApiImpl.Factory api;
|
||||
private final CreateChange.Factory createChangeFactory;
|
||||
private final CreateChange createChange;
|
||||
private final Provider<QueryChanges> queryProvider;
|
||||
|
||||
@Inject
|
||||
ChangesImpl(ChangesCollection changes,
|
||||
ChangeApiImpl.Factory api,
|
||||
CreateChange.Factory createChangeFactory,
|
||||
CreateChange createChange,
|
||||
Provider<QueryChanges> queryProvider) {
|
||||
this.changes = changes;
|
||||
this.api = api;
|
||||
this.createChangeFactory = createChangeFactory;
|
||||
this.createChange = createChange;
|
||||
this.queryProvider = queryProvider;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ class ChangesImpl implements Changes {
|
||||
@Override
|
||||
public ChangeApi create(ChangeInfo in) throws RestApiException {
|
||||
try {
|
||||
ChangeJson.ChangeInfo out = createChangeFactory.create().apply(
|
||||
ChangeJson.ChangeInfo out = createChange.apply(
|
||||
TopLevelResource.INSTANCE, in).value();
|
||||
return api.create(changes.parse(TopLevelResource.INSTANCE,
|
||||
IdString.fromUrl(out.changeId)));
|
||||
|
||||
@@ -44,7 +44,7 @@ public class ChangesCollection implements
|
||||
private final ChangeControl.GenericFactory changeControlFactory;
|
||||
private final Provider<QueryChanges> queryFactory;
|
||||
private final DynamicMap<RestView<ChangeResource>> views;
|
||||
private final CreateChange.Factory createChangeFactory;
|
||||
private final CreateChange createChange;
|
||||
|
||||
@Inject
|
||||
ChangesCollection(
|
||||
@@ -53,13 +53,13 @@ public class ChangesCollection implements
|
||||
ChangeControl.GenericFactory changeControlFactory,
|
||||
Provider<QueryChanges> queryFactory,
|
||||
DynamicMap<RestView<ChangeResource>> views,
|
||||
CreateChange.Factory createChangeFactory) {
|
||||
CreateChange createChange) {
|
||||
this.db = dbProvider;
|
||||
this.user = user;
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.queryFactory = queryFactory;
|
||||
this.views = views;
|
||||
this.createChangeFactory = createChangeFactory;
|
||||
this.createChange = createChange;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -135,6 +135,6 @@ public class ChangesCollection implements
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public CreateChange post(TopLevelResource parent) throws RestApiException {
|
||||
return createChangeFactory.create();
|
||||
return createChange;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,18 +63,16 @@ import org.eclipse.jgit.util.ChangeIdUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class CreateChange implements
|
||||
RestModifyView<TopLevelResource, ChangeInfo> {
|
||||
|
||||
public static interface Factory {
|
||||
CreateChange create();
|
||||
}
|
||||
|
||||
private final ReviewDb db;
|
||||
private final Provider<ReviewDb> db;
|
||||
private final GitRepositoryManager gitManager;
|
||||
private final PersonIdent myIdent;
|
||||
private final TimeZone serverTimeZone;
|
||||
private final Provider<CurrentUser> userProvider;
|
||||
private final Provider<ProjectsCollection> projectsCollection;
|
||||
private final CommitValidators.Factory commitValidatorsFactory;
|
||||
@@ -82,7 +80,7 @@ public class CreateChange implements
|
||||
private final ChangeJson json;
|
||||
|
||||
@Inject
|
||||
CreateChange(ReviewDb db,
|
||||
CreateChange(Provider<ReviewDb> db,
|
||||
GitRepositoryManager gitManager,
|
||||
@GerritPersonIdent PersonIdent myIdent,
|
||||
Provider<CurrentUser> userProvider,
|
||||
@@ -92,7 +90,7 @@ public class CreateChange implements
|
||||
ChangeJson json) {
|
||||
this.db = db;
|
||||
this.gitManager = gitManager;
|
||||
this.myIdent = myIdent;
|
||||
this.serverTimeZone = myIdent.getTimeZone();
|
||||
this.userProvider = userProvider;
|
||||
this.projectsCollection = projectsCollection;
|
||||
this.commitValidatorsFactory = commitValidatorsFactory;
|
||||
@@ -154,9 +152,9 @@ public class CreateChange implements
|
||||
"Branch %s does not exist.", refName));
|
||||
}
|
||||
|
||||
IdentifiedUser me = (IdentifiedUser)userProvider.get();
|
||||
PersonIdent author =
|
||||
me.newCommitterIdent(myIdent.getWhen(), myIdent.getTimeZone());
|
||||
Timestamp now = TimeUtil.nowTs();
|
||||
IdentifiedUser me = (IdentifiedUser) userProvider.get();
|
||||
PersonIdent author = me.newCommitterIdent(now, serverTimeZone);
|
||||
|
||||
RevCommit mergeTip = rw.parseCommit(destRef.getObjectId());
|
||||
ObjectId id = ChangeIdUtil.computeChangeId(mergeTip.getTree(),
|
||||
@@ -167,10 +165,10 @@ public class CreateChange implements
|
||||
|
||||
Change change = new Change(
|
||||
getChangeId(id, c),
|
||||
new Change.Id(db.nextChangeId()),
|
||||
new Change.Id(db.get().nextChangeId()),
|
||||
me.getAccountId(),
|
||||
new Branch.NameKey(project, destRef.getName()),
|
||||
TimeUtil.nowTs());
|
||||
now);
|
||||
|
||||
ChangeInserter ins =
|
||||
changeInserterFactory.create(refControl, change, c);
|
||||
|
||||
@@ -107,7 +107,6 @@ public class Module extends RestApiModule {
|
||||
factory(EmailReviewComments.Factory.class);
|
||||
factory(ChangeInserter.Factory.class);
|
||||
factory(PatchSetInserter.Factory.class);
|
||||
factory(CreateChange.Factory.class);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user