import org.sonar.api.batch.fs.FilePredicates;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.config.Settings;
import org.sonar.api.resources.Project;
try {
for (InputFile inputFile : sourceFiles) {
LOG.debug("Detection of duplications for {}", inputFile);
- String resourceEffectiveKey = ((DeprecatedDefaultInputFile) inputFile).key();
+ String resourceEffectiveKey = ((DefaultInputFile) inputFile).key();
Collection<Block> fileBlocks = index.getByInputFile(inputFile, resourceEffectiveKey);
Iterable<CloneGroup> filtered;
TokenizerBridge bridge = new TokenizerBridge(mapping.getTokenizer(), fs.encoding().name(), getBlockSize(languageKey));
for (InputFile inputFile : sourceFiles) {
LOG.debug("Populating index from {}", inputFile);
- String resourceEffectiveKey = ((DeprecatedDefaultInputFile) inputFile).key();
+ String resourceEffectiveKey = ((DefaultInputFile) inputFile).key();
List<Block> blocks2 = bridge.chunk(resourceEffectiveKey, inputFile.file());
index.insert(inputFile, blocks2);
}
import org.sonar.api.batch.fs.FilePredicates;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.duplication.NewDuplication;
import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplication;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.*;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
public class JavaCpdEngine extends CpdEngine {
for (InputFile inputFile : sourceFiles) {
LOG.debug("Populating index from {}", inputFile);
- String resourceEffectiveKey = ((DeprecatedDefaultInputFile) inputFile).key();
+ String resourceEffectiveKey = ((DefaultInputFile) inputFile).key();
List<Statement> statements;
try {
for (InputFile inputFile : sourceFiles) {
LOG.debug("Detection of duplications for {}", inputFile);
- String resourceEffectiveKey = ((DeprecatedDefaultInputFile) inputFile).key();
+ String resourceEffectiveKey = ((DefaultInputFile) inputFile).key();
Collection<Block> fileBlocks = index.getByInputFile(inputFile, resourceEffectiveKey);
private final ResourceCache resourceCache;
private final MetricFinder metricFinder;
private final MeasureCache measureCache;
- private final ResourceKeyMigration migration;
private final DependencyPersister dependencyPersister;
// caches
private Project currentProject;
private ModuleIssues moduleIssues;
public DefaultIndex(ResourceCache resourceCache, DependencyPersister dependencyPersister,
- DefaultProjectTree projectTree, MetricFinder metricFinder,
- ResourceKeyMigration migration, MeasureCache measureCache) {
+ DefaultProjectTree projectTree, MetricFinder metricFinder, MeasureCache measureCache) {
this.resourceCache = resourceCache;
this.dependencyPersister = dependencyPersister;
this.projectTree = projectTree;
this.metricFinder = metricFinder;
- this.migration = migration;
- this.measureCache = measureCache;
- }
-
- public DefaultIndex(ResourceCache resourceCache, DependencyPersister dependencyPersister, DefaultProjectTree projectTree, MetricFinder metricFinder, MeasureCache measureCache) {
- this.resourceCache = resourceCache;
- this.dependencyPersister = dependencyPersister;
- this.projectTree = projectTree;
- this.metricFinder = metricFinder;
- this.migration = null;
this.measureCache = measureCache;
}
void doStart(Project rootProject) {
Bucket bucket = new Bucket(rootProject);
addBucket(rootProject, bucket);
- if (migration != null) {
- migration.checkIfMigrationNeeded(rootProject);
- }
resourceCache.add(rootProject, null);
currentProject = rootProject;
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.batch.index;
-
-import com.google.common.annotations.VisibleForTesting;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.sonar.api.BatchSide;
-import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
-import org.sonar.api.database.DatabaseSession;
-import org.sonar.api.database.model.ResourceModel;
-import org.sonar.api.resources.Directory;
-import org.sonar.api.resources.Project;
-import org.sonar.api.resources.Qualifiers;
-import org.sonar.api.resources.Scopes;
-import org.sonar.api.scan.filesystem.PathResolver;
-import org.sonar.api.utils.PathUtils;
-import org.sonar.batch.scan.filesystem.DefaultModuleFileSystem;
-import org.sonar.batch.util.DeprecatedKeyUtils;
-
-import javax.annotation.CheckForNull;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@BatchSide
-public class ResourceKeyMigration {
-
- private static final String UNABLE_TO_UPDATE_COMPONENT_NO_MATCH_WAS_FOUND = "Unable to update component {}. No match was found.";
- private static final String COMPONENT_CHANGED_TO = "Component {} changed to {}";
- private final Logger logger;
- private final DatabaseSession session;
- private final PathResolver pathResolver;
-
- private boolean migrationNeeded = false;
-
- public ResourceKeyMigration(DatabaseSession session, PathResolver pathResolver) {
- this(session, pathResolver, LoggerFactory.getLogger(ResourceKeyMigration.class));
- }
-
- @VisibleForTesting
- ResourceKeyMigration(DatabaseSession session, PathResolver pathResolver, Logger logger) {
- this.session = session;
- this.logger = logger;
- this.pathResolver = pathResolver;
- }
-
- public void checkIfMigrationNeeded(Project rootProject) {
- ResourceModel model = session.getSingleResult(ResourceModel.class, "key", rootProject.getEffectiveKey());
- if (model != null && StringUtils.isBlank(model.getDeprecatedKey())) {
- this.migrationNeeded = true;
- }
- }
-
- public void migrateIfNeeded(Project module, DefaultModuleFileSystem fs) {
- if (migrationNeeded) {
- migrateIfNeeded(module, fs.inputFiles(fs.predicates().all()), fs);
- }
- }
-
- void migrateIfNeeded(Project module, Iterable<InputFile> inputFiles, DefaultModuleFileSystem fs) {
- logger.info("Update component keys");
- Map<String, InputFile> deprecatedFileKeyMapper = new HashMap<>();
- Map<String, InputFile> deprecatedTestKeyMapper = new HashMap<>();
- Map<String, String> deprecatedDirectoryKeyMapper = new HashMap<>();
- for (InputFile inputFile : inputFiles) {
- String deprecatedKey = computeDeprecatedKey(module.getKey(), (DeprecatedDefaultInputFile) inputFile, fs);
- if (deprecatedKey != null) {
- if (InputFile.Type.TEST == inputFile.type() && !deprecatedTestKeyMapper.containsKey(deprecatedKey)) {
- deprecatedTestKeyMapper.put(deprecatedKey, inputFile);
- } else if (InputFile.Type.MAIN == inputFile.type() && !deprecatedFileKeyMapper.containsKey(deprecatedKey)) {
- deprecatedFileKeyMapper.put(deprecatedKey, inputFile);
- }
- }
- }
-
- ResourceModel moduleModel = session.getSingleResult(ResourceModel.class, "key", module.getEffectiveKey());
- int moduleId = moduleModel.getId();
- migrateFiles(module, deprecatedFileKeyMapper, deprecatedTestKeyMapper, deprecatedDirectoryKeyMapper, moduleId);
- migrateDirectories(deprecatedDirectoryKeyMapper, moduleId);
- session.commit();
- }
-
- @CheckForNull
- private String computeDeprecatedKey(String moduleKey, DeprecatedDefaultInputFile inputFile, DefaultModuleFileSystem fs) {
- List<java.io.File> sourceDirs = InputFile.Type.MAIN == inputFile.type() ? fs.sourceDirs() : fs.testDirs();
- for (java.io.File sourceDir : sourceDirs) {
- String sourceRelativePath = pathResolver.relativePath(sourceDir, inputFile.file());
- if (sourceRelativePath != null) {
- if ("java".equals(inputFile.language())) {
- return new StringBuilder()
- .append(moduleKey).append(":").append(DeprecatedKeyUtils.getJavaFileDeprecatedKey(sourceRelativePath)).toString();
- } else {
- return new StringBuilder().append(moduleKey).append(":").append(sourceRelativePath).toString();
- }
- }
- }
- return null;
- }
-
- private void migrateFiles(Project module, Map<String, InputFile> deprecatedFileKeyMapper, Map<String, InputFile> deprecatedTestKeyMapper,
- Map<String, String> deprecatedDirectoryKeyMapper,
- int moduleId) {
- // Find all FIL or CLA resources for this module
- StringBuilder hql = newResourceQuery()
- .append(" and scope = '").append(Scopes.FILE).append("' order by qualifier, key");
- Map<String, ResourceModel> disabledResourceByKey = loadDisabledResources(moduleId, hql);
- List<ResourceModel> resources = loadEnabledResources(moduleId, hql);
- for (ResourceModel resourceModel : resources) {
- String oldEffectiveKey = resourceModel.getKey();
- boolean isTest = Qualifiers.UNIT_TEST_FILE.equals(resourceModel.getQualifier());
- InputFile matchedFile = findInputFile(deprecatedFileKeyMapper, deprecatedTestKeyMapper, oldEffectiveKey, isTest);
- if (matchedFile != null) {
- String newEffectiveKey = ((DeprecatedDefaultInputFile) matchedFile).key();
- // Now compute migration of the parent dir
- String oldKey = StringUtils.substringAfterLast(oldEffectiveKey, ":");
- String parentOldKey;
- if ("java".equals(resourceModel.getLanguageKey())) {
- parentOldKey = String.format("%s:%s", module.getEffectiveKey(), DeprecatedKeyUtils.getJavaFileParentDeprecatedKey(oldKey));
- } else {
- parentOldKey = String.format("%s:%s", module.getEffectiveKey(), oldParentKey(oldKey));
- }
- String parentNewKey = String.format("%s:%s", module.getEffectiveKey(), getParentKey(matchedFile));
- if (!deprecatedDirectoryKeyMapper.containsKey(parentOldKey)) {
- deprecatedDirectoryKeyMapper.put(parentOldKey, parentNewKey);
- } else if (!parentNewKey.equals(deprecatedDirectoryKeyMapper.get(parentOldKey))) {
- logger.warn("Directory with key " + parentOldKey + " matches both " + deprecatedDirectoryKeyMapper.get(parentOldKey) + " and "
- + parentNewKey + ". First match is arbitrary chosen.");
- }
- updateKey(resourceModel, newEffectiveKey, disabledResourceByKey);
- resourceModel.setDeprecatedKey(oldEffectiveKey);
- logger.info(COMPONENT_CHANGED_TO, oldEffectiveKey, newEffectiveKey);
- } else {
- logger.warn(UNABLE_TO_UPDATE_COMPONENT_NO_MATCH_WAS_FOUND, oldEffectiveKey);
- }
- }
- }
-
- private String oldParentKey(String oldKey) {
- String cleanKey = StringUtils.trim(oldKey.replace('\\', '/'));
- if (cleanKey.indexOf(Directory.SEPARATOR) >= 0) {
- String oldParentKey = Directory.parseKey(StringUtils.substringBeforeLast(oldKey, Directory.SEPARATOR));
- oldParentKey = StringUtils.removeStart(oldParentKey, Directory.SEPARATOR);
- oldParentKey = StringUtils.removeEnd(oldParentKey, Directory.SEPARATOR);
- return oldParentKey;
- } else {
- return Directory.ROOT;
- }
- }
-
- private void updateKey(ResourceModel resourceModel, String newEffectiveKey, Map<String, ResourceModel> disabledResourceByKey) {
- // Look for disabled resource with conflicting key
- if (disabledResourceByKey.containsKey(newEffectiveKey)) {
- ResourceModel duplicateDisabledResource = disabledResourceByKey.get(newEffectiveKey);
- String disabledKey = newEffectiveKey + "_renamed_by_resource_key_migration";
- duplicateDisabledResource.setKey(disabledKey);
- logger.info(COMPONENT_CHANGED_TO, newEffectiveKey, disabledKey);
- }
- resourceModel.setKey(newEffectiveKey);
- }
-
- private StringBuilder newResourceQuery() {
- return new StringBuilder().append("from ")
- .append(ResourceModel.class.getSimpleName())
- .append(" where enabled = :enabled")
- .append(" and rootId = :rootId ");
- }
-
- private InputFile findInputFile(Map<String, InputFile> deprecatedFileKeyMapper, Map<String, InputFile> deprecatedTestKeyMapper, String oldEffectiveKey, boolean isTest) {
- if (isTest) {
- return deprecatedTestKeyMapper.get(oldEffectiveKey);
- } else {
- return deprecatedFileKeyMapper.get(oldEffectiveKey);
- }
- }
-
- private void migrateDirectories(Map<String, String> deprecatedDirectoryKeyMapper, int moduleId) {
- // Find all DIR resources for this module
- StringBuilder hql = newResourceQuery()
- .append(" and qualifier = '").append(Qualifiers.DIRECTORY).append("'");
- Map<String, ResourceModel> disabledResourceByKey = loadDisabledResources(moduleId, hql);
- List<ResourceModel> resources = loadEnabledResources(moduleId, hql);
- for (ResourceModel resourceModel : resources) {
- String oldEffectiveKey = resourceModel.getKey();
- if (deprecatedDirectoryKeyMapper.containsKey(oldEffectiveKey)) {
- String newEffectiveKey = deprecatedDirectoryKeyMapper.get(oldEffectiveKey);
- updateKey(resourceModel, newEffectiveKey, disabledResourceByKey);
- resourceModel.setDeprecatedKey(oldEffectiveKey);
- logger.info(COMPONENT_CHANGED_TO, oldEffectiveKey, newEffectiveKey);
- } else {
- logger.warn(UNABLE_TO_UPDATE_COMPONENT_NO_MATCH_WAS_FOUND, oldEffectiveKey);
- }
- }
- }
-
- private List<ResourceModel> loadEnabledResources(int moduleId, StringBuilder hql) {
- return session.createQuery(hql.toString())
- .setParameter("rootId", moduleId)
- .setParameter("enabled", true)
- .getResultList();
- }
-
- private Map<String, ResourceModel> loadDisabledResources(int moduleId, StringBuilder hql) {
- List<ResourceModel> disabledResources = session.createQuery(hql.toString())
- .setParameter("rootId", moduleId)
- .setParameter("enabled", false)
- .getResultList();
- Map<String, ResourceModel> disabledResourceByKey = new HashMap<>();
- for (ResourceModel disabledResourceModel : disabledResources) {
- disabledResourceByKey.put(disabledResourceModel.getKey(), disabledResourceModel);
- }
- return disabledResourceByKey;
- }
-
- private String getParentKey(InputFile matchedFile) {
- String filePath = PathUtils.sanitize(matchedFile.relativePath());
- String parentFolderPath;
- if (filePath.contains(Directory.SEPARATOR)) {
- parentFolderPath = StringUtils.substringBeforeLast(filePath, Directory.SEPARATOR);
- } else {
- parentFolderPath = Directory.SEPARATOR;
- }
- return parentFolderPath;
- }
-}
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.resources.Project;
import org.sonar.api.utils.SonarException;
import org.sonar.batch.issue.ignore.pattern.IssueExclusionPatternInitializer;
for (InputFile inputFile : fileSystem.inputFiles(fileSystem.predicates().all())) {
try {
- String componentEffectiveKey = ((DeprecatedDefaultInputFile) inputFile).key();
+ String componentEffectiveKey = ((DefaultInputFile) inputFile).key();
if (componentEffectiveKey != null) {
String path = inputFile.relativePath();
inclusionPatternInitializer.initializePatternsForPath(path, componentEffectiveKey);
import org.sonar.batch.index.DefaultIndex;
import org.sonar.batch.index.DependencyPersister;
import org.sonar.batch.index.ResourceCache;
-import org.sonar.batch.index.ResourceKeyMigration;
import org.sonar.batch.index.ResourcePersister;
import org.sonar.batch.issue.DefaultProjectIssues;
import org.sonar.batch.issue.IssueCache;
add(
PastMeasuresLoader.class,
ResourcePersister.class,
- ResourceKeyMigration.class,
GraphPersister.class,
// Users
*/
package org.sonar.batch.scan.filesystem;
-import org.sonar.api.batch.fs.internal.AbstractFilePredicate;
-
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.AbstractFilePredicate;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
/**
* Additional {@link org.sonar.api.batch.fs.FilePredicate}s that are
@Override
public boolean apply(InputFile f) {
- return key.equals(((DeprecatedDefaultInputFile) f).key());
+ return key.equals(((DefaultInputFile) f).key());
}
}
import org.sonar.api.resources.Project;
import org.sonar.api.resources.Resource;
import org.sonar.batch.index.ResourceCache;
-import org.sonar.batch.index.ResourceKeyMigration;
import org.sonar.batch.index.ResourcePersister;
import javax.annotation.Nullable;
private final Languages languages;
private final SonarIndex sonarIndex;
- private final ResourceKeyMigration migration;
private final Project module;
private final ResourcePersister resourcePersister;
private final ResourceCache resourceCache;
- public ComponentIndexer(Project module, Languages languages, SonarIndex sonarIndex, ResourceCache resourceCache, @Nullable ResourceKeyMigration migration,
- @Nullable ResourcePersister resourcePersister) {
+ public ComponentIndexer(Project module, Languages languages, SonarIndex sonarIndex, ResourceCache resourceCache, @Nullable ResourcePersister resourcePersister) {
this.module = module;
this.languages = languages;
this.sonarIndex = sonarIndex;
this.resourceCache = resourceCache;
- this.migration = migration;
this.resourcePersister = resourcePersister;
}
public ComponentIndexer(Project module, Languages languages, SonarIndex sonarIndex, ResourceCache resourceCache) {
- this(module, languages, sonarIndex, resourceCache, null, null);
+ this(module, languages, sonarIndex, resourceCache, null);
}
public void execute(DefaultModuleFileSystem fs) {
resourcePersister.persist();
}
- if (migration != null) {
- migration.migrateIfNeeded(module, fs);
- }
-
for (InputFile inputFile : fs.inputFiles(fs.predicates().all())) {
String languageKey = inputFile.language();
boolean unitTest = InputFile.Type.TEST == inputFile.type();
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.fs.InputFileFilter;
import org.sonar.api.batch.fs.internal.DefaultInputDir;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.scan.filesystem.PathResolver;
import org.sonar.api.utils.MessageException;
import org.sonar.batch.util.ProgressReport;
}
private void indexFile(InputFileBuilder inputFileBuilder, DefaultModuleFileSystem fileSystem, Progress progress, File sourceFile, InputFile.Type type) {
- DeprecatedDefaultInputFile inputFile = inputFileBuilder.create(sourceFile);
+ DefaultInputFile inputFile = inputFileBuilder.create(sourceFile);
if (inputFile != null) {
// Set basedir on input file prior to adding it to the FS since exclusions filters may require the absolute path
inputFile.setModuleBaseDir(fileSystem.baseDirPath());
}
private void indexFile(final InputFileBuilder inputFileBuilder, final DefaultModuleFileSystem fs,
- final Progress status, final DeprecatedDefaultInputFile inputFile, final InputFile.Type type) {
+ final Progress status, final DefaultInputFile inputFile, final InputFile.Type type) {
tasks.add(executorService.submit(new Callable<Void>() {
@Override
public Void call() {
- DeprecatedDefaultInputFile completedInputFile = inputFileBuilder.completeAndComputeMetadata(inputFile, type);
+ DefaultInputFile completedInputFile = inputFileBuilder.completeAndComputeMetadata(inputFile, type);
if (completedInputFile != null && accept(completedInputFile)) {
fs.add(completedInputFile);
status.markAsIndexed(completedInputFile);
import org.sonar.api.CoreProperties;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.fs.internal.FileMetadata;
import org.sonar.api.config.Settings;
import org.sonar.api.scan.filesystem.PathResolver;
}
@CheckForNull
- DeprecatedDefaultInputFile create(File file) {
+ DefaultInputFile create(File file) {
String relativePath = pathResolver.relativePath(fs.baseDir(), file);
if (relativePath == null) {
LOG.warn("File '{}' is ignored. It is not located in module basedir '{}'.", file.getAbsolutePath(), fs.baseDir());
return null;
}
- return new DeprecatedDefaultInputFile(moduleKey, relativePath);
+ return new DefaultInputFile(moduleKey, relativePath);
}
/**
* Optimization to not compute InputFile metadata if the file is excluded from analysis.
*/
@CheckForNull
- DeprecatedDefaultInputFile completeAndComputeMetadata(DeprecatedDefaultInputFile inputFile, InputFile.Type type) {
+ DefaultInputFile completeAndComputeMetadata(DefaultInputFile inputFile, InputFile.Type type) {
inputFile.setType(type);
inputFile.setModuleBaseDir(fs.baseDir().toPath());
inputFile.setCharset(fs.encoding());
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.batch.util;
-
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.resources.Directory;
-import org.sonar.api.resources.JavaPackage;
-
-public class DeprecatedKeyUtils {
-
- private DeprecatedKeyUtils() {
- // Utility class
- }
-
- /**
- * Return the parent directory deprecated key for a given deprecated Java file key.
- * "com.foo.Bar" -> "com/foo"
- * "[root].Bar" -> "[root]"
- * "Bar" -> "[root]"
- */
- public static String getJavaFileParentDeprecatedKey(String deprecatedJavaFileKey) {
- String packageFullyQualifiedName;
- String realKey = StringUtils.trim(deprecatedJavaFileKey);
- if (realKey.contains(".")) {
- packageFullyQualifiedName = StringUtils.substringBeforeLast(realKey, ".");
- String deprecatedDirectoryKey = StringUtils.trimToEmpty(packageFullyQualifiedName);
- if (JavaPackage.DEFAULT_PACKAGE_NAME.equals(deprecatedDirectoryKey)) {
- return Directory.ROOT;
- }
- deprecatedDirectoryKey = deprecatedDirectoryKey.replaceAll("\\.", Directory.SEPARATOR);
- return StringUtils.defaultIfEmpty(deprecatedDirectoryKey, Directory.ROOT);
- } else {
- return Directory.ROOT;
- }
- }
-
- /**
- * Return the deprecated key of a Java file given its path relative to source directory.
- */
- public static String getJavaFileDeprecatedKey(String sourceRelativePath) {
- String pacname = null;
- String classname = sourceRelativePath;
-
- if (sourceRelativePath.indexOf('/') >= 0) {
- pacname = StringUtils.substringBeforeLast(sourceRelativePath, "/");
- pacname = StringUtils.replace(pacname, "/", ".");
- classname = StringUtils.substringAfterLast(sourceRelativePath, "/");
- }
- classname = StringUtils.substringBeforeLast(classname, ".");
- if (StringUtils.isBlank(pacname)) {
- return new StringBuilder().append(JavaPackage.DEFAULT_PACKAGE_NAME).append(".").append(classname).toString();
- } else {
- return new StringBuilder().append(pacname.trim()).append(".").append(classname).toString();
- }
- }
-
-}
import org.sonar.api.batch.Sensor;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.batch.postjob.PostJobContext;
-import org.sonar.core.platform.ComponentContainer;
import org.sonar.api.resources.Project;
import org.sonar.batch.postjob.PostJobOptimizer;
import org.sonar.batch.sensor.DefaultSensorContext;
import org.sonar.batch.sensor.SensorOptimizer;
+import org.sonar.core.platform.ComponentContainer;
import java.util.Arrays;
import java.util.Collection;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-import org.sonar.core.platform.PluginInfo;
import org.sonar.core.platform.ExplodedPlugin;
+import org.sonar.core.platform.PluginInfo;
import org.sonar.home.cache.FileCache;
import org.sonar.home.cache.FileCacheBuilder;
import java.io.File;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
public class JdbcDriverHolderTest {
*/
package org.sonar.batch.components;
-import org.sonar.batch.components.PastMeasuresLoader;
-
import org.junit.Test;
import org.sonar.api.database.model.Snapshot;
import org.sonar.api.measures.Metric;
import java.util.Arrays;
import java.util.List;
-import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.nullValue;
import static org.hamcrest.Matchers.hasItems;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
public class PastMeasuresLoaderTest extends AbstractDbUnitTestCase {
*/
package org.sonar.batch.components;
-import org.sonar.batch.components.PastSnapshotFinder;
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByDate;
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByDays;
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByPreviousAnalysis;
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByPreviousVersion;
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByVersion;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentMatcher;
import org.sonar.api.config.Settings;
import org.sonar.api.database.model.Snapshot;
import org.sonar.api.utils.DateUtils;
+import org.sonar.batch.deprecated.components.PastSnapshotFinderByDate;
+import org.sonar.batch.deprecated.components.PastSnapshotFinderByDays;
+import org.sonar.batch.deprecated.components.PastSnapshotFinderByPreviousAnalysis;
+import org.sonar.batch.deprecated.components.PastSnapshotFinderByPreviousVersion;
+import org.sonar.batch.deprecated.components.PastSnapshotFinderByVersion;
import java.text.ParseException;
import java.text.SimpleDateFormat;
*/
package org.sonar.batch.components;
-import org.sonar.batch.components.PastSnapshot;
-
import org.junit.Test;
import org.sonar.api.CoreProperties;
import org.sonar.api.database.model.Snapshot;
*/
package org.sonar.batch.components;
-import org.sonar.batch.components.TimeMachineConfiguration;
-
-import org.sonar.batch.components.PastSnapshot;
-import org.sonar.batch.deprecated.components.PeriodsDefinition;
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.database.model.Snapshot;
+import org.sonar.batch.deprecated.components.PeriodsDefinition;
import org.sonar.jpa.test.AbstractDbUnitTestCase;
import java.util.Date;
import org.junit.rules.TemporaryFolder;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.duplication.NewDuplication;
import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplication;
public TemporaryFolder temp = new TemporaryFolder();
SensorContext context = mock(SensorContext.class);
- DeprecatedDefaultInputFile inputFile;
+ DefaultInputFile inputFile;
private SensorStorage storage = mock(SensorStorage.class);
@Before
return new DefaultDuplication(storage);
}
});
- inputFile = (DeprecatedDefaultInputFile) new DeprecatedDefaultInputFile("foo", "src/main/java/Foo.java").setLines(300);
+ inputFile = (DefaultInputFile) new DefaultInputFile("foo", "src/main/java/Foo.java").setLines(300);
inputFile.setModuleBaseDir(temp.newFolder().toPath());
}
*/
package org.sonar.batch.cpd.decorators;
-import org.sonar.batch.cpd.decorators.DuplicationDensityDecorator;
-
import org.junit.Test;
-import static org.mockito.Mockito.*;
import org.sonar.api.batch.DecoratorContext;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Measure;
+import static org.mockito.Matchers.anyDouble;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
public class DuplicationDensityDecoratorTest {
@Test
*/
package org.sonar.batch.cpd.decorators;
-import org.sonar.batch.cpd.decorators.SumDuplicationsDecorator;
-
import org.junit.Test;
import org.sonar.api.batch.DecoratorContext;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.resources.File;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.test.IsMeasure;
+
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
*/
package org.sonar.batch.cpd.index;
-import org.sonar.batch.cpd.index.IndexFactory;
-
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.sonar.batch.bootstrap.DefaultAnalysisMode;
import org.sonar.batch.index.ResourceCache;
import org.sonar.core.duplication.DuplicationDao;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
package org.sonar.batch.debt;
-import org.sonar.batch.components.Period;
-
-import org.sonar.batch.components.TimeMachineConfiguration;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.time.DateUtils;
import org.junit.Before;
import org.sonar.api.resources.Resource;
import org.sonar.api.test.IsMeasure;
import org.sonar.api.utils.Duration;
-import org.sonar.batch.debt.IssueChangelogDebtCalculator;
-import org.sonar.batch.debt.NewDebtDecorator;
+import org.sonar.batch.components.Period;
+import org.sonar.batch.components.TimeMachineConfiguration;
import java.util.Date;
import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class NewDebtDecoratorTest {
*/
package org.sonar.batch.deprecated.components;
-import org.sonar.batch.components.PastSnapshot;
-
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByDate;
import org.junit.Test;
import org.sonar.api.database.model.Snapshot;
+import org.sonar.batch.components.PastSnapshot;
import org.sonar.jpa.test.AbstractDbUnitTestCase;
import java.text.ParseException;
*/
package org.sonar.batch.deprecated.components;
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByDays;
-
import org.hamcrest.core.IsNull;
import org.junit.Test;
import org.sonar.api.database.model.Snapshot;
*/
package org.sonar.batch.deprecated.components;
-import org.sonar.batch.components.PastSnapshot;
-
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByPreviousAnalysis;
import org.junit.Test;
import org.sonar.api.database.model.Snapshot;
+import org.sonar.batch.components.PastSnapshot;
import org.sonar.jpa.test.AbstractDbUnitTestCase;
+
import static org.hamcrest.Matchers.is;
import static org.hamcrest.core.IsNull.nullValue;
import static org.junit.Assert.assertThat;
*/
package org.sonar.batch.deprecated.components;
-import org.sonar.batch.components.PastSnapshot;
-
-import org.sonar.batch.deprecated.components.PastSnapshotFinderByVersion;
import org.junit.Test;
import org.sonar.api.CoreProperties;
import org.sonar.api.database.model.Snapshot;
+import org.sonar.batch.components.PastSnapshot;
import org.sonar.jpa.test.AbstractDbUnitTestCase;
+
import static org.assertj.core.api.Assertions.assertThat;
public class PastSnapshotFinderByVersionTest extends AbstractDbUnitTestCase {
import org.sonar.api.batch.Decorator;
import org.sonar.api.batch.DecoratorContext;
import org.sonar.api.batch.DependedUpon;
-import org.sonar.api.measures.*;
-import org.sonar.core.platform.ComponentContainer;
+import org.sonar.api.measures.Formula;
+import org.sonar.api.measures.FormulaContext;
+import org.sonar.api.measures.FormulaData;
+import org.sonar.api.measures.Measure;
+import org.sonar.api.measures.Metric;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.Resource;
import org.sonar.batch.bootstrap.BatchExtensionDictionnary;
+import org.sonar.core.platform.ComponentContainer;
import java.util.Arrays;
import java.util.Collection;
*/
package org.sonar.batch.deprecated.decorator;
-import org.sonar.batch.deprecated.decorator.FormulaDecorator;
-
import org.junit.Test;
import org.sonar.api.batch.DecoratorContext;
import org.sonar.api.measures.CoreMetrics;
*/
package org.sonar.batch.events;
+import org.junit.Test;
import org.sonar.api.batch.events.EventHandler;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import org.junit.Test;
-
public class EventBusTest {
@Test
DefaultProjectTree projectTree = mock(DefaultProjectTree.class);
ResourceCache resourceCache = new ResourceCache();
index = new DefaultIndex(resourceCache, null, projectTree, metricFinder,
- mock(ResourceKeyMigration.class),
mock(MeasureCache.class));
baseDir = temp.newFolder();
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.batch.index;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.rules.TemporaryFolder;
-import org.slf4j.Logger;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DefaultInputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
-import org.sonar.api.config.Settings;
-import org.sonar.api.resources.Project;
-import org.sonar.api.scan.filesystem.PathResolver;
-import org.sonar.batch.scan.filesystem.DefaultModuleFileSystem;
-import org.sonar.jpa.test.AbstractDbUnitTestCase;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-public class ResourceKeyMigrationTest extends AbstractDbUnitTestCase {
-
- @Rule
- public ExpectedException thrown = ExpectedException.none();
-
- @Rule
- public TemporaryFolder temp = new TemporaryFolder();
-
- Project multiModuleProject, phpModule, javaModule;
- Iterable<InputFile> javaInputFiles;
- Iterable<InputFile> phpInputFiles;
- File baseDir;
-
- @Before
- public void before() throws Exception {
- SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
-
- multiModuleProject = newProject("root", "java");
- multiModuleProject.setName("Root").setAnalysisDate(format.parse("25/12/2010"));
-
- phpModule = newProject("a", "php");
- phpModule.setName("A").setAnalysisDate(format.parse("25/12/2010"));
- phpModule.setParent(multiModuleProject);
- phpModule.setPath("/moduleA");
-
- javaModule = newProject("b", "java");
- javaModule.setName("B").setAnalysisDate(format.parse("25/12/2010"));
- javaModule.setParent(multiModuleProject);
- javaModule.setPath("/moduleB");
-
- baseDir = temp.newFolder();
-
- javaInputFiles = (Iterable) Arrays.asList(
- newInputFile(javaModule, "src/main/java/org/foo/Bar.java", false, "java"),
- newInputFile(javaModule, "src/main/java/RootBar.java", false, "java"),
- newInputFile(javaModule, "src/test/java/org/foo/BarTest.java", true, "java"));
-
- phpInputFiles = (Iterable) Arrays.asList(
- newInputFile(phpModule, "org/foo/Bar.php", false, "php"),
- newInputFile(phpModule, "RootBar.php", false, "php"),
- newInputFile(phpModule, "test/org/foo/BarTest.php", true, "php"));
-
- }
-
- private DefaultInputFile newInputFile(Project module, String path, boolean isTest, String language) {
- return new DeprecatedDefaultInputFile(module.getKey(), path)
- .setModuleBaseDir(baseDir.toPath())
- .setLanguage(language)
- .setType(isTest ? InputFile.Type.TEST : InputFile.Type.MAIN);
- }
-
- @Test
- public void shouldMigrateResourceKeys() {
- setupData("shouldMigrateResourceKeys");
-
- Logger logger = mock(Logger.class);
- ResourceKeyMigration migration = new ResourceKeyMigration(getSession(), new PathResolver(), logger);
- migration.checkIfMigrationNeeded(multiModuleProject);
-
- DefaultModuleFileSystem fs = mock(DefaultModuleFileSystem.class);
- when(fs.sourceDirs()).thenReturn(Arrays.asList(new File(baseDir, "src/main/java")));
- when(fs.testDirs()).thenReturn(Arrays.asList(new File(baseDir, "src/test/java")));
- migration.migrateIfNeeded(javaModule, javaInputFiles, fs);
-
- when(fs.sourceDirs()).thenReturn(Arrays.asList(new File(baseDir, ".")));
- when(fs.testDirs()).thenReturn(Arrays.asList(new File(baseDir, "test")));
- migration.migrateIfNeeded(phpModule, phpInputFiles, fs);
-
- verify(logger).info("Component {} changed to {}", "b:org.foo.Bar", "b:src/main/java/org/foo/Bar.java");
- verify(logger).warn("Directory with key b:org/foo matches both b:src/main/java/org/foo and b:src/test/java/org/foo. First match is arbitrary chosen.");
- verify(logger).info("Component {} changed to {}", "b:org.foo.BarTest", "b:src/test/java/org/foo/BarTest.java");
- verify(logger).info("Component {} changed to {}", "b:[default].RootBar", "b:src/main/java/RootBar.java");
- verify(logger).info("Component {} changed to {}", "b:org/foo", "b:src/main/java/org/foo");
- verify(logger).info("Component {} changed to {}", "b:[root]", "b:src/main/java");
-
- checkTables("shouldMigrateResourceKeys", new String[] {"build_date", "created_at", "authorization_updated_at"}, "projects");
- }
-
- private static Project newProject(String key, String language) {
- Settings settings = new Settings();
- settings.setProperty(CoreProperties.PROJECT_LANGUAGE_PROPERTY, language);
- return new Project(key).setSettings(settings).setAnalysisType(Project.AnalysisType.DYNAMIC);
- }
-
-}
when(projectTree.getProjectDefinition(moduleB1)).thenReturn(ProjectDefinition.create().setBaseDir(new java.io.File(baseDir, "moduleB/moduleB1")));
DefaultIndex index = new DefaultIndex(resourceCache, null, projectTree, mock(MetricFinder.class),
- mock(ResourceKeyMigration.class),
mock(MeasureCache.class));
index.start();
package org.sonar.batch.issue.ignore;
-import org.sonar.batch.issue.ignore.EnforceIssuesFilter;
-import org.sonar.batch.issue.ignore.pattern.IssueInclusionPatternInitializer;
-import org.sonar.batch.issue.ignore.pattern.IssuePattern;
-
import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.issue.batch.IssueFilterChain;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.utils.WildcardPattern;
+import org.sonar.batch.issue.ignore.pattern.IssueInclusionPatternInitializer;
+import org.sonar.batch.issue.ignore.pattern.IssuePattern;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
package org.sonar.batch.issue.ignore;
-import org.sonar.batch.issue.ignore.IgnoreIssuesFilter;
-import org.sonar.batch.issue.ignore.pattern.IssueExclusionPatternInitializer;
-import org.sonar.batch.issue.ignore.pattern.IssuePattern;
-import org.sonar.batch.issue.ignore.pattern.PatternMatcher;
-
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.issue.Issue;
import org.sonar.api.issue.batch.IssueFilterChain;
+import org.sonar.batch.issue.ignore.pattern.IssueExclusionPatternInitializer;
+import org.sonar.batch.issue.ignore.pattern.IssuePattern;
+import org.sonar.batch.issue.ignore.pattern.PatternMatcher;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
package org.sonar.batch.issue.ignore.pattern;
-import org.sonar.batch.issue.ignore.pattern.IssuePattern;
-
import org.junit.Test;
import org.sonar.api.issue.Issue;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rules.Rule;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
package org.sonar.batch.issue.ignore.pattern;
-import org.sonar.batch.issue.ignore.pattern.LineRange;
-
import org.junit.Test;
+
import static org.assertj.core.api.Assertions.assertThat;
public class LineRangeTest {
package org.sonar.batch.issue.ignore.pattern;
-import org.sonar.batch.issue.ignore.pattern.IssuePattern;
-import org.sonar.batch.issue.ignore.pattern.PatternDecoder;
-
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
*/
package org.sonar.batch.issue.ignore.pattern;
-import org.sonar.batch.issue.ignore.pattern.IssuePattern;
-import org.sonar.batch.issue.ignore.pattern.LineRange;
-import org.sonar.batch.issue.ignore.pattern.PatternDecoder;
-import org.sonar.batch.issue.ignore.pattern.PatternMatcher;
-
import com.google.common.collect.Sets;
import org.junit.Before;
import org.junit.Test;
import org.mockito.MockitoAnnotations;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.fs.internal.DefaultFileSystem;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.utils.SonarException;
import org.sonar.batch.issue.ignore.pattern.IssueExclusionPatternInitializer;
import org.sonar.batch.issue.ignore.pattern.IssueInclusionPatternInitializer;
@Test
public void shouldAnalyzeProject() throws IOException {
File javaFile1 = new File(baseDir, "src/main/java/Foo.java");
- fs.add(new DeprecatedDefaultInputFile("polop", "src/main/java/Foo.java")
+ fs.add(new DefaultInputFile("polop", "src/main/java/Foo.java")
.setType(InputFile.Type.MAIN));
File javaTestFile1 = new File(baseDir, "src/test/java/FooTest.java");
- fs.add(new DeprecatedDefaultInputFile("polop", "src/test/java/FooTest.java")
+ fs.add(new DefaultInputFile("polop", "src/test/java/FooTest.java")
.setType(InputFile.Type.TEST));
when(exclusionPatternInitializer.hasFileContentPattern()).thenReturn(true);
@Test
public void shouldAnalyseFilesOnlyWhenRegexConfigured() {
File javaFile1 = new File(baseDir, "src/main/java/Foo.java");
- fs.add(new DeprecatedDefaultInputFile("polop", "src/main/java/Foo.java")
+ fs.add(new DefaultInputFile("polop", "src/main/java/Foo.java")
.setType(InputFile.Type.MAIN));
File javaTestFile1 = new File(baseDir, "src/test/java/FooTest.java");
- fs.add(new DeprecatedDefaultInputFile("polop", "src/test/java/FooTest.java")
+ fs.add(new DefaultInputFile("polop", "src/test/java/FooTest.java")
.setType(InputFile.Type.TEST));
when(exclusionPatternInitializer.hasFileContentPattern()).thenReturn(false);
@Test
public void shouldReportFailure() throws IOException {
File phpFile1 = new File(baseDir, "src/Foo.php");
- fs.add(new DeprecatedDefaultInputFile("polop", "src/Foo.php")
+ fs.add(new DefaultInputFile("polop", "src/Foo.php")
.setType(InputFile.Type.MAIN));
when(exclusionPatternInitializer.hasFileContentPattern()).thenReturn(true);
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonar.batch.bootstrap.ServerClient;
import org.sonar.api.utils.HttpDownloader;
+import org.sonar.batch.bootstrap.ServerClient;
import java.net.URI;
import java.net.URISyntaxException;
*/
package org.sonar.batch.issue.tracking;
-import org.sonar.batch.issue.tracking.IssueHandlers;
-
import org.junit.Test;
import org.mockito.ArgumentMatcher;
import org.sonar.api.issue.IssueHandler;
import java.util.Date;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
public class IssueHandlersTest {
@Test
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.sonar.api.CoreProperties;
-import org.sonar.api.batch.*;
-import org.sonar.api.batch.events.*;
+import org.sonar.api.batch.Decorator;
+import org.sonar.api.batch.DecoratorContext;
+import org.sonar.api.batch.Initializer;
+import org.sonar.api.batch.PostJob;
+import org.sonar.api.batch.Sensor;
+import org.sonar.api.batch.SensorContext;
+import org.sonar.api.batch.events.DecoratorExecutionHandler;
+import org.sonar.api.batch.events.DecoratorsPhaseHandler;
+import org.sonar.api.batch.events.InitializerExecutionHandler;
+import org.sonar.api.batch.events.InitializersPhaseHandler;
+import org.sonar.api.batch.events.PostJobExecutionHandler;
+import org.sonar.api.batch.events.PostJobsPhaseHandler;
+import org.sonar.api.batch.events.ProjectAnalysisHandler;
import org.sonar.api.batch.events.ProjectAnalysisHandler.ProjectAnalysisEvent;
+import org.sonar.api.batch.events.SensorExecutionHandler;
import org.sonar.api.batch.events.SensorExecutionHandler.SensorExecutionEvent;
+import org.sonar.api.batch.events.SensorsPhaseHandler;
import org.sonar.api.batch.events.SensorsPhaseHandler.SensorsPhaseEvent;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.Resource;
import java.util.Arrays;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class GenerateQualityGateEventsTest {
private GenerateQualityGateEvents decorator;
import org.slf4j.Logger;
import org.sonar.api.config.Settings;
import org.sonar.api.measures.MetricFinder;
+import org.sonar.api.utils.HttpDownloader;
import org.sonar.api.utils.MessageException;
import org.sonar.batch.bootstrap.ServerClient;
-import org.sonar.api.utils.HttpDownloader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.util.Iterator;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class QualityGateProviderTest {
import org.sonar.batch.protocol.Constants.EventCategory;
import org.sonar.batch.protocol.output.BatchReport.Component;
import org.sonar.batch.protocol.output.BatchReport.Event;
-import org.sonar.batch.protocol.output.*;
+import org.sonar.batch.protocol.output.BatchReportReader;
+import org.sonar.batch.protocol.output.BatchReportWriter;
+import org.sonar.batch.protocol.output.FileStructure;
import java.io.File;
import java.util.Arrays;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.sonar.api.database.model.Snapshot;
-import org.sonar.api.measures.*;
+import org.sonar.api.measures.CoreMetrics;
+import org.sonar.api.measures.Measure;
+import org.sonar.api.measures.Metric;
import org.sonar.api.measures.Metric.Level;
import org.sonar.api.measures.Metric.ValueType;
+import org.sonar.api.measures.MetricFinder;
+import org.sonar.api.measures.RuleMeasure;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.Resource;
import org.sonar.api.rule.RuleKey;
import org.junit.Test;
import org.sonar.api.batch.bootstrap.ProjectDefinition;
import org.sonar.api.batch.bootstrap.ProjectReactor;
+import org.sonar.batch.bootstrap.AnalysisProperties;
import org.sonar.batch.bootstrap.DefaultAnalysisMode;
import org.sonar.batch.bootstrap.ServerClient;
-import org.sonar.batch.bootstrap.AnalysisProperties;
import org.sonar.batch.rule.ModuleQProfiles;
import static org.mockito.Matchers.anyString;
import java.util.Collections;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class QProfileDecoratorTest {
import org.sonar.api.batch.bootstrap.ProjectReactor;
import org.sonar.api.config.PropertyDefinitions;
import org.sonar.api.utils.MessageException;
-import org.sonar.batch.bootstrap.DefaultAnalysisMode;
import org.sonar.batch.bootstrap.BootstrapProperties;
+import org.sonar.batch.bootstrap.DefaultAnalysisMode;
import org.sonar.batch.bootstrap.GlobalSettings;
import org.sonar.batch.protocol.input.GlobalRepositories;
import org.sonar.batch.protocol.input.ProjectRepositories;
import org.junit.rules.TemporaryFolder;
import org.sonar.api.batch.fs.FilePredicate;
import org.sonar.api.batch.fs.internal.DefaultInputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
import static org.assertj.core.api.Assertions.assertThat;
public void key() {
FilePredicate predicate = new AdditionalFilePredicates.KeyPredicate("struts:Action.java");
- DefaultInputFile inputFile = new DeprecatedDefaultInputFile("struts", "Action.java");
+ DefaultInputFile inputFile = new DefaultInputFile("struts", "Action.java");
assertThat(predicate.apply(inputFile)).isTrue();
- inputFile = new DeprecatedDefaultInputFile("struts", "Filter.java");
+ inputFile = new DefaultInputFile("struts", "Filter.java");
assertThat(predicate.apply(inputFile)).isFalse();
}
}
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.fs.internal.DefaultFileSystem;
import org.sonar.api.batch.fs.internal.DefaultInputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
-import org.sonar.api.resources.*;
+import org.sonar.api.resources.AbstractLanguage;
+import org.sonar.api.resources.Java;
+import org.sonar.api.resources.Languages;
+import org.sonar.api.resources.Project;
+import org.sonar.api.resources.Qualifiers;
+import org.sonar.api.resources.Resource;
import org.sonar.batch.index.BatchResource;
import org.sonar.batch.index.ResourceCache;
private DefaultInputFile newInputFile(String path, String content, String sourceRelativePath, String languageKey, boolean unitTest) throws IOException {
File file = new File(baseDir, path);
FileUtils.write(file, content);
- return new DeprecatedDefaultInputFile("foo", path)
+ return new DefaultInputFile("foo", path)
.setLanguage(languageKey)
.setType(unitTest ? InputFile.Type.TEST : InputFile.Type.MAIN);
}
import org.mockito.Mockito;
import org.sonar.api.CoreProperties;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.config.Settings;
import org.sonar.api.resources.Project;
new Project("foo"), settings, fileIndexer, initializer, componentIndexer);
File baseDir = temp.newFile();
- InputFile mainInput = new DeprecatedDefaultInputFile("foo", "Main.java").setModuleBaseDir(baseDir.toPath()).setType(InputFile.Type.MAIN);
- InputFile testInput = new DeprecatedDefaultInputFile("foo", "Test.java").setModuleBaseDir(baseDir.toPath()).setType(InputFile.Type.TEST);
+ InputFile mainInput = new DefaultInputFile("foo", "Main.java").setModuleBaseDir(baseDir.toPath()).setType(InputFile.Type.MAIN);
+ InputFile testInput = new DefaultInputFile("foo", "Test.java").setModuleBaseDir(baseDir.toPath()).setType(InputFile.Type.TEST);
when(moduleInputFileCache.inputFiles()).thenReturn(Lists.newArrayList(mainInput, testInput));
fs.index();
import org.junit.rules.TemporaryFolder;
import org.mockito.ArgumentCaptor;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.scan.filesystem.FileSystemFilter;
import org.sonar.api.scan.filesystem.FileType;
public void no_filters() {
DeprecatedFileFilters filters = new DeprecatedFileFilters();
- InputFile inputFile = new DeprecatedDefaultInputFile("foo", "src/main/java/Foo.java");
+ InputFile inputFile = new DefaultInputFile("foo", "src/main/java/Foo.java");
assertThat(filters.accept(inputFile)).isTrue();
}
File basedir = temp.newFolder();
File file = new File(basedir, "src/main/java/Foo.java");
- InputFile inputFile = new DeprecatedDefaultInputFile("foo", "src/main/java/Foo.java")
+ InputFile inputFile = new DefaultInputFile("foo", "src/main/java/Foo.java")
.setModuleBaseDir(basedir.toPath())
.setType(InputFile.Type.MAIN);
when(filter.accept(eq(file), any(DeprecatedFileFilters.DeprecatedContext.class))).thenReturn(false);
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.fs.internal.FileMetadata;
import org.sonar.api.config.Settings;
import org.sonar.api.scan.filesystem.PathResolver;
InputFileBuilder builder = new InputFileBuilder("struts", new PathResolver(),
langDetection, statusDetection, fs, analysisMode, new Settings(), new FileMetadata());
- DeprecatedDefaultInputFile inputFile = builder.create(srcFile);
+ DefaultInputFile inputFile = builder.create(srcFile);
builder.completeAndComputeMetadata(inputFile, InputFile.Type.MAIN);
assertThat(inputFile.type()).isEqualTo(InputFile.Type.MAIN);
InputFileBuilder builder = new InputFileBuilder("struts", new PathResolver(),
langDetection, statusDetection, fs, analysisMode, new Settings(), new FileMetadata());
- DeprecatedDefaultInputFile inputFile = builder.create(srcFile);
+ DefaultInputFile inputFile = builder.create(srcFile);
assertThat(inputFile).isNull();
}
InputFileBuilder builder = new InputFileBuilder("struts", new PathResolver(),
langDetection, statusDetection, fs, analysisMode, new Settings(), new FileMetadata());
- DeprecatedDefaultInputFile inputFile = builder.create(srcFile);
+ DefaultInputFile inputFile = builder.create(srcFile);
inputFile = builder.completeAndComputeMetadata(inputFile, InputFile.Type.MAIN);
assertThat(inputFile).isNull();
import org.sonar.api.batch.fs.InputFile.Type;
import org.sonar.api.batch.fs.InputPath;
import org.sonar.api.batch.fs.internal.DefaultInputFile;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
import java.nio.charset.StandardCharsets;
InputPathCache cache = new InputPathCache();
DefaultInputFile fooFile = new DefaultInputFile("foo", "src/main/java/Foo.java").setModuleBaseDir(temp.newFolder().toPath());
cache.put("struts", fooFile);
- cache.put("struts-core", new DeprecatedDefaultInputFile("foo", "src/main/java/Bar.java")
+ cache.put("struts-core", new DefaultInputFile("foo", "src/main/java/Bar.java")
.setLanguage("bla")
.setType(Type.MAIN)
.setStatus(Status.ADDED)
*/
package org.sonar.batch.scan.filesystem;
-import org.sonar.batch.repository.language.DefaultLanguagesRepository;
-import org.sonar.batch.repository.language.LanguagesRepository;
-
import org.junit.Test;
import org.sonar.api.config.Settings;
import org.sonar.api.resources.Java;
import org.sonar.api.resources.Languages;
+import org.sonar.batch.repository.language.DefaultLanguagesRepository;
+import org.sonar.batch.repository.language.LanguagesRepository;
+
import static org.assertj.core.api.Assertions.assertThat;
public class LanguageDetectionFactoryTest {
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class ProjectFileSystemAdapterTest {
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.fs.internal.DefaultFileSystem;
import org.sonar.api.batch.fs.internal.DefaultInputDir;
-import org.sonar.api.batch.fs.internal.DeprecatedDefaultInputFile;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.rule.ActiveRules;
import org.sonar.api.batch.rule.internal.ActiveRulesBuilder;
import org.sonar.api.config.Settings;
when(server.getVersion()).thenReturn("3.6");
userRepository = mock(UserRepository.class);
DefaultInputDir inputDir = new DefaultInputDir("struts", "src/main/java/org/apache/struts");
- DeprecatedDefaultInputFile inputFile = new DeprecatedDefaultInputFile("struts", "src/main/java/org/apache/struts/Action.java");
+ DefaultInputFile inputFile = new DefaultInputFile("struts", "src/main/java/org/apache/struts/Action.java");
inputFile.setStatus(InputFile.Status.CHANGED);
InputPathCache fileCache = mock(InputPathCache.class);
when(fileCache.allFiles()).thenReturn(Arrays.<InputFile>asList(inputFile));
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.batch.util;
-
-import org.junit.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class DeprecatedKeyUtilsTest {
-
- @Test
- public void testGetJavaFileParentDeprecatedKey() {
- assertThat(DeprecatedKeyUtils.getJavaFileParentDeprecatedKey("org.foo.bar.Hello")).isEqualTo("org/foo/bar");
- assertThat(DeprecatedKeyUtils.getJavaFileParentDeprecatedKey("[default].Hello")).isEqualTo("[root]");
- assertThat(DeprecatedKeyUtils.getJavaFileParentDeprecatedKey("Hello")).isEqualTo("[root]");
- }
-
- @Test
- public void testGetJavaFileDeprecatedKey() {
- assertThat(DeprecatedKeyUtils.getJavaFileDeprecatedKey("org/foo/bar/Hello.java")).isEqualTo("org.foo.bar.Hello");
- assertThat(DeprecatedKeyUtils.getJavaFileDeprecatedKey("Hello.java")).isEqualTo("[default].Hello");
- }
-}
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.api.batch.fs.internal;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-
-/**
- * @since 4.2
- */
-public class DeprecatedDefaultInputFile extends DefaultInputFile implements org.sonar.api.resources.InputFile {
-
- public DeprecatedDefaultInputFile(String moduleKey, String relativePath) {
- super(moduleKey, relativePath);
- }
-
- /**
- * @deprecated in 4.2. Replaced by {@link org.sonar.api.batch.fs.FileSystem#baseDir()}
- */
- @Deprecated
- @Override
- public File getFileBaseDir() {
- return moduleBaseDir.toFile();
- }
-
- /**
- * @deprecated in 4.2. Use {@link #file()}
- */
- @Deprecated
- @Override
- public File getFile() {
- return file();
- }
-
- /**
- * @deprecated in 4.2. Use {@link #relativePath()}
- */
- @Deprecated
- @Override
- public String getRelativePath() {
- return relativePath();
- }
-
- @Override
- public InputStream getInputStream() throws FileNotFoundException {
- return new BufferedInputStream(new FileInputStream(file()));
- }
-}
+++ /dev/null
-package org.sonar.api.batch.fs.internal;
-
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.sonar.api.batch.fs.InputFile;
-
-import java.io.File;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class DeprecatedDefaultInputFileTest {
-
- @Rule
- public TemporaryFolder temp = new TemporaryFolder();
-
- @Test
- public void test() throws Exception {
- DeprecatedDefaultInputFile inputFile = (DeprecatedDefaultInputFile) new DeprecatedDefaultInputFile("ABCDE", "src/Foo.php")
- .setModuleBaseDir(temp.newFolder().toPath())
- .setLines(42)
- .setLanguage("php")
- .setStatus(InputFile.Status.ADDED)
- .setType(InputFile.Type.TEST);
-
- assertThat(inputFile.relativePath()).isEqualTo("src/Foo.php");
- // deprecated method is different -> path relative to source dir
- assertThat(inputFile.getRelativePath()).isEqualTo("src/Foo.php");
- assertThat(new File(inputFile.relativePath())).isRelative();
- assertThat(inputFile.absolutePath()).endsWith("Foo.php");
- assertThat(new File(inputFile.absolutePath())).isAbsolute();
- assertThat(inputFile.language()).isEqualTo("php");
- assertThat(inputFile.status()).isEqualTo(InputFile.Status.ADDED);
- assertThat(inputFile.type()).isEqualTo(InputFile.Type.TEST);
- assertThat(inputFile.lines()).isEqualTo(42);
- }
-
- @Test
- public void test_equals_and_hashcode() throws Exception {
- DefaultInputFile f1 = new DefaultInputFile("ABCDE", "src/Foo.php");
- DefaultInputFile f1a = new DefaultInputFile("ABCDE", "src/Foo.php");
- DefaultInputFile f2 = new DefaultInputFile("ABCDE", "src/Bar.php");
-
- assertThat(f1).isEqualTo(f1);
- assertThat(f1).isEqualTo(f1a);
- assertThat(f1).isNotEqualTo(f2);
- assertThat(f1.equals("foo")).isFalse();
- assertThat(f1.equals(null)).isFalse();
-
- assertThat(f1.hashCode()).isEqualTo(f1.hashCode());
- assertThat(f1.hashCode()).isEqualTo(f1a.hashCode());
- }
-
- @Test
- public void test_toString() throws Exception {
- DefaultInputFile file = new DefaultInputFile("ABCDE", "src/Foo.php");
- assertThat(file.toString()).isEqualTo("[moduleKey=ABCDE, relative=src/Foo.php, basedir=null]");
- }
-}