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