diff options
Diffstat (limited to 'sonar-plugin-api')
39 files changed, 0 insertions, 2944 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/AnnotationCheckerFactory.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/AnnotationCheckerFactory.java deleted file mode 100644 index b12b8dcc34c..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/AnnotationCheckerFactory.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.checkers; - -import org.apache.commons.lang.StringUtils; -import org.sonar.api.checks.profiles.Check; -import org.sonar.api.checks.profiles.CheckProfile; -import org.sonar.check.AnnotationIntrospector; -import org.sonar.check.CheckProperty; - -import java.lang.reflect.Field; -import java.util.Collection; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.Map; - -/** - * @since 2.1 - */ -public class AnnotationCheckerFactory<CHECKER> extends CheckerFactory<CHECKER> { - - private CheckProfile profile; - private String repositoryKey; - private Collection<Class<CHECKER>> checkerClasses; - - public AnnotationCheckerFactory(CheckProfile profile, String repositoryKey, Collection<Class<CHECKER>> checkerClasses) { - this.profile = profile; - this.repositoryKey = repositoryKey; - this.checkerClasses = checkerClasses; - } - - public Map<Check, CHECKER> create() { - Map<String, Class<CHECKER>> classesByKey = getClassesByKey(checkerClasses); - - Map<Check, CHECKER> map = new IdentityHashMap<Check, CHECKER>(); - for (Check check : profile.getChecks(repositoryKey)) { - Class<CHECKER> clazz = classesByKey.get(check.getTemplateKey()); - if (clazz != null) { - CHECKER checker = instantiate(check, clazz); - if (checker != null) { - map.put(check, checker); - } - } - } - return map; - } - - CHECKER instantiate(Check check, Class<CHECKER> clazz) { - try { - CHECKER checker = clazz.newInstance(); - configureFields(check, checker); - return checker; - - } catch (UnvalidCheckerException e) { - throw e; - - } catch (Exception e) { - throw new UnvalidCheckerException("The checker " + clazz.getCanonicalName() + " can not be created", e); - } - } - - private void configureFields(Check check, CHECKER checker) throws IllegalAccessException { - for (Map.Entry<String, String> entry : check.getProperties().entrySet()) { - Field field = getField(checker, entry.getKey()); - if (field == null) { - throw new UnvalidCheckerException("The field " + entry.getKey() + " does not exist or is not annotated with @CheckProperty"); - } - if (StringUtils.isNotBlank(entry.getValue())) { - configureField(checker, field, entry); - } - } - - } - - private void configureField(Object checker, Field field, Map.Entry<String, String> parameter) throws IllegalAccessException { - field.setAccessible(true); - - if (field.getType().equals(String.class)) { - field.set(checker, parameter.getValue()); - - } else if (field.getType().getSimpleName().equals("int")) { - field.setInt(checker, Integer.parseInt(parameter.getValue())); - - } else if (field.getType().getSimpleName().equals("short")) { - field.setShort(checker, Short.parseShort(parameter.getValue())); - - } else if (field.getType().getSimpleName().equals("long")) { - field.setLong(checker, Long.parseLong(parameter.getValue())); - - } else if (field.getType().getSimpleName().equals("double")) { - field.setDouble(checker, Double.parseDouble(parameter.getValue())); - - } else if (field.getType().getSimpleName().equals("boolean")) { - field.setBoolean(checker, Boolean.parseBoolean(parameter.getValue())); - - } else if (field.getType().getSimpleName().equals("byte")) { - field.setByte(checker, Byte.parseByte(parameter.getValue())); - - } else if (field.getType().equals(Integer.class)) { - field.set(checker, new Integer(Integer.parseInt(parameter.getValue()))); - - } else if (field.getType().equals(Long.class)) { - field.set(checker, new Long(Long.parseLong(parameter.getValue()))); - - } else if (field.getType().equals(Double.class)) { - field.set(checker, new Double(Double.parseDouble(parameter.getValue()))); - - } else if (field.getType().equals(Boolean.class)) { - field.set(checker, Boolean.valueOf(Boolean.parseBoolean(parameter.getValue()))); - - } else { - throw new UnvalidCheckerException("The type of the field " + field + " is not supported: " + field.getType()); - } - } - - private Field getField(Object checker, String key) { - Field[] fields = checker.getClass().getDeclaredFields(); - for (Field field : fields) { - CheckProperty annotation = field.getAnnotation(CheckProperty.class); - if (annotation != null) { - if (key.equals(field.getName()) || key.equals(annotation.key())) { - return field; - } - } - } - return null; - } - - private Map<String, Class<CHECKER>> getClassesByKey(Collection<Class<CHECKER>> checkerClasses) { - Map<String, Class<CHECKER>> result = new HashMap<String, Class<CHECKER>>(); - for (Class<CHECKER> checkerClass : checkerClasses) { - String key = AnnotationIntrospector.getCheckKey(checkerClass); - if (key != null) { - result.put(key, checkerClass); - } - } - return result; - } - -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/CheckerFactory.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/CheckerFactory.java deleted file mode 100644 index 62d46f67de3..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/CheckerFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.checkers; - -import org.sonar.api.checks.profiles.Check; - -import java.util.Map; - -/** - * @since 2.1 - */ -public abstract class CheckerFactory<CHECKER> { - public abstract Map<Check, CHECKER> create(); -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/MessageDispatcher.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/MessageDispatcher.java deleted file mode 100644 index 6321210f2a5..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/MessageDispatcher.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.checkers; - -import com.google.common.collect.Maps; -import org.sonar.api.batch.SensorContext; -import org.sonar.api.checks.profiles.Check; -import org.sonar.api.checks.profiles.CheckProfile; -import org.sonar.api.resources.Resource; -import org.sonar.api.rules.Rule; -import org.sonar.api.rules.RulePriority; -import org.sonar.api.rules.Violation; -import org.sonar.check.Message; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; - -public class MessageDispatcher { - - private Map<Check, Object> checkersByCheck; - private Map<Object, Check> checksByChecker; - private SensorContext context; - - public MessageDispatcher(SensorContext context) { - this.context = context; - checkersByCheck = Maps.newIdentityHashMap(); - checksByChecker = Maps.newIdentityHashMap(); - } - - public void registerChecker(Check check, Object checker) { - checkersByCheck.put(check, checker); - checksByChecker.put(checker, check); - } - - public void registerCheckers(CheckerFactory factory) { - Map<Check, Object> map = factory.create(); - for (Map.Entry<Check, Object> entry : map.entrySet()) { - registerChecker(entry.getKey(), entry.getValue()); - } - } - - public void registerCheckers(CheckProfile profile) { - for (Check check : profile.getChecks()) { - registerChecker(check, check); - } - } - - public Object getChecker(Check check) { - return checkersByCheck.get(check); - } - - public Check getCheck(Object checker) { - return checksByChecker.get(checker); - } - - public Collection getCheckers() { - return checkersByCheck.values(); - } - - public void unregisterCheck(Check check) { - Object checker = checkersByCheck.remove(check); - if (checker != null) { - checksByChecker.remove(checker); - } - } - - public void unregisterChecks(CheckProfile profile) { - for (Check check : profile.getChecks()) { - unregisterCheck(check); - } - } - - public void log(Resource resource, Message message) { - Object checker = message.getChecker(); - Check check = getCheck(checker); - Violation violation = new Violation(new Rule(check.getRepositoryKey(), check.getTemplateKey()), resource); - violation.setLineId(message.getLine()); - violation.setMessage(message.getText(Locale.ENGLISH)); - violation.setPriority(RulePriority.fromCheckPriority(check.getPriority())); - context.saveViolation(violation); - } - - public void clear() { - checkersByCheck.clear(); - checksByChecker.clear(); - } - -}
\ No newline at end of file diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/UnvalidCheckerException.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/UnvalidCheckerException.java deleted file mode 100644 index e732b77c645..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/checkers/UnvalidCheckerException.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.checkers; - -public class UnvalidCheckerException extends RuntimeException { - public UnvalidCheckerException() { - } - - public UnvalidCheckerException(String message) { - super(message); - } - - public UnvalidCheckerException(String message, Throwable cause) { - super(message, cause); - } - - public UnvalidCheckerException(Throwable cause) { - super(cause); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/AnnotationCheckProfileFactory.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/AnnotationCheckProfileFactory.java deleted file mode 100644 index 056461b3953..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/AnnotationCheckProfileFactory.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.sonar.check.AnnotationIntrospector; -import org.sonar.check.BelongsToProfile; -import org.sonar.check.BelongsToProfiles; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -public final class AnnotationCheckProfileFactory { - - private AnnotationCheckProfileFactory() { - } - - public static Collection<CheckProfile> create(String repositoryKey, String language, Collection<Class> checkClasses) { - Map<String, CheckProfile> profilesByTitle = new HashMap<String, CheckProfile>(); - - if (checkClasses != null) { - for (Class aClass : checkClasses) { - BelongsToProfiles belongsToProfiles = (BelongsToProfiles) aClass.getAnnotation(BelongsToProfiles.class); - if (belongsToProfiles != null) { - for (BelongsToProfile belongsToProfile : belongsToProfiles.value()) { - registerProfile(profilesByTitle, aClass, belongsToProfile, repositoryKey, language); - } - } - BelongsToProfile belongsToProfile = (BelongsToProfile) aClass.getAnnotation(BelongsToProfile.class); - registerProfile(profilesByTitle, aClass, belongsToProfile, repositoryKey, language); - } - } - - return profilesByTitle.values(); - } - - private static void registerProfile(Map<String, CheckProfile> profilesByTitle, Class aClass, BelongsToProfile belongsToProfile, String repositoryKey, String language) { - if (belongsToProfile != null) { - String title = belongsToProfile.title(); - CheckProfile profile = profilesByTitle.get(title); - if (profile == null) { - profile = new CheckProfile(title, language); - profilesByTitle.put(title, profile); - } - Check check = new Check(repositoryKey, AnnotationIntrospector.getCheckKey(aClass)); - check.setPriority(belongsToProfile.priority()); - profile.addCheck(check); - } - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/Check.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/Check.java deleted file mode 100644 index 617a084a695..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/Check.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.apache.commons.lang.builder.ToStringBuilder; -import org.sonar.check.Priority; - -import java.util.HashMap; -import java.util.Map; - -/** - * EXPERIMENTAL - will be used in version 2.2 - */ -public class Check { - - private String repositoryKey; - private String templateKey; - private Priority priority = null; - private final Map<String, String> properties = new HashMap<String,String>(); - - public Check() { - } - - public Check(String repositoryKey, String templateKey) { - this.repositoryKey = repositoryKey; - this.templateKey = templateKey; - } - - public String getTemplateKey() { - return templateKey; - } - - public String getRepositoryKey() { - return repositoryKey; - } - - public void setRepositoryKey(String repositoryKey) { - this.repositoryKey = repositoryKey; - } - - public void setTemplateKey(String templateKey) { - this.templateKey = templateKey; - } - - public Priority getPriority() { - return priority; - } - - public void setPriority(Priority priority) { - this.priority = priority; - } - - public Map<String, String> getProperties() { - return properties; - } - - public String getProperty(String key) { - return properties.get(key); - } - - public void addProperty(String key, Object value) { - properties.put(key, value.toString()); - } - - public void addProperties(Map<String, String> properties) { - this.properties.putAll(properties); - } - - public void setProperties(Map<String, String> properties) { - this.properties.clear(); - this.properties.putAll(properties); - } - - @Override - public boolean equals(Object o) { - return o == this; - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .append("repository", repositoryKey) - .append("template", templateKey) - .append("priority", priority) - .toString(); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfile.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfile.java deleted file mode 100644 index 7bb3c560af5..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfile.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.sonar.api.BatchExtension; -import org.sonar.api.ServerExtension; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -public class CheckProfile implements BatchExtension, ServerExtension { - - private String name; - private String language; - private List<Check> checks = new ArrayList<Check>(); - - public CheckProfile(String name, String language) { - if (name == null) { - throw new IllegalArgumentException("Name can not be null"); - } - if (language == null) { - throw new IllegalArgumentException("Language can not be null"); - } - this.name = name; - this.language = language; - } - - public String getName() { - return name; - } - - public String getLanguage() { - return language; - } - - public List<Check> getChecks() { - return checks; - } - - public List<Check> getChecks(String repositoryKey) { - List<Check> result = new ArrayList<Check>(); - for (Check check : getChecks()) { - if (check.getRepositoryKey().equals(repositoryKey)) { - result.add(check); - } - } - return result; - } - - public List<Check> getChecks(String repositoryKey, String templateKey) { - List<Check> result = new ArrayList<Check>(); - List<Check> repoChecks = getChecks(repositoryKey); - for (Check repoCheck : repoChecks) { - if (repoCheck.getTemplateKey().equals(templateKey)) { - result.add(repoCheck); - } - } - return result; - } - - /** - * We assume there is only one check for this template - */ - public Check getCheck(String repositoryKey, String templateKey) { - List<Check> repoChecks = getChecks(repositoryKey); - for (Check repoCheck : repoChecks) { - if (repoCheck.getTemplateKey().equals(templateKey)) { - return repoCheck; - } - } - return null; - } - - public void addCheck(Check check) { - checks.add(check); - } - - public void setChecks(Collection<Check> list) { - checks.clear(); - checks.addAll(list); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - CheckProfile profile = (CheckProfile) o; - if (!language.equals(profile.language)) { - return false; - } - if (!name.equals(profile.name)) { - return false; - } - return true; - } - - @Override - public int hashCode() { - int result = name.hashCode(); - result = 31 * result + language.hashCode(); - return result; - } - - @Override - public String toString() { - return name; - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfileProvider.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfileProvider.java deleted file mode 100644 index 8eb21ef01da..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfileProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.sonar.api.ServerExtension; - -import java.util.Collection; - -/** - * EXPERIMENTAL - will be used in version 2.2 - */ -public abstract class CheckProfileProvider implements ServerExtension { - - public abstract Collection<CheckProfile> provide(); - -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfileXmlMarshaller.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfileXmlMarshaller.java deleted file mode 100644 index 3203b14e1e3..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/profiles/CheckProfileXmlMarshaller.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.converters.Converter; -import com.thoughtworks.xstream.converters.MarshallingContext; -import com.thoughtworks.xstream.converters.UnmarshallingContext; -import com.thoughtworks.xstream.io.HierarchicalStreamReader; -import com.thoughtworks.xstream.io.HierarchicalStreamWriter; -import com.thoughtworks.xstream.io.xml.CompactWriter; -import com.thoughtworks.xstream.io.xml.XppDriver; -import org.apache.commons.io.IOUtils; -import org.sonar.check.Priority; - -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.Writer; -import java.util.Map; - -/** - * EXPERIMENTAL - will be used in version 2.3 - */ -public final class CheckProfileXmlMarshaller { - - public static void toXml(CheckProfile profile, Writer writer) { - getXStream().toXML(profile, writer); - } - - public static CheckProfile fromXml(Reader xml) { - return (CheckProfile) getXStream().fromXML(xml); - } - - public static CheckProfile fromXmlInClasspath(String pathToXml) { - return fromXmlInClasspath(pathToXml, CheckProfileXmlMarshaller.class); - } - - public static CheckProfile fromXmlInClasspath(String pathToXml, Class clazz) { - Reader reader = new InputStreamReader(clazz.getResourceAsStream(pathToXml)); - try { - return fromXml(reader); - } finally { - IOUtils.closeQuietly(reader); - } - } - - private static XStream getXStream() { - XStream xstream = new XStream(new CompactDriver()); - xstream.setClassLoader(CheckProfileXmlMarshaller.class.getClassLoader()); - xstream.registerConverter(new CheckConverter()); - xstream.alias("profile", CheckProfile.class); - xstream.alias("check", Check.class); - xstream.addImplicitCollection(CheckProfile.class, "checks"); - return xstream; - } - - private static class CompactDriver extends XppDriver { - @Override - public HierarchicalStreamWriter createWriter(Writer out) { - return new XDataPrintWriter(out); - } - } - - - private static class XDataPrintWriter extends CompactWriter { - public XDataPrintWriter(Writer writer) { - super(writer, XML_1_0); - } - } - - private static class CheckConverter implements Converter { - - public boolean canConvert(Class clazz) { - return clazz.equals(Check.class); - } - - public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { - Check check = (Check) value; - writer.startNode("repository"); - writer.setValue(check.getRepositoryKey()); - writer.endNode(); - writer.startNode("template"); - writer.setValue(check.getTemplateKey()); - writer.endNode(); - writer.startNode("priority"); - writer.setValue(check.getPriority().toString()); - writer.endNode(); - for (Map.Entry<String, String> entry : check.getProperties().entrySet()) { - if (entry.getValue() != null) { - writer.startNode("property"); - writer.startNode("key"); - writer.setValue(entry.getKey()); - writer.endNode(); - writer.startNode("value"); - // TODO is escaping automatically supported by xstream ? - writer.setValue(entry.getValue()); - writer.endNode(); - writer.endNode(); - } - } - } - - public Object unmarshal(HierarchicalStreamReader reader, - UnmarshallingContext context) { - Check check = new Check(); - while (reader.hasMoreChildren()) { - reader.moveDown(); - readValue(reader, check); - reader.moveUp(); - } - return check; - } - - private void readValue(HierarchicalStreamReader reader, Check check) { - if (reader.getNodeName().equals("repository")) { - check.setRepositoryKey(reader.getValue()); - - } else if (reader.getNodeName().equals("template")) { - check.setTemplateKey(reader.getValue()); - - } else if (reader.getNodeName().equals("priority")) { - check.setPriority(Priority.valueOf(reader.getValue())); - - } else if (reader.getNodeName().equals("property")) { - reader.moveDown(); - String key = reader.getValue(); - reader.moveUp(); - - reader.moveDown(); - String value = reader.getValue(); - reader.moveUp(); - check.addProperty(key, value); - } - } - - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/AnnotationCheckTemplateFactory.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/AnnotationCheckTemplateFactory.java deleted file mode 100644 index 7ea9638c8e7..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/AnnotationCheckTemplateFactory.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.sonar.check.AnnotationIntrospector; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * Load templates from class annotations (see the library sonar-check-api) - */ -public class AnnotationCheckTemplateFactory { - - private static final Logger LOG = LoggerFactory.getLogger(AnnotationCheckTemplateFactory.class); - - private Collection<Class> annotatedClasses; - - public AnnotationCheckTemplateFactory(Collection<Class> annotatedClasses) { - this.annotatedClasses = annotatedClasses; - } - - public List<CheckTemplate> create() { - List<CheckTemplate> templates = new ArrayList<CheckTemplate>(); - for (Class annotatedClass : annotatedClasses) { - BundleCheckTemplate template = create(annotatedClass); - if (template != null) { - templates.add(template); - } - } - return templates; - } - - - protected BundleCheckTemplate create(Class annotatedClass) { - org.sonar.check.Check checkAnnotation = AnnotationIntrospector.getCheckAnnotation(annotatedClass); - if (checkAnnotation == null) { - LOG.warn("The class " + annotatedClass.getCanonicalName() + " is not a check template. It should be annotated with " + CheckTemplate.class); - return null; - } - - BundleCheckTemplate check = toTemplate(annotatedClass, checkAnnotation); - Field[] fields = annotatedClass.getDeclaredFields(); - if (fields != null) { - for (Field field : fields) { - BundleCheckTemplateProperty property = toProperty(check, field); - if (property != null) { - check.addProperty(property); - } - } - } - return check; - } - - private static BundleCheckTemplate toTemplate(Class annotatedClass, org.sonar.check.Check checkAnnotation) { - String key = AnnotationIntrospector.getCheckKey(annotatedClass); - String bundle = getBundleBaseName(checkAnnotation, annotatedClass); - - BundleCheckTemplate check = new BundleCheckTemplate(key, bundle); - check.setDefaultDescription(checkAnnotation.description()); - check.setDefaultTitle(checkAnnotation.title()); - check.setIsoCategory(checkAnnotation.isoCategory()); - check.setPriority(checkAnnotation.priority()); - - return check; - } - - private static String getBundleBaseName(org.sonar.check.Check checkAnnotation, Class annotatedClass) { - String bundle = checkAnnotation.bundle(); - if (StringUtils.isBlank(bundle)) { - bundle = annotatedClass.getCanonicalName(); - } - return bundle; - } - - private static BundleCheckTemplateProperty toProperty(BundleCheckTemplate check, Field field) { - org.sonar.check.CheckProperty propertyAnnotation = field.getAnnotation(org.sonar.check.CheckProperty.class); - if (propertyAnnotation != null) { - String fieldKey = propertyAnnotation.key(); - if (fieldKey==null || "".equals(fieldKey)) { - fieldKey = field.getName(); - } - BundleCheckTemplateProperty property = new BundleCheckTemplateProperty(check, fieldKey); - property.setDefaultTitle(propertyAnnotation.title()); - property.setDefaultDescription(propertyAnnotation.description()); - return property; - } - return null; - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/BundleCheckTemplate.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/BundleCheckTemplate.java deleted file mode 100644 index c1b50cc1676..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/BundleCheckTemplate.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -/** - * Internationalized check template. Translations are loaded from resource bundles (properties files in the classpath) - * - * @since 2.1 - */ -public class BundleCheckTemplate extends CheckTemplate { - private static final Logger LOG = LoggerFactory.getLogger(BundleCheckTemplate.class); - - private String bundleBaseName; - private String defaultTitle; - private String defaultDescription; - - protected BundleCheckTemplate(String key, String bundleBaseName) { - super(key); - this.bundleBaseName = bundleBaseName; - } - - protected BundleCheckTemplate(String key, Class bundleClass) { - this(key, bundleClass.getCanonicalName()); - } - - protected String getDefaultTitle() { - if (defaultTitle == null || "".equals(defaultTitle)) { - return getKey(); - } - return defaultTitle; - } - - protected void setDefaultTitle(String defaultTitle) { - this.defaultTitle = defaultTitle; - } - - protected String getDefaultDescription() { - return defaultDescription; - } - - protected void setDefaultDescription(String defaultDescription) { - this.defaultDescription = defaultDescription; - } - - @Override - public String getTitle(Locale locale) { - return getText("title", locale, getDefaultTitle()); - } - - @Override - public String getDescription(Locale locale) { - return getText("description", locale, getDefaultDescription()); - } - - @Override - public String getMessage(Locale locale, String key, Object... params) { - return null; - } - - protected String getText(String key, Locale locale, String defaultValue) { - String result = null; - ResourceBundle bundle = getBundle(locale); - if (bundle != null) { - try { - result = bundle.getString(key); - } catch (MissingResourceException e) { - LOG.debug(e.getMessage()); - } - } - if (result == null) { - result = defaultValue; - } - return result; - } - - protected ResourceBundle getBundle(Locale locale) { - try { - if (locale != null) { - return ResourceBundle.getBundle(bundleBaseName, locale); - } - } catch (MissingResourceException e) { - // do nothing : use the default values - } - return null; - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/BundleCheckTemplateProperty.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/BundleCheckTemplateProperty.java deleted file mode 100644 index 10dd2cbfefc..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/BundleCheckTemplateProperty.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import java.util.Locale; - -public class BundleCheckTemplateProperty extends CheckTemplateProperty { - - private BundleCheckTemplate check; - private String defaultTitle; - private String defaultDescription; - - public BundleCheckTemplateProperty(BundleCheckTemplate check, String key) { - setKey(key); - this.check = check; - } - - public String getDefaultTitle() { - if (defaultTitle == null || "".equals(defaultTitle)) { - return getKey(); - } - return defaultTitle; - } - - public void setDefaultTitle(String s) { - this.defaultTitle = s; - } - - - @Override - public String getTitle(Locale locale) { - return check.getText("property." + getKey() + ".title", locale, getDefaultTitle()); - } - - public String getDefaultDescription() { - return defaultDescription; - } - - public void setDefaultDescription(String s) { - this.defaultDescription = s; - } - - @Override - public String getDescription(Locale locale) { - return check.getText("property." + getKey() + ".description", locale, getDefaultDescription()); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplate.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplate.java deleted file mode 100644 index f2dc214ce56..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplate.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.sonar.check.IsoCategory; -import org.sonar.check.Priority; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Locale; - -/** - * EXPERIMENTAL - will be used in version 2.2 - * - * @since 2.1 - */ -public abstract class CheckTemplate { - - protected String key; - protected String configKey; - protected Priority priority; - protected IsoCategory isoCategory; - protected List<CheckTemplateProperty> properties; - - public CheckTemplate(String key) { - this.key = key; - } - - public CheckTemplate() { - } - - public String getKey() { - return key; - } - - public void setKey(String s) { - this.key = s; - } - - public Priority getPriority() { - return priority; - } - - public void setPriority(Priority p) { - this.priority = p; - } - - public IsoCategory getIsoCategory() { - return isoCategory; - } - - public void setIsoCategory(IsoCategory c) { - this.isoCategory = c; - } - - public String getConfigKey() { - return configKey; - } - - public void setConfigKey(String configKey) { - this.configKey = configKey; - } - - public abstract String getTitle(Locale locale); - - public abstract String getDescription(Locale locale); - - public abstract String getMessage(Locale locale, String key, Object... params); - - public List<CheckTemplateProperty> getProperties() { - if (properties==null) { - return Collections.emptyList(); - } - return properties; - } - - public void addProperty(CheckTemplateProperty p) { - if (properties==null) { - properties = new ArrayList<CheckTemplateProperty>(); - } - properties.add(p); - } - - public CheckTemplateProperty getProperty(String key) { - if (properties!=null) { - for (CheckTemplateProperty property : properties) { - if (property.getKey().equals(key)) { - return property; - } - } - } - return null; - } - - /** - * Checks are equal within the same plugin. Two plugins can have two different checks with the same key. - */ - @Override - public final boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof CheckTemplate)) { - return false; - } - - CheckTemplate checkTemplate = (CheckTemplate) o; - return key.equals(checkTemplate.key); - } - - @Override - public final int hashCode() { - return key.hashCode(); - } - -}
\ No newline at end of file diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateFactory.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateFactory.java deleted file mode 100644 index c1e93e87337..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateFactory.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import java.util.Collection; - -/** - * EXPERIMENTAL - will be used in version 2.2 - * @since 2.1 - */ -public abstract class CheckTemplateFactory { - - public abstract Collection<CheckTemplate> create(); - -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateProperty.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateProperty.java deleted file mode 100644 index 91dc4428cde..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateProperty.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import java.util.Locale; - -/** - * EXPERIMENTAL - will be used in version 2.2 - * - * @since 2.1 - */ -public abstract class CheckTemplateProperty implements Comparable<CheckTemplateProperty> { - - protected String key; - - public String getKey() { - return key; - } - - public void setKey(String s) { - this.key = s; - } - - public abstract String getTitle(Locale locale); - - public String getDescription() { - return getDescription(Locale.ENGLISH); - } - - - public abstract String getDescription(Locale locale); - - @Override - public final boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof CheckTemplateProperty)) { - return false; - } - - CheckTemplateProperty that = (CheckTemplateProperty) o; - return key.equals(that.key); - } - - @Override - public final int hashCode() { - return key.hashCode(); - } - - public int compareTo(CheckTemplateProperty o) { - return getKey().compareTo(o.getKey()); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateRepositories.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateRepositories.java deleted file mode 100644 index c5e6ea6395a..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateRepositories.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.sonar.api.ServerExtension; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -/** - * @since 2.1 - */ -public class CheckTemplateRepositories implements ServerExtension { - - private Map<String, CheckTemplateRepository> repositoriesByKey = new HashMap<String, CheckTemplateRepository>(); - - public CheckTemplateRepositories(CheckTemplateRepository[] repositories) { - if (repositories != null) { - for (CheckTemplateRepository templateRepository : repositories) { - repositoriesByKey.put(templateRepository.getKey(), templateRepository); - } - } - } - - public CheckTemplateRepositories() { - // DO NOT REMOVE THIS CONSTRUCTOR. It is used by Picocontainer when no repositories are available. - } - - public CheckTemplateRepository getRepository(String key) { - return repositoriesByKey.get(key); - } - - public Collection<CheckTemplateRepository> getRepositories() { - return repositoriesByKey.values(); - } - - public CheckTemplate getTemplate(String repositoryKey, String templateKey) { - CheckTemplateRepository repo = getRepository(repositoryKey); - if (repo != null) { - return repo.getTemplate(templateKey); - } - return null; - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateRepository.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateRepository.java deleted file mode 100644 index 4b98660ae44..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/CheckTemplateRepository.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.apache.commons.io.IOUtils; -import org.sonar.api.profiles.RulesProfile; -import org.sonar.api.resources.Language; -import org.sonar.api.rules.*; -import org.sonar.check.IsoCategory; - -import java.io.InputStream; -import java.util.*; - -/** - * EXPERIMENTAL - will be used in version 2.3 - * - * @since 2.1 - */ -public class CheckTemplateRepository implements RulesRepository { - - private String key; - private Language language; - private List<CheckTemplate> templates; - private Map<String, CheckTemplate> templatesByKey; - - - public CheckTemplateRepository() { - } - - public CheckTemplateRepository(String key) { - if (key == null) { - throw new IllegalArgumentException("Key can not be null"); - } - this.key = key; - } - - public String getKey() { - return key; - } - - public CheckTemplateRepository setKey(String key) { - this.key = key; - return this; - } - - public Language getLanguage() { - return language; - } - - public CheckTemplateRepository setLanguage(Language l) { - this.language = l; - return this; - } - - public List<CheckTemplate> getTemplates() { - if (templates == null) { - return Collections.emptyList(); - } - return templates; - } - - public CheckTemplateRepository setTemplates(List<CheckTemplate> c) { - this.templates = c; - return this; - } - - public CheckTemplate getTemplate(String key) { - if (templatesByKey == null || templatesByKey.isEmpty()) { - templatesByKey = new HashMap<String, CheckTemplate>(); - for (CheckTemplate template : templates) { - templatesByKey.put(template.getKey(), template); - } - } - return templatesByKey.get(key); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - CheckTemplateRepository that = (CheckTemplateRepository) o; - return key.equals(that.key); - - } - - @Override - public int hashCode() { - return key.hashCode(); - } - - - public static CheckTemplateRepository createFromXml(String repositoryKey, Language language, String pathToXml) { - InputStream input = CheckTemplateRepository.class.getResourceAsStream(pathToXml); - try { - List<CheckTemplate> templates = new XmlCheckTemplateFactory().parse(input); - CheckTemplateRepository repository = new CheckTemplateRepository(repositoryKey); - repository.setTemplates(templates); - repository.setLanguage(language); - return repository; - - } finally { - IOUtils.closeQuietly(input); - } - } - - public static CheckTemplateRepository createFromAnnotatedClasses(String repositoryKey, Language language, Collection<Class> classes) { - AnnotationCheckTemplateFactory factory = new AnnotationCheckTemplateFactory(classes); - CheckTemplateRepository repository = new CheckTemplateRepository(repositoryKey); - repository.setTemplates(factory.create()); - repository.setLanguage(language); - return repository; - } - - - - - - - - - - - /* - - CODE FOR BACKWARD COMPATIBLITY - This class should not extend RulesRepository in next versions - - */ - - - public List<Rule> getInitialReferential() { - List<Rule> rules = new ArrayList<Rule>(); - for (CheckTemplate checkTemplate : getTemplates()) { - rules.add(toRule(checkTemplate)); - } - return rules; - } - - private Rule toRule(CheckTemplate checkTemplate) { - Rule rule = new Rule(getKey(), checkTemplate.getKey()); - rule.setDescription(checkTemplate.getDescription(Locale.ENGLISH)); - rule.setName(checkTemplate.getTitle(Locale.ENGLISH)); - rule.setPriority(RulePriority.fromCheckPriority(checkTemplate.getPriority())); - rule.setRulesCategory(toRuleCategory(checkTemplate.getIsoCategory())); - for (CheckTemplateProperty checkTemplateProperty : checkTemplate.getProperties()) { - RuleParam param = rule.createParameter(checkTemplateProperty.getKey()); - param.setDescription(checkTemplateProperty.getDescription(Locale.ENGLISH)); - param.setType("s"); - } - - return rule; - } - - private RulesCategory toRuleCategory(IsoCategory isoCategory) { - if (isoCategory == IsoCategory.Reliability) { - return Iso9126RulesCategories.RELIABILITY; - } - if (isoCategory == IsoCategory.Efficiency) { - return Iso9126RulesCategories.EFFICIENCY; - } - if (isoCategory == IsoCategory.Maintainability) { - return Iso9126RulesCategories.MAINTAINABILITY; - } - if (isoCategory == IsoCategory.Portability) { - return Iso9126RulesCategories.PORTABILITY; - } - if (isoCategory == IsoCategory.Usability) { - return Iso9126RulesCategories.USABILITY; - } - return null; - } - - - public List<Rule> parseReferential(String fileContent) { - return Collections.emptyList(); - } - - public List<RulesProfile> getProvidedProfiles() { - return Collections.emptyList(); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/DefaultCheckTemplate.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/DefaultCheckTemplate.java deleted file mode 100644 index 76f6fb6ca4e..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/DefaultCheckTemplate.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.apache.commons.lang.builder.ToStringBuilder; - -import java.util.Locale; - -/** - * EXPERIMENTAL - will be used in version 2.2 - * - * Non-internationalized check - * - * @since 2.1 - */ -public class DefaultCheckTemplate extends CheckTemplate { - - private String title; - private String description; - - public DefaultCheckTemplate() { - } - - public DefaultCheckTemplate(String key) { - super(key); - } - - public void setTitle(String title) { - this.title = title; - } - - public void setDescription(String description) { - this.description = description; - } - - @Override - public String getTitle(Locale locale) { - if (title == null || "".equals(title)) { - return getKey(); - } - return title; - } - - @Override - public String getDescription(Locale locale) { - return description; - } - - @Override - public String getMessage(Locale locale, String key, Object... params) { - return null; - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .append("key", key) - .append("title", title) - .append("configKey", configKey) - .append("priority", priority) - .append("isoCategory", isoCategory) - .toString(); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/DefaultCheckTemplateProperty.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/DefaultCheckTemplateProperty.java deleted file mode 100644 index 142942b8ced..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/DefaultCheckTemplateProperty.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.sonar.api.checks.templates.CheckTemplateProperty; - -import java.util.Locale; - -/** - * @since 2.1 - */ -public class DefaultCheckTemplateProperty extends CheckTemplateProperty { - - private String title; - private String description; - - public String getTitle() { - if (title == null || "".equals(title)) { - return getKey(); - } - return title; - } - - @Override - public String getTitle(Locale locale) { - return getTitle(); - } - - public void setTitle(String s) { - this.title = s; - } - - public String getDescription() { - return description; - } - - public void setDescription(String s) { - this.description = s; - } - - @Override - public String getDescription(Locale locale) { - return getDescription(); - } -} diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/XmlCheckTemplateFactory.java b/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/XmlCheckTemplateFactory.java deleted file mode 100644 index 0b51222c53d..00000000000 --- a/sonar-plugin-api/src/main/java/org/sonar/api/checks/templates/XmlCheckTemplateFactory.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.CharEncoding; -import org.sonar.api.rules.Rule; -import org.sonar.api.rules.RuleParam; -import org.sonar.api.rules.StandardRulesXmlParser; -import org.sonar.api.utils.SonarException; - -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.util.ArrayList; -import java.util.List; - -/** - * EXPERIMENTAL - will be used in version 2.2 - * @since 2.1 - */ -public class XmlCheckTemplateFactory { - - public List<CheckTemplate> parseXml(String xml) { - InputStream input = null; - try { - input = IOUtils.toInputStream(xml, CharEncoding.UTF_8); - return parse(input); - - } catch (IOException e) { - throw new SonarException("Can't parse xml file", e); - - } finally { - IOUtils.closeQuietly(input); - } - } - - public List<CheckTemplate> parse(Reader reader) { - StandardRulesXmlParser parser = new StandardRulesXmlParser(); - List<Rule> rules = parser.parse(reader); - return toCheckTemplates(rules); - - } - - public List<CheckTemplate> parse(InputStream input) { - StandardRulesXmlParser parser = new StandardRulesXmlParser(); - List<Rule> rules = parser.parse(input); - return toCheckTemplates(rules); - - } - - private List<CheckTemplate> toCheckTemplates(List<Rule> rules) { - List<CheckTemplate> templates = new ArrayList<CheckTemplate>(); - if (rules != null) { - for (Rule rule : rules) { - DefaultCheckTemplate template = new DefaultCheckTemplate(rule.getKey()); - templates.add(template); - - template.setConfigKey(rule.getConfigKey()); - template.setDescription(rule.getDescription()); - template.setIsoCategory(rule.getRulesCategory().toIsoCategory()); - template.setPriority(rule.getPriority().toCheckPriority()); - template.setTitle(rule.getName()); - - if (rule.getParams() != null) { - for (RuleParam param : rule.getParams()) { - template.addProperty(toProperty(param)); - } - } - } - } - return templates; - } - - private CheckTemplateProperty toProperty(RuleParam param) { - DefaultCheckTemplateProperty property = new DefaultCheckTemplateProperty(); - property.setKey(param.getKey()); - property.setTitle(param.getKey()); - property.setDescription(param.getDescription()); - return property; - } - -}
\ No newline at end of file diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/checkers/AnnotationCheckerFactoryTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/checkers/AnnotationCheckerFactoryTest.java deleted file mode 100644 index ce18ab97951..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/checkers/AnnotationCheckerFactoryTest.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.checkers; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.sonar.api.checks.profiles.CheckProfile; -import org.sonar.check.Check; -import org.sonar.check.CheckProperty; -import org.sonar.check.IsoCategory; -import org.sonar.check.Priority; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class AnnotationCheckerFactoryTest { - - private AnnotationCheckerFactory factory = null; - - @Before - public void before() { - CheckProfile profile = new CheckProfile("test", "java"); - factory = new AnnotationCheckerFactory(profile, "repository", Arrays.asList( - CheckerWithoutProperties.class, - CheckerWithStringProperty.class, - CheckerWithPrimitiveProperties.class)); - - } - - @Test - public void createCheckerWithoutProperties() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckerWithoutProperties.class); - CheckerWithoutProperties checker = (CheckerWithoutProperties) factory.instantiate(check, CheckerWithoutProperties.class); - assertNotNull(checker); - } - - @Test - public void createCheckerWithStringProperty() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckerWithStringProperty.class); - - Map map = new HashMap(); - map.put("max", "foo"); - when(check.getProperties()).thenReturn(map); - - CheckerWithStringProperty checker = (CheckerWithStringProperty) factory.instantiate(check, CheckerWithStringProperty.class); - assertNotNull(checker); - assertThat(checker.getMax(), is("foo")); - } - - @Test(expected = UnvalidCheckerException.class) - public void failIfMissingProperty() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckerWithStringProperty.class); - - Map map = new HashMap(); - map.put("max", "foo"); - map.put("missing", "bar"); - when(check.getProperties()).thenReturn(map); - - factory.instantiate(check, CheckerWithStringProperty.class); - } - - @Test - public void createCheckerWithPrimitiveProperties() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckerWithPrimitiveProperties.class); - - Map map = new HashMap(); - map.put("max", "300"); - map.put("active", "true"); - when(check.getProperties()).thenReturn(map); - - CheckerWithPrimitiveProperties checker = (CheckerWithPrimitiveProperties) factory.instantiate(check, CheckerWithPrimitiveProperties.class); - assertNotNull(checker); - assertThat(checker.getMax(), is(300)); - assertThat(checker.isActive(), is(true)); - } - - @Test - public void createCheckerWithIntegerProperty() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckerWithIntegerProperty.class); - - Map map = new HashMap(); - map.put("max", "300"); - when(check.getProperties()).thenReturn(map); - - CheckerWithIntegerProperty checker = (CheckerWithIntegerProperty) factory.instantiate(check, CheckerWithIntegerProperty.class); - assertNotNull(checker); - assertThat(checker.getMax(), is(300)); - } - - @Test - public void createCheckerWithDefaultValues() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckerWithPrimitiveProperties.class); - when(check.getProperties()).thenReturn(new HashMap<String, String>()); - - CheckerWithPrimitiveProperties checker = (CheckerWithPrimitiveProperties) factory.instantiate(check, CheckerWithPrimitiveProperties.class); - assertNotNull(checker); - assertThat(checker.getMax(), is(50)); - assertThat(checker.isActive(), is(false)); - } - - @Test(expected=UnvalidCheckerException.class) - public void checkWithUnsupportedPropertyType() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckWithUnsupportedPropertyType.class); - Map map = new HashMap(); - map.put("max", "300"); - when(check.getProperties()).thenReturn(map); - - factory.instantiate(check, CheckWithUnsupportedPropertyType.class); - } - - @Test - @Ignore("Key is not used as i18n is not managed on properties.") - public void createCheckerWithOverridenPropertyKey() { - org.sonar.api.checks.profiles.Check check = mockCheck(CheckWithOverridenPropertyKey.class); - Map map = new HashMap(); - map.put("maximum", "300"); - when(check.getProperties()).thenReturn(map); - - CheckWithOverridenPropertyKey checker = (CheckWithOverridenPropertyKey) factory.instantiate(check, CheckWithOverridenPropertyKey.class); - assertNotNull(checker); - assertThat(checker.getMax(), is(300)); - } - - - private org.sonar.api.checks.profiles.Check mockCheck(Class checkerClass) { - org.sonar.api.checks.profiles.Check check = mock(org.sonar.api.checks.profiles.Check.class); - when(check.getRepositoryKey()).thenReturn("repository"); - when(check.getTemplateKey()).thenReturn(checkerClass.getCanonicalName()); - return check; - } -} - -@Check(isoCategory = IsoCategory.Efficiency, priority = Priority.CRITICAL) -class CheckerWithoutProperties { - -} - -@Check(isoCategory = IsoCategory.Efficiency, priority = Priority.CRITICAL) -class CheckerWithStringProperty { - - @CheckProperty(key = "maiximum") - private String max; - - public String getMax() { - return max; - } -} - -@Check(isoCategory = IsoCategory.Efficiency, priority = Priority.CRITICAL) -class CheckerWithPrimitiveProperties { - - @CheckProperty(description = "Maximum threshold") - private int max = 50; - - @CheckProperty - private boolean active; - - public int getMax() { - return max; - } - - public boolean isActive() { - return active; - } -} - -@Check(isoCategory = IsoCategory.Efficiency, priority = Priority.CRITICAL) -class CheckerWithIntegerProperty { - - @CheckProperty - private Integer max; - - public Integer getMax() { - return max; - } -} - -@Check(isoCategory = IsoCategory.Efficiency, priority = Priority.CRITICAL) -class CheckWithUnsupportedPropertyType { - - @CheckProperty - private StringBuilder max = null; - -} - -@Check(isoCategory = IsoCategory.Efficiency, priority = Priority.CRITICAL) -class CheckWithOverridenPropertyKey{ - - @CheckProperty(key = "maximum") - private int max = 50; - - public int getMax() { - return max; - } -}
\ No newline at end of file diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/AnnotationCheckProfileFactoryTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/AnnotationCheckProfileFactoryTest.java deleted file mode 100644 index cd752d669b4..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/AnnotationCheckProfileFactoryTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; -import org.junit.Test; -import org.sonar.check.BelongsToProfile; -import org.sonar.check.BelongsToProfiles; -import org.sonar.check.IsoCategory; -import org.sonar.check.Priority; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; -import static org.junit.internal.matchers.IsCollectionContaining.hasItem; - -public class AnnotationCheckProfileFactoryTest { - - @Test - public void noChecks() { - assertThat(AnnotationCheckProfileFactory.create("plugin_foo", "java", null).size(), is(0)); - assertThat(AnnotationCheckProfileFactory.create("plugin_foo", "java", Collections.<Class>emptyList()).size(), is(0)); - } - - @Test - public void create() { - Collection<CheckProfile> profiles = AnnotationCheckProfileFactory.create("plugin_foo", "java", Arrays.<Class>asList(FakeCheckOne.class)); - assertThat(profiles.size(), is(1)); - - CheckProfile profile = profiles.iterator().next(); - assertThat(profile.getName(), is("profile one")); - assertThat(profile.getChecks().size(), is(1)); - assertThat(profile.getChecks().get(0).getPriority(), is(Priority.MINOR)); - } - - @Test - public void provideManyProfiles() { - Collection<CheckProfile> profiles = AnnotationCheckProfileFactory.create("plugin_foo", "java", Arrays.<Class>asList(FakeCheckOne.class, FakeCheckTwo.class)); - assertThat(profiles.size(), is(2)); - - assertThat(profiles, hasItem(new CheckProfileMatcher("profile one", 2))); - assertThat(profiles, hasItem(new CheckProfileMatcher("profile two", 1))); - } -} - -@org.sonar.check.Check(priority = Priority.BLOCKER, isoCategory = IsoCategory.Maintainability) -@BelongsToProfile(title = "profile one", priority = Priority.MINOR) -class FakeCheckOne { - -} - -@org.sonar.check.Check(priority = Priority.BLOCKER, isoCategory = IsoCategory.Maintainability) -@BelongsToProfiles({ - @BelongsToProfile(title = "profile two", priority = Priority.INFO), - @BelongsToProfile(title = "profile one", priority = Priority.MINOR) -}) -class FakeCheckTwo { - -} - -class CheckProfileMatcher extends BaseMatcher<CheckProfile> { - private String name; - private int numberOfChecks; - - CheckProfileMatcher(String name, int numberOfChecks) { - this.name = name; - this.numberOfChecks = numberOfChecks; - } - - public boolean matches(Object o) { - CheckProfile profile = (CheckProfile) o; - return profile.getName().equals(name) && profile.getChecks().size() == numberOfChecks; - } - - public void describeTo(Description description) { - } -}
\ No newline at end of file diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckProfileTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckProfileTest.java deleted file mode 100644 index 20d7ffc6910..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckProfileTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.junit.Test; - -import static junit.framework.Assert.*; -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; - -public class CheckProfileTest { - - @Test - public void testCheck() { - CheckProfile profile = new CheckProfile("fake", "java"); - assertThat(profile.getName(), is("fake")); - assertThat(profile.getLanguage(), is("java")); - assertThat(profile.getChecks().size(), is(0)); - } - - @Test - public void equalsByNameAndLanguage() { - CheckProfile profile1 = new CheckProfile("fake1", "java"); - CheckProfile profile1Clone = new CheckProfile("fake1", "java"); - CheckProfile profile2 = new CheckProfile("fake1", "php"); - - assertTrue(profile1.equals(profile1)); - assertTrue(profile1.equals(profile1Clone)); - assertFalse(profile1.equals(profile2)); - - assertEquals(profile1.hashCode(), profile1Clone.hashCode()); - } - - @Test - public void addChecks() { - CheckProfile profile = new CheckProfile("fake", "java"); - profile.addCheck(new Check("repo", "template")); - - assertThat(profile.getChecks().size(), is(1)); - assertThat(profile.getChecks("repo").size(), is(1)); - assertThat(profile.getChecks("other repo").size(), is(0)); - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest.java deleted file mode 100644 index bf6c488d237..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.apache.commons.io.IOUtils; -import org.custommonkey.xmlunit.Diff; -import org.custommonkey.xmlunit.XMLUnit; -import org.junit.Before; -import org.junit.Test; -import org.sonar.check.Priority; -import org.xml.sax.SAXException; - -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.io.StringWriter; - -import static junit.framework.Assert.assertTrue; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -public class CheckProfileXmlMarshallerTest { - - private String expectedXml; - - @Before - public void loadExpectedXml() throws IOException { - InputStream input = getClass().getResourceAsStream("/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest/profile.xml"); - try { - expectedXml = IOUtils.toString(input); - } finally { - IOUtils.closeQuietly(input); - } - } - - - @Test - public void toXml() throws IOException, SAXException { - CheckProfile profile = new CheckProfile("one", "java"); - Check check1 = new Check("checkstyle", "C1"); - check1.setPriority(Priority.MINOR); - check1.addProperty("min", "1"); - check1.addProperty("max", "3"); - profile.addCheck(check1); - - StringWriter writer = new StringWriter(); - CheckProfileXmlMarshaller.toXml(profile, writer); - - XMLUnit.setIgnoreWhitespace(true); - Diff diff = XMLUnit.compareXML(expectedXml, writer.toString()); - assertTrue(diff.similar()); - } - - - @Test - public void fromXml() throws IOException, SAXException { - CheckProfile profile = CheckProfileXmlMarshaller.fromXml(new StringReader(expectedXml)); - assertThat(profile.getName(), is("one")); - assertThat(profile.getLanguage(), is("java")); - assertThat(profile.getChecks("checkstyle").size(), is(1)); - assertThat(profile.getChecks("unknown").size(), is(0)); - - Check check = profile.getChecks("checkstyle").get(0); - assertThat(check.getRepositoryKey(), is("checkstyle")); - assertThat(check.getTemplateKey(), is("C1")); - assertThat(check.getPriority(), is(Priority.MINOR)); - - assertThat(check.getProperties().size(), is(2)); - assertThat(check.getProperty("min"), is("1")); - assertThat(check.getProperty("max"), is("3")); - } - - @Test - public void fromXmlInClasspath() { - CheckProfile profile = CheckProfileXmlMarshaller.fromXmlInClasspath("/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest/profile.xml"); - assertThat(profile.getName(), is("one")); - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckTest.java deleted file mode 100644 index 3d59ff3cb52..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/profiles/CheckTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.profiles; - -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; -import static org.junit.Assert.assertThat; -import static org.hamcrest.core.Is.is; - -public class CheckTest { - - @Test - public void testParameters() { - Check check = new Check("fake_plugin", "fake_key"); - assertThat(check.getProperties().size(), is(0)); - - check.addProperty("foo", "bar"); - assertThat(check.getProperties().size(), is(1)); - assertThat(check.getProperties().get("foo"), is("bar")); - - Map<String, String> newParams = new HashMap<String, String>(); - newParams.put("foo", "new foo"); - newParams.put("hello", "world"); - - check.setProperties(newParams); - assertThat(check.getProperties().size(), is(2)); - assertThat(check.getProperties().get("foo"), is("new foo")); - assertThat(check.getProperties().get("hello"), is("world")); - } - - @Test - public void equalsByReference() { - Check check1 = new Check("fake_plugin", "fake_key"); - Check check2 = new Check("fake_plugin", "fake_key"); - - assertTrue(check1.equals(check1)); - assertFalse(check1.equals(check2)); - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/AnnotatedCheckWithBundles.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/AnnotatedCheckWithBundles.java deleted file mode 100644 index 5618932fda5..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/AnnotatedCheckWithBundles.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.samples; - -import org.sonar.check.Check; -import org.sonar.check.CheckProperty; -import org.sonar.check.IsoCategory; - -@Check(isoCategory = IsoCategory.Efficiency) -public final class AnnotatedCheckWithBundles { - @CheckProperty - private String max; - - @CheckProperty - protected String min; - - private int nonConfigurableProperty; - - public String getMax() { - return max; - } - - public void setMax(String max) { - this.max = max; - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/DetailedAnnotatedCheck.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/DetailedAnnotatedCheck.java deleted file mode 100644 index 7e461ea1248..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/DetailedAnnotatedCheck.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.samples; - -import org.sonar.check.Check; -import org.sonar.check.CheckProperty; -import org.sonar.check.IsoCategory; - -@Check(title ="Detailed Check", description = "Detailed description", isoCategory = IsoCategory.Reliability) -public class DetailedAnnotatedCheck { - - @CheckProperty(description ="Maximum value") - private String max; - - @CheckProperty(description ="Minimum value") - protected String min; - - private int nonConfigurableProperty; - - public String getMax() { - return max; - } - - public void setMax(String max) { - this.max = max; - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/I18nCheckWithAlternativeBundle.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/I18nCheckWithAlternativeBundle.java deleted file mode 100644 index 50dc9a78df2..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/I18nCheckWithAlternativeBundle.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.samples; - -import org.sonar.check.Check; -import org.sonar.check.IsoCategory; - -@Check( - key = "new_key", - bundle = "org.sonar.api.checks.samples.alternative.path.AlternativeBundle", - isoCategory = IsoCategory.Efficiency) -public class I18nCheckWithAlternativeBundle { -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/I18nCheckWithoutDefaultLocale.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/I18nCheckWithoutDefaultLocale.java deleted file mode 100644 index 7828d928cb1..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/I18nCheckWithoutDefaultLocale.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.samples; - -import org.sonar.check.Check; -import org.sonar.check.IsoCategory; - -@Check(title = "Title from annotation", isoCategory = IsoCategory.Efficiency) -public class I18nCheckWithoutDefaultLocale { -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/SimpleAnnotatedCheck.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/SimpleAnnotatedCheck.java deleted file mode 100644 index 67e99868bbb..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/samples/SimpleAnnotatedCheck.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.samples; - -import org.sonar.check.Check; -import org.sonar.check.CheckProperty; -import org.sonar.check.IsoCategory; - -@Check(isoCategory = IsoCategory.Efficiency) -public class SimpleAnnotatedCheck { - - @CheckProperty - private String max; - - @CheckProperty - protected String min; - - private int nonConfigurableProperty; - - public String getMax() { - return max; - } - - public void setMax(String max) { - this.max = max; - } -} - diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/AnnotationCheckTemplateFactoryTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/AnnotationCheckTemplateFactoryTest.java deleted file mode 100644 index 5f8f5de48d6..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/AnnotationCheckTemplateFactoryTest.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.sonar.api.checks.samples.*; -import org.sonar.check.IsoCategory; - -import java.util.Iterator; -import java.util.Locale; - -import static junit.framework.Assert.assertNotNull; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.*; - -public class AnnotationCheckTemplateFactoryTest { - - private static final Locale DEFAULT_LOCALE = Locale.ENGLISH; - private static final Locale ALTERNATIVE_LOCALE = Locale.FRENCH; - private static final Locale UNKNOWN_LOCALE = Locale.CHINESE; - - private static final Locale JVM_LOCALE = Locale.getDefault(); - - @BeforeClass - public static void beforeAll() { - Locale.setDefault(Locale.ENGLISH); - } - - @AfterClass - public static void afterAll() { - Locale.setDefault(JVM_LOCALE); - } - - @Test - public void checkWithDefaultValues() { - BundleCheckTemplate check = new AnnotationCheckTemplateFactory(null).create(SimpleAnnotatedCheck.class); - assertNotNull(check); - - assertThat(check.getKey(), is("org.sonar.api.checks.samples.SimpleAnnotatedCheck")); - - assertThat(check.getTitle(DEFAULT_LOCALE), is("org.sonar.api.checks.samples.SimpleAnnotatedCheck")); - assertThat(check.getTitle(ALTERNATIVE_LOCALE), is("org.sonar.api.checks.samples.SimpleAnnotatedCheck")); - assertThat(check.getTitle(UNKNOWN_LOCALE), is("org.sonar.api.checks.samples.SimpleAnnotatedCheck")); - - assertThat(check.getDescription(DEFAULT_LOCALE), is("")); - assertThat(check.getDescription(ALTERNATIVE_LOCALE), is("")); - assertThat(check.getDescription(UNKNOWN_LOCALE), is("")); - - assertEquals(IsoCategory.Efficiency, check.getIsoCategory()); - - assertThat(check.getProperties().size(), is(2)); - Iterator<CheckTemplateProperty> it = check.getProperties().iterator(); - - CheckTemplateProperty maxTemplateProperty = it.next(); - assertThat(maxTemplateProperty.getKey(), is("max")); - - assertThat(maxTemplateProperty.getDescription(DEFAULT_LOCALE), is("")); - assertThat(maxTemplateProperty.getDescription(ALTERNATIVE_LOCALE), is("")); - assertThat(maxTemplateProperty.getDescription(UNKNOWN_LOCALE), is("")); - - CheckTemplateProperty minTemplateProperty = it.next(); - assertThat(minTemplateProperty.getKey(), is("min")); - } - - @Test - public void failOnNonCheckClass() { - assertNull(new AnnotationCheckTemplateFactory(null).create(String.class)); - } - - @Test - public void checkWithDetailedMessages() { - BundleCheckTemplate check = new AnnotationCheckTemplateFactory(null).create(DetailedAnnotatedCheck.class); - assertNotNull(check); - - assertThat(check.getKey(), is("org.sonar.api.checks.samples.DetailedAnnotatedCheck")); - - assertThat(check.getTitle(DEFAULT_LOCALE), is("Detailed Check")); - assertThat(check.getTitle(ALTERNATIVE_LOCALE), is("Detailed Check")); - assertThat(check.getTitle(UNKNOWN_LOCALE), is("Detailed Check")); - - assertThat(check.getDescription(DEFAULT_LOCALE), is("Detailed description")); - assertThat(check.getDescription(ALTERNATIVE_LOCALE), is("Detailed description")); - assertThat(check.getDescription(UNKNOWN_LOCALE), is("Detailed description")); - - assertThat(check.getIsoCategory(), is(IsoCategory.Reliability)); - - assertThat(check.getProperties().size(), is(2)); - Iterator<CheckTemplateProperty> it = check.getProperties().iterator(); - - CheckTemplateProperty maxTemplateProperty = it.next(); - assertThat(maxTemplateProperty.getKey(), is("max")); - - assertThat(maxTemplateProperty.getDescription(DEFAULT_LOCALE), is("Maximum value")); - assertThat(maxTemplateProperty.getDescription(ALTERNATIVE_LOCALE), is("Maximum value")); - assertThat(maxTemplateProperty.getDescription(UNKNOWN_LOCALE), is("Maximum value")); - } - - @Test - public void checkWithInternationalizedMessages() { - BundleCheckTemplate check = new AnnotationCheckTemplateFactory(null).create(AnnotatedCheckWithBundles.class); - assertNotNull(check); - - assertThat(check.getKey(), is("org.sonar.api.checks.samples.AnnotatedCheckWithBundles")); - assertThat(check.getTitle(DEFAULT_LOCALE), is("I18n Check")); - assertThat(check.getTitle(ALTERNATIVE_LOCALE), is("Règle d'internationalisation")); - assertThat(check.getTitle(UNKNOWN_LOCALE), is("I18n Check")); - - assertThat(check.getDescription(DEFAULT_LOCALE), is("Description in english")); - assertThat(check.getDescription(ALTERNATIVE_LOCALE), is("Description en Français")); - assertThat(check.getDescription(UNKNOWN_LOCALE), is("Description in english")); - - assertThat(check.getProperties().size(), is(2)); - Iterator<CheckTemplateProperty> it = check.getProperties().iterator(); - - CheckTemplateProperty maxTemplateProperty = it.next(); - assertThat(maxTemplateProperty.getKey(), is("max")); - - assertThat(maxTemplateProperty.getDescription(DEFAULT_LOCALE), is("Description in english of the maximum value")); - assertThat(maxTemplateProperty.getDescription(ALTERNATIVE_LOCALE), is("Description en Français de la valeur maximale")); - assertThat(maxTemplateProperty.getDescription(UNKNOWN_LOCALE), is("Description in english of the maximum value")); - } - - @Test - public void loadBundlesFromAlternativePath() { - BundleCheckTemplate check = new AnnotationCheckTemplateFactory(null).create(I18nCheckWithAlternativeBundle.class); - assertNotNull(check); - - assertThat(check.getKey(), is("new_key")); - assertThat(check.getTitle(DEFAULT_LOCALE), is("Alternative Path to Bundle")); - } - - @Test - public void loadFromAnnotationIfNoDefaultLocale() { - BundleCheckTemplate check = new AnnotationCheckTemplateFactory(null).create(I18nCheckWithoutDefaultLocale.class); - assertNotNull(check); - - assertThat(check.getTitle(DEFAULT_LOCALE), is("Title from annotation")); - assertThat(check.getTitle(ALTERNATIVE_LOCALE), is("Titre depuis le bundle")); - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/BundleCheckTemplateTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/BundleCheckTemplateTest.java deleted file mode 100644 index 905ba0399b8..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/BundleCheckTemplateTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.sonar.api.checks.samples.AnnotatedCheckWithBundles; -import org.sonar.api.checks.samples.SimpleAnnotatedCheck; - -import java.util.Locale; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; - -public class BundleCheckTemplateTest { - - private static final Locale DEFAULT_LOCALE = Locale.getDefault(); - - @BeforeClass - public static void beforeAll() { - Locale.setDefault(Locale.ENGLISH); - } - - @AfterClass - public static void afterAll() { - Locale.setDefault(DEFAULT_LOCALE); - } - - @Test - public void loadBundlesFromClass() { - BundleCheckTemplate check = new BundleCheckTemplate("key", AnnotatedCheckWithBundles.class); - - assertNotNull(check.getBundle(Locale.ENGLISH)); - assertNotNull(check.getBundle(Locale.FRENCH)); - assertNotNull(check.getBundle(Locale.CHINESE)); // use the english bundle - - assertThat(check.getBundle(Locale.ENGLISH).getString("title"), is("I18n Check")); - assertThat(check.getBundle(Locale.CHINESE).getString("title"), is("I18n Check")); - assertThat(check.getBundle(Locale.FRENCH).getString("title"), is("Règle d'internationalisation")); - } - - @Test - public void useDefaultValuesWhenNoBundles() { - BundleCheckTemplate check = new BundleCheckTemplate("key", SimpleAnnotatedCheck.class); - check.setDefaultTitle("default title"); - check.setDefaultDescription("default desc"); - - assertThat(check.getTitle(null), is("default title")); - assertThat(check.getTitle(Locale.ENGLISH), is("default title")); - assertThat(check.getTitle(Locale.CHINESE), is("default title")); - - assertThat(check.getDescription(Locale.ENGLISH), is("default desc")); - assertThat(check.getDescription(Locale.CHINESE), is("default desc")); - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/CheckTemplateRepositoriesTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/CheckTemplateRepositoriesTest.java deleted file mode 100644 index 691a2084eaf..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/CheckTemplateRepositoriesTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.junit.Test; -import org.sonar.api.checks.templates.CheckTemplateRepositories; -import org.sonar.api.checks.templates.CheckTemplateRepository; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNull; -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class CheckTemplateRepositoriesTest { - - @Test - public void noRepositories() { - CheckTemplateRepositories templateRepositories = new CheckTemplateRepositories(); - assertNull(templateRepositories.getRepository("foo")); - assertThat(templateRepositories.getRepositories().size(), is(0)); - } - - @Test - public void getRepositoryByKey() { - CheckTemplateRepository repo1 = mock(CheckTemplateRepository.class); - when(repo1.getKey()).thenReturn("one"); - - CheckTemplateRepository repo2 = mock(CheckTemplateRepository.class); - when(repo2.getKey()).thenReturn("two"); - - CheckTemplateRepositories templateRepositories = new CheckTemplateRepositories(new CheckTemplateRepository[]{repo1, repo2}); - - assertThat(templateRepositories.getRepositories().size(), is(2)); - assertEquals(repo1, templateRepositories.getRepository("one")); - assertEquals(repo2, templateRepositories.getRepository("two")); - assertNull(templateRepositories.getRepository("foo")); - } -} diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/DefaultCheckTemplateTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/DefaultCheckTemplateTest.java deleted file mode 100644 index e83896a6197..00000000000 --- a/sonar-plugin-api/src/test/java/org/sonar/api/checks/templates/DefaultCheckTemplateTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2009 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.api.checks.templates; - -import org.junit.Test; - -import java.util.Locale; - -import static org.junit.Assert.assertEquals; - -public class DefaultCheckTemplateTest { - - @Test - public void isNotInternationalized() { - DefaultCheckTemplate check = new DefaultCheckTemplate("key1"); - check.setTitle("title"); - check.setDescription("desc"); - - assertEquals("title", check.getTitle(Locale.ENGLISH)); - assertEquals(check.getTitle(Locale.ENGLISH), check.getTitle(Locale.FRENCH)); - - assertEquals("desc", check.getDescription(Locale.ENGLISH)); - assertEquals(check.getDescription(Locale.ENGLISH), check.getDescription(Locale.FRENCH)); - } -} diff --git a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest/profile.xml b/sonar-plugin-api/src/test/resources/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest/profile.xml deleted file mode 100644 index bcbba0f82ba..00000000000 --- a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/profiles/CheckProfileXmlMarshallerTest/profile.xml +++ /dev/null @@ -1,17 +0,0 @@ -<profile> - <name>one</name> - <language>java</language> - <check> - <repository>checkstyle</repository> - <template>C1</template> - <priority>MINOR</priority> - <property> - <key>min</key> - <value>1</value> - </property> - <property> - <key>max</key> - <value>3</value> - </property> - </check> -</profile>
\ No newline at end of file diff --git a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/AnnotatedCheckWithBundles.properties b/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/AnnotatedCheckWithBundles.properties deleted file mode 100644 index e1d764b21b4..00000000000 --- a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/AnnotatedCheckWithBundles.properties +++ /dev/null @@ -1,6 +0,0 @@ -title: I18n Check -description: Description in english -property.max.title: Maximum value -property.max.description: Description in english of the maximum value -property.min.title: Minimum value -property.min.description: Description in english of the minimum value
\ No newline at end of file diff --git a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/AnnotatedCheckWithBundles_fr.properties b/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/AnnotatedCheckWithBundles_fr.properties deleted file mode 100644 index 14e2f2dbbcf..00000000000 --- a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/AnnotatedCheckWithBundles_fr.properties +++ /dev/null @@ -1,6 +0,0 @@ -title: Règle d'internationalisation -description: Description en Français -property.max.title: Valeur maximale -property.max.description: Description en Français de la valeur maximale -property.min.title: Valeur minimale -property.min.description: Description en Français de la valeur minimale diff --git a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/I18nCheckWithoutDefaultLocale_fr.properties b/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/I18nCheckWithoutDefaultLocale_fr.properties deleted file mode 100644 index d020f8d393b..00000000000 --- a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/I18nCheckWithoutDefaultLocale_fr.properties +++ /dev/null @@ -1,2 +0,0 @@ -title: Titre depuis le bundle -description: Seul le francais est disponible dans les bundles
\ No newline at end of file diff --git a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/alternative/path/AlternativeBundle.properties b/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/alternative/path/AlternativeBundle.properties deleted file mode 100644 index ceae9d0375d..00000000000 --- a/sonar-plugin-api/src/test/resources/org/sonar/api/checks/samples/alternative/path/AlternativeBundle.properties +++ /dev/null @@ -1,2 +0,0 @@ -title : Alternative Path to Bundle -description : description of Alternative Path to Bundle
\ No newline at end of file |