You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by "Andreas Xenos (JIRA)" <ja...@ws.apache.org> on 2011/05/19 19:36:48 UTC

[jira] [Updated] (JAXME-89) Multiple "implements" clauses are not supported

     [ https://issues.apache.org/jira/browse/JAXME-89?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andreas Xenos updated JAXME-89:
-------------------------------

    Attachment: JavaParser.java

This is the JavaParser for multiple interfaces.

> Multiple "implements" clauses are not supported
> -----------------------------------------------
>
>                 Key: JAXME-89
>                 URL: https://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
>            Assignee: Jochen Wiedmann
>             Fix For: 0.6
>
>         Attachments: JavaParser.java
>
>
> 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org