]> source.dussan.org Git - sonarqube.git/blob
6efa5cbfc3714d65f7da71ad20289b13dbc06529
[sonarqube.git] /
1 /*
2  * SonarQube, open source software quality management tool.
3  * Copyright (C) 2008-2014 SonarSource
4  * mailto:contact AT sonarsource DOT com
5  *
6  * SonarQube is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * SonarQube is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20 package org.sonar.plugins.batch.maven;
21
22 import org.apache.maven.execution.MavenSession;
23 import org.apache.maven.project.MavenProject;
24 import org.sonar.api.batch.SupportedEnvironment;
25 import org.sonar.api.batch.bootstrap.ProjectBuilder;
26 import org.sonar.api.batch.bootstrap.ProjectDefinition;
27 import org.sonar.api.batch.bootstrap.ProjectReactor;
28
29 import java.util.List;
30
31 /**
32  * Class that inject MavenProject in each module container
33  */
34 @SupportedEnvironment("maven")
35 public class MavenProjectBuilder extends ProjectBuilder {
36
37   private final MavenSession mavenSession;
38
39   public MavenProjectBuilder(MavenSession mavenSession) {
40     this.mavenSession = mavenSession;
41   }
42
43   @Override
44   public void build(Context context) {
45     ProjectReactor reactor = context.projectReactor();
46     for (ProjectDefinition moduleDef : reactor.getProjects()) {
47       setMavenProjectIfApplicable(moduleDef);
48     }
49   }
50
51   private void setMavenProjectIfApplicable(ProjectDefinition definition) {
52     if (mavenSession != null) {
53       String moduleKey = definition.getKey();
54       for (MavenProject mavenModule : (List<MavenProject>) mavenSession.getProjects()) {
55         // FIXME assumption that moduleKey was not modified by user and follow convention <groupId>:<artifactId>
56         String mavenModuleKey = mavenModule.getGroupId() + ":" + mavenModule.getArtifactId();
57         if (mavenModuleKey.equals(moduleKey) && !definition.getContainerExtensions().contains(mavenModule)) {
58           definition.addContainerExtension(mavenModule);
59         }
60       }
61     }
62   }
63
64 }