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


Reply via email to