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
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