1 19 20 package edu.umd.cs.findbugs; 21 22 40 public class FindBugsMessageFormat { 41 private String pattern; 42 43 48 public FindBugsMessageFormat(String pattern) { 49 this.pattern = pattern; 50 } 51 52 60 public String format(BugAnnotation[] args, ClassAnnotation primaryClass) { 61 String pat = pattern; 62 StringBuffer result = new StringBuffer (); 63 64 while (pat.length() > 0) { 65 int subst = pat.indexOf('{'); 66 if (subst < 0) { 67 result.append(pat); 68 break; 69 } 70 71 result.append(pat.substring(0, subst)); 72 pat = pat.substring(subst + 1); 73 74 int end = pat.indexOf('}'); 75 if (end < 0) 76 throw new IllegalStateException ("bad pattern " + pattern); 77 78 String substPat = pat.substring(0, end); 79 80 int dot = substPat.indexOf('.'); 81 String key = ""; 82 if (dot >= 0) { 83 key = substPat.substring(dot + 1); 84 substPat = substPat.substring(0, dot); 85 } 86 87 int fieldNum; 88 try { 89 fieldNum = Integer.parseInt(substPat); 90 } catch (NumberFormatException e) { 91 throw new IllegalArgumentException ("bad pattern " + pattern); 92 } 93 94 if (fieldNum < 0) { 96 result.append("?<?" + fieldNum + "/" + args.length + "???"); 97 } else if (fieldNum > args.length) { 98 result.append("?>?" + fieldNum + "/" + args.length + "???"); 99 } else { 100 BugAnnotation field = args[fieldNum]; 101 String formatted = ""; 102 try { formatted = field.format(key, primaryClass); 103 } catch (IllegalArgumentException iae) { 104 formatted = "\u00BF"+fieldNum+".(key="+key+")?"; System.err.println(iae.getMessage()+" in FindBugsMessageFormat"); } 108 result.append(formatted); 109 } 110 111 pat = pat.substring(end + 1); 112 } 113 114 return result.toString(); 115 } 116 } 117 118 | Popular Tags |