1 package net.sourceforge.pmd.properties;
2
3 import java.lang.reflect.Method;
4
5 import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule;
6 import net.sourceforge.pmd.lang.rule.properties.BooleanMultiProperty;
7 import net.sourceforge.pmd.lang.rule.properties.BooleanProperty;
8 import net.sourceforge.pmd.lang.rule.properties.CharacterMultiProperty;
9 import net.sourceforge.pmd.lang.rule.properties.CharacterProperty;
10 import net.sourceforge.pmd.lang.rule.properties.EnumeratedMultiProperty;
11 import net.sourceforge.pmd.lang.rule.properties.EnumeratedProperty;
12 import net.sourceforge.pmd.lang.rule.properties.FloatMultiProperty;
13 import net.sourceforge.pmd.lang.rule.properties.FloatProperty;
14 import net.sourceforge.pmd.lang.rule.properties.IntegerMultiProperty;
15 import net.sourceforge.pmd.lang.rule.properties.IntegerProperty;
16 import net.sourceforge.pmd.lang.rule.properties.LongMultiProperty;
17 import net.sourceforge.pmd.lang.rule.properties.LongProperty;
18 import net.sourceforge.pmd.lang.rule.properties.MethodMultiProperty;
19 import net.sourceforge.pmd.lang.rule.properties.MethodProperty;
20 import net.sourceforge.pmd.lang.rule.properties.StringMultiProperty;
21 import net.sourceforge.pmd.lang.rule.properties.StringProperty;
22 import net.sourceforge.pmd.lang.rule.properties.TypeMultiProperty;
23 import net.sourceforge.pmd.lang.rule.properties.TypeProperty;
24 import net.sourceforge.pmd.util.ClassUtil;
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public class NonRuleWithAllPropertyTypes extends AbstractJavaRule {
39
40 private static final Method stringLength = ClassUtil.methodFor(String.class, "length", ClassUtil.EMPTY_CLASS_ARRAY);
41 private static final Method stringToLowerCase = ClassUtil.methodFor(String.class, "toLowerCase", ClassUtil.EMPTY_CLASS_ARRAY);
42
43
44 public static final StringProperty singleStr = new StringProperty("singleStr", "String value", "hello world" , 3.0f);
45 public static final StringMultiProperty multiStr = new StringMultiProperty("multiStr", "Multiple string values", new String[] {"hello", "world"}, 5.0f, '|');
46
47 public static final IntegerProperty singleInt = new IntegerProperty("singleInt", "Single integer value", 1, 10, 8 , 3.0f);
48 public static final IntegerMultiProperty multiInt = new IntegerMultiProperty("multiInt", "Multiple integer values", 0, 10, new Integer[] {1, 2, 3, 4}, 5.0f);
49
50 public static final LongProperty singleLong = new LongProperty("singleLong", "Single long value", 1L, 10L, 8L , 3.0f);
51 public static final LongMultiProperty multiLong = new LongMultiProperty("multiLong", "Multiple long values", 0L, 10L, new Long[] {1L, 2L, 3L, 4L}, 5.0f);
52
53 public static final BooleanProperty singleBool = new BooleanProperty("singleBool", "Single boolean value", true, 6.0f);
54 public static final BooleanMultiProperty multiBool = new BooleanMultiProperty("multiBool", "Multiple boolean values", new Boolean[] { true, false}, 5.0f);
55
56 public static final CharacterProperty singleChar = new CharacterProperty("singleChar", "Single character", 'a', 5.0f);
57 public static final CharacterMultiProperty multiChar = new CharacterMultiProperty("multiChar", "Multiple characters", new Character[] {'a', 'e', 'i', 'o', 'u'}, 6.0f, '|');
58
59 public static final FloatProperty singleFloat = new FloatProperty("singleFloat", "Single float value", 9f, 10f, .9f, 5.0f);
60 public static final FloatMultiProperty multiFloat = new FloatMultiProperty("multiFloat", "Multiple float values", 0f, 5f, new Float[] {1f, 2f, 3f}, 6.0f);
61
62 public static final TypeProperty singleType = new TypeProperty("singleType", "Single type", String.class, new String[] { "java.lang" }, 5.0f);
63 public static final TypeMultiProperty multiType = new TypeMultiProperty("multiType", "Multiple types", new Class[] {Integer.class, Object.class}, new String[] { "java.lang" }, 6.0f);
64
65 public static final MethodProperty singleMethod = new MethodProperty("singleMethod", "Single method", stringLength, new String[] { "java.lang" }, 5.0f);
66 public static final MethodMultiProperty multiMethod = new MethodMultiProperty("multiMethod", "Multiple methods", new Method[] {stringLength, stringToLowerCase}, new String[] { "java.lang" }, 6.0f);
67
68 public static final EnumeratedProperty<Class> enumType = new EnumeratedProperty<Class>("enumType", "Enumerated choices", new String[] {"String", "Object"}, new Class[] {String.class, Object.class}, 1, 5.0f);
69 public static final EnumeratedMultiProperty<Class> multiEnumType = new EnumeratedMultiProperty<Class>("multiEnumType", "Multiple enumerated choices", new String[] {"String", "Object"}, new Class[] {String.class, Object.class}, new int[] {0,1}, 5.0f);
70
71
72 public NonRuleWithAllPropertyTypes() {
73 super();
74 definePropertyDescriptor(singleStr);
75 definePropertyDescriptor(multiStr);
76 definePropertyDescriptor(singleInt);
77 definePropertyDescriptor(multiInt);
78 definePropertyDescriptor(singleLong);
79 definePropertyDescriptor(multiLong);
80 definePropertyDescriptor(singleBool);
81 definePropertyDescriptor(multiBool);
82 definePropertyDescriptor(singleChar);
83 definePropertyDescriptor(multiChar);
84 definePropertyDescriptor(singleFloat);
85 definePropertyDescriptor(multiFloat);
86 definePropertyDescriptor(singleType);
87 definePropertyDescriptor(multiType);
88 definePropertyDescriptor(enumType);
89 definePropertyDescriptor(singleMethod);
90 definePropertyDescriptor(multiMethod);
91 definePropertyDescriptor(multiEnumType);
92 }
93 }