1 23 package org.hammurapi.inspectors; 24 25 import java.util.Iterator ; 26 27 import com.pavelvlasov.config.ConfigurationException; 28 import com.pavelvlasov.config.Parameterizable; 29 import com.pavelvlasov.jsel.LanguageElement; 30 import com.pavelvlasov.jsel.expressions.DoubleConstant; 31 import com.pavelvlasov.jsel.expressions.FloatConstant; 32 import com.pavelvlasov.jsel.expressions.IntegerConstant; 33 import com.pavelvlasov.jsel.expressions.LongConstant; 34 35 41 public class HardcodedNumericLiteralsRule extends HardcodedLiteralsRule implements Parameterizable { 42 43 48 public void visit(DoubleConstant element) { 49 if (!isAllowed(element.getValue())) { 50 analyze((LanguageElement) element); 51 } 52 } 53 54 59 public void visit(FloatConstant element) { 60 if (!isAllowed(element.getValue())) { 61 analyze((LanguageElement) element); 62 } 63 } 64 65 70 public void visit(IntegerConstant element) { 71 if (!isAllowed(element.getValue())) { 72 analyze((LanguageElement) element); 73 } 74 } 75 76 81 public void visit(LongConstant element) { 82 if (!isAllowed(element.getValue())) { 83 analyze((LanguageElement) element); 84 } 85 } 86 87 91 private java.util.Set allowedLiterals = new java.util.HashSet (); 92 93 100 private boolean isAllowed(double value) { 101 return allowedLiterals.contains(new Double (value)); 102 } 103 104 105 113 public boolean setParameter(String name, Object parameter) throws ConfigurationException { 114 if ("allowed-literal".equals(name)) { 115 allowedLiterals.add(parameter); 116 return true; 117 } else { 118 throw new ConfigurationException("Parameter '" + name + 119 "' is not supported by "+getClass().getName()); 120 } 121 } 122 123 124 127 public String getConfigInfo() { 128 StringBuffer ret=new StringBuffer ("Allowed numeric literals:\n"); 129 Iterator it=allowedLiterals.iterator(); 130 while (it.hasNext()) { 131 ret.append("\t"); 132 ret.append(it.next()); 133 ret.append("\n"); 134 } 135 return ret.toString(); 136 } 137 } 138 | Popular Tags |