You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ke...@apache.org on 2005/05/13 01:47:29 UTC
svn commit: r169912 - in /incubator/beehive/trunk/controls/src:
api/org/apache/beehive/controls/api/assembly/
api/org/apache/beehive/controls/api/bean/
runtime/org/apache/beehive/controls/runtime/assembly/
runtime/org/apache/beehive/controls/runtime/bean/
Author: kentam
Date: Thu May 12 16:47:28 2005
New Revision: 169912
URL: http://svn.apache.org/viewcvs?rev=169912&view=rev
Log:
Improving Javadocs, and fixed a bug where we were swallowing exceptions thrown during assembly.
Modified:
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssembler.java
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyException.java
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/AnnotationMemberTypes.java
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/Controls.java
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/AssembleTask.java
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/Assembler.java
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBean.java
Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssembler.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssembler.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssembler.java (original)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssembler.java Thu May 12 16:47:28 2005
@@ -19,11 +19,27 @@
*/
/**
- * This interface provides the methods that can be called at assembly-time
- * by build tools.
+ * Control implementations may need to do build-time work on or impacted by
+ * their control client(s), such as side-effecting their client's deployment
+ * descriptors, or generating additional files that are implementation-
+ * specific.
+ *
+ * The build phase where this work is done is called assembly, and occurs
+ * at the granularity level of the J2EE module.
+ * The control author participates in this phase by authoring classes that
+ * implement the ControlAssembler interface, and associating such classes
+ * with control implementations. Instances of ControlAssembler are then
+ * called at assembly-time by build tools.
*/
public interface ControlAssembler
{
+ /**
+ * A ControlAssembler implementation's assemble method is called once
+ * per control assembler per module per assembly-time pass. The call
+ * passes a ControlAssemblyContext, from which information such as the
+ * list of client classes in the module that use the control can be
+ * obtained.
+ */
void assemble(ControlAssemblyContext cac) throws ControlAssemblyException;
}
Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyException.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyException.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyException.java (original)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyException.java Thu May 12 16:47:28 2005
@@ -18,6 +18,11 @@
* $Header:$
*/
+/**
+ * Checked exceptions thrown during the assembly process. ControlAssembler
+ * implementations may throw this exception in their assemble() method, which
+ * will halt the assembly process.
+ */
public class ControlAssemblyException extends Exception
{
public ControlAssemblyException( String msg )
Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/AnnotationMemberTypes.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/AnnotationMemberTypes.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/AnnotationMemberTypes.java (original)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/AnnotationMemberTypes.java Thu May 12 16:47:28 2005
@@ -190,10 +190,16 @@
{
}
+ /**
+ * Member is a JNDI name.
+ */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface JndiName
{
+ /**
+ * Defines the type of JNDI resource reference by a member.
+ */
public enum ResourceType
{
DATASOURCE,
Modified: incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/Controls.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/Controls.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/Controls.java (original)
+++ incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/bean/Controls.java Thu May 12 16:47:28 2005
@@ -32,7 +32,8 @@
import java.lang.reflect.InvocationTargetException;
/**
- * Helper class for using controls.
+ * Helper class for using controls. Includes static methods to help instantiate controls, and initialize
+ * declarative control clients.
*/
public class Controls
{
Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/AssembleTask.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/AssembleTask.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/AssembleTask.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/AssembleTask.java Thu May 12 16:47:28 2005
@@ -38,6 +38,43 @@
/**
* AssembleTask defines a custom ant task to perform control assembly.
+ * <p>
+ * The core assembly algorithm is documented and implemented in {@link Assembler}.
+ * <p>
+ * Required attributes:<br>
+ * <b>moduleDir</b>: path to the root of J2EE module on which to perform assembly.<br>
+ * <b>srcOutputDir</b>: path to the dir where control assemblers may output source files.
+ * It may be necessary to run additional build steps in order to process such files (for example,
+ * if an assembler outputs Java source code, that code may need to be compiled).<br>
+ * <b>contextFactoryClassname</b>: fully qualified classname of a factory class that implements
+ * {@link org.apache.beehive.controls.api.assembly.ControlAssemblyContext$Factory}. Typically this
+ * would depend on the type of module on which assembly is being run (EJB, webapp, etc). Different
+ * contexts will expose different APIs to control assemblers (making different descriptors available,
+ * etc).
+ * <p>
+ * Supported nested elements:<br>
+ * <b>classpath</b>: specifies the classpath that will be searched for control interfaces/implementations,
+ * control clients and control assemblers.<br>
+ * <b>fileset</b>: specifies the control client manifests that should be processed by this assembly call.<br>
+ * <p>
+ * An example usage of the AssembleTask in an ant build script (build.xml):
+ * <p>
+<xmp>
+ <taskdef name="assemble" classname="org.apache.beehive.controls.runtime.assembly.AssembleTask"
+ classpathref="controls.dependency.path" onerror="report" />
+
+ <assemble moduleDir="${build.beans}"
+ srcOutputDir="${build.beansrc}"
+ contextFactoryClassname="org.apache.beehive.controls.runtime.assembly.EJBAssemblyContext$Factory">
+ <classpath>
+ <path refid="test.classpath"/>
+ <pathelement location="${build.beans}"/>
+ </classpath>
+ <fileset dir="${build.beans}">
+ <include name="**\*.controls.properties"/>
+ </fileset>
+ </assemble>
+</xmp>
*/
public class AssembleTask extends Task
{
Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/Assembler.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/Assembler.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/Assembler.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/Assembler.java Thu May 12 16:47:28 2005
@@ -29,6 +29,9 @@
import java.util.Map;
import java.util.Set;
+/**
+ * Helper class to execute assembly logic.
+ */
public class Assembler
{
/**
@@ -97,9 +100,16 @@
}
}
}
- catch ( Exception e )
+ catch ( ControlAssemblyException cae )
{
- e.printStackTrace( );
+ // just rethrow ControlAssemblyExceptions, which will typically come from user-provided assemblers.
+ throw cae;
+ }
+ catch ( Throwable t )
+ {
+ // Not expecting any throwables other than ControlAssemblyExceptions, so consider them as
+ // unexpected infrastructure issues and wrap them in a CAE.
+ throw new ControlAssemblyException( "Assembly infrastructure exception", t);
}
finally
{
Modified: incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java (original)
+++ incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java Thu May 12 16:47:28 2005
@@ -32,7 +32,8 @@
import com.sun.mirror.util.SourcePosition;
/**
- * Base ControlAssemblyContext implementation
+ * Abstract ControlAssemblyContext implementation. Provides a basic implementation of most non-module-specific
+ * APIs, meant to be extended by module-specific types.
*/
public abstract class BaseAssemblyContext implements ControlAssemblyContext
{
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?rev=169912&r1=169911&r2=169912&view=diff
==============================================================================
--- 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 Thu May 12 16:47:28 2005
@@ -47,15 +47,15 @@
/**
* The ControlBean class is an abstract base class for the JavaBean classes generated to support
* Workshop controls.
- *
+ * <p>
* The ControlBean class indirectly implements BeanContextProxy; the ControlBeanContext that it contains/scopes
* acts as that proxy.
- *
+ * <p>
* All support APIs (which may be called from derived derived subclasses or contextual services
* are generally marked as protected and have names that start with an underscore. This avoids the
* possibility that the name might conflict with a user-defined method on a control's public or
* extended (JCX) interface.
- *
+ * <p>
* NOTE: Adding public methods should be done with great care; any such method becomes part of the
* public API, and occupies namespace for all controls.
*/
@@ -66,8 +66,8 @@
*
* @param context the containing ControlBeanContext. May be null, in which case the bean will attempt to
* associate with an active context at runtime (via thread-locals).
- * @param id
- * @param initProperties
+ * @param id the local ID for the control, scoped to the control bean context.
+ * @param initProperties a PropertyMap containing initial properties for the control
* @param controlIntf the control interface or extension directly implemented by the control bean
*/
protected ControlBean(org.apache.beehive.controls.api.context.ControlBeanContext context,