]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-812 Add the possibility to filter resources by language in the Sonar Web Servic...
authorJulien Lancelot <julien.lancelot@gmail.com>
Thu, 29 Nov 2012 14:52:14 +0000 (15:52 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Mon, 3 Dec 2012 11:44:00 +0000 (12:44 +0100)
sonar-server/src/main/webapp/WEB-INF/app/controllers/api/resources_controller.rb
sonar-ws-client/src/main/java/org/sonar/wsclient/services/ResourceQuery.java
sonar-ws-client/src/test/java/org/sonar/wsclient/services/ResourceQueryTest.java

index 2c53126195dc214b79e372556dfe08e426d3984f..3251d9b9d800e894498cb378964bf463b3e0943c 100644 (file)
@@ -221,6 +221,11 @@ class Api::ResourcesController < Api::ApiController
         snapshots_conditions << 'projects.qualifier in (:qualifiers)'
       end
 
+      if params['language']
+        snapshots_conditions << 'projects.language in (:language)'
+        snapshots_values[:language]=params['language'].split(',')
+      end
+
       snapshots_including_resource=Snapshot.find(:all, :conditions => [snapshots_conditions.join(' AND '), snapshots_values], :include => 'project')
 
       # ---------- APPLY SECURITY - remove unauthorized resources - only if no selected resource
index 5b8cb0ad89c21933907d15b119503349077f3f30..c4a8dc02c1d45b82ac771709e3e559660915a013 100644 (file)
@@ -33,6 +33,7 @@ public class ResourceQuery extends Query<Resource> {
   private String[] rules;
   private String[] ruleSeverities;
   private String[] characteristicKeys;
+  private String[] languages;
   private String model;
   private boolean excludeRules = true;
   private boolean excludeRuleSeverities = true;
@@ -129,6 +130,15 @@ public class ResourceQuery extends Query<Resource> {
     return this;
   }
 
+  public String[] getLanguages() {
+    return languages;
+  }
+
+  public ResourceQuery setLanguages(String... languages) {
+    this.languages = languages;
+    return this;
+  }
+
   /**
    * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
    */
@@ -266,6 +276,7 @@ public class ResourceQuery extends Query<Resource> {
     appendUrlParameter(url, "includetrends", includeTrends);
     appendUrlParameter(url, "model", model);
     appendUrlParameter(url, "characteristics", characteristicKeys);
+    appendUrlParameter(url, "languages", languages);
     appendUrlParameter(url, "verbose", verbose);
     return url.toString();
   }
index 5d68774d96034052a87698ad57e7241cbf3bac7d..6817a60acb48301e0671fd0f84cfc5f8d580a3a2 100644 (file)
  */
 package org.sonar.wsclient.services;
 
+import org.junit.Test;
+
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.core.IsNull.nullValue;
 import static org.junit.Assert.assertThat;
 
-import org.junit.Test;
-
 public class ResourceQueryTest extends QueryTestCase {
 
   @Test
@@ -35,6 +35,13 @@ public class ResourceQueryTest extends QueryTestCase {
     assertThat(query.isVerbose(), is(false));
   }
 
+  @Test
+  public void resourceByLanguages() {
+    ResourceQuery query = new ResourceQuery("org.foo:bar").setLanguages("java,php");
+    assertThat(query.getUrl(), is("/api/resources?resource=org.foo%3Abar&languages=java%2Cphp&verbose=false&"));
+    assertThat(query.getResourceKeyOrId(), is("org.foo:bar"));
+  }
+
   @Test
   public void measures() {
     ResourceQuery query = new ResourceQuery();