[ http://issues.apache.org/jira/browse/BEEHIVE-511?page=history ]

Kyle Marvin reassigned BEEHIVE-511:
-----------------------------------

    Assign To: Kyle Marvin

> Apt hangs when processing sources with errors
> ---------------------------------------------
>
>          Key: BEEHIVE-511
>          URL: http://issues.apache.org/jira/browse/BEEHIVE-511
>      Project: Beehive
>         Type: Bug
>   Components: Build
>     Versions: V1
>     Reporter: C Brett Bennett
>     Assignee: Kyle Marvin
>     Priority: Critical

>
>  Apt'hangs' under the following circumstance. 
> When processing a @Control field, if it is a control-bean reference, e.g.
>       @Control SomeBean _bean;
> field where SomeBean is generated from a Some.jcx file, but at the time the 
> _bean field is being processed the SomeBean class has not been generated or 
> more specifically in the javac class table, then the loop in the 
> ControlClientAnnotationProcessor:
> ------------------------------------------
>       ClassType classType = (ClassType)fieldType;
>       outer: while ( classType != null )
>       {
>               Collection<InterfaceType> intfs =classType.getSuperinterfaces();
>               for ( InterfaceType intfType : intfs )
>               {
>                       if ( 
> intfType.getDeclaration().getQualifiedName().equals( 
> "org.apache.beehive.controls.api.bean.ControlBean" ) )
>                      {
>                          foundControlBean = true;
>                          break outer;
>                      }
>               }
>                  classType = classType.getSuperclass();
>       }
> --------------------------------------------
> Will never end because the original fieldType (SomeBean) is an error-type 
> that returns an error-type when getSuperClass() is called.
> The following suffices to break the loop:
> --------------------------------------------
>              ClassType classType = (ClassType)fieldType;
>              outer: while ( classType != null )
>              {
>                  Collection<InterfaceType> intfs = 
> classType.getSuperinterfaces();
>                  for ( InterfaceType intfType : intfs )
>                  {
>                      if ( 
> intfType.getDeclaration().getQualifiedName().equals( 
> "org.apache.beehive.controls.api.bean.ControlBean" ) )
>                      {
>                          foundControlBean = true;
>                          break outer;
>                      }
>                  }
>                  ClassType superType = classType.getSuperclass();
>                  if(superType != null && superType.equals(classType))
>                  {
>                      break;
>                  }
>                  classType = superType;
>              }

-- 
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
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to