private final static Pattern COMMENT_PATTERN = Pattern.compile("/\\*\\*([^/]*)\\*/",
Pattern.MULTILINE);
private static ActionDoc getCommentForMethod(String apiString, String method) {
ActionDoc doc = new ActionDoc(method, Collections.<String> emptyList());
String block = findCommentBlock(apiString, method);
if (block != null) {
doc.setDeprecated(block.contains("* @deprecated"));
int p = block.indexOf("@author:");
if (p != -1) {
doc.setAuthor(block.substring(p + 9, block.indexOf('\n', p)));
}
p = block.indexOf("@version:");
if (p != -1) {
doc.setVersion(block.substring(p + 10, block.indexOf('\n', p)));
}
p = block.indexOf(method);
if (p != -1) {
doc.setMethodComment(block.substring(p + method.length() + 2,
block.indexOf('\n', p)));
}
Map<String, String> params = new HashMap<String, String>();
p = block.indexOf("@param:");
while (p != -1) {
int p2 = block.indexOf('\n', p);
String pc = block.substring(p + 8, p2);
int c1 = pc.indexOf('[');
int c2 = pc.indexOf(']');
params.put(pc.substring(c1 + 1, c2), pc.substring(c2 + 2));
p = block.indexOf("@param:", p2);
}
doc.setParameters(params);
Map<String, String> returns = new HashMap<String, String>();
p = block.indexOf("@return");
if (p != -1) {
p = block.indexOf('[', p);
while (p != -1) {
int p2 = block.indexOf(']', p);
returns.put(block.substring(p + 1, p2),
block.substring(p2 + 2, block.indexOf('\n', p2)));
p = block.indexOf('[', p2);
}
}
doc.setReturnMethod(returns);
}
return doc;
}