Description
If you want to parse a java source file which implements more than one interface, the parser recognizes them as a single interface. I.e.:
public class TestClass implements AnInterface {
works fine, but
public class TestClass implements AnInterface, ASecondInterface, AThirdInterface {
fails. If you call JavaSource.getImplements() on the second example, you'll get a String like "AnInterfaceASecondInterfaceAThirdInterface".
The problem is in the JavaParser.class in the method "parseImplementsOrExtends", where the implements clause is handled like the extends clause and expecting only one interface.
Replace the method with something like this to make it work:
private void parseImplementsOrExtends(JavaSource pSource, AST pAST, int pType) {
AST implementsAST = findChild(pAST, pType);
if (implementsAST == null)
if (implementsAST.getFirstChild() != null) {
if (pType == JavaRecognizer.IMPLEMENTS_CLAUSE) {
for (AST child = implementsAST.getFirstChild(); child != null; child = child.getNextSibling())
} else
{ String ident = parseIdentifier(implementsAST); JavaQName qName = getQName(ident); pSource.addExtends(qName); } }
}