Merge branch 'stable-2.12'
* stable-2.12:
Supply parent before validating project creation
Change-Id: Ia51fa323d767ebe173441c2b0cd7c54433e949e4
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
index 5c946c4..83c9cb9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
@@ -232,7 +232,8 @@
checkProjectInSource(pm);
setParentProjectName(input, pm);
checkPreconditions(pm);
- try (Repository repo = openRepoStep.open(targetProject, resume, pm)) {
+ try (Repository repo = openRepoStep.open(targetProject, resume, pm,
+ parent)) {
ImportJson.persist(lockFile, importJson.format(input, info), pm);
configRepoStep.configure(repo, srcProject, input.from, pm);
gitFetchStep.fetch(input.user, input.pass, repo, pm);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
index 8b347a1..cacc18e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
@@ -19,13 +19,16 @@
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.ResourceConflictException;
+import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.CreateProjectArgs;
import com.google.gerrit.server.project.ProjectCache;
+import com.google.gerrit.server.project.ProjectsCollection;
import com.google.gerrit.server.validators.ProjectCreationValidationListener;
import com.google.gerrit.server.validators.ValidationException;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -40,18 +43,22 @@
private final ProjectCache projectCache;
private final DynamicSet<ProjectCreationValidationListener>
projectCreationValidationListeners;
+ private final Provider<ProjectsCollection> projectsCollection;
@Inject
OpenRepositoryStep(GitRepositoryManager git,
ProjectCache projectCache,
- DynamicSet<ProjectCreationValidationListener> projectCreationValidationListeners) {
+ DynamicSet<ProjectCreationValidationListener> projectCreationValidationListeners,
+ Provider<ProjectsCollection> projectsCollection) {
this.git = git;
this.projectCache = projectCache;
this.projectCreationValidationListeners = projectCreationValidationListeners;
+ this.projectsCollection = projectsCollection;
}
- Repository open(Project.NameKey name, boolean resume, ProgressMonitor pm)
- throws ResourceConflictException, IOException {
+ Repository open(Project.NameKey name, boolean resume, ProgressMonitor pm,
+ Project.NameKey parent)
+ throws ResourceConflictException, IOException, UnprocessableEntityException {
pm.beginTask("Open repository", 1);
try {
Repository repo = git.openRepository(name);
@@ -69,17 +76,18 @@
}
}
- beforeCreateProject(name);
+ beforeCreateProject(name, parent);
Repository repo = git.createRepository(name);
onProjectCreated(name);
updateAndEnd(pm);
return repo;
}
- private void beforeCreateProject(Project.NameKey name)
- throws ResourceConflictException {
+ private void beforeCreateProject(Project.NameKey name, Project.NameKey parent)
+ throws ResourceConflictException, UnprocessableEntityException, IOException {
CreateProjectArgs args = new CreateProjectArgs();
args.setProjectName(name);
+ args.newParent = projectsCollection.get().parse(parent.get()).getControl();
for (ProjectCreationValidationListener l : projectCreationValidationListeners) {
try {
l.validateNewProject(args);