001/* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2012 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020package org.sonar.plugins.core; 021 022import org.sonar.api.BatchExtension; 023import org.sonar.api.ExtensionProvider; 024import org.sonar.api.ServerExtension; 025import org.sonar.api.batch.InstantiationStrategy; 026import org.sonar.api.resources.Qualifiers; 027import org.sonar.api.resources.ResourceType; 028import org.sonar.api.resources.ResourceTypeTree; 029 030@InstantiationStrategy(InstantiationStrategy.PER_BATCH) 031public final class DefaultResourceTypes extends ExtensionProvider implements BatchExtension, ServerExtension { 032 033 @Override 034 public ResourceTypeTree provide() { 035 return ResourceTypeTree.builder() 036 037 .addType(ResourceType.builder(Qualifiers.PROJECT) 038 .setProperty("deletable", "true") 039 .setProperty("modifiable_history", "true") 040 .setProperty("hasRolePolicy", "true") 041 .build()) 042 .addType(ResourceType.builder(Qualifiers.MODULE).build()) 043 .addType(ResourceType.builder(Qualifiers.DIRECTORY).build()) 044 .addType(ResourceType.builder(Qualifiers.PACKAGE).build()) 045 .addType(ResourceType.builder(Qualifiers.FILE).hasSourceCode().build()) 046 .addType(ResourceType.builder(Qualifiers.CLASS).hasSourceCode().build()) 047 .addType(ResourceType.builder(Qualifiers.UNIT_TEST_FILE).hasSourceCode().build()) 048 049 .addRelations(Qualifiers.PROJECT, Qualifiers.MODULE) 050 .addRelations(Qualifiers.MODULE, Qualifiers.DIRECTORY, Qualifiers.PACKAGE) 051 .addRelations(Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE) 052 .addRelations(Qualifiers.PACKAGE, Qualifiers.CLASS, Qualifiers.UNIT_TEST_FILE) 053 054 .build(); 055 056 } 057 058}