[ http://issues.apache.org/jira/browse/JAXME-89?page=comments#action_12455309 ] Andreas Neumann commented on JAXME-89: --------------------------------------
Ok, the first one was kind of a quickshot, the problem is that I've used parseIdentifier and not parseSimpleIdentifier. And as parseIdentifier tries to iterate over the child nodes again, it fails. Here's a new try. This should handle also the extends clause for interfaces as well. private void parseImplementsOrExtends(JavaSource pSource, AST pAST, int pType) { AST implementsAST = findChild(pAST, pType); if (implementsAST == null) { throw new IllegalStateException("AST implements not found"); } if (implementsAST.getFirstChild() != null) { for (AST child = implementsAST.getFirstChild(); child != null; child = child.getNextSibling()) { String ident = parseSimpleIdentifier(child); JavaQName qName = getQName(ident); if (pType == JavaRecognizer.IMPLEMENTS_CLAUSE) { pSource.addImplements(qName); } else { pSource.addExtends(qName); } } } } > Multiple "implements" clauses are not supported > ----------------------------------------------- > > Key: JAXME-89 > URL: http://issues.apache.org/jira/browse/JAXME-89 > Project: JaxMe > Issue Type: Bug > Components: JaxMeJS > Affects Versions: 0.5 > Environment: Win XP, J2SE 1.5_09 > Reporter: Andreas Neumann > > 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) { > throw new IllegalStateException("AST implements not found"); > } > if (implementsAST.getFirstChild() != null) { > if (pType == JavaRecognizer.IMPLEMENTS_CLAUSE) { > for (AST child = implementsAST.getFirstChild(); child != > null; child = child.getNextSibling()) { > String ident = parseIdentifier(child); > JavaQName qName = getQName(ident); > pSource.addImplements(qName); > } > } else { > String ident = parseIdentifier(implementsAST); > JavaQName qName = getQName(ident); > pSource.addExtends(qName); > } > } > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]