[ http://issues.apache.org/jira/browse/JAXME-89?page=comments#action_12455301 ] Jochen Wiedmann commented on JAXME-89: --------------------------------------
I haven't yet worked out why, but the AntLRTest fails after applying your patch: The class name must not be null or empty. java.lang.NullPointerException: The class name must not be null or empty. at org.apache.ws.jaxme.js.JavaQNameImpl.getInstance(JavaQNameImpl.java:231) at org.apache.ws.jaxme.js.util.JavaParser.getQName(JavaParser.java:334) at org.apache.ws.jaxme.js.util.JavaParser.parseImplementsOrExtends(JavaParser.java:348) at org.apache.ws.jaxme.js.util.JavaParser.parseClassDefinition(JavaParser.java:492) at org.apache.ws.jaxme.js.util.JavaParser.parseAST(JavaParser.java:509) at org.apache.ws.jaxme.js.util.JavaParser.parse(JavaParser.java:112) at org.apache.ws.jaxme.js.util.JavaParser.parse(JavaParser.java:82) at org.apache.ws.jaxme.js.util.JavaParser.parse(JavaParser.java:74) at org.apache.ws.jaxme.js.util.JavaParser.main(JavaParser.java:521) at org.apache.ws.jaxme.js.junit.AntlrTest.test(AntlrTest.java:40) at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32) at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423) at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137) Also, could you please consider handling the case "extends I1, I2, ..." as well, because that is valid for interfaces? > 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]