001    /*
002     * SonarQube, open source software quality management tool.
003     * Copyright (C) 2008-2014 SonarSource
004     * mailto:contact AT sonarsource DOT com
005     *
006     * SonarQube is free software; you can redistribute it and/or
007     * modify it under the terms of the GNU Lesser General Public
008     * License as published by the Free Software Foundation; either
009     * version 3 of the License, or (at your option) any later version.
010     *
011     * SonarQube is distributed in the hope that it will be useful,
012     * but WITHOUT ANY WARRANTY; without even the implied warranty of
013     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014     * Lesser General Public License for more details.
015     *
016     * You should have received a copy of the GNU Lesser General Public License
017     * along with this program; if not, write to the Free Software Foundation,
018     * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019     */
020    package org.sonar.batch;
021    
022    import com.google.common.collect.Lists;
023    import org.apache.maven.project.MavenProject;
024    import org.sonar.api.batch.ProjectClasspath;
025    import org.sonar.api.batch.bootstrap.ProjectDefinition;
026    import org.sonar.api.resources.ProjectFileSystem;
027    
028    import javax.annotation.Nullable;
029    
030    import java.io.File;
031    import java.util.List;
032    
033    public class DefaultProjectClasspath extends ProjectClasspath {
034    
035      private ProjectDefinition def;
036      private ProjectFileSystem projectFileSystem;
037    
038      public DefaultProjectClasspath(ProjectDefinition def, ProjectFileSystem projectFileSystem) {
039        this(def, projectFileSystem, null);
040      }
041    
042      public DefaultProjectClasspath(ProjectDefinition def, ProjectFileSystem projectFileSystem, @Nullable MavenProject pom) {
043        super(pom);
044        this.def = def;
045        this.projectFileSystem = projectFileSystem;
046      }
047    
048      @Override
049      protected List<File> createElements() {
050        if (pom != null) {
051          return super.createElements();
052        } else {
053          List<File> elements = Lists.newArrayList();
054          for (String path : def.getBinaries()) {
055            elements.add(projectFileSystem.resolvePath(path));
056          }
057          for (String path : def.getLibraries()) {
058            elements.add(projectFileSystem.resolvePath(path));
059          }
060          return elements;
061        }
062      }
063    }