]> source.dussan.org Git - sonarqube.git/commitdiff
Revert change that broke the API
authorDavid Gageot <david@gageot.net>
Mon, 28 May 2012 08:23:15 +0000 (10:23 +0200)
committerDavid Gageot <david@gageot.net>
Mon, 28 May 2012 08:43:02 +0000 (10:43 +0200)
sonar-batch/src/main/java/org/sonar/batch/bootstrap/ExtensionUtils.java
sonar-plugin-api/src/main/java/org/sonar/api/batch/BatchExtensionDictionnary.java
sonar-plugin-api/src/main/java/org/sonar/api/checks/AnnotationCheckFactory.java
sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinitions.java
sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleParser.java
sonar-plugin-api/src/main/java/org/sonar/api/rules/RuleAnnotationUtils.java
sonar-plugin-api/src/main/java/org/sonar/api/utils/AnnotationUtils.java
sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionTest.java
sonar-plugin-api/src/test/java/org/sonar/api/utils/AnnotationUtilsTest.java
sonar-server/src/main/java/org/sonar/server/ui/ViewProxy.java

index f02ef103c1013fc16d0371009e407f618a4034a2..da9c7ffc21400bb31af3a54f426d4eb4a7cecb55 100644 (file)
@@ -36,7 +36,7 @@ public final class ExtensionUtils {
 
   static boolean isInstantiationStrategy(Object extension, String strategy) {
     Class clazz = (extension instanceof Class ? (Class) extension : extension.getClass());
-    InstantiationStrategy extStrategy = AnnotationUtils.getClassAnnotation(clazz, InstantiationStrategy.class);
+    InstantiationStrategy extStrategy = AnnotationUtils.getAnnotation(clazz, InstantiationStrategy.class);
     if (extStrategy != null) {
       return strategy.equals(extStrategy.value());
     }
@@ -49,7 +49,7 @@ public final class ExtensionUtils {
 
   static boolean isSupportedEnvironment(Object extension, EnvironmentInformation environment) {
     Class clazz = (extension instanceof Class ? (Class) extension : extension.getClass());
-    SupportedEnvironment env = AnnotationUtils.getClassAnnotation(clazz, SupportedEnvironment.class);
+    SupportedEnvironment env = AnnotationUtils.getAnnotation(clazz, SupportedEnvironment.class);
     if (env == null) {
       return true;
     }
@@ -62,12 +62,12 @@ public final class ExtensionUtils {
   }
 
   static boolean checkDryRun(Object extension, boolean dryRun) {
-    return !dryRun || AnnotationUtils.getClassAnnotation(extension, NotDryRun.class)==null;
+    return !dryRun || AnnotationUtils.getAnnotation(extension, NotDryRun.class) == null;
   }
 
   static boolean isMavenExtensionOnly(Object extension) {
     Class clazz = (extension instanceof Class ? (Class) extension : extension.getClass());
-    SupportedEnvironment env = AnnotationUtils.getClassAnnotation(clazz, SupportedEnvironment.class);
+    SupportedEnvironment env = AnnotationUtils.getAnnotation(clazz, SupportedEnvironment.class);
     return env!=null && env.value().length==1 && StringUtils.equalsIgnoreCase("maven", env.value()[0]);
   }
 
index c8c58fab873a63d826d22f5b43fd5c10df269083..846cfa31a01828bd35c4ae8b452aa1e77021f83a 100644 (file)
@@ -192,7 +192,7 @@ public class BatchExtensionDictionnary {
   }
 
   protected Phase.Name evaluatePhase(Object extension) {
-    Phase phaseAnnotation = AnnotationUtils.getClassAnnotation(extension, Phase.class);
+    Phase phaseAnnotation = AnnotationUtils.getAnnotation(extension, Phase.class);
     if (phaseAnnotation != null) {
       return phaseAnnotation.name();
     }
index b673cf8537aaf19046a049c355578bc0f2be42c0..dae81a92702d65c8fcabd51fa99deb04b0e29783 100644 (file)
@@ -170,11 +170,11 @@ public final class AnnotationCheckFactory extends CheckFactory {
 
   private String getRuleKey(Object annotatedClassOrObject) {
     String key = null;
-    Rule ruleAnnotation = AnnotationUtils.getClassAnnotation(annotatedClassOrObject, Rule.class);
+    Rule ruleAnnotation = AnnotationUtils.getAnnotation(annotatedClassOrObject, Rule.class);
     if (ruleAnnotation != null) {
       key = ruleAnnotation.key();
     } else {
-      Check checkAnnotation = AnnotationUtils.getClassAnnotation(annotatedClassOrObject, Check.class);
+      Check checkAnnotation = AnnotationUtils.getAnnotation(annotatedClassOrObject, Check.class);
       if (checkAnnotation != null) {
         key = checkAnnotation.key();
 
index 13c9b374fa58d05c14abc323b156f50406e18917..fb5415650563f29a00d886bd3d2aa2a5a09c906b 100644 (file)
@@ -63,13 +63,13 @@ public final class PropertyDefinitions implements BatchComponent, ServerComponen
   }
 
   public PropertyDefinitions addComponent(Object component, String defaultCategory) {
-    Properties annotations = AnnotationUtils.getClassAnnotation(component, Properties.class);
+    Properties annotations = AnnotationUtils.getAnnotation(component, Properties.class);
     if (annotations != null) {
       for (Property property : annotations.value()) {
         addProperty(property, defaultCategory);
       }
     }
-    Property annotation = AnnotationUtils.getClassAnnotation(component, Property.class);
+    Property annotation = AnnotationUtils.getAnnotation(component, Property.class);
     if (annotation != null) {
       addProperty(annotation, defaultCategory);
     }
index 7a5ba3aea8ab0de7599b195fdf413956a8a53656..f4fc44856380ff946a862a7314c86a8f34e24cf3 100644 (file)
@@ -48,11 +48,11 @@ public final class AnnotationRuleParser implements ServerComponent {
   }
 
   private Rule create(String repositoryKey, Class annotatedClass) {
-    org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, org.sonar.check.Rule.class);
+    org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getAnnotation(annotatedClass, org.sonar.check.Rule.class);
     if (ruleAnnotation != null) {
       return toRule(repositoryKey, annotatedClass, ruleAnnotation);
     }
-    Check checkAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, Check.class);
+    Check checkAnnotation = AnnotationUtils.getAnnotation(annotatedClass, Check.class);
     if (checkAnnotation != null) {
       return toRule(repositoryKey, annotatedClass, checkAnnotation);
     }
index 2695db06b9e15fd453b6a46a4cc4eaab625a8c56..517eaf448771cc057570aca1071cb459f6b2f5f4 100644 (file)
@@ -34,11 +34,11 @@ public final class RuleAnnotationUtils {
 
   public static String getRuleKey(Class annotatedClass) {
     String key = null;
-    org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, org.sonar.check.Rule.class);
+    org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getAnnotation(annotatedClass, org.sonar.check.Rule.class);
     if (ruleAnnotation != null) {
       key = ruleAnnotation.key();
     } else {
-      Check checkAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, Check.class);
+      Check checkAnnotation = AnnotationUtils.getAnnotation(annotatedClass, Check.class);
       if (checkAnnotation != null) {
         key = checkAnnotation.key();
       }
index 8ca55d28ae46953f58dce2232656fb607d067f4c..c032db3a786d816ca0b5d2814002ef528197497b 100644 (file)
@@ -36,25 +36,36 @@ public final class AnnotationUtils {
 
   /**
    * Searches for a class annotation. All inheritance tree is analysed.
+   * 
+   * @since 3.1
    */
-  public static <A extends Annotation> A getClassAnnotation(Object object, Class<A> annotationClass) {
-    Class<?> initialClass = (object instanceof Class<?> ? (Class<?>) object : object.getClass());
-    A result = null;
-    Class<?> aClass = initialClass;
-    while (aClass != null && result == null) {
-      result = aClass.getAnnotation(annotationClass);
-      aClass = aClass.getSuperclass();
+  public static <A extends Annotation> A getAnnotation(Object objectOrClass, Class<A> annotationClass) {
+    Class<?> initialClass = (objectOrClass instanceof Class<?> ? (Class<?>) objectOrClass : objectOrClass.getClass());
+    
+    for (Class<?> aClass = initialClass; aClass != null; aClass = aClass.getSuperclass()) {
+      A result = aClass.getAnnotation(annotationClass);
+      if (result != null) {
+        return result;
+      }
     }
 
-    if (result == null) {
-      List<Class<?>> interfaces = ClassUtils.getAllInterfaces(initialClass);
-      for (Class<?> anInterface : interfaces) {
-        result = anInterface.getAnnotation(annotationClass);
-        if (result != null) {
-          break;
-        }
+    for (Class<?> anInterface : (List<Class<?>>) ClassUtils.getAllInterfaces(initialClass)) {
+      A result = anInterface.getAnnotation(annotationClass);
+      if (result != null) {
+        return result;
       }
     }
-    return result;
+
+    return null;
+  }
+
+  /**
+   * Searches for a class annotation. All inheritance tree is analysed.
+   * 
+   * @deprecated  As of 3.1, replaced by {@link #getAnnotation(Object,Class)}
+   */
+  @Deprecated
+  public static <A> A getClassAnnotation(Object object, Class<A> annotationClass) {
+    return (A) getAnnotation(object, (Class<? extends Annotation>) annotationClass);
   }
 }
index 035a48c5707f9e5693e9798fd147029c710b0067..793b4077356093ebf4391f14117f8875773475f3 100644 (file)
@@ -36,7 +36,7 @@ public class PropertyDefinitionTest {
 
   @Test
   public void createFromAnnotation() {
-    Properties props = AnnotationUtils.getClassAnnotation(Init.class, Properties.class);
+    Properties props = AnnotationUtils.getAnnotation(Init.class, Properties.class);
     Property prop = props.value()[0];
 
     PropertyDefinition def = PropertyDefinition.create(prop);
@@ -63,7 +63,7 @@ public class PropertyDefinitionTest {
 
   @Test
   public void createFromAnnotation_default_values() {
-    Properties props = AnnotationUtils.getClassAnnotation(DefaultValues.class, Properties.class);
+    Properties props = AnnotationUtils.getAnnotation(DefaultValues.class, Properties.class);
     Property prop = props.value()[0];
 
     PropertyDefinition def = PropertyDefinition.create(prop);
@@ -159,7 +159,7 @@ public class PropertyDefinitionTest {
 
   @Test
   public void autoDetectPasswordType() {
-    Properties props = AnnotationUtils.getClassAnnotation(OldScmPlugin.class, Properties.class);
+    Properties props = AnnotationUtils.getAnnotation(OldScmPlugin.class, Properties.class);
     Property prop = props.value()[0];
 
     PropertyDefinition def = PropertyDefinition.create(prop);
@@ -176,7 +176,7 @@ public class PropertyDefinitionTest {
 
   @Test
   public void autoDetectLicenseType() {
-    Properties props = AnnotationUtils.getClassAnnotation(ViewsPlugin.class, Properties.class);
+    Properties props = AnnotationUtils.getAnnotation(ViewsPlugin.class, Properties.class);
     Property prop = props.value()[0];
 
     PropertyDefinition def = PropertyDefinition.create(prop);
index cd9966140ab0f5db36352b012e8bede4874c3f4e..30207f3f4e44c020ce177f8918d193a862c8dc3a 100644 (file)
@@ -34,34 +34,40 @@ public class AnnotationUtilsTest {
 
   @Test
   public void getClassAnnotation() {
+    FakeAnnotation annotation = AnnotationUtils.getAnnotation(new SuperClass(), FakeAnnotation.class);
+    assertThat(annotation.value(), is("foo"));
+  }
+
+  @Test
+  public void getClassAnnotationWithDeprecatedMethod() {
     FakeAnnotation annotation = AnnotationUtils.getClassAnnotation(new SuperClass(), FakeAnnotation.class);
     assertThat(annotation.value(), is("foo"));
   }
 
   @Test
   public void searchClassAnnotationInSuperClass() {
-    FakeAnnotation annotation = AnnotationUtils.getClassAnnotation(new ChildClass(), FakeAnnotation.class);
+    FakeAnnotation annotation = AnnotationUtils.getAnnotation(new ChildClass(), FakeAnnotation.class);
     assertThat(annotation.value(), is("foo"));
   }
 
   @Test
   public void searchClassAnnotationInInterface() {
-    FakeAnnotation annotation = AnnotationUtils.getClassAnnotation(new ImplementedClass(), FakeAnnotation.class);
+    FakeAnnotation annotation = AnnotationUtils.getAnnotation(new ImplementedClass(), FakeAnnotation.class);
     assertThat(annotation.value(), is("foo"));
   }
 
   @Test
   public void noClassAnnotation() {
-    FakeAnnotation annotation = AnnotationUtils.getClassAnnotation("a string", FakeAnnotation.class);
+    FakeAnnotation annotation = AnnotationUtils.getAnnotation("a string", FakeAnnotation.class);
     assertThat(annotation, nullValue());
   }
 
   @Test
   public void shouldAcceptClasses() {
-    FakeAnnotation annotation = AnnotationUtils.getClassAnnotation(SuperClass.class, FakeAnnotation.class);
+    FakeAnnotation annotation = AnnotationUtils.getAnnotation(SuperClass.class, FakeAnnotation.class);
     assertThat(annotation.value(), is("foo"));
 
-    annotation = AnnotationUtils.getClassAnnotation(ChildClass.class, FakeAnnotation.class);
+    annotation = AnnotationUtils.getAnnotation(ChildClass.class, FakeAnnotation.class);
     assertThat(annotation.value(), is("foo"));
   }
 
index 29d869e050a34500e8ea96fd3c6e18f0753c9425..ae3c1b297981ffb59dd281020c4cdea85a28c988 100644 (file)
@@ -88,7 +88,7 @@ public class ViewProxy<V extends View> implements Comparable<ViewProxy> {
   }
 
   private void initRequiredMeasures(V view) {
-    RequiredMeasures requiredMeasuresAnnotation = AnnotationUtils.getClassAnnotation(view, RequiredMeasures.class);
+    RequiredMeasures requiredMeasuresAnnotation = AnnotationUtils.getAnnotation(view, RequiredMeasures.class);
     if (requiredMeasuresAnnotation != null) {
       mandatoryMeasures = requiredMeasuresAnnotation.allOf();
       needOneOfMeasures = requiredMeasuresAnnotation.anyOf();
@@ -96,21 +96,21 @@ public class ViewProxy<V extends View> implements Comparable<ViewProxy> {
   }
 
   private void initWidgetLayout(final V view) {
-    WidgetLayout layoutAnnotation = AnnotationUtils.getClassAnnotation(view, WidgetLayout.class);
+    WidgetLayout layoutAnnotation = AnnotationUtils.getAnnotation(view, WidgetLayout.class);
     if (layoutAnnotation != null) {
       widgetLayout = layoutAnnotation.value();
     }
   }
 
   private void initWidgetCategory(final V view) {
-    WidgetCategory categAnnotation = AnnotationUtils.getClassAnnotation(view, WidgetCategory.class);
+    WidgetCategory categAnnotation = AnnotationUtils.getAnnotation(view, WidgetCategory.class);
     if (categAnnotation != null) {
       widgetCategories = categAnnotation.value();
     }
   }
 
   private void initWidgetGlobal(V view) {
-    WidgetScope scopeAnnotation = AnnotationUtils.getClassAnnotation(view, WidgetScope.class);
+    WidgetScope scopeAnnotation = AnnotationUtils.getAnnotation(view, WidgetScope.class);
     if (scopeAnnotation != null) {
       checkValidScope(view, scopeAnnotation);
       isGlobal = ImmutableSet.copyOf(scopeAnnotation.value()).contains(WidgetScope.GLOBAL);
@@ -126,7 +126,7 @@ public class ViewProxy<V extends View> implements Comparable<ViewProxy> {
   }
 
   private void initWidgetProperties(final V view) {
-    WidgetProperties propAnnotation = AnnotationUtils.getClassAnnotation(view, WidgetProperties.class);
+    WidgetProperties propAnnotation = AnnotationUtils.getAnnotation(view, WidgetProperties.class);
     if (propAnnotation != null) {
       for (WidgetProperty property : propAnnotation.value()) {
         widgetPropertiesByKey.put(property.key(), property);
@@ -135,14 +135,14 @@ public class ViewProxy<V extends View> implements Comparable<ViewProxy> {
   }
 
   private void initDescription(final V view) {
-    Description descriptionAnnotation = AnnotationUtils.getClassAnnotation(view, Description.class);
+    Description descriptionAnnotation = AnnotationUtils.getAnnotation(view, Description.class);
     if (descriptionAnnotation != null) {
       description = descriptionAnnotation.value();
     }
   }
 
   private void initDefaultTabInfo(final V view) {
-    DefaultTab defaultTabAnnotation = AnnotationUtils.getClassAnnotation(view, DefaultTab.class);
+    DefaultTab defaultTabAnnotation = AnnotationUtils.getAnnotation(view, DefaultTab.class);
     if (defaultTabAnnotation != null) {
       if (defaultTabAnnotation.metrics().length == 0) {
         isDefaultTab = true;
@@ -156,35 +156,35 @@ public class ViewProxy<V extends View> implements Comparable<ViewProxy> {
   }
 
   private void initResourceLanguage(final V view) {
-    ResourceLanguage languageAnnotation = AnnotationUtils.getClassAnnotation(view, ResourceLanguage.class);
+    ResourceLanguage languageAnnotation = AnnotationUtils.getAnnotation(view, ResourceLanguage.class);
     if (languageAnnotation != null) {
       resourceLanguages = languageAnnotation.value();
     }
   }
 
   private void initResourceQualifier(final V view) {
-    ResourceQualifier qualifierAnnotation = AnnotationUtils.getClassAnnotation(view, ResourceQualifier.class);
+    ResourceQualifier qualifierAnnotation = AnnotationUtils.getAnnotation(view, ResourceQualifier.class);
     if (qualifierAnnotation != null) {
       resourceQualifiers = qualifierAnnotation.value();
     }
   }
 
   private void initResourceScope(final V view) {
-    ResourceScope scopeAnnotation = AnnotationUtils.getClassAnnotation(view, ResourceScope.class);
+    ResourceScope scopeAnnotation = AnnotationUtils.getAnnotation(view, ResourceScope.class);
     if (scopeAnnotation != null) {
       resourceScopes = scopeAnnotation.value();
     }
   }
 
   private void initSections(final V view) {
-    NavigationSection sectionAnnotation = AnnotationUtils.getClassAnnotation(view, NavigationSection.class);
+    NavigationSection sectionAnnotation = AnnotationUtils.getAnnotation(view, NavigationSection.class);
     if (sectionAnnotation != null) {
       sections = sectionAnnotation.value();
     }
   }
 
   private void initUserRoles(final V view) {
-    UserRole userRoleAnnotation = AnnotationUtils.getClassAnnotation(view, UserRole.class);
+    UserRole userRoleAnnotation = AnnotationUtils.getAnnotation(view, UserRole.class);
     if (userRoleAnnotation != null) {
       userRoles = userRoleAnnotation.value();
     }