in impl/src/main/java/org/apache/tuscany/sdo/codegen/JavaInterfaceGenerator.java [38:107]
private static String canonicalize(String className) {
if (className == null) {
return "";
}
if (className.charAt(0) != '[') { // if not array
return className;
}
// process array
boolean invalidClassName = false;
int nestLevel = 1;
StringBuffer sb = new StringBuffer();
try {
while (className.charAt(nestLevel) == '[') {
nestLevel++;
}
char typeChar = className.charAt(nestLevel);
int end = nestLevel;
switch (typeChar) {
case 'L':
end = className.length() - 1;
if (className.charAt(end) != ';') {
invalidClassName = true;
} else {
sb.append(className.substring(nestLevel+1, end));
}
break;
case 'Z':
sb.append("boolean");
break;
case 'B':
sb.append("byte");
break;
case 'C':
sb.append("char");
break;
case 'D':
sb.append("double");
break;
case 'F':
sb.append("float");
break;
case 'I':
sb.append("int");
break;
case 'J':
sb.append("long");
break;
case 'S':
sb.append("short");
break;
default:
invalidClassName = true;
break;
}
if (end != (className.length() - 1)) {
invalidClassName = true; // we have not used all the characters
} else {
for (int i=0; i<nestLevel; i++) {
sb.append("[]");
}
}
} catch(Exception e) {
invalidClassName = true;
}
if (invalidClassName) {
System.err.println("unable to canonicalize class name: "+className);
return className;
}
return sb.toString();
}