getMetrics();
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationChannel.java b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationChannel.java
index 40c6d2b71d5..49521fe55d9 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationChannel.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationChannel.java
@@ -19,7 +19,8 @@
*/
package org.sonar.api.notifications;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
*
@@ -34,7 +35,9 @@ import org.sonar.api.ServerExtension;
*
* @since 2.10
*/
-public abstract class NotificationChannel implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class NotificationChannel {
/**
* Returns the unique key of this channel.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcher.java b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcher.java
index 5ad0be8ed66..e662421d126 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcher.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcher.java
@@ -20,7 +20,8 @@
package org.sonar.api.notifications;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
*
@@ -37,7 +38,9 @@ import org.sonar.api.ServerExtension;
*
* @since 2.10
*/
-public abstract class NotificationDispatcher implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class NotificationDispatcher {
private final String notificationType;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcherMetadata.java b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcherMetadata.java
index 8660f559b4f..57b602ae2fc 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcherMetadata.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationDispatcherMetadata.java
@@ -20,7 +20,8 @@
package org.sonar.api.notifications;
import com.google.common.collect.Maps;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import java.util.Map;
@@ -33,7 +34,9 @@ import java.util.Map;
*
* @since 3.5
*/
-public final class NotificationDispatcherMetadata implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public final class NotificationDispatcherMetadata {
public static final String GLOBAL_NOTIFICATION = "globalNotification";
public static final String PER_PROJECT_NOTIFICATION = "perProjectNotification";
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationManager.java b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationManager.java
index 535793eddf7..c56c733b98d 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationManager.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/notifications/NotificationManager.java
@@ -20,8 +20,9 @@
package org.sonar.api.notifications;
import com.google.common.collect.Multimap;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
+import org.sonar.api.batch.InstantiationStrategy;
import javax.annotation.Nullable;
@@ -38,7 +39,10 @@ import java.util.List;
*
* @since 2.10
*/
-public interface NotificationManager extends ServerComponent, BatchComponent {
+@ServerSide
+@BatchSide
+@InstantiationStrategy(InstantiationStrategy.PER_BATCH)
+public interface NotificationManager {
/**
* Receives a notification and stores it so that it is processed by the notification service.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/NewUserHandler.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/NewUserHandler.java
index ec2cdf5b218..829bc81dd60 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/NewUserHandler.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/NewUserHandler.java
@@ -20,14 +20,17 @@
package org.sonar.api.platform;
import com.google.common.base.Preconditions;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import javax.annotation.Nullable;
/**
* @since 3.2
*/
-public interface NewUserHandler extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface NewUserHandler {
final class Context {
private String login;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/Server.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/Server.java
index 4f4502779ab..ef33d6d9b35 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/Server.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/Server.java
@@ -19,8 +19,8 @@
*/
package org.sonar.api.platform;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import javax.annotation.CheckForNull;
@@ -30,7 +30,9 @@ import java.util.Date;
/**
* @since 2.2
*/
-public abstract class Server implements BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public abstract class Server {
public abstract String getId();
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerFileSystem.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerFileSystem.java
index 98233374fc7..b07a1a3cae7 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerFileSystem.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerFileSystem.java
@@ -19,7 +19,7 @@
*/
package org.sonar.api.platform;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import java.io.File;
import java.util.List;
@@ -27,7 +27,8 @@ import java.util.List;
/**
* @since 2.3
*/
-public interface ServerFileSystem extends ServerComponent {
+@ServerSide
+public interface ServerFileSystem {
File getHomeDir();
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStartHandler.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStartHandler.java
index 2df19eebc0b..8c1c09d0916 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStartHandler.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStartHandler.java
@@ -19,12 +19,15 @@
*/
package org.sonar.api.platform;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 2.2
*/
-public interface ServerStartHandler extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface ServerStartHandler {
void onServerStart(Server server);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStopHandler.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStopHandler.java
index 7d6517c1ec9..315d5a16cc5 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStopHandler.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerStopHandler.java
@@ -19,12 +19,15 @@
*/
package org.sonar.api.platform;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 2.2
*/
-public interface ServerStopHandler extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface ServerStopHandler {
void onServerStop(Server server);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerUpgradeStatus.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerUpgradeStatus.java
index 74bb3763006..95d99239711 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerUpgradeStatus.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/ServerUpgradeStatus.java
@@ -19,12 +19,13 @@
*/
package org.sonar.api.platform;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
/**
* @since 2.5
*/
-public interface ServerUpgradeStatus extends ServerComponent {
+@ServerSide
+public interface ServerUpgradeStatus {
/**
* Has the database been upgraded during the current startup ? Return false when {@link #isFreshInstall()} is true.
@@ -40,5 +41,5 @@ public interface ServerUpgradeStatus extends ServerComponent {
* The database version before the server startup. Returns <=0 if db created from scratch.
*/
int getInitialDbVersion();
-
+
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/AnnotationProfileParser.java b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/AnnotationProfileParser.java
index d3760d31a26..8b45e85f2ad 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/AnnotationProfileParser.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/AnnotationProfileParser.java
@@ -20,7 +20,7 @@
package org.sonar.api.profiles;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import org.sonar.api.rules.Rule;
import org.sonar.api.rules.RuleAnnotationUtils;
import org.sonar.api.rules.RuleFinder;
@@ -33,7 +33,8 @@ import java.util.Collection;
/**
* @since 2.3
*/
-public final class AnnotationProfileParser implements ServerComponent {
+@ServerSide
+public final class AnnotationProfileParser {
private final RuleFinder ruleFinder;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileDefinition.java b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileDefinition.java
index 41b273f1e9d..7905aa164ba 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileDefinition.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileDefinition.java
@@ -19,7 +19,8 @@
*/
package org.sonar.api.profiles;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import org.sonar.api.utils.ValidationMessages;
/**
@@ -28,7 +29,9 @@ import org.sonar.api.utils.ValidationMessages;
*
* @since 2.3
*/
-public abstract class ProfileDefinition implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class ProfileDefinition {
public abstract RulesProfile createProfile(ValidationMessages validation);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileExporter.java b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileExporter.java
index f8ca5084ae5..69ede33467b 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileExporter.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileExporter.java
@@ -22,15 +22,19 @@ package org.sonar.api.profiles;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
-import org.sonar.api.BatchExtension;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import java.io.Writer;
/**
* @since 2.3
*/
-public abstract class ProfileExporter implements BatchExtension, ServerExtension {
+@BatchSide
+@ServerSide
+@ExtensionPoint
+public abstract class ProfileExporter {
private String[] supportedLanguages = new String[0];
private String key;
@@ -105,10 +109,10 @@ public abstract class ProfileExporter implements BatchExtension, ServerExtension
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
- .append("key", key)
- .append("name", name)
- .append("mimeType", mimeType)
- .append("languages", supportedLanguages)
- .toString();
+ .append("key", key)
+ .append("name", name)
+ .append("mimeType", mimeType)
+ .append("languages", supportedLanguages)
+ .toString();
}
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileImporter.java b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileImporter.java
index a468e2a9acc..8d58254f965 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileImporter.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/ProfileImporter.java
@@ -21,7 +21,8 @@ package org.sonar.api.profiles;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import org.sonar.api.utils.ValidationMessages;
import java.io.Reader;
@@ -29,7 +30,9 @@ import java.io.Reader;
/**
* @since 2.3
*/
-public abstract class ProfileImporter implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class ProfileImporter {
private String[] supportedLanguages = new String[0];
private String importerKey;
@@ -92,9 +95,9 @@ public abstract class ProfileImporter implements ServerExtension {
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
- .append("key", importerKey)
- .append("name", importerName)
- .append("languages", supportedLanguages)
- .toString();
+ .append("key", importerKey)
+ .append("name", importerName)
+ .append("languages", supportedLanguages)
+ .toString();
}
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileParser.java b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileParser.java
index 8519072307c..84b971dbe92 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileParser.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileParser.java
@@ -25,7 +25,7 @@ import org.apache.commons.lang.StringUtils;
import org.codehaus.staxmate.SMInputFactory;
import org.codehaus.staxmate.in.SMHierarchicCursor;
import org.codehaus.staxmate.in.SMInputCursor;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import org.sonar.api.rules.ActiveRule;
import org.sonar.api.rules.Rule;
import org.sonar.api.rules.RuleFinder;
@@ -34,6 +34,7 @@ import org.sonar.api.utils.ValidationMessages;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
+
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.HashMap;
@@ -42,7 +43,8 @@ import java.util.Map;
/**
* @since 2.3
*/
-public class XMLProfileParser implements ServerComponent {
+@ServerSide
+public class XMLProfileParser {
private final RuleFinder ruleFinder;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileSerializer.java b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileSerializer.java
index 47822090414..ec56276649d 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileSerializer.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/profiles/XMLProfileSerializer.java
@@ -21,7 +21,7 @@ package org.sonar.api.profiles;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import org.sonar.api.rules.ActiveRule;
import org.sonar.api.rules.ActiveRuleParam;
import org.sonar.api.utils.SonarException;
@@ -32,7 +32,8 @@ import java.io.Writer;
/**
* @since 2.3
*/
-public class XMLProfileSerializer implements ServerComponent {
+@ServerSide
+public class XMLProfileSerializer {
public void write(RulesProfile profile, Writer writer) {
try {
@@ -47,8 +48,8 @@ public class XMLProfileSerializer implements ServerComponent {
private void appendHeader(RulesProfile profile, Writer writer) throws IOException {
writer.append(""
- + ""
- + "");
+ + ""
+ + "");
StringEscapeUtils.escapeXml(writer, profile.getName());
writer.append("");
StringEscapeUtils.escapeXml(writer, profile.getLanguage());
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/resources/Language.java b/sonar-plugin-api/src/main/java/org/sonar/api/resources/Language.java
index a5665394c43..2634e3564a2 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/resources/Language.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/resources/Language.java
@@ -19,8 +19,9 @@
*/
package org.sonar.api.resources;
-import org.sonar.api.BatchExtension;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import org.sonar.api.batch.InstantiationStrategy;
/**
@@ -30,8 +31,11 @@ import org.sonar.api.batch.InstantiationStrategy;
*
* @since 1.10
*/
+@BatchSide
@InstantiationStrategy(InstantiationStrategy.PER_BATCH)
-public interface Language extends BatchExtension, ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface Language {
/**
* For example "java". Should not be more than 20 chars.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/resources/Languages.java b/sonar-plugin-api/src/main/java/org/sonar/api/resources/Languages.java
index 055b3897c1d..d0ae370809f 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/resources/Languages.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/resources/Languages.java
@@ -21,8 +21,8 @@ package org.sonar.api.resources;
import com.google.common.collect.Maps;
import org.apache.commons.lang.ArrayUtils;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
@@ -37,7 +37,9 @@ import java.util.Map;
*
* @since 1.10
*/
-public class Languages implements BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public class Languages {
private static final Logger LOG = Loggers.get(Languages.class);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypeTree.java b/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypeTree.java
index f6fa337b482..6d620e722ac 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypeTree.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypeTree.java
@@ -26,8 +26,8 @@ import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ListMultimap;
-import org.sonar.api.ServerExtension;
-import org.sonar.api.task.TaskExtension;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import java.util.ArrayList;
import java.util.Arrays;
@@ -37,7 +37,9 @@ import java.util.List;
/**
* @since 2.14
*/
-public class ResourceTypeTree implements TaskExtension, ServerExtension {
+@BatchSide
+@ServerSide
+public class ResourceTypeTree {
private final List types;
private final ListMultimap relations;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypes.java b/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypes.java
index 83962edd5f8..b9be315c6fe 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypes.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/resources/ResourceTypes.java
@@ -30,8 +30,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import org.sonar.api.ServerComponent;
-import org.sonar.api.task.TaskComponent;
+import org.sonar.api.ServerSide;
import javax.annotation.Nullable;
@@ -44,7 +43,8 @@ import java.util.Map;
* @since 2.14
*/
@Beta
-public class ResourceTypes implements TaskComponent, ServerComponent {
+@ServerSide
+public class ResourceTypes {
public static final Predicate AVAILABLE_FOR_FILTERS = new Predicate() {
@Override
@@ -184,7 +184,7 @@ public class ResourceTypes implements TaskComponent, ServerComponent {
return treeByQualifier.get(qualifier);
}
- public ResourceType getRoot(String qualifier){
+ public ResourceType getRoot(String qualifier) {
return getTree(qualifier).getRootType();
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleFinder.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleFinder.java
index a5ecacd1df9..53a7498b039 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleFinder.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleFinder.java
@@ -19,10 +19,10 @@
*/
package org.sonar.api.rules;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import org.sonar.api.batch.rule.ActiveRules;
import org.sonar.api.rule.RuleKey;
-import org.sonar.api.task.TaskComponent;
import javax.annotation.CheckForNull;
@@ -33,7 +33,9 @@ import java.util.Collection;
* @deprecated since 5.1. Use {@link ActiveRules} on batch side.
*/
@Deprecated
-public interface RuleFinder extends TaskComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public interface RuleFinder {
/**
* @since 2.5
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileExclusions.java b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileExclusions.java
index b5032895f83..a9e19d4331e 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileExclusions.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileExclusions.java
@@ -21,7 +21,7 @@ package org.sonar.api.scan.filesystem;
import com.google.common.collect.ObjectArrays;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.BatchComponent;
+import org.sonar.api.BatchSide;
import org.sonar.api.CoreProperties;
import org.sonar.api.config.Settings;
@@ -35,7 +35,8 @@ import java.util.List;
*
* @since 3.5
*/
-public class FileExclusions implements BatchComponent {
+@BatchSide
+public class FileExclusions {
private final Settings settings;
public FileExclusions(Settings settings) {
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileSystemFilter.java b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileSystemFilter.java
index 7665b406f1b..3fedb814ea4 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileSystemFilter.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/FileSystemFilter.java
@@ -19,7 +19,8 @@
*/
package org.sonar.api.scan.filesystem;
-import org.sonar.api.BatchExtension;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ExtensionPoint;
import org.sonar.api.batch.fs.InputFileFilter;
import java.io.File;
@@ -35,7 +36,9 @@ import java.io.File;
* @deprecated since 4.2 use {@link InputFileFilter}
*/
@Deprecated
-public interface FileSystemFilter extends BatchExtension {
+@BatchSide
+@ExtensionPoint
+public interface FileSystemFilter {
/**
* Plugins must not implement this interface. It is provided at runtime.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java
index b3c14832f88..152a1c14fb8 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/ModuleFileSystem.java
@@ -19,7 +19,7 @@
*/
package org.sonar.api.scan.filesystem;
-import org.sonar.api.BatchComponent;
+import org.sonar.api.BatchSide;
import org.sonar.api.batch.fs.FileSystem;
import org.sonar.api.batch.fs.InputFile;
@@ -34,7 +34,8 @@ import java.util.List;
* @deprecated in 4.2. Replaced by {@link org.sonar.api.batch.fs.FileSystem}
*/
@Deprecated
-public interface ModuleFileSystem extends BatchComponent {
+@BatchSide
+public interface ModuleFileSystem {
/**
* Base directory.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java
index 9bd4ac7be0c..d0468c24d97 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/scan/filesystem/PathResolver.java
@@ -21,7 +21,7 @@ package org.sonar.api.scan.filesystem;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
-import org.sonar.api.BatchComponent;
+import org.sonar.api.BatchSide;
import org.sonar.api.utils.PathUtils;
import javax.annotation.CheckForNull;
@@ -34,7 +34,8 @@ import java.util.List;
/**
* @since 3.5
*/
-public class PathResolver implements BatchComponent {
+@BatchSide
+public class PathResolver {
public File relativeFile(File dir, String path) {
Preconditions.checkArgument(dir.isDirectory(), "Not a directory: " + dir.getAbsolutePath());
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/security/Authenticator.java b/sonar-plugin-api/src/main/java/org/sonar/api/security/Authenticator.java
index 6d096999a17..5c2a7dadf8e 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/security/Authenticator.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/security/Authenticator.java
@@ -20,7 +20,8 @@
package org.sonar.api.security;
import com.google.common.base.Preconditions;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import javax.annotation.Nullable;
import javax.servlet.http.HttpServletRequest;
@@ -29,7 +30,9 @@ import javax.servlet.http.HttpServletRequest;
* @see SecurityRealm
* @since 3.1
*/
-public abstract class Authenticator implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class Authenticator {
/**
* @return true if user was successfully authenticated with specified credentials, false otherwise
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/security/LoginPasswordAuthenticator.java b/sonar-plugin-api/src/main/java/org/sonar/api/security/LoginPasswordAuthenticator.java
index 12f917efacc..f09256dc5bb 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/security/LoginPasswordAuthenticator.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/security/LoginPasswordAuthenticator.java
@@ -19,7 +19,8 @@
*/
package org.sonar.api.security;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 1.12
@@ -27,7 +28,9 @@ import org.sonar.api.ServerExtension;
* @deprecated replaced by Authenticator in version 3.1
*/
@Deprecated
-public interface LoginPasswordAuthenticator extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface LoginPasswordAuthenticator {
/**
* @throws RuntimeException if the authenticator can not be initialized at sonar server startup, eg. if the connection to LDAP server is refused
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/security/ResourcePermissions.java b/sonar-plugin-api/src/main/java/org/sonar/api/security/ResourcePermissions.java
index ab062823987..54d8c44195e 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/security/ResourcePermissions.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/security/ResourcePermissions.java
@@ -19,9 +19,9 @@
*/
package org.sonar.api.security;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import org.sonar.api.resources.Resource;
-import org.sonar.api.task.TaskComponent;
/**
* Grant access to newly created projects.
@@ -30,7 +30,9 @@ import org.sonar.api.task.TaskComponent;
*
* @since 3.2
*/
-public interface ResourcePermissions extends TaskComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public interface ResourcePermissions {
/**
* Limitation - the resource id is used instead of logical key.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/security/SecurityRealm.java b/sonar-plugin-api/src/main/java/org/sonar/api/security/SecurityRealm.java
index 53a03c1ac09..ba310849d2b 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/security/SecurityRealm.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/security/SecurityRealm.java
@@ -19,12 +19,15 @@
*/
package org.sonar.api.security;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 2.14
*/
-public abstract class SecurityRealm implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class SecurityRealm {
/**
* @return unique name of this realm, e.g. "ldap"
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/security/UserFinder.java b/sonar-plugin-api/src/main/java/org/sonar/api/security/UserFinder.java
index dc6b50293f6..c3f4a739cdd 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/security/UserFinder.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/security/UserFinder.java
@@ -19,8 +19,8 @@
*/
package org.sonar.api.security;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import org.sonar.api.database.model.User;
/**
@@ -28,7 +28,9 @@ import org.sonar.api.database.model.User;
* @deprecated since 5.1 DB access will soon be removed from batch side
*/
@Deprecated
-public interface UserFinder extends ServerComponent, BatchComponent {
+@BatchSide
+@ServerSide
+public interface UserFinder {
User findById(int id);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/debt/DebtModel.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/debt/DebtModel.java
index b2d668fa239..d9a9234976d 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/debt/DebtModel.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/debt/DebtModel.java
@@ -20,14 +20,15 @@
package org.sonar.api.server.debt;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import java.util.List;
/**
* @since 4.3
*/
-public interface DebtModel extends ServerComponent {
+@ServerSide
+public interface DebtModel {
/**
* @return all characteristics
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java
index 6caa31b5217..c70a11a0de2 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinition.java
@@ -20,10 +20,17 @@
package org.sonar.api.server.rule;
import com.google.common.base.Strings;
-import com.google.common.collect.*;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSortedSet;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rule.Severity;
import org.sonar.api.server.debt.DebtRemediationFunction;
@@ -132,7 +139,9 @@ import java.util.Set;
*
* @since 4.3
*/
-public interface RulesDefinition extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface RulesDefinition {
/**
* Default sub-characteristics of technical debt model. See http://www.sqale.org
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionI18nLoader.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionI18nLoader.java
index 70973c5a124..61d6ada2353 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionI18nLoader.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionI18nLoader.java
@@ -20,7 +20,7 @@
package org.sonar.api.server.rule;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import org.sonar.api.i18n.RuleI18n;
/**
@@ -35,7 +35,8 @@ import org.sonar.api.i18n.RuleI18n;
* @see org.sonar.api.server.rule.RulesDefinition for an example
* @since 4.3
*/
-public class RulesDefinitionI18nLoader implements ServerComponent {
+@ServerSide
+public class RulesDefinitionI18nLoader {
private final RuleI18n i18n;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionXmlLoader.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionXmlLoader.java
index 55612d860aa..910f56fe2fb 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionXmlLoader.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/rule/RulesDefinitionXmlLoader.java
@@ -23,7 +23,7 @@ import org.apache.commons.lang.StringUtils;
import org.codehaus.staxmate.SMInputFactory;
import org.codehaus.staxmate.in.SMHierarchicCursor;
import org.codehaus.staxmate.in.SMInputCursor;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rule.Severity;
import org.sonar.check.Cardinality;
@@ -81,7 +81,8 @@ import java.util.List;
* @see org.sonar.api.server.rule.RulesDefinition
* @since 4.3
*/
-public class RulesDefinitionXmlLoader implements ServerComponent {
+@ServerSide
+public class RulesDefinitionXmlLoader {
public void load(RulesDefinition.NewRepository repo, InputStream input, String encoding) {
load(repo, input, Charset.forName(encoding));
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RequestHandler.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RequestHandler.java
index 84eb2af2e90..7b45a5ea5f3 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RequestHandler.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/RequestHandler.java
@@ -19,12 +19,15 @@
*/
package org.sonar.api.server.ws;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 4.2
*/
-public interface RequestHandler extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface RequestHandler {
void handle(Request request, Response response) throws Exception;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java
index af429ac9b69..2535dcd72b9 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/server/ws/WebService.java
@@ -27,7 +27,8 @@ import com.google.common.collect.Sets;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
@@ -100,7 +101,9 @@ import java.util.Set;
*
* @since 4.2
*/
-public interface WebService extends ServerExtension, Definable {
+@ServerSide
+@ExtensionPoint
+public interface WebService extends Definable {
class Context {
private final Map controllers = Maps.newHashMap();
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/task/TaskComponent.java b/sonar-plugin-api/src/main/java/org/sonar/api/task/TaskComponent.java
index 65d5e055093..1aff5a51796 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/task/TaskComponent.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/task/TaskComponent.java
@@ -19,6 +19,9 @@
*/
package org.sonar.api.task;
+import org.sonar.api.BatchSide;
+import org.sonar.api.batch.InstantiationStrategy;
+
/**
* All the classes implementing this interface can be injected in public constructors of {@link TaskExtension}.
*
@@ -26,5 +29,7 @@ package org.sonar.api.task;
* @deprecated since 5.1 all tasks (devcockpit, views) will be moved to server side
*/
@Deprecated
+@BatchSide
+@InstantiationStrategy(InstantiationStrategy.PER_BATCH)
public interface TaskComponent {
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/technicaldebt/batch/TechnicalDebtModel.java b/sonar-plugin-api/src/main/java/org/sonar/api/technicaldebt/batch/TechnicalDebtModel.java
index 33eb7e48a76..56000eca609 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/technicaldebt/batch/TechnicalDebtModel.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/technicaldebt/batch/TechnicalDebtModel.java
@@ -20,7 +20,7 @@
package org.sonar.api.technicaldebt.batch;
-import org.sonar.api.BatchComponent;
+import org.sonar.api.BatchSide;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.technicaldebt.batch.internal.DefaultCharacteristic;
@@ -30,11 +30,11 @@ import java.util.List;
/**
* @since 4.1
- * Used by Views plugin
* @deprecated since 4.3
*/
@Deprecated
-public interface TechnicalDebtModel extends BatchComponent {
+@BatchSide
+public interface TechnicalDebtModel {
@CheckForNull
Characteristic characteristicById(Integer id);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/user/RubyUserService.java b/sonar-plugin-api/src/main/java/org/sonar/api/user/RubyUserService.java
index 1e303d01db9..5d9a92d0c3b 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/user/RubyUserService.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/user/RubyUserService.java
@@ -19,16 +19,18 @@
*/
package org.sonar.api.user;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import javax.annotation.CheckForNull;
+
import java.util.List;
import java.util.Map;
/**
* @since 3.6
*/
-public interface RubyUserService extends ServerComponent {
+@ServerSide
+public interface RubyUserService {
@CheckForNull
User findByLogin(String login);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/user/UserFinder.java b/sonar-plugin-api/src/main/java/org/sonar/api/user/UserFinder.java
index 7e869810b2d..1a261424b7f 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/user/UserFinder.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/user/UserFinder.java
@@ -19,8 +19,8 @@
*/
package org.sonar.api.user;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import javax.annotation.CheckForNull;
@@ -31,7 +31,9 @@ import java.util.List;
* @deprecated since 5.1 DB access will soon be removed from batch side
*/
@Deprecated
-public interface UserFinder extends BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public interface UserFinder {
@CheckForNull
User findByLogin(String login);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/Durations.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/Durations.java
index 05f2ba422d5..5e3ae2a0632 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/Durations.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/Durations.java
@@ -20,9 +20,9 @@
package org.sonar.api.utils;
-import org.sonar.api.BatchComponent;
+import org.sonar.api.BatchSide;
import org.sonar.api.CoreProperties;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.ServerSide;
import org.sonar.api.config.Settings;
import org.sonar.api.i18n.I18n;
@@ -35,7 +35,9 @@ import java.util.Locale;
*
* @since 4.3
*/
-public class Durations implements BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public class Durations {
public enum DurationFormat {
/**
@@ -111,7 +113,7 @@ public class Durations implements BatchComponent, ServerComponent {
return format(locale, days, hours, minutes, isNegative);
}
- private String format(Locale locale, int days, int hours, int minutes, boolean isNegative){
+ private String format(Locale locale, int days, int hours, int minutes, boolean isNegative) {
StringBuilder message = new StringBuilder();
if (days > 0) {
message.append(message(locale, "work_duration.x_days", isNegative ? -1 * days : days));
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java
index 4965f14d3d4..fc2d9d36c1c 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/HttpDownloader.java
@@ -19,8 +19,8 @@
*/
package org.sonar.api.utils;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import java.io.File;
import java.io.InputStream;
@@ -30,7 +30,9 @@ import java.net.URI;
* This component is available in IoC container, so it should be injected through
* a constructor parameter. It is available in both batch and server.
*/
-public abstract class HttpDownloader extends UriReader.SchemeProcessor implements BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public abstract class HttpDownloader extends UriReader.SchemeProcessor {
public static final int TIMEOUT_MILLISECONDS = 20 * 1000;
public abstract String downloadPlainText(URI uri, String encoding);
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/Semaphores.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/Semaphores.java
index 713d85265e2..a756709e092 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/Semaphores.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/Semaphores.java
@@ -19,10 +19,11 @@
*/
package org.sonar.api.utils;
-import org.sonar.api.ServerComponent;
-import org.sonar.api.task.TaskComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import javax.annotation.Nullable;
+
import java.util.Date;
/**
@@ -31,7 +32,9 @@ import java.util.Date;
*
* @since 3.4
*/
-public interface Semaphores extends TaskComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public interface Semaphores {
/**
* Try to acquire a semaphore for a given duration.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java
index 2b05df0de86..03e8f5122c8 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/System2.java
@@ -20,8 +20,8 @@
package org.sonar.api.utils;
import org.apache.commons.lang.SystemUtils;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import javax.annotation.CheckForNull;
@@ -63,7 +63,9 @@ import java.util.TimeZone;
*
* @since 4.2
*/
-public class System2 implements BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public class System2 {
public static final System2 INSTANCE = new System2();
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/TempFolder.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/TempFolder.java
index 92a695b57b1..8a15c2fcc73 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/TempFolder.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/TempFolder.java
@@ -19,8 +19,8 @@
*/
package org.sonar.api.utils;
-import org.sonar.api.ServerComponent;
-import org.sonar.api.task.TaskComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import javax.annotation.Nullable;
@@ -36,7 +36,9 @@ import java.io.File;
* @since 4.0
*
*/
-public interface TempFolder extends TaskComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public interface TempFolder {
/**
* Create a directory in temp folder with a random unique name.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/UriReader.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/UriReader.java
index ad435de7b23..9f5ceb4e80b 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/UriReader.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/UriReader.java
@@ -25,8 +25,8 @@ import com.google.common.base.Throwables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.io.Files;
-import org.sonar.api.BatchComponent;
-import org.sonar.api.ServerComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import java.io.File;
import java.io.IOException;
@@ -41,7 +41,9 @@ import java.util.Map;
*
* @since 3.2
*/
-public class UriReader implements BatchComponent, ServerComponent {
+@BatchSide
+@ServerSide
+public class UriReader {
private final Map processorsByScheme = Maps.newHashMap();
@@ -96,7 +98,6 @@ public class UriReader implements BatchComponent, ServerComponent {
protected abstract String description(URI uri);
}
-
/**
* This implementation is not exposed in API and is kept private.
*/
@@ -104,7 +105,7 @@ public class UriReader implements BatchComponent, ServerComponent {
@Override
public String[] getSupportedSchemes() {
- return new String[]{"file"};
+ return new String[] {"file"};
}
@Override
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/TempFolderCleaner.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/TempFolderCleaner.java
index e0e8a87ca52..8ba70571379 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/TempFolderCleaner.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/internal/TempFolderCleaner.java
@@ -20,11 +20,13 @@
package org.sonar.api.utils.internal;
import org.picocontainer.Startable;
-import org.sonar.api.ServerComponent;
-import org.sonar.api.task.TaskComponent;
+import org.sonar.api.BatchSide;
+import org.sonar.api.ServerSide;
import org.sonar.api.utils.TempFolder;
-public class TempFolderCleaner implements TaskComponent, ServerComponent, Startable {
+@BatchSide
+@ServerSide
+public class TempFolderCleaner implements Startable {
private TempFolder defaultTempFolder;
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/DashboardTemplate.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/DashboardTemplate.java
index ce40f5fe041..2060b0d7d9e 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/DashboardTemplate.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/DashboardTemplate.java
@@ -19,14 +19,17 @@
*/
package org.sonar.api.web;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* This extension point must be implemented to define a new dashboard.
*
* @since 2.13
*/
-public abstract class DashboardTemplate implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class DashboardTemplate {
/**
* Returns the {@link Dashboard} object that represents the dashboard to use.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/FilterTemplate.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/FilterTemplate.java
index 5ba0cc14bf8..ec7e6fc918b 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/FilterTemplate.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/FilterTemplate.java
@@ -19,14 +19,17 @@
*/
package org.sonar.api.web;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* This extension point must be implemented to define a new filter.
*
* @since 3.1
*/
-public abstract class FilterTemplate implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class FilterTemplate {
/**
* Returns the {@link Filter} object that represents the filter to use.
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/Footer.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/Footer.java
index 4dbbdade375..3aa3d3e97fa 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/Footer.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/Footer.java
@@ -19,12 +19,15 @@
*/
package org.sonar.api.web;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 1.10
*/
-public interface Footer extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface Footer {
/**
* Static HTML (no Ruby on Rails)
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/PageDecoration.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/PageDecoration.java
index 4505a42c32c..b34a7913c02 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/PageDecoration.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/PageDecoration.java
@@ -19,7 +19,8 @@
*/
package org.sonar.api.web;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* Adds content to HTML pages. A PageDecoration is a Rails template (html.erb file) that executes content_for blocks on predefined locations :
@@ -44,6 +45,8 @@ import org.sonar.api.ServerExtension;
*
* @since 3.3
*/
-public abstract class PageDecoration extends AbstractRubyTemplate implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class PageDecoration extends AbstractRubyTemplate {
}
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/ServletFilter.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/ServletFilter.java
index 29e9c99ab01..e50462060f8 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/ServletFilter.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/ServletFilter.java
@@ -21,14 +21,17 @@ package org.sonar.api.web;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import javax.servlet.Filter;
/**
* @since 3.1
*/
-public abstract class ServletFilter implements ServerExtension, Filter {
+@ServerSide
+@ExtensionPoint
+public abstract class ServletFilter implements Filter {
/**
* Override to change URL. Default is /*
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/View.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/View.java
index adfac3917ba..fed5625d6b3 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/View.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/View.java
@@ -19,12 +19,15 @@
*/
package org.sonar.api.web;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* @since 1.11
*/
-public interface View extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface View {
String getId();
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/Webservice.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/Webservice.java
index 1b33222abba..28b9d0f027a 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/web/Webservice.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/Webservice.java
@@ -19,7 +19,8 @@
*/
package org.sonar.api.web;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
/**
* Interface to create a web service extension point
@@ -28,7 +29,9 @@ import org.sonar.api.ServerExtension;
* @deprecated in 4.2. Replaced by {@link org.sonar.api.server.ws.WebService}
*/
@Deprecated
-public interface Webservice extends ServerExtension {
+@ServerSide
+@ExtensionPoint
+public interface Webservice {
/**
* @return The id of the web service
diff --git a/sonar-plugin-api/src/main/java/org/sonar/plugins/emailnotifications/api/EmailTemplate.java b/sonar-plugin-api/src/main/java/org/sonar/plugins/emailnotifications/api/EmailTemplate.java
index 09a8a5c1e40..fda958539be 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/plugins/emailnotifications/api/EmailTemplate.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/plugins/emailnotifications/api/EmailTemplate.java
@@ -19,13 +19,16 @@
*/
package org.sonar.plugins.emailnotifications.api;
-import org.sonar.api.ServerExtension;
+import org.sonar.api.ExtensionPoint;
+import org.sonar.api.ServerSide;
import org.sonar.api.notifications.Notification;
/**
* @since 2.10
*/
-public abstract class EmailTemplate implements ServerExtension {
+@ServerSide
+@ExtensionPoint
+public abstract class EmailTemplate {
public abstract EmailMessage format(Notification notification);
--
2.39.5