diff options
13 files changed, 58 insertions, 70 deletions
diff --git a/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java b/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java index ee533a1cffa..02dd0ad885c 100644 --- a/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java +++ b/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java @@ -33,19 +33,21 @@ public final class CheckstyleRuleRepository extends RuleRepository { // for user extensions private ServerFileSystem fileSystem; + private XMLRuleParser xmlRuleParser; - public CheckstyleRuleRepository(ServerFileSystem fileSystem) { + public CheckstyleRuleRepository(ServerFileSystem fileSystem, XMLRuleParser xmlRuleParser) { super(CheckstyleConstants.REPOSITORY_KEY, Java.KEY); setName(CheckstyleConstants.REPOSITORY_NAME); this.fileSystem = fileSystem; + this.xmlRuleParser = xmlRuleParser; } @Override public List<Rule> createRules() { List<Rule> rules = new ArrayList<Rule>(); - rules.addAll(XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/plugins/checkstyle/rules.xml"))); + rules.addAll(xmlRuleParser.parse(getClass().getResourceAsStream("/org/sonar/plugins/checkstyle/rules.xml"))); for (File userExtensionXml : fileSystem.getExtensions(CheckstyleConstants.REPOSITORY_KEY, "xml")) { - rules.addAll(XMLRuleParser.parseXML(userExtensionXml)); + rules.addAll(xmlRuleParser.parse(userExtensionXml)); } return rules; } diff --git a/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java b/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java index 71d29f5c572..a501feb7308 100644 --- a/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java +++ b/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java @@ -22,6 +22,7 @@ package org.sonar.plugins.checkstyle; import org.junit.Test; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.rules.Rule; +import org.sonar.api.rules.XMLRuleParser; import java.util.List; @@ -34,7 +35,7 @@ public class CheckstyleRuleRepositoryTest { @Test public void loadRepositoryFromXml() { ServerFileSystem fileSystem = mock(ServerFileSystem.class); - CheckstyleRuleRepository repository = new CheckstyleRuleRepository(fileSystem); + CheckstyleRuleRepository repository = new CheckstyleRuleRepository(fileSystem, new XMLRuleParser()); List<Rule> rules = repository.createRules(); assertThat(rules.size(), greaterThan(100)); } diff --git a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java index 0f43b2cd4d2..38150ecead9 100644 --- a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java +++ b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java @@ -28,13 +28,16 @@ import java.util.List; public final class FindbugsRuleRepository extends RuleRepository { - public FindbugsRuleRepository() { + private XMLRuleParser xmlRuleParser; + + public FindbugsRuleRepository(XMLRuleParser xmlRuleParser) { super(FindbugsConstants.REPOSITORY_KEY, Java.KEY); setName(FindbugsConstants.REPOSITORY_NAME); + this.xmlRuleParser = xmlRuleParser; } @Override public List<Rule> createRules() { - return XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/plugins/findbugs/rules.xml")); + return xmlRuleParser.parse(getClass().getResourceAsStream("/org/sonar/plugins/findbugs/rules.xml")); } } diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java index 44c279b4f6e..ab3af9d93a6 100644 --- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java +++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java @@ -25,13 +25,14 @@ import java.util.List; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; import org.sonar.api.rules.RuleQuery; +import org.sonar.api.rules.XMLRuleParser; public class FindbugsRuleFinder implements RuleFinder { private final List<Rule> findbugsRules; public FindbugsRuleFinder() { - FindbugsRuleRepository repo = new FindbugsRuleRepository(); + FindbugsRuleRepository repo = new FindbugsRuleRepository(new XMLRuleParser()); findbugsRules = repo.createRules(); for(Rule rule : findbugsRules){ rule.setRepositoryKey(FindbugsConstants.REPOSITORY_KEY); diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java index d8c9ff8a32c..511232b7a6d 100644 --- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java +++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java @@ -27,12 +27,13 @@ import java.util.List; import org.junit.Test; import org.sonar.api.rules.Rule; +import org.sonar.api.rules.XMLRuleParser; public class FindbugsRuleRepositoryTest { @Test public void testLoadRepositoryFromXml() { - FindbugsRuleRepository repository = new FindbugsRuleRepository(); + FindbugsRuleRepository repository = new FindbugsRuleRepository(new XMLRuleParser()); List<Rule> rules = repository.createRules(); assertThat(rules.size(), greaterThan(300)); for (Rule rule : rules) { diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java index e051e7c52a7..f805a005459 100644 --- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java +++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java @@ -35,11 +35,7 @@ import org.mockito.stubbing.Answer; import org.sonar.api.CoreProperties;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.resources.Java;
-import org.sonar.api.rules.ActiveRule;
-import org.sonar.api.rules.Rule;
-import org.sonar.api.rules.RulePriority;
-import org.sonar.api.rules.RuleQuery;
-import org.sonar.api.rules.RulesManager;
+import org.sonar.api.rules.*;
import org.sonar.test.TestUtils;
import org.xml.sax.SAXException;
@@ -93,7 +89,7 @@ public abstract class FindbugsTests { RulesProfile profile = RulesProfile.create();
profile.setName(RulesProfile.SONAR_WAY_FINDBUGS_NAME);
profile.setLanguage(Java.KEY);
- for (Rule rule : new FindbugsRuleRepository().createRules()) {
+ for (Rule rule : new FindbugsRuleRepository(new XMLRuleParser()).createRules()) {
rule.setRepositoryKey(FindbugsConstants.REPOSITORY_KEY);
profile.activateRule(rule, null);
}
diff --git a/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java b/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java index 19214409b08..04fe1fdfe76 100644 --- a/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java +++ b/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java @@ -19,6 +19,7 @@ */ package org.sonar.plugins.pmd; +import com.google.common.collect.Lists; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.resources.Java; import org.sonar.api.rules.Rule; @@ -26,26 +27,27 @@ import org.sonar.api.rules.RuleRepository; import org.sonar.api.rules.XMLRuleParser; import java.io.File; -import java.util.ArrayList; import java.util.List; public final class PmdRuleRepository extends RuleRepository { // for user extensions private ServerFileSystem fileSystem; + private XMLRuleParser xmlRuleParser; - public PmdRuleRepository(ServerFileSystem fileSystem) { + public PmdRuleRepository(ServerFileSystem fileSystem, XMLRuleParser xmlRuleParser) { super(PmdConstants.REPOSITORY_KEY, Java.KEY); setName(PmdConstants.REPOSITORY_NAME); this.fileSystem = fileSystem; + this.xmlRuleParser = xmlRuleParser; } @Override public List<Rule> createRules() { - List<Rule> rules = new ArrayList<Rule>(); - rules.addAll(XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/plugins/pmd/rules.xml"))); + List<Rule> rules = Lists.newArrayList(); + rules.addAll(xmlRuleParser.parse(getClass().getResourceAsStream("/org/sonar/plugins/pmd/rules.xml"))); for (File userExtensionXml : fileSystem.getExtensions(PmdConstants.REPOSITORY_KEY, "xml")) { - rules.addAll(XMLRuleParser.parseXML(userExtensionXml)); + rules.addAll(xmlRuleParser.parse(userExtensionXml)); } return rules; } diff --git a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java index d6189e13196..438bb9d3c4d 100644 --- a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java +++ b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java @@ -17,10 +17,7 @@ import org.apache.commons.lang.StringUtils; import org.junit.Test; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.profiles.RulesProfile; -import org.sonar.api.rules.ActiveRule; -import org.sonar.api.rules.Rule; -import org.sonar.api.rules.RuleFinder; -import org.sonar.api.rules.RuleQuery; +import org.sonar.api.rules.*; import org.sonar.api.utils.ValidationMessages; import org.sonar.plugins.pmd.xml.PmdProperty; import org.sonar.plugins.pmd.xml.PmdRule; @@ -34,7 +31,7 @@ public class PmdProfileExporterTest { @Test public void testExportProfile() throws IOException, SAXException { ServerFileSystem fileSystem = mock(ServerFileSystem.class); - PmdRuleRepository repository = new PmdRuleRepository(fileSystem); + PmdRuleRepository repository = new PmdRuleRepository(fileSystem, new XMLRuleParser()); List<Rule> rules = repository.createRules(); RuleFinder ruleFinder = new PmdRuleFinder(rules); diff --git a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java index ac55ffc35f9..d726c28564e 100644 --- a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java +++ b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java @@ -28,13 +28,14 @@ import java.util.List; import org.junit.Test; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.rules.Rule; +import org.sonar.api.rules.XMLRuleParser; public class PmdRuleRepositoryTest { @Test public void testLoadRepositoryFromXml() { ServerFileSystem fileSystem = mock(ServerFileSystem.class); - PmdRuleRepository repository = new PmdRuleRepository(fileSystem); + PmdRuleRepository repository = new PmdRuleRepository(fileSystem, new XMLRuleParser()); List<Rule> rules = repository.createRules(); assertThat(rules.size(), greaterThan(100)); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleRepository.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleParser.java index ed8292a89ce..28c7679a5ce 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleRepository.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleParser.java @@ -23,6 +23,7 @@ import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.sonar.api.ServerComponent; import org.sonar.api.utils.AnnotationUtils; import org.sonar.check.Check; @@ -33,50 +34,34 @@ import java.util.List; /** * @since 2.3 */ -public final class AnnotationRuleRepository extends RuleRepository { +public final class AnnotationRuleParser implements ServerComponent { - private static final Logger LOG = LoggerFactory.getLogger(AnnotationRuleRepository.class); + private static final Logger LOG = LoggerFactory.getLogger(AnnotationRuleParser.class); - private Collection<Class> annotatedClasses; - - /** - * Use the factory method create() - */ - private AnnotationRuleRepository(String key, String language, String name, Collection<Class> annotatedClasses) { - super(key, language); - setName(name); - this.annotatedClasses = annotatedClasses; - } - - public static AnnotationRuleRepository create(String key, String language, String name, Collection<Class> annotatedClasses) { - return new AnnotationRuleRepository(key, language, name, annotatedClasses); - } - - @Override - public List<Rule> createRules() { + public List<Rule> parse(String repositoryKey, Collection<Class> annotatedClasses) { List<Rule> rules = Lists.newArrayList(); for (Class annotatedClass : annotatedClasses) { - rules.add(create(annotatedClass)); + rules.add(create(repositoryKey, annotatedClass)); } return rules; } - private Rule create(Class annotatedClass) { + private Rule create(String repositoryKey, Class annotatedClass) { org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, org.sonar.check.Rule.class); if (ruleAnnotation != null) { - return toRule(annotatedClass, ruleAnnotation); + return toRule(repositoryKey, annotatedClass, ruleAnnotation); } Check checkAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, Check.class); if (checkAnnotation != null) { - return toRule(annotatedClass, checkAnnotation); + return toRule(repositoryKey, annotatedClass, checkAnnotation); } - LOG.warn("The class " + annotatedClass.getCanonicalName() + " is not a check template. It should be annotated with " + Rule.class); + LOG.warn("The class " + annotatedClass.getCanonicalName() + " should be annotated with " + Rule.class); return null; } - private Rule toRule(Class clazz, org.sonar.check.Rule ruleAnnotation) { - String key = StringUtils.defaultIfEmpty(ruleAnnotation.key(), clazz.getCanonicalName()); - Rule rule = Rule.create(getKey(), key, ruleAnnotation.name()); + private Rule toRule(String repositoryKey, Class clazz, org.sonar.check.Rule ruleAnnotation) { + String ruleKey = StringUtils.defaultIfEmpty(ruleAnnotation.key(), clazz.getCanonicalName()); + Rule rule = Rule.create(repositoryKey, ruleKey, ruleAnnotation.name()); rule.setDescription(ruleAnnotation.description()); rule.setRulesCategory(RulesCategory.fromIsoCategory(ruleAnnotation.isoCategory())); rule.setPriority(RulePriority.fromCheckPriority(ruleAnnotation.priority())); @@ -91,9 +76,9 @@ public final class AnnotationRuleRepository extends RuleRepository { return rule; } - private Rule toRule(Class clazz, Check checkAnnotation) { - String key = StringUtils.defaultIfEmpty(checkAnnotation.key(), clazz.getCanonicalName()); - Rule rule = Rule.create(getKey(), key, checkAnnotation.title()); + private Rule toRule(String repositoryKey, Class clazz, Check checkAnnotation) { + String ruleKey = StringUtils.defaultIfEmpty(checkAnnotation.key(), clazz.getCanonicalName()); + Rule rule = Rule.create(repositoryKey, ruleKey, checkAnnotation.title()); rule.setDescription(checkAnnotation.description()); rule.setRulesCategory(RulesCategory.fromIsoCategory(checkAnnotation.isoCategory())); rule.setPriority(RulePriority.fromCheckPriority(checkAnnotation.priority())); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java index 4537da54b27..60090731ca2 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java @@ -27,6 +27,7 @@ import org.codehaus.stax2.XMLInputFactory2; 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.utils.SonarException; import javax.xml.stream.XMLInputFactory; @@ -38,17 +39,13 @@ import java.util.List; /** * @since 2.3 */ -public final class XMLRuleParser { +public final class XMLRuleParser implements ServerComponent { - private XMLRuleParser() { - // only static methods - } - - public static List<Rule> parseXML(File file) { + public List<Rule> parse(File file) { Reader reader = null; try { reader = new InputStreamReader(FileUtils.openInputStream(file), CharEncoding.UTF_8); - return parseXML(reader); + return parse(reader); } catch (IOException e) { throw new SonarException("Fail to load the file: " + file, e); @@ -61,11 +58,11 @@ public final class XMLRuleParser { /** * Warning : the input stream is closed in this method */ - public static List<Rule> parseXML(InputStream input) { + public List<Rule> parse(InputStream input) { Reader reader = null; try { reader = new InputStreamReader(input, CharEncoding.UTF_8); - return parseXML(reader); + return parse(reader); } catch (IOException e) { throw new SonarException("Fail to load the xml stream", e); @@ -75,7 +72,7 @@ public final class XMLRuleParser { } } - public static List<Rule> parseXML(Reader reader) { + public List<Rule> parse(Reader reader) { XMLInputFactory xmlFactory = XMLInputFactory2.newInstance(); xmlFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE); xmlFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE); diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java index 73f41a460e3..ebe150ff997 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java @@ -35,7 +35,7 @@ public class XMLRuleParserTest { @Test public void parseXml() { - List<Rule> rules = XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/rules.xml")); + List<Rule> rules = new XMLRuleParser().parse(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/rules.xml")); assertThat(rules.size(), is(2)); Rule rule = rules.get(0); @@ -59,17 +59,17 @@ public class XMLRuleParserTest { @Test(expected = SonarException.class) public void failIfMissingRuleKey() { - XMLRuleParser.parseXML(new StringReader("<rules><rule><name>Foo</name></rule></rules>")); + new XMLRuleParser().parse(new StringReader("<rules><rule><name>Foo</name></rule></rules>")); } @Test(expected = SonarException.class) public void failIfMissingPropertyKey() { - XMLRuleParser.parseXML(new StringReader("<rules><rule><key>foo</key><name>Foo</name><param></param></rule></rules>")); + new XMLRuleParser().parse(new StringReader("<rules><rule><key>foo</key><name>Foo</name><param></param></rule></rules>")); } @Test public void utf8Encoding() { - List<Rule> rules = XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/utf8.xml")); + List<Rule> rules = new XMLRuleParser().parse(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/utf8.xml")); assertThat(rules.size(), is(1)); Rule rule = rules.get(0); assertThat(rule.getKey(), is("com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck")); @@ -82,7 +82,7 @@ public class XMLRuleParserTest { @Test public void supportDeprecatedFormat() { // the deprecated format uses some attributes instead of nodes - List<Rule> rules = XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/deprecated.xml")); + List<Rule> rules = new XMLRuleParser().parse(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/deprecated.xml")); assertThat(rules.size(), is(1)); Rule rule = rules.get(0); assertThat(rule.getPriority(), Is.is(RulePriority.CRITICAL)); diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 48c321c0c02..cfbcda01422 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -33,6 +33,7 @@ import org.sonar.api.profiles.XMLProfileParser; import org.sonar.api.profiles.XMLProfileSerializer; import org.sonar.api.resources.Languages; import org.sonar.api.rules.DefaultRulesManager; +import org.sonar.api.rules.XMLRuleParser; import org.sonar.api.utils.HttpDownloader; import org.sonar.api.utils.IocContainer; import org.sonar.api.utils.TimeProfiler; @@ -175,6 +176,7 @@ public final class Platform { servicesContainer.as(Characteristics.CACHE).addComponent(AnnotationProfileParser.class); servicesContainer.as(Characteristics.CACHE).addComponent(XMLProfileParser.class); servicesContainer.as(Characteristics.CACHE).addComponent(XMLProfileSerializer.class); + servicesContainer.as(Characteristics.CACHE).addComponent(XMLRuleParser.class); servicesContainer.as(Characteristics.CACHE).addComponent(DefaultRuleFinder.class); servicesContainer.as(Characteristics.CACHE).addComponent(DeprecatedRuleRepositories.class); servicesContainer.as(Characteristics.CACHE).addComponent(DeprecatedProfiles.class); |