com.bea.content.controls.extensible
Interface CmxControl

All Known Subinterfaces:
AnnouncementsPollerCmxControl, CommunityContentCmxControl, FeedEntriesCmxControl, FeedFoldersCmxControl, FolderCmxControl, FoldersCmxControl, com.bea.apps.groupspace.controls.extensible.GroupSpaceCmxControl, GS_UtilCmxControl, GsDocCmxControl, IssuesCmxControl, LinksCmxControl, RichTextCmxControl, SavedSearchCmxControl, UtilCmxControl
All Known Implementing Classes:
CmxControlImpl

public interface CmxControl

Copyright (c) 2005-2006 by BEA Systems, Inc. All Rights Reserved.

Simplifies access to content management (CM) content repositories.

To create an ObjectClass and Node of that new type, one writes an interface that:

  1. extends CmxControl is annotated with @ControlExtention
  2. specifies the repository name using an @RepositoryInfo annotation
  3. declares a method annotated with @Create
  4. annotates one method argument with @ParentId
  5. annotates the other method arguments with @Property; supplying necessary type information
  6. generates a Bean from the new interface using an annotation processing tool
  7. calls the @Create method

For example:
@org.apache.beehive.controls.api.bean.ControlExtension
@CmxControl.RepositoryInfo(repositoryName="Foo_Repository")
public interface BarCmxControl extends CmxControl
{
@Create(nodeType="BAR")
public Bar createBar(@Property(name="BAR_TITLE") String title);
}

The new ObjectClass is created on the first call; Node instances of that type are created on each call.

Method-level and Paramter-level annotations are mutually exclusive in that only one should be used per method/argument

Declarative instantiation (@Control fooControl;) from a PageFlow or from another control is the preferred method of instantiating controls (as this will supply the control a proper Control Container Context (CCC)). Should the control be instantiated programmatically, from a different context or with an application scope (rather than webapp), extra measures should be taken:

see http://beehive.apache.org for more on extensible controls

See Also
Extensible

Nested Class Summary
static interface CmxControl.Create
          Method-level annotation for @ControlExtention methods to Create CM Node & ObjectClass
static interface CmxControl.Delete
          Method-level annotation for methods in a @ControlExtension which wish to Delete CM nodes.
static interface CmxControl.DynamicProperties
          Parameter-level annotation to mark a parameter as a property
static interface CmxControl.FindBy
          Method-level annotation for methods in a @ControlExtension which wish to find CM nodes using an expression.
static interface CmxControl.FindById
          Method-level annotation for methods in a @ControlExtension which wish to find CM nodes using an ID...returns a Node.
static interface CmxControl.Id
          Parameter-level annotation to mark a parameter as a property
static interface CmxControl.Move
          Method-level annotation for methods in a @ControlExtension which wish to Delete CM nodes.
static interface CmxControl.ParentId
          Parameter-level annotation to mark a parameter as a property
static interface CmxControl.Property
          Parameter-level annotation to mark a parameter as a property
static class CmxControl.PropertyPair
          Holds a Property and its corresponding PropertyDefinition
static interface CmxControl.RepositoryInfo
          Class-level annotation for making a RepositoryInfo available for use within the CmxControlImpl.
static interface CmxControl.SearchPaths
          Parameter-level annotation to mark a parameter as a property
static interface CmxControl.SortOrder
          Parameter-level annotation to mark a parameter as a property
static interface CmxControl.Update
          Method-level annotation for methods in a @ControlExtension which wish to Delete CM nodes.
 



Copyright © 2006 BEA Systems, Inc. All Rights Reserved