in graveyard/tools/org/apache/axis/tools/common/Signature.java [173:228]
private static boolean splitUp(
List tokens,
List attrs,
List nameAndRet,
List parms,
List trailAttrs,
List inits) {
// nameStart points to the start of the return type if there is one
// else the start of the method name
int nameStart;
for (nameStart = 0; nameStart < tokens.size(); nameStart++) {
String tok = (String) (tokens.get(nameStart));
if (!knownAttrs.contains(tok) && !Configuration.isAttribute(tok))
break;
}
if (nameStart == tokens.size())
return false;
// initStart points to the initialisers, or thrown exceptions after
// the parameter list. throw is a keyword so we can safely search for it.
int initStart = tokens.size();
for (int i = nameStart; i < tokens.size(); i++) {
String tok = (String) tokens.get(i);
if ((tok.startsWith(":") && !tok.startsWith("::"))
|| "throw".equals(tok))
initStart = i;
}
int parmEnd;
for (parmEnd = initStart - 1; parmEnd > nameStart; parmEnd--)
if (")".equals(tokens.get(parmEnd)))
break;
if (parmEnd == nameStart)
return false;
int parmStart = parmEnd;
for (parmStart = parmEnd; parmStart > nameStart; parmStart--)
if ("(".equals(tokens.get(parmStart)))
break;
for (int i = 0; i < tokens.size(); i++) {
Object tok = tokens.get(i);
if (i < nameStart || Configuration.isAttribute((String) tok))
attrs.add(tok);
else if (i < parmStart)
nameAndRet.add(tok);
else if (i <= parmEnd)
parms.add(tok);
else if (i < initStart)
trailAttrs.add(tok);
else
inits.add(tok);
}
return true;
}