Author: kylem
Date: Fri Feb 25 08:08:11 2005
New Revision: 155338
URL: http://svn.apache.org/viewcvs?view=rev&rev=155338
Log:
Added bean construction-time check to ensure that bound implementation class is
marked with the @ControlImplementation annotation. Without this, there will
be other (less overt) downstream initialization failures. Resolves BEEHIVE-84.
Modified:
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java
Modified:
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java?view=diff&r1=155337&r2=155338
==============================================================================
---
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java
(original)
+++
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java
Fri Feb 25 08:08:11 2005
@@ -34,6 +34,7 @@
import org.apache.beehive.controls.api.versioning.Version;
import org.apache.beehive.controls.api.bean.Threading;
import org.apache.beehive.controls.api.bean.ThreadingPolicy;
+import org.apache.beehive.controls.api.bean.ControlImplementation;
import org.apache.beehive.controls.api.bean.ControlExtension;
import org.apache.beehive.controls.api.bean.ControlInterface;
import org.apache.beehive.controls.api.context.ControlThreadContext;
@@ -143,12 +144,22 @@
else
implBinding =
ControlBeanContext.getDefaultControlBinding(_controlIntf);
- // REVIEW: consider surfacing ClassNotFoundException in the generated
bean's ctors. Is that a violation
- // of JavaBean spec for the signature of bean ctors?
+ // REVIEW: consider surfacing ClassNotFoundException in the generated
bean's ctors.
+ // Is that a violation of JavaBean spec for the signature of bean
ctors?
try
{
_implClass = _controlIntf.getClassLoader().loadClass(implBinding);
+
+ //
+ // Validate that the specified implementation class has an
@ControlImplementation
+ // annotation, else downstream requirements (such as having a
valid control init
+ // class) will not be met.
+ //
+ if (_implClass.getAnnotation(ControlImplementation.class) == null)
+ {
+ throw new
ControlException("@org.apache.beehive.controls.api.bean.ControlImplementation
annotation is missing from control implementation class: " +
_implClass.getName());
+ }
}
catch (ClassNotFoundException cnfe)
{