@InstantiationStrategy(InstantiationStrategy.PER_BATCH)
public final class DefaultResourceTypes extends ExtensionProvider implements BatchExtension, ServerExtension {
-
@Override
public ResourceTypeTree provide() {
return ResourceTypeTree.builder()
-
- .addType(ResourceType.builder(Qualifiers.PROJECT)
- .setProperty("deletable", true)
- .setProperty("modifiable_history", true)
- .setProperty("hasRolePolicy", true)
- .setProperty("updatable_key", true)
- .build())
- .addType(ResourceType.builder(Qualifiers.MODULE)
- .setProperty("updatable_key", true)
- .build())
- .addType(ResourceType.builder(Qualifiers.DIRECTORY).build())
- .addType(ResourceType.builder(Qualifiers.PACKAGE).build())
- .addType(ResourceType.builder(Qualifiers.FILE).hasSourceCode().build())
- .addType(ResourceType.builder(Qualifiers.CLASS).hasSourceCode().build())
- .addType(ResourceType.builder(Qualifiers.UNIT_TEST_FILE).hasSourceCode().build())
-
- .addRelations(Qualifiers.PROJECT, Qualifiers.MODULE)
- .addRelations(Qualifiers.MODULE, Qualifiers.DIRECTORY, Qualifiers.PACKAGE)
- .addRelations(Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE)
- .addRelations(Qualifiers.PACKAGE, Qualifiers.CLASS, Qualifiers.UNIT_TEST_FILE)
-
- .build();
-
+ .addType(ResourceType.builder(Qualifiers.PROJECT)
+ .setProperty("deletable", true)
+ .setProperty("supportsGlobalDashboards", true)
+ .setProperty("modifiable_history", true)
+ .setProperty("hasRolePolicy", true)
+ .setProperty("updatable_key", true)
+ .build())
+ .addType(ResourceType.builder(Qualifiers.MODULE)
+ .setProperty("updatable_key", true)
+ .build())
+ .addType(ResourceType.builder(Qualifiers.DIRECTORY).build())
+ .addType(ResourceType.builder(Qualifiers.PACKAGE).build())
+ .addType(ResourceType.builder(Qualifiers.FILE).hasSourceCode().build())
+ .addType(ResourceType.builder(Qualifiers.CLASS).hasSourceCode().build())
+ .addType(ResourceType.builder(Qualifiers.UNIT_TEST_FILE).hasSourceCode().build())
+
+ .addRelations(Qualifiers.PROJECT, Qualifiers.MODULE)
+ .addRelations(Qualifiers.MODULE, Qualifiers.DIRECTORY, Qualifiers.PACKAGE)
+ .addRelations(Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE)
+ .addRelations(Qualifiers.PACKAGE, Qualifiers.CLASS, Qualifiers.UNIT_TEST_FILE)
+
+ .build();
}
-
}
*/
package org.sonar.plugins.core;
+import org.sonar.api.resources.ResourceType;
+
import org.junit.Test;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.ResourceTypeTree;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.internal.matchers.IsCollectionContaining.hasItem;
+import static org.fest.assertions.Assertions.assertThat;
public class DefaultResourceTypesTest {
@Test
- public void provide() {
+ public void should_provide() {
+ ResourceTypeTree tree = new DefaultResourceTypes().provide();
+
+ assertThat(tree.getTypes()).hasSize(7);
+ assertThat(tree.getChildren(Qualifiers.PROJECT)).containsExactly(Qualifiers.MODULE);
+ }
+
+ @Test
+ public void projects_should_be_available_for_global_widgets() {
ResourceTypeTree tree = new DefaultResourceTypes().provide();
- assertThat(tree.getTypes().size(), is(7));
- assertThat(tree.getChildren(Qualifiers.PROJECT).size(), is(1));
- assertThat(tree.getChildren(Qualifiers.PROJECT), hasItem(Qualifiers.MODULE));
+
+ ResourceType projectResourceType = tree.getTypes().get(0);
+
+ assertThat(projectResourceType.getQualifier()).isEqualTo(Qualifiers.PROJECT);
+ assertThat(projectResourceType.getBooleanProperty("supportsGlobalDashboards")).isTrue();
}
}
end
def resource_value_field(value)
- projects = Project.all(:conditions => {:scope => 'PRJ', :qualifier => 'TRK', :enabled => true})
- sorted_projects = Api::Utils.insensitive_sort(projects, &:name)
+ combo = ''
- select_tag 'resource_id', options_id(value, sorted_projects)
+ visible_qualifiers=Java::OrgSonarServerUi::JRubyFacade.getInstance().getQualifiersWithProperty('supportsGlobalDashboards')
+
+ visible_qualifiers.each do |qualifier|
+ projects = Project.all(:conditions => {:qualifier => qualifier, :enabled => true})
+
+ unless projects.nil? || projects.empty?
+ sorted_projects = Api::Utils.insensitive_sort(projects, &:name)
+ combo += option_group(message('qualifiers.' + qualifier), options_id(value, sorted_projects))
+ end
+ end
+
+ select_tag 'resource_id', combo
end
end