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:
David Ostrovsky
2014-05-27 18:03:11 +02:00
committed by Shawn Pearce
parent bb3af5ced7
commit 7141ba2fbb
4 changed files with 19 additions and 22 deletions

View File

@@ -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)));

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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);
}
});
}