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;
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);
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
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) {
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;
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()) {
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;
// 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) {
}
@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));
}
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;
}
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);
*/
package org.sonar.batch.bootstrap;
-import org.sonar.batch.cache.WSLoaderResult;
-import org.sonar.batch.cache.WSLoader;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Lists;
-
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;
+import org.sonar.batch.cache.WSLoader;
+import org.sonar.batch.cache.WSLoaderResult;
import org.sonar.core.platform.PluginInfo;
import org.sonar.core.platform.RemotePlugin;
import org.sonar.core.platform.RemotePluginFile;
* @see org.sonar.batch.mediumtest.BatchMediumTester
*/
@Override
- public Map<String, Plugin> installLocals() {
+ public Map<String, SonarPlugin> installLocals() {
return Collections.emptyMap();
}
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
*/
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) {
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());
}
@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;
}
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;
// 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);
}
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;
import org.sonar.batch.repository.GlobalRepositoriesProvider;
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;
BatchPluginPredicate.class,
ExtensionInstaller.class,
- CachesManager.class,
+ CachesManager.class,
GlobalMode.class,
GlobalSettings.class,
new RulesProvider(),
new FileCacheProvider(),
new PersistentCacheProvider(),
System2.INSTANCE,
- DefaultI18n.class,
- Durations.class,
- RuleI18nManager.class,
new GlobalRepositoriesProvider(),
UuidFactoryImpl.INSTANCE);
addIfMissing(BatchPluginInstaller.class, PluginInstaller.class);
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);
}
}
*/
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 {
* Used only by tests.
* @see org.sonar.batch.mediumtest.BatchMediumTester
*/
- Map<String, Plugin> installLocals();
+ Map<String, SonarPlugin> installLocals();
}
+++ /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.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.batch.compute;
-
-import javax.annotation.ParametersAreNonnullByDefault;
-
+++ /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.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.batch.debt;
-
-import javax.annotation.ParametersAreNonnullByDefault;
+++ /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.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 static void check(Logger logger, ResourceFilter[] filters) {
- if (filters.length > 0) {
- logger.warn("ResourceFilters are not supported since version 4.2: " + Joiner.on(", ").join(filters));
- }
- }
-}
*/
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 {
public static final String MEDIUM_TEST_ENABLED = "sonar.mediumTest.enabled";
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;
}
}
@Override
- public Map<String, Plugin> installLocals() {
+ public Map<String, SonarPlugin> installLocals() {
return instancesByKeys;
}
}
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;
BatchExtensionDictionnary.class,
IssueFilters.class,
CoverageExclusions.class,
- ResourceFilters.class,
// rules
ModuleQProfiles.class,
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;
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);
assertThat(underTest.getPluginInstance("squid")).isSameAs(instance);
underTest.stop();
- verify(loader).unload(anyCollectionOf(Plugin.class));
+ verify(loader).unload(anyCollectionOf(SonarPlugin.class));
}
@Test
*/
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;
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);
+++ /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.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();
- }
-}
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;
// 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());
import java.util.Map;
import java.util.Set;
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;
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);
* @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();
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);
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 {
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;
/**
* @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);
}
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;
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);
}
+++ /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;
-
-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();
-
-}
*/
package org.sonar.api;
+import java.util.List;
+
/**
* Plugin entry-point used to declare its extensions (see {@link org.sonar.api.Extension}.
* <p/>
*
* @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.