@@ -22,18 +22,17 @@ package org.sonar.server.debt; | |||
import com.google.common.annotations.VisibleForTesting; | |||
import com.google.common.collect.Maps; | |||
import org.picocontainer.Startable; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.server.ServerSide; | |||
import org.sonar.core.platform.PluginInfo; | |||
import org.sonar.core.platform.PluginRepository; | |||
import java.io.InputStreamReader; | |||
import java.io.Reader; | |||
import java.nio.charset.StandardCharsets; | |||
import java.util.Collection; | |||
import java.util.Collections; | |||
import java.util.Map; | |||
import org.picocontainer.Startable; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.server.ServerSide; | |||
import org.sonar.core.platform.PluginInfo; | |||
import org.sonar.core.platform.PluginRepository; | |||
import static com.google.common.collect.Lists.newArrayList; | |||
@@ -90,7 +89,7 @@ public class DebtModelPluginRepository implements Startable { | |||
contributingPluginKeyToClassLoader.put(DEFAULT_MODEL, getClass().getClassLoader()); | |||
for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) { | |||
String pluginKey = pluginInfo.getKey(); | |||
Plugin plugin = pluginRepository.getPluginInstance(pluginKey); | |||
SonarPlugin plugin = pluginRepository.getPluginInstance(pluginKey); | |||
ClassLoader classLoader = plugin.getClass().getClassLoader(); | |||
if (classLoader.getResource(getXMLFilePath(pluginKey)) != null) { | |||
contributingPluginKeyToClassLoader.put(pluginKey, classLoader); |
@@ -21,21 +21,19 @@ package org.sonar.server.platform; | |||
import com.google.common.annotations.VisibleForTesting; | |||
import com.google.common.base.Function; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import javax.annotation.Nullable; | |||
import org.apache.commons.io.FileUtils; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.picocontainer.Startable; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.platform.ServerFileSystem; | |||
import org.sonar.api.utils.log.Logger; | |||
import org.sonar.api.utils.log.Loggers; | |||
import org.sonar.core.platform.PluginInfo; | |||
import org.sonar.core.platform.PluginRepository; | |||
import javax.annotation.Nullable; | |||
import java.io.File; | |||
import java.io.IOException; | |||
/** | |||
* Ruby on Rails requires the files to be on filesystem but not in Java classpath (JAR). This component extracts | |||
* all the needed files from plugins and copy them to $SONAR_HOME/temp | |||
@@ -62,7 +60,7 @@ public class RailsAppsDeployer implements Startable { | |||
for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) { | |||
String pluginKey = pluginInfo.getKey(); | |||
Plugin plugin = pluginRepository.getPluginInstance(pluginKey); | |||
SonarPlugin plugin = pluginRepository.getPluginInstance(pluginKey); | |||
try { | |||
deployRailsApp(appsDir, pluginKey, plugin.getClass().getClassLoader()); | |||
} catch (Exception e) { |
@@ -24,7 +24,7 @@ import com.google.common.collect.ListMultimap; | |||
import java.util.Map; | |||
import org.sonar.api.Extension; | |||
import org.sonar.api.ExtensionProvider; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.server.ServerSide; | |||
import org.sonar.api.utils.AnnotationUtils; | |||
import org.sonar.core.platform.ComponentContainer; | |||
@@ -49,7 +49,7 @@ public class ServerExtensionInstaller { | |||
for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) { | |||
try { | |||
String pluginKey = pluginInfo.getKey(); | |||
Plugin plugin = pluginRepository.getPluginInstance(pluginKey); | |||
SonarPlugin plugin = pluginRepository.getPluginInstance(pluginKey); | |||
container.addExtension(pluginInfo, plugin); | |||
for (Object extension : plugin.getExtensions()) { |
@@ -37,7 +37,7 @@ import java.util.Set; | |||
import javax.annotation.Nonnull; | |||
import org.apache.commons.io.FileUtils; | |||
import org.picocontainer.Startable; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.platform.Server; | |||
import org.sonar.api.platform.ServerUpgradeStatus; | |||
import org.sonar.api.utils.MessageException; | |||
@@ -83,7 +83,7 @@ public class ServerPluginRepository implements PluginRepository, Startable { | |||
// following fields are available after startup | |||
private final Map<String, PluginInfo> pluginInfosByKeys = new HashMap<>(); | |||
private final Map<String, Plugin> pluginInstancesByKeys = new HashMap<>(); | |||
private final Map<String, SonarPlugin> pluginInstancesByKeys = new HashMap<>(); | |||
public ServerPluginRepository(Server server, ServerUpgradeStatus upgradeStatus, | |||
DefaultServerFileSystem fs, PluginLoader loader) { | |||
@@ -348,8 +348,8 @@ public class ServerPluginRepository implements PluginRepository, Startable { | |||
} | |||
@Override | |||
public Plugin getPluginInstance(String key) { | |||
Plugin plugin = pluginInstancesByKeys.get(key); | |||
public SonarPlugin getPluginInstance(String key) { | |||
SonarPlugin plugin = pluginInstancesByKeys.get(key); | |||
if (plugin == null) { | |||
throw new IllegalArgumentException(format("Plugin [%s] does not exist", key)); | |||
} |
@@ -27,7 +27,7 @@ import java.util.List; | |||
import java.util.Map; | |||
import javax.annotation.CheckForNull; | |||
import javax.annotation.Nullable; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.config.License; | |||
import org.sonar.api.config.PropertyDefinitions; | |||
import org.sonar.api.config.Settings; | |||
@@ -285,7 +285,7 @@ public final class JRubyFacade { | |||
} | |||
public Object getComponentByClassname(String pluginKey, String className) { | |||
Plugin plugin = get(PluginRepository.class).getPluginInstance(pluginKey); | |||
SonarPlugin plugin = get(PluginRepository.class).getPluginInstance(pluginKey); | |||
try { | |||
Class componentClass = plugin.getClass().getClassLoader().loadClass(className); | |||
return get(componentClass); |
@@ -1,38 +0,0 @@ | |||
/* | |||
* 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; | |||
import org.sonar.api.config.Settings; | |||
import org.sonar.api.profiles.RulesProfile; | |||
/** | |||
* This interface is implemented by the views plugin!! | |||
* | |||
* @deprecated in 4.2 | |||
*/ | |||
@Deprecated | |||
public interface ProfileLoader { | |||
/** | |||
* Loads quality profile for specified project. | |||
*/ | |||
RulesProfile load(Settings settings); | |||
} |
@@ -19,21 +19,18 @@ | |||
*/ | |||
package org.sonar.batch.bootstrap; | |||
import com.google.common.io.Files; | |||
import com.google.common.annotations.VisibleForTesting; | |||
import com.google.common.collect.Lists; | |||
import com.google.common.io.Files; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.util.Collections; | |||
import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
import org.apache.commons.lang.CharUtils; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.utils.log.Logger; | |||
import org.sonar.api.utils.log.Loggers; | |||
import org.sonar.api.utils.log.Profiler; | |||
@@ -82,7 +79,7 @@ public class BatchPluginInstaller implements PluginInstaller { | |||
* @see org.sonar.batch.mediumtest.BatchMediumTester | |||
*/ | |||
@Override | |||
public Map<String, Plugin> installLocals() { | |||
public Map<String, SonarPlugin> installLocals() { | |||
return Collections.emptyMap(); | |||
} | |||
@@ -21,15 +21,14 @@ package org.sonar.batch.bootstrap; | |||
import com.google.common.base.Preconditions; | |||
import com.google.common.collect.Maps; | |||
import java.util.Collection; | |||
import java.util.Map; | |||
import org.picocontainer.Startable; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.core.platform.PluginInfo; | |||
import org.sonar.core.platform.PluginLoader; | |||
import org.sonar.core.platform.PluginRepository; | |||
import java.util.Collection; | |||
import java.util.Map; | |||
/** | |||
* Orchestrates the installation and loading of plugins | |||
*/ | |||
@@ -38,7 +37,7 @@ public class BatchPluginRepository implements PluginRepository, Startable { | |||
private final PluginInstaller installer; | |||
private final PluginLoader loader; | |||
private Map<String, Plugin> pluginInstancesByKeys; | |||
private Map<String, SonarPlugin> pluginInstancesByKeys; | |||
private Map<String, PluginInfo> infosByKeys; | |||
public BatchPluginRepository(PluginInstaller installer, PluginLoader loader) { | |||
@@ -52,7 +51,7 @@ public class BatchPluginRepository implements PluginRepository, Startable { | |||
pluginInstancesByKeys = Maps.newHashMap(loader.load(infosByKeys)); | |||
// this part is only used by tests | |||
for (Map.Entry<String, Plugin> entry : installer.installLocals().entrySet()) { | |||
for (Map.Entry<String, SonarPlugin> entry : installer.installLocals().entrySet()) { | |||
String pluginKey = entry.getKey(); | |||
infosByKeys.put(pluginKey, new PluginInfo(pluginKey)); | |||
pluginInstancesByKeys.put(pluginKey, entry.getValue()); | |||
@@ -81,8 +80,8 @@ public class BatchPluginRepository implements PluginRepository, Startable { | |||
} | |||
@Override | |||
public Plugin getPluginInstance(String key) { | |||
Plugin instance = pluginInstancesByKeys.get(key); | |||
public SonarPlugin getPluginInstance(String key) { | |||
SonarPlugin instance = pluginInstancesByKeys.get(key); | |||
Preconditions.checkState(instance != null, String.format("Plugin [%s] does not exist", key)); | |||
return instance; | |||
} |
@@ -20,11 +20,9 @@ | |||
package org.sonar.batch.bootstrap; | |||
import java.util.List; | |||
import javax.annotation.Nullable; | |||
import org.sonar.api.ExtensionProvider; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.batch.bootstrapper.EnvironmentInformation; | |||
import org.sonar.core.platform.ComponentContainer; | |||
import org.sonar.core.platform.PluginInfo; | |||
@@ -51,7 +49,7 @@ public class ExtensionInstaller { | |||
// plugin extensions | |||
for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) { | |||
Plugin plugin = pluginRepository.getPluginInstance(pluginInfo.getKey()); | |||
SonarPlugin plugin = pluginRepository.getPluginInstance(pluginInfo.getKey()); | |||
for (Object extension : plugin.getExtensions()) { | |||
doInstall(container, matcher, pluginInfo, extension); | |||
} |
@@ -21,10 +21,8 @@ package org.sonar.batch.bootstrap; | |||
import java.util.List; | |||
import java.util.Map; | |||
import org.sonar.api.CoreProperties; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.utils.Durations; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.utils.System2; | |||
import org.sonar.api.utils.UriReader; | |||
import org.sonar.batch.index.CachesManager; | |||
@@ -41,8 +39,6 @@ import org.sonar.batch.repository.ServerIssuesLoader; | |||
import org.sonar.batch.repository.user.UserRepository; | |||
import org.sonar.batch.scan.ProjectScanContainer; | |||
import org.sonar.core.config.Logback; | |||
import org.sonar.core.i18n.DefaultI18n; | |||
import org.sonar.core.i18n.RuleI18nManager; | |||
import org.sonar.core.platform.ComponentContainer; | |||
import org.sonar.core.platform.PluginClassloaderFactory; | |||
import org.sonar.core.platform.PluginInfo; | |||
@@ -82,7 +78,7 @@ public class GlobalContainer extends ComponentContainer { | |||
BatchPluginPredicate.class, | |||
ExtensionInstaller.class, | |||
CachesManager.class, | |||
CachesManager.class, | |||
GlobalMode.class, | |||
GlobalSettings.class, | |||
ServerClient.class, | |||
@@ -95,9 +91,6 @@ public class GlobalContainer extends ComponentContainer { | |||
new PersistentCacheProvider(), | |||
new WSLoaderGlobalProvider(), | |||
System2.INSTANCE, | |||
DefaultI18n.class, | |||
Durations.class, | |||
RuleI18nManager.class, | |||
new GlobalRepositoriesProvider(), | |||
UserRepository.class); | |||
addIfMissing(BatchPluginInstaller.class, PluginInstaller.class); | |||
@@ -121,7 +114,7 @@ public class GlobalContainer extends ComponentContainer { | |||
private void installPlugins() { | |||
PluginRepository pluginRepository = getComponentByType(PluginRepository.class); | |||
for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) { | |||
Plugin instance = pluginRepository.getPluginInstance(pluginInfo.getKey()); | |||
SonarPlugin instance = pluginRepository.getPluginInstance(pluginInfo.getKey()); | |||
addExtension(pluginInfo, instance); | |||
} | |||
} |
@@ -19,12 +19,11 @@ | |||
*/ | |||
package org.sonar.batch.bootstrap; | |||
import java.util.Map; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.core.platform.PluginInfo; | |||
import java.util.Map; | |||
@BatchSide | |||
public interface PluginInstaller { | |||
@@ -39,5 +38,5 @@ public interface PluginInstaller { | |||
* Used only by tests. | |||
* @see org.sonar.batch.mediumtest.BatchMediumTester | |||
*/ | |||
Map<String, Plugin> installLocals(); | |||
Map<String, SonarPlugin> installLocals(); | |||
} |
@@ -1,24 +0,0 @@ | |||
/* | |||
* 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. | |||
*/ | |||
@ParametersAreNonnullByDefault | |||
package org.sonar.batch.compute; | |||
import javax.annotation.ParametersAreNonnullByDefault; | |||
@@ -1,23 +0,0 @@ | |||
/* | |||
* 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. | |||
*/ | |||
@ParametersAreNonnullByDefault | |||
package org.sonar.batch.debt; | |||
import javax.annotation.ParametersAreNonnullByDefault; |
@@ -1,49 +0,0 @@ | |||
/* | |||
* 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.deprecated; | |||
import com.google.common.base.Joiner; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.sonar.api.batch.ResourceFilter; | |||
/** | |||
* @since 1.12 | |||
*/ | |||
public class ResourceFilters { | |||
public ResourceFilters(ResourceFilter[] filters) { | |||
this(LoggerFactory.getLogger(ResourceFilters.class), filters); | |||
} | |||
public ResourceFilters() { | |||
// perfect | |||
} | |||
ResourceFilters(Logger logger, ResourceFilter[] filters) { | |||
check(logger, filters); | |||
} | |||
private void check(Logger logger, ResourceFilter[] filters) { | |||
if (filters.length > 0) { | |||
logger.warn("ResourceFilters are not supported since version 4.2: " + Joiner.on(", ").join(filters)); | |||
} | |||
} | |||
} |
@@ -1,28 +0,0 @@ | |||
/* | |||
* 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 java.io.Serializable; | |||
public interface Data extends Serializable { | |||
String writeString(); | |||
} |
@@ -1,34 +0,0 @@ | |||
/* | |||
* 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.sonar.api.resources.Resource; | |||
import org.sonar.api.utils.SonarException; | |||
/** | |||
* @since 2.6 | |||
*/ | |||
public final class ResourceNotPersistedException extends SonarException { | |||
public ResourceNotPersistedException(Resource resource) { | |||
super(resource.toString()); | |||
} | |||
} |
@@ -1,40 +0,0 @@ | |||
/* | |||
* 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; | |||
public class StringData implements Data { | |||
private String data = null; | |||
public StringData() { | |||
} | |||
public StringData(String s) { | |||
this.data = s; | |||
} | |||
public String data() { | |||
return data; | |||
} | |||
@Override | |||
public String writeString() { | |||
return data; | |||
} | |||
} |
@@ -19,25 +19,24 @@ | |||
*/ | |||
package org.sonar.batch.mediumtest; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.batch.bootstrap.PluginInstaller; | |||
import org.sonar.core.platform.PluginInfo; | |||
import java.io.File; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.batch.bootstrap.PluginInstaller; | |||
import org.sonar.core.platform.PluginInfo; | |||
public class FakePluginInstaller implements PluginInstaller { | |||
private final Map<String, PluginInfo> infosByKeys = new HashMap<>(); | |||
private final Map<String, Plugin> instancesByKeys = new HashMap<>(); | |||
private final Map<String, SonarPlugin> instancesByKeys = new HashMap<>(); | |||
public FakePluginInstaller add(String pluginKey, File jarFile) { | |||
infosByKeys.put(pluginKey, PluginInfo.create(jarFile)); | |||
return this; | |||
} | |||
public FakePluginInstaller add(String pluginKey, Plugin instance) { | |||
public FakePluginInstaller add(String pluginKey, SonarPlugin instance) { | |||
instancesByKeys.put(pluginKey, instance); | |||
return this; | |||
} | |||
@@ -48,7 +47,7 @@ public class FakePluginInstaller implements PluginInstaller { | |||
} | |||
@Override | |||
public Map<String, Plugin> installLocals() { | |||
public Map<String, SonarPlugin> installLocals() { | |||
return instancesByKeys; | |||
} | |||
} |
@@ -35,7 +35,6 @@ import org.sonar.batch.bootstrap.ExtensionInstaller; | |||
import org.sonar.batch.bootstrap.ExtensionMatcher; | |||
import org.sonar.batch.bootstrap.ExtensionUtils; | |||
import org.sonar.batch.deprecated.DeprecatedSensorContext; | |||
import org.sonar.batch.deprecated.ResourceFilters; | |||
import org.sonar.batch.deprecated.perspectives.BatchPerspectives; | |||
import org.sonar.batch.events.EventBus; | |||
import org.sonar.batch.index.DefaultIndex; | |||
@@ -147,7 +146,6 @@ public class ModuleScanContainer extends ComponentContainer { | |||
BatchExtensionDictionnary.class, | |||
IssueFilters.class, | |||
CoverageExclusions.class, | |||
ResourceFilters.class, | |||
// rules | |||
ModuleQProfiles.class, |
@@ -21,7 +21,7 @@ package org.sonar.batch.bootstrap; | |||
import com.google.common.collect.ImmutableMap; | |||
import org.junit.Test; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.core.platform.PluginInfo; | |||
import org.sonar.core.platform.PluginLoader; | |||
@@ -42,7 +42,7 @@ public class BatchPluginRepositoryTest { | |||
public void install_and_load_plugins() { | |||
PluginInfo info = new PluginInfo("squid"); | |||
ImmutableMap<String, PluginInfo> infos = ImmutableMap.of("squid", info); | |||
Plugin instance = mock(Plugin.class); | |||
SonarPlugin instance = mock(SonarPlugin.class); | |||
when(loader.load(infos)).thenReturn(ImmutableMap.of("squid", instance)); | |||
when(installer.installRemotes()).thenReturn(infos); | |||
@@ -53,7 +53,7 @@ public class BatchPluginRepositoryTest { | |||
assertThat(underTest.getPluginInstance("squid")).isSameAs(instance); | |||
underTest.stop(); | |||
verify(loader).unload(anyCollectionOf(Plugin.class)); | |||
verify(loader).unload(anyCollectionOf(SonarPlugin.class)); | |||
} | |||
@Test |
@@ -19,21 +19,19 @@ | |||
*/ | |||
package org.sonar.batch.bootstrap; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import org.apache.commons.lang.ClassUtils; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
import org.sonar.api.BatchExtension; | |||
import org.sonar.api.ExtensionProvider; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.batch.SupportedEnvironment; | |||
import org.sonar.batch.bootstrapper.EnvironmentInformation; | |||
import org.sonar.core.platform.ComponentContainer; | |||
import org.sonar.core.platform.PluginInfo; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
import static org.mockito.Mockito.mock; | |||
import static org.mockito.Mockito.when; | |||
@@ -43,7 +41,7 @@ public class ExtensionInstallerTest { | |||
GlobalMode mode; | |||
BatchPluginRepository pluginRepository = mock(BatchPluginRepository.class); | |||
private static Plugin newPluginInstance(final Object... extensions) { | |||
private static SonarPlugin newPluginInstance(final Object... extensions) { | |||
return new SonarPlugin() { | |||
public List getExtensions() { | |||
return Arrays.asList(extensions); |
@@ -1,47 +0,0 @@ | |||
/* | |||
* 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.deprecated; | |||
import org.junit.Test; | |||
import org.slf4j.Logger; | |||
import org.sonar.api.batch.ResourceFilter; | |||
import static org.mockito.Matchers.startsWith; | |||
import static org.mockito.Mockito.mock; | |||
import static org.mockito.Mockito.verify; | |||
public class ResourceFiltersTest { | |||
@Test | |||
public void warn_on_resource_filters() { | |||
Logger logger = mock(Logger.class); | |||
ResourceFilter[] filters = {mock(ResourceFilter.class)}; | |||
new ResourceFilters(logger, filters); | |||
verify(logger).warn(startsWith("ResourceFilters are not supported since version 4.2")); | |||
// verify that the standard constructor does not fail | |||
new ResourceFilters(filters); | |||
} | |||
@Test | |||
public void ok_if_no_resource_filters() { | |||
// just for verify that it does not fail. Should check that no warning is logged. | |||
new ResourceFilters(); | |||
} | |||
} |
@@ -24,7 +24,7 @@ import com.google.common.collect.Lists; | |||
import java.net.URL; | |||
import java.net.URLClassLoader; | |||
import java.util.List; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.core.platform.PluginInfo; | |||
import org.sonar.core.platform.PluginRepository; | |||
@@ -71,7 +71,7 @@ class I18nClassloader extends URLClassLoader { | |||
// there may be duplicated classloaders in the list. | |||
List<ClassLoader> list = Lists.newArrayList(); | |||
for (PluginInfo info : pluginRepository.getPluginInfos()) { | |||
Plugin plugin = pluginRepository.getPluginInstance(info.getKey()); | |||
SonarPlugin plugin = pluginRepository.getPluginInstance(info.getKey()); | |||
list.add(plugin.getClass().getClassLoader()); | |||
} | |||
list.add(I18nClassloader.class.getClassLoader()); |
@@ -26,7 +26,7 @@ import java.util.Collection; | |||
import java.util.HashMap; | |||
import java.util.Map; | |||
import org.apache.commons.lang.SystemUtils; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.utils.log.Loggers; | |||
import org.sonar.updatecenter.common.Version; | |||
@@ -59,7 +59,7 @@ public class PluginLoader { | |||
this.classloaderFactory = classloaderFactory; | |||
} | |||
public Map<String, Plugin> load(Map<String, PluginInfo> infoByKeys) { | |||
public Map<String, SonarPlugin> load(Map<String, PluginInfo> infoByKeys) { | |||
Collection<PluginClassloaderDef> defs = defineClassloaders(infoByKeys); | |||
Map<PluginClassloaderDef, ClassLoader> classloaders = classloaderFactory.create(defs); | |||
return instantiatePluginClasses(classloaders); | |||
@@ -113,9 +113,9 @@ public class PluginLoader { | |||
* @throws IllegalStateException if at least one plugin can't be correctly loaded | |||
*/ | |||
@VisibleForTesting | |||
Map<String, Plugin> instantiatePluginClasses(Map<PluginClassloaderDef, ClassLoader> classloaders) { | |||
Map<String, SonarPlugin> instantiatePluginClasses(Map<PluginClassloaderDef, ClassLoader> classloaders) { | |||
// instantiate plugins | |||
Map<String, Plugin> instancesByPluginKey = new HashMap<>(); | |||
Map<String, SonarPlugin> instancesByPluginKey = new HashMap<>(); | |||
for (Map.Entry<PluginClassloaderDef, ClassLoader> entry : classloaders.entrySet()) { | |||
PluginClassloaderDef def = entry.getKey(); | |||
ClassLoader classLoader = entry.getValue(); | |||
@@ -125,7 +125,7 @@ public class PluginLoader { | |||
String pluginKey = mainClassEntry.getKey(); | |||
String mainClass = mainClassEntry.getValue(); | |||
try { | |||
instancesByPluginKey.put(pluginKey, (Plugin) classLoader.loadClass(mainClass).newInstance()); | |||
instancesByPluginKey.put(pluginKey, (SonarPlugin) classLoader.loadClass(mainClass).newInstance()); | |||
} catch (UnsupportedClassVersionError e) { | |||
throw new IllegalStateException(String.format("The plugin [%s] does not support Java %s", | |||
pluginKey, SystemUtils.JAVA_VERSION_TRIMMED), e); | |||
@@ -138,8 +138,8 @@ public class PluginLoader { | |||
return instancesByPluginKey; | |||
} | |||
public void unload(Collection<Plugin> plugins) { | |||
for (Plugin plugin : plugins) { | |||
public void unload(Collection<SonarPlugin> plugins) { | |||
for (SonarPlugin plugin : plugins) { | |||
ClassLoader classLoader = plugin.getClass().getClassLoader(); | |||
if (classLoader instanceof Closeable && classLoader != classloaderFactory.baseClassloader()) { | |||
try { |
@@ -20,7 +20,7 @@ | |||
package org.sonar.core.platform; | |||
import java.util.Collection; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.api.batch.BatchSide; | |||
import org.sonar.api.server.ServerSide; | |||
@@ -38,7 +38,7 @@ public interface PluginRepository { | |||
/** | |||
* @return the instance of {@link Plugin} for the given plugin key. Never return null. | |||
*/ | |||
Plugin getPluginInstance(String key); | |||
SonarPlugin getPluginInstance(String key); | |||
boolean hasPlugin(String key); | |||
} |
@@ -29,7 +29,6 @@ import org.assertj.core.data.MapEntry; | |||
import org.junit.Rule; | |||
import org.junit.Test; | |||
import org.junit.rules.TemporaryFolder; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarPlugin; | |||
import org.sonar.updatecenter.common.Version; | |||
@@ -51,7 +50,7 @@ public class PluginLoaderTest { | |||
PluginClassloaderDef def = new PluginClassloaderDef("fake"); | |||
def.addMainClass("fake", FakePlugin.class.getName()); | |||
Map<String, Plugin> instances = loader.instantiatePluginClasses(ImmutableMap.of(def, getClass().getClassLoader())); | |||
Map<String, SonarPlugin> instances = loader.instantiatePluginClasses(ImmutableMap.of(def, getClass().getClassLoader())); | |||
assertThat(instances).containsOnlyKeys("fake"); | |||
assertThat(instances.get("fake")).isInstanceOf(FakePlugin.class); | |||
} |
@@ -1,64 +0,0 @@ | |||
/* | |||
* 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; | |||
import java.util.List; | |||
/** | |||
* A plugin is a group of extensions. See <code>org.sonar.api.Extension</code> interface to browse | |||
* available extension points. | |||
* <p>The manifest property <code>Plugin-Class</code> must declare the name of the implementation class. | |||
* It is automatically set by sonar-packaging-maven-plugin when building plugins.</p> | |||
* <p>Implementation must declare a public constructor with no-parameters.</p> | |||
* | |||
* @see org.sonar.api.Extension | |||
* @since 1.10 | |||
* @deprecated in 2.8. Use {@link SonarPlugin} instead. | |||
*/ | |||
@Deprecated | |||
public interface Plugin { | |||
/** | |||
* Unique key within sonar plugins | |||
* @deprecated since 2.2. The key must be set in the manifest. | |||
*/ | |||
@Deprecated | |||
String getKey(); | |||
/** | |||
* Descriptive name | |||
* @deprecated since 2.2. The name must be set in the manifest. | |||
*/ | |||
@Deprecated | |||
String getName(); | |||
/** | |||
* description of the plugin, can contains html or ruby code | |||
* @deprecated since 2.2. The description must be set in the manifest. | |||
*/ | |||
@Deprecated | |||
String getDescription(); | |||
/** | |||
* Classes of the implemented extensions. | |||
*/ | |||
List getExtensions(); | |||
} |
@@ -19,6 +19,8 @@ | |||
*/ | |||
package org.sonar.api; | |||
import java.util.List; | |||
/** | |||
* Plugin entry-point used to declare its extensions (see {@link org.sonar.api.Extension}. | |||
* <p/> | |||
@@ -27,22 +29,12 @@ package org.sonar.api; | |||
* | |||
* @since 2.8 | |||
*/ | |||
public abstract class SonarPlugin implements Plugin { | |||
@Override | |||
public final String getKey() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public abstract class SonarPlugin { | |||
@Override | |||
public final String getName() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
@Override | |||
public final String getDescription() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
/** | |||
* Classes of the implemented extensions. | |||
*/ | |||
public abstract List getExtensions(); | |||
/** | |||
* Returns a string representation of the plugin, suitable for debugging purposes only. |