You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@beehive.apache.org by "Julie Zhuo (JIRA)" <be...@incubator.apache.org> on 2005/06/02 06:47:55 UTC

[jira] Closed: (BEEHIVE-511) Apt hangs when processing sources with errors

     [ http://issues.apache.org/jira/browse/BEEHIVE-511?page=all ]
     
Julie Zhuo closed BEEHIVE-511:
------------------------------


Verified fixed with the m1rc2 distribution. It now compiles 
@control HelloControlBean _hello successfully when the control type is defined by HelloControl.jcx rather HelloControl.java.

> 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: Julie Zhuo
>     Priority: Critical
>      Fix For: V1

>
>  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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira