Awesome. Psyched to see this stuff in the tree.



[EMAIL PROTECTED] wrote:
Author: kentam
Date: Mon Jan 10 16:16:04 2005
New Revision: 124852

URL: http://svn.apache.org/viewcvs?view=rev&rev=124852
Log:
Define a set of intrinsic "base" control properties that all controls have by 
default, and expose the binding of control implementation class as one of those 
properties.  For example, the following syntax is now supported:

@Control
@BaseProperties( controlImplementation="foo.myControlImplementation" )
YourControl yc;

External configuration of the control implementation now looks just like 
external configuration of any other property.

Added support for controlling the presence of programmatic setters for control 
properties via the @PropertySet( hasSetters ) attribute.  For example:

@PropertySet( hasSetters=false )
public interface myPropertySet
{
    //...
}

will suppress programmatic setter functions on the resulting control bean.

Added DRT tests for the above work.



Added:
   
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseProperties.java
   (contents, props changed)
Modified:
   
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java
   
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java
   
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java
   
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java
   
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf

Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java&r1=124851&p2=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java (original)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlBeanContext.java Mon Jan 10 16:16:04 2005
@@ -27,7 +27,6 @@
import org.apache.beehive.controls.api.bean.ControlBean;
import org.apache.beehive.controls.api.events.EventSet;
import org.apache.beehive.controls.api.properties.PropertyMap;
-import org.apache.beehive.controls.api.properties.PropertySet;
/**
* The ControlBeanContext interface defines the basic set of contextual services and lifecycle
@@ -64,12 +63,6 @@
public Class getControlInterface();
/**
- * Returns the binding from a control interface to a control implementation for the
- * current container context.
- */
- public Class getControlBinding(Class controlIntf);
-
- /**
* Returns the current value of PropertySet for the associated control, or
* null if the property set has not been bound. Actual bindings for property
* values may be the result of annotations on the control field or class,
@@ -159,7 +152,7 @@
*
* @return a ControlHandle instance for the control, or null.
*
- * @see org.apache.beehive.control.api.context.ControlHandle
+ * @see org.apache.beehive.controls.api.context.ControlHandle
*/
public ControlHandle getControlHandle();
@@ -178,6 +171,11 @@
public java.lang.ClassLoader getClassLoader();
/**
+ * Returns true if this container guarantees single-threaded behaviour.
+ */
+ public boolean isSingleThreadedContainer();
+
+ /**
* Returns any child ControlBean that is nested in the ControlBeanContext, or null
* if no matching child is found. The <code>id</code> parameter is relative to
* the current nesting context, not an absolute control id.
@@ -218,14 +216,14 @@
/**
* Registers a new listener for LifeCycle events on the context.
*
- * @see org.apache.beehive.controls.api.context.ControlBeanContext$LifeCycle
+ * @see org.apache.beehive.controls.api.context.ControlBeanContext.LifeCycle
*/
public void addLifeCycleListener(LifeCycle listener);
/**
* Removes a currently registered LifeCycle event listener on the context.
*
- * @see org.apache.beehive.controls.api.context.ControlBeanContext$LifeCycle
+ * @see org.apache.beehive.controls.api.context.ControlBeanContext.LifeCycle
*/
public void removeLifeCycleListener(LifeCycle listener);
}


Modified: 
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java&r1=124851&p2=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java
       (original)
+++ 
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/context/ControlContainerContext.java
       Mon Jan 10 16:16:04 2005
@@ -19,7 +19,6 @@
  */



 import org.apache.beehive.controls.api.bean.ControlBean;

-import org.apache.beehive.controls.api.context.ControlHandle;

 import org.apache.beehive.controls.api.events.EventDispatcher;



 /**

@@ -40,18 +39,10 @@
      */

     public void endContext();



- /**

-     * Returns the binding from a control interface to a control 
implementation for the

-     * current container context.

-     */

-    public Class getControlBinding(Class controlIntf);

-

     /**

      * Returns a ControlHandle to the component containing the control.  This 
handle can be

      * used to dispatch events and operations to a control instance.  This 
method will return

      * null if the containing component does not support direct dispatch.

-     *

-     * @param targetID the composite ID of the target control bean

      */

     public ControlHandle getControlHandle(ControlBean bean);

 }


Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java&r1=124851&p2=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java&r2=124852 ============================================================================== --- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java (original) +++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseMap.java Mon Jan 10 16:16:04 2005 @@ -130,7 +130,7 @@ * Sets a delegate base property map from which values will be derived if not found within * the local property map. */ - public void setDelegateMap(PropertyMap delegateMap) + public synchronized void setDelegateMap(PropertyMap delegateMap) { if (!isCompatibleClass(delegateMap.getMapClass())) throw new IllegalArgumentException("The delegate map is an incompatible type");

Added: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseProperties.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseProperties.java?view=auto&rev=124852
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BaseProperties.java Mon Jan 10 16:16:04 2005
@@ -0,0 +1,42 @@
+package org.apache.beehive.controls.api.properties;
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * + * http://www.apache.org/licenses/LICENSE-2.0
+ * + * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+
+/**
+ * Base properties that are present intrinsically on all controls.
+ */
[EMAIL PROTECTED]( hasSetters=false )
[EMAIL PROTECTED]( {ElementType.TYPE, ElementType.FIELD} )
[EMAIL PROTECTED]( RetentionPolicy.RUNTIME )
+public @interface BaseProperties
+{
+ /**
+ * Fully qualified classname of the implementation class for the control. If null,
+ * the default algorithm for * determining the implementation class will be used --
+ * basically, adding "Impl" to the control interface name.
+ */
+ String controlImplementation() default "";
+}


Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java&r1=124851&p2=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java (original)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/BeanPropertyMap.java Mon Jan 10 16:16:04 2005
@@ -18,19 +18,10 @@
*/
import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
-import java.util.Iterator;
-
-
-import org.apache.beehive.controls.api.bean.ControlBean;
-import org.apache.beehive.controls.api.bean.ControlExtension;
-import org.apache.beehive.controls.api.bean.ControlInterface;
/**
* The BeanPropertyMap class represents a collection of property values where properties are
@@ -101,7 +92,7 @@
/**
* Sets the property specifed by 'key' within this map.
*/
- public void setProperty(PropertyKey key, Object value)
+ public synchronized void setProperty(PropertyKey key, Object value)
{
if (!isValidKey(key))
throw new IllegalArgumentException("Key " + key + " is not valid for " + getMapClass());
@@ -190,5 +181,5 @@
HashMap<PropertyKey,Object> _properties = new HashMap<PropertyKey,Object>(); // locally maintained PropertySets
- HashSet<Class> _propertySets = new HashSet();
+ HashSet<Class> _propertySets = new HashSet<Class>();
}


Modified: 
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java&r1=124851&p2=incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java
        (original)
+++ 
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/properties/PropertySet.java
        Mon Jan 10 16:16:04 2005
@@ -74,5 +74,11 @@
      * The externalConfig member defines whether properties in the set will be 
settable
      * via external configuration.
      */
-    boolean externalConfig() default false;
+    boolean externalConfig() default true;
+
+    /**
+     * The hasSetters member defines whether properties in the set will have 
programmatic
+     * setter methods.
+     */
+    boolean hasSetters() default true;
 }

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&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java&r2=124852
==============================================================================
--- 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 Mon Jan 10 16:16:04 2005
@@ -39,11 +39,7 @@
import org.apache.beehive.controls.api.context.ControlThreadContext;
import org.apache.beehive.controls.api.events.EventRef;
import org.apache.beehive.controls.api.events.EventSet;
-import org.apache.beehive.controls.api.properties.AnnotatedElementMap;
-import org.apache.beehive.controls.api.properties.BeanPropertyMap;
-import org.apache.beehive.controls.api.properties.PropertyKey;
-import org.apache.beehive.controls.api.properties.PropertyMap;
-import org.apache.beehive.controls.api.properties.PropertySetProxy;
+import org.apache.beehive.controls.api.properties.*;
import org.apache.beehive.controls.spi.svc.Interceptor;
/**
@@ -81,6 +77,9 @@
_id = _localID;
_controlIntf = controlIntf;
+ // Create the context that acts as the BeanContextProxy for this bean (the context that this bean _defines_).
+ _cbc = new ControlBeanContext( this );
+
//
// If no containing context was specified during construction, see if there is a current
// active container context and implicitly associated the control with it.
@@ -89,21 +88,6 @@
context = ControlThreadContext.getContext();
//
- // If we've got a context, use it to bind to an implementation of the control, else use default binding.
- //
- if (context != null)
- _implClass = context.getControlBinding(_controlIntf);
- else
- _implClass = ControlBeanContext.getDefaultControlBinding(_controlIntf);
-
- //
- // Cache the threading policy associated with the impl
- //
- Threading thr = (Threading)_implClass.getAnnotation(Threading.class);
- if ( thr != null )
- _threadingPolicy = thr.value();
-
- //
// Associate this bean with the context. Beans may run without a context!
// Note that the add() call has the side-effect of calling ControlBean.setBeanContext(), which does
// additional setup work, so we make sure we always call that anyways!
@@ -149,16 +133,61 @@
//
_properties = new BeanPropertyMap(classMap);
}
+
+ //
+ // See if the property map specifies an implementation class for the control; if not, use default binding.
+ //
+
+ String implBinding = null;
+ BaseProperties bp = _properties.getPropertySet( BaseProperties.class );
+ if ( bp != null )
+ implBinding = bp.controlImplementation();
+ 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?
+
+ try
+ {
+ _implClass = _controlIntf.getClassLoader().loadClass(implBinding);
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ throw new ControlException("Unable to load control implementation: " + implBinding, cnfe);
+ }
+
+ //
+ // Cache the threading policy associated with the impl
+ //
+ Threading thr = (Threading)_implClass.getAnnotation(Threading.class);
+ if ( thr != null )
+ _threadingPolicy = thr.value();
+
+ ensureThreadingBehaviour();
}
/**
+ * Configure this bean to be thread-safe given the threading settings of the impl class and
+ * the outer container.
+ */
+ private void ensureThreadingBehaviour()
+ {
+ //
+ // If the implementation class requires a guarantee of single-threaded behavior and the
+ // outer container does not guarantee it, then enable invocation locking on this
+ // bean instance.
+ //
+ if (hasSingleThreadedImpl() && ! _cbc.hasSingleThreadedParent())
+ _invokeLock = new Semaphore(1, true);
+ else
+ _invokeLock = null;
+ }
+ /**
* Return the BeanContextService proxy associated with this bean instance
*/
- final public synchronized ControlBeanContext getBeanContextProxy()
+ final public ControlBeanContext getBeanContextProxy()
{
- if (_cbc == null)
- _cbc = new ControlBeanContext(this);
-
return _cbc;
}
@@ -188,15 +217,7 @@
*/
final public synchronized void setBeanContext(BeanContext bc)
{
- //
- // If the implementation class requires a guarantee of single-threaded behavior and the
- // outer container does not guarantee it, then enable invocation locking on this
- // bean instance.
- //
- if (hasSingleThreadedImpl() && !hasSingleThreadedContainer())
- _invokeLock = new Semaphore(1, true);
- else
- _invokeLock = null;
+ ensureThreadingBehaviour();
}
/**
@@ -216,49 +237,15 @@
}
/**
- * This method will return true if the external container for this control
- * guarantees single-threaded behavior. For example, the EJB container does
- * provide this guarantee, the servlet container does not.
+ * Returns true if the implementation class for this ControlBean requires the framework
+ * to ensure thread-safety for it.
*/
- /* package */ synchronized boolean hasSingleThreadedContainer()
- {
- BeanContext bc = getBeanContext();
- if (bc instanceof ControlBeanContext)
- return ((ControlBeanContext)bc).isSingleThreadedContainer();
-
- // Better safe than sorry, when it comes to thread safety
- return false;
- }
-
- /**
- * Returns true if the implementation class for this ControlBean can be assumed to
- * be thread-safe.
- */
- private boolean hasSingleThreadedImpl()
+ /*package*/ boolean hasSingleThreadedImpl()
{
return _threadingPolicy == ThreadingPolicy.SINGLE_THREADED;
}
/**
- * Returns true if the ControlBean instance is running in an environment that
- * guarantees single-threaded behaviour, false otherwise.
- */
- public synchronized boolean isSingleThreadedBean()
- {
- //
- // If the thread safe marker interface isn't found on the implementation, then
- // assume than single-threaded behavior is guaranteed to be locally enforced.
- //
- if (hasSingleThreadedImpl())
- return true;
-
- //
- // else, delegate to the outer container, which might be single threaded itself.
- //
- return hasSingleThreadedContainer();
- }
-
- /**
* Obtains an instance of the appropriate ImplInitializer class
*/
protected synchronized ImplInitializer getImplInitializer()
@@ -918,7 +905,7 @@
* The threading policy associated with the control implementation wrapped by this
* ControlBean.
*/
- transient private ThreadingPolicy _threadingPolicy = ThreadingPolicy.SINGLE_THREADED;
+ transient private ThreadingPolicy _threadingPolicy = null;
/**
* Contains the per-instance properties set for this ControlBean.


Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java Mon Jan 10 16:16:04 2005
@@ -176,6 +176,8 @@
super.setBeanContext(beanContext);
+ _hasSingleThreadedParent = cbcs.isSingleThreadedContainer();
+
if (_bean != null)
{
@@ -187,14 +189,6 @@
_bean.setBeanContext(beanContext);
//
- // The parent context relationship has been established (by the super.setBeanContext() call above).
- // The bean can now answer the question of whether it's single threaded (it needs to be able to query
- // the parent context to determine that), which means this context can now determine whether _it's_
- // single threaded.
- //
- _isSingleThreadedContainer = _bean.isSingleThreadedBean();
-
- //
// Establish a new value for the absolute control ID based upon the nesting context
// and parent bean (if any).
//
@@ -355,6 +349,11 @@
return _bean;
}
+ public synchronized boolean hasSingleThreadedParent()
+ {
+ return _hasSingleThreadedParent;
+ }
+
/**
* Returns true if this container associated with this context service enforces
* single-threaded invocation, false otherwise.
@@ -364,7 +363,7 @@
*/
public synchronized boolean isSingleThreadedContainer()
{
- return _isSingleThreadedContainer;
+ return ( hasSingleThreadedParent() || ( _bean != null && _bean.hasSingleThreadedImpl() ));
}
/**
@@ -448,27 +447,9 @@
}
/**
- * Returns the control implementation class that is bound to (implements) the
- * public or extension interface in the current context.
- */
- public Class getControlBinding(Class controlIntf)
- {
- //
- // Delegate up until a container-specific subclass of ControlBeanContext
- // (ControlContainerContext?) is found to manage the binding.
- //
- ControlBeanContext cbc = (ControlBeanContext)getBeanContext();
- if (cbc != null)
- return cbc.getControlBinding(controlIntf);
-
- // No parent context exists, just return default binding
- return getDefaultControlBinding(controlIntf);
- }
-
- /**
* Returns the default binding based entirely upon annotations or naming conventions.
*/
- static public Class getDefaultControlBinding(Class controlIntf)
+ static public String getDefaultControlBinding(Class controlIntf)
{
controlIntf = ControlBean.getMostDerivedInterface(controlIntf);
@@ -476,14 +457,8 @@
(ControlInterface)controlIntf.getAnnotation(ControlInterface.class);
String implBinding = intfAnnot.defaultBinding();
implBinding = resolveDefaultBinding( implBinding, controlIntf.getName() );
- try
- {
- return controlIntf.getClassLoader().loadClass(implBinding);
- }
- catch (ClassNotFoundException cnfe)
- {
- throw new ControlException("Unable to load control implementation", cnfe);
- }
+
+ return implBinding;
}
/**
@@ -830,11 +805,9 @@
private ControlBean _bean;
/**
- * Indicates whether this context acts as a single-threaded container (for ControlBeans nested
- * by the ControlBean that scopes this context, i.e. _bean). This is dependent on the parent context,
- * so may be changed during setBeanContext(). It defaults to false for safety.
+ * Indicates whether this context's parent guarantees single-threaded behaviour.
*/
- private boolean _isSingleThreadedContainer = false;
+ private boolean _hasSingleThreadedParent = false;
/**
* Maps children by the local (relative) ID of the child to the actual bean instance.


Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlContainerContext.java Mon Jan 10 16:16:04 2005
@@ -166,18 +166,6 @@
return null;
}
- /** - * Returns the binding from a control interface to a control implementation for the
- * current container context.
- */
- public Class getControlBinding(Class controlClass)
- {
- //
- // TODO: Add caching of relationships and external binding mechanisms
- //
- return getDefaultControlBinding(controlClass);
- }
-
/**
* Returns true if this container guarantees single-threaded behaviour. By default, top-level
* containers are assumed to NOT guarantee this; specific container implementations (for example,


Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptControlInterface.java Mon Jan 10 16:16:04 2005
@@ -239,8 +239,22 @@
if ( _intfDecl == null )
return propSets;
+ // TODO: enforce presence of prefixes when multiple property sets w/ the same
+ // property name exist
+
+ //
+ // Add the intrinsic/base property set
//
- // Handle external property sets
+
+ TypeDeclaration basePropsDecl =
+ _env.getTypeDeclaration( "org.apache.beehive.controls.api.properties.BaseProperties" );
+ if ( basePropsDecl != null )
+ {
+ propSets.add( new AptPropertySet( null, basePropsDecl, _env ) );
+ }
+
+ //
+ // Add external property sets
//
ExternalPropertySets extPropsAnnotation = _intfDecl.getAnnotation(ExternalPropertySets.class);
if ( extPropsAnnotation != null )
@@ -269,11 +283,12 @@
}
}
+ //
+ // Add nested property sets
+ //
+
if ( _intfDecl.getNestedTypes() == null )
return propSets;
-
- // TODO: enforce presence of prefixes when multiple property sets w/ the same
- // property name exist
for (TypeDeclaration innerDecl : _intfDecl.getNestedTypes())
{


Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptPropertySet.java Mon Jan 10 16:16:04 2005
@@ -55,6 +55,8 @@
}
_propertySet = (AnnotationTypeDeclaration)propertySet;
+ _hasSetters = _propertySet.getAnnotation(PropertySet.class).hasSetters();
+
_env = env;
_properties = initProperties();
}
@@ -127,8 +129,17 @@
return _propertySet.getAnnotation(PropertySet.class).prefix();
}
+ /**
+ * Returns whether or not this propertyset exposes setters
+ */
+ public boolean hasSetters()
+ {
+ return _hasSetters;
+ }
+
private AnnotationTypeDeclaration _propertySet;
private AptControlInterface _controlIntf; // may be null if an external property set
private ArrayList<AptProperty> _properties;
private AnnotationProcessorEnvironment _env;
+ private boolean _hasSetters;
}


Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm Mon Jan 10 16:16:04 2005
@@ -204,9 +204,10 @@
* A PropertyKey that can be used to access the $property.name property of the
* $property.propertySet.shortName PropertySet
*/
- public static PropertyKey $property.keyName = new PropertyKey(${property.propertySet.className}.class, "$property.name");
+ public static final PropertyKey $property.keyName = new PropertyKey(${property.propertySet.className}.class, "$property.name");
- public void ${property.writeMethod}($property.type value)
+ #if ($property.propertySet.hasSetters())
+ public synchronized void ${property.writeMethod}($property.type value)
#if ($property.constrained)
throws java.beans.PropertyVetoException
#end
@@ -226,6 +227,7 @@
firePropertyChange($property.keyName, oldValue, value);
#end
}
+ #end
public $property.type ${property.readMethod}()
{


Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm&r1=124851&p2=incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm Mon Jan 10 16:16:04 2005
@@ -169,7 +169,16 @@
#foreach ($propertySet in $intf.propertySets)
#foreach ($property in $propertySet.properties) + #if ($propertySet.hasSetters())
pd = new PropertyDescriptor("$property.name", ${bean.className}.class);
+ #else
+ #if ($property.getType().equals("boolean"))
+ #set ( $getterName = "is${property.accessorName}" )
+ #else
+ #set ( $getterName = "get${property.accessorName}" )
+ #end
+ pd = new PropertyDescriptor("$property.name", ${bean.className}.class, "$getterName", null );
+ #end
#if ($property.propertyInfo)
pd.setBound($property.propertyInfo.bound());
pd.setConstrained($property.propertyInfo.constrained());


Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java&r1=124851&p2=incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java
        (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/binding/BindingTestControl.java
        Mon Jan 10 16:16:04 2005
@@ -1,10 +1,10 @@
 package org.apache.beehive.controls.test.controls.binding;



 import org.apache.beehive.controls.api.bean.ControlInterface;

+import org.apache.beehive.controls.api.properties.BaseProperties;



[EMAIL PROTECTED] (

-    defaultBinding = 
"org.apache.beehive.controls.test.controls.binding.BindingTestControlImpl"

-)

[EMAIL PROTECTED]

[EMAIL 
PROTECTED](controlImplementation="org.apache.beehive.controls.test.controls.binding.BindingTestControlImpl")

 public interface BindingTestControl

{

     public String getStatus();


Modified: incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java&r1=124851&p2=incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java (original)
+++ incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java Mon Jan 10 16:16:04 2005
@@ -26,6 +26,7 @@
public String name() default DEFAULT_NAME;
//does not have a default value assigned
public String job();
+ public int rank() default 0;
}


Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs&r1=124851&p2=incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
       (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
       Mon Jan 10 16:16:04 2005
@@ -129,6 +129,7 @@
             BeanPropertyMap props = new 
BeanPropertyMap(InnerControl.Identity.class);
             props.setProperty( InnerControlBean.NameKey, "ken" );
             props.setProperty( InnerControlBean.JobKey, "engineer");
+            props.setProperty( InnerControlBean.RankKey, new Integer(2));
             InnerControlBean 
inner=(InnerControlBean)org.apache.beehive.controls.api.bean.Controls.instantiate(
                 Thread.currentThread().getContextClassLoader(),
                 
"org.apache.beehive.controls.test.controls.composition.InnerControlBean", 
props);

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo
        (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/beaninfo/InfoTestBean.beaninfo
        Mon Jan 10 16:16:04 2005
@@ -66,7 +66,7 @@
                 public int 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.getProp1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.setProp1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.setProp1(int)
             </write-method>
             <feature-descriptor name="InfoTest prop1"
                 full-name="InfoTest prop1"
@@ -78,6 +78,24 @@
                 </short-description>
             </feature-descriptor>
         </property-descriptor>
+        <property-descriptor name="controlImplementation">
+            type="java.lang.String"
+            isBound=false
+            isConstrained=false
+            isDefault=false>
+            <read-method>
+                public java.lang.String 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.getControlImplementation()
+            </read-method>
+            <feature-descriptor name="controlImplementation"
+                full-name="controlImplementation"
+                is-expert=false
+                is-hidden=false
+                is-preferred=false>
+                <short-description>
+                    controlImplementation
+                </short-description>
+            </feature-descriptor>
+        </property-descriptor>
         <property-descriptor name="prop2">
             type="boolean"
             isBound=false
@@ -87,7 +105,7 @@
                 public boolean 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.isProp2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.setProp2(boolean)
+                public synchronized void 
org.apache.beehive.controls.test.controls.beaninfo.InfoTestBean.setProp2(boolean)
             </write-method>
             <feature-descriptor name="prop2"
                 full-name="prop2"

Modified: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java (original)
+++ incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java Mon Jan 10 16:16:04 2005
@@ -26,13 +26,13 @@
public DeclarativeTest(String name) throws Exception
{
super(name);
- _testContext = createTestBeanContext();
- org.apache.beehive.controls.api.bean.Controls.initializeClient( null, this, _testContext );
}
// begin and end control bean context for each test
public void setUp() throws Exception
{
+ _testContext = createTestBeanContext();
+ org.apache.beehive.controls.api.bean.Controls.initializeClient( null, this, _testContext );
_testContext.beginContext();
}


Modified: incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java (original)
+++ incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java Mon Jan 10 16:16:04 2005
@@ -49,6 +49,7 @@
Assert.assertNotNull(innerBean);
Assert.assertEquals(innerBean.getName(), "ken");
Assert.assertEquals(innerBean.getJob(), "engineer");
+ Assert.assertTrue(innerBean.getRank() == 2);
Assert.assertNotNull(outerControl2);
}


Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo
     (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext1Bean.beaninfo
     Mon Jan 10 16:16:04 2005
@@ -169,6 +169,24 @@
         </method-descriptor>
     </method-descriptors>
     <property-descriptors default-index=-1>
+        <property-descriptor name="controlImplementation">
+            type="java.lang.String"
+            isBound=false
+            isConstrained=false
+            isDefault=false>
+            <read-method>
+                public java.lang.String 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getControlImplementation()
+            </read-method>
+            <feature-descriptor name="controlImplementation"
+                full-name="controlImplementation"
+                is-expert=false
+                is-hidden=false
+                is-preferred=false>
+                <short-description>
+                    controlImplementation
+                </short-description>
+            </feature-descriptor>
+        </property-descriptor>
         <property-descriptor name="intf1Prop1">
             type="int"
             isBound=false
@@ -178,7 +196,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
             </write-method>
             <feature-descriptor name="intf1Prop1"
                 full-name="intf1Prop1"
@@ -199,7 +217,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
             </write-method>
             <feature-descriptor name="intf1Prop2"
                 full-name="intf1Prop2"
@@ -220,7 +238,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.getIntf2Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop1(int)
             </write-method>
             <feature-descriptor name="intf2Prop1"
                 full-name="intf2Prop1"
@@ -241,7 +259,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.getIntf2Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop2(int)
             </write-method>
             <feature-descriptor name="intf2Prop2"
                 full-name="intf2Prop2"

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo
     (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Ext2Bean.beaninfo
     Mon Jan 10 16:16:04 2005
@@ -199,6 +199,24 @@
         </method-descriptor>
     </method-descriptors>
     <property-descriptors default-index=-1>
+        <property-descriptor name="controlImplementation">
+            type="java.lang.String"
+            isBound=false
+            isConstrained=false
+            isDefault=false>
+            <read-method>
+                public java.lang.String 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getControlImplementation()
+            </read-method>
+            <feature-descriptor name="controlImplementation"
+                full-name="controlImplementation"
+                is-expert=false
+                is-hidden=false
+                is-preferred=false>
+                <short-description>
+                    controlImplementation
+                </short-description>
+            </feature-descriptor>
+        </property-descriptor>
         <property-descriptor name="intf1Prop1">
             type="int"
             isBound=false
@@ -208,7 +226,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
             </write-method>
             <feature-descriptor name="intf1Prop1"
                 full-name="intf1Prop1"
@@ -229,7 +247,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
             </write-method>
             <feature-descriptor name="intf1Prop2"
                 full-name="intf1Prop2"
@@ -250,7 +268,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.getIntf2Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop1(int)
             </write-method>
             <feature-descriptor name="intf2Prop1"
                 full-name="intf2Prop1"
@@ -271,7 +289,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.getIntf2Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop2(int)
             </write-method>
             <feature-descriptor name="intf2Prop2"
                 full-name="intf2Prop2"

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo
    (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf1Bean.beaninfo
    Mon Jan 10 16:16:04 2005
@@ -79,6 +79,24 @@
         </method-descriptor>
     </method-descriptors>
     <property-descriptors default-index=-1>
+        <property-descriptor name="controlImplementation">
+            type="java.lang.String"
+            isBound=false
+            isConstrained=false
+            isDefault=false>
+            <read-method>
+                public java.lang.String 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getControlImplementation()
+            </read-method>
+            <feature-descriptor name="controlImplementation"
+                full-name="controlImplementation"
+                is-expert=false
+                is-hidden=false
+                is-preferred=false>
+                <short-description>
+                    controlImplementation
+                </short-description>
+            </feature-descriptor>
+        </property-descriptor>
         <property-descriptor name="intf1Prop1">
             type="int"
             isBound=false
@@ -88,7 +106,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
             </write-method>
             <feature-descriptor name="intf1Prop1"
                 full-name="intf1Prop1"
@@ -109,7 +127,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
             </write-method>
             <feature-descriptor name="intf1Prop2"
                 full-name="intf1Prop2"

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo
    (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/inherit/Intf2Bean.beaninfo
    Mon Jan 10 16:16:04 2005
@@ -139,6 +139,24 @@
         </method-descriptor>
     </method-descriptors>
     <property-descriptors default-index=-1>
+        <property-descriptor name="controlImplementation">
+            type="java.lang.String"
+            isBound=false
+            isConstrained=false
+            isDefault=false>
+            <read-method>
+                public java.lang.String 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getControlImplementation()
+            </read-method>
+            <feature-descriptor name="controlImplementation"
+                full-name="controlImplementation"
+                is-expert=false
+                is-hidden=false
+                is-preferred=false>
+                <short-description>
+                    controlImplementation
+                </short-description>
+            </feature-descriptor>
+        </property-descriptor>
         <property-descriptor name="intf1Prop1">
             type="int"
             isBound=false
@@ -148,7 +166,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop1(int)
             </write-method>
             <feature-descriptor name="intf1Prop1"
                 full-name="intf1Prop1"
@@ -169,7 +187,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.getIntf1Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf1Bean.setIntf1Prop2(int)
             </write-method>
             <feature-descriptor name="intf1Prop2"
                 full-name="intf1Prop2"
@@ -190,7 +208,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.getIntf2Prop1()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop1(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop1(int)
             </write-method>
             <feature-descriptor name="intf2Prop1"
                 full-name="intf2Prop1"
@@ -211,7 +229,7 @@
                 public int 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.getIntf2Prop2()
             </read-method>
             <write-method>
-                public void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop2(int)
+                public synchronized void 
org.apache.beehive.controls.test.controls.inherit.Intf2Bean.setIntf2Prop2(int)
             </write-method>
             <feature-descriptor name="intf2Prop2"
                 full-name="intf2Prop2"

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java&r1=124851&p2=incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java&r2=124852
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java
        (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/binding/TestControlBinding.java
        Mon Jan 10 16:16:04 2005
@@ -11,7 +11,6 @@
     public TestControlBinding(String s){super(s);}



     @Freq("checkin")

-    @Status("inactive")

     @Desc("Test that a control implementation can be overridden with binding: 
" +

          "http://issues.apache.org/jira/browse/BEEHIVE-20";)

     public void testBindingOverride() throws Exception


Modified: incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf
Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf?view=diff&rev=124852&p1=incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf&r1=124851&p2=incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf&r2=124852
==============================================================================
--- incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf (original)
+++ incubator/beehive/trunk/controls/test/webapps/controlsWeb/binding/BindingTests.jpf Mon Jan 10 16:16:04 2005
@@ -24,6 +24,7 @@


 import org.apache.beehive.controls.api.bean.Control;

 import org.apache.beehive.controls.api.bean.ControlBean;

+import org.apache.beehive.controls.api.properties.BaseProperties;



 import org.apache.beehive.controls.test.controls.binding.BindingTestControl;

 import 
org.apache.beehive.controls.test.controls.binding.DefaultBindingTestControl;

@@ -39,6 +40,7 @@
 {



     @Control

+    @BaseProperties( 
controlImplementation="org.apache.beehive.controls.test.controls.binding.BindingTestControlOverrideImpl"
 )

     public BindingTestControl btc;



     @Control


Reply via email to