Class ComponentDefinition

java.lang.Object
org.apache.struts.tiles.ComponentDefinition
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
XmlDefinition

public class ComponentDefinition extends Object implements Serializable
Definition of a template / component attributes. Attributes of a component can be defined with the help of this class. An instance of this class can be used as a bean, and passed to 'insert' tag.
See Also:
  • Field Details

    • name

      protected String name
      Definition name
    • path

      protected String path
      Component / template path (URL).
    • attributes

      protected Map<String,Object> attributes
      Attributes defined for the component.
    • role

      protected String role
      Role associated to definition.
    • controller

      protected String controller
      Associated Controller URL or classname, if defined
    • controllerType

      protected String controllerType
      Associated Controller typename, if controllerName defined. Can be CONTROLLER, ACTION or URL, or null.
    • URL

      public static final String URL
      Controller name type.
      See Also:
    • CONTROLLER

      public static final String CONTROLLER
      Controller name type.
      See Also:
    • ACTION

      public static final String ACTION
      Controller name type.
      See Also:
  • Constructor Details

    • ComponentDefinition

      public ComponentDefinition()
      Constructor.
    • ComponentDefinition

      public ComponentDefinition(ComponentDefinition definition)
      Copy Constructor. Create a new definition initialized with parent definition. Do a shallow copy : attributes are shared between copies, but not the Map containing attributes.
    • ComponentDefinition

      public ComponentDefinition(XmlDefinition definition)
      Constructor. Create a new definition initialized from a RawDefinition. Raw definitions are used to read definition from a data source (xml file, db, ...). A RawDefinition mainly contains properties of type String, while Definition contains more complex type (ex : Controller). Do a shallow copy : attributes are shared between objects, but not the Map containing attributes. OO Design issues : Actually RawDefinition (XmlDefinition) extends ComponentDefinition. This must not be the case. I have do it because I am lazy.
      Throws:
      InstantiationException - if an error occur while instantiating Controller : (classname can't be instantiated, Illegal access with instantiated class, Error while instantiating class, classname can't be instantiated.
    • ComponentDefinition

      public ComponentDefinition(String name, String path, Map<String,Object> attributes)
      Constructor.
  • Method Details

    • getName

      public String getName()
      Access method for the name property.
      Returns:
      the current value of the name property
    • setName

      public void setName(String aName)
      Sets the value of the name property.
      Parameters:
      aName - the new value of the name property
    • getPage

      public String getPage()
      Access method for the path property.
      Returns:
      The current value of the path property.
    • setPage

      public void setPage(String page)
      Sets the value of the path property.
      Parameters:
      page - the new value of the path property
    • getPath

      public String getPath()
      Access method for the path property.
      Returns:
      the current value of the path property
    • setPath

      public void setPath(String aPath)
      Sets the value of the path property.
      Parameters:
      aPath - the new value of the path property
    • getTemplate

      public String getTemplate()
      Access method for the template property. Same as getPath()
      Returns:
      the current value of the template property
    • setTemplate

      public void setTemplate(String template)
      Sets the value of the template property. Same as setPath()
      Parameters:
      template - the new value of the path property
    • getRole

      public String getRole()
      Access method for the role property.
      Returns:
      the current value of the role property
    • setRole

      public void setRole(String role)
      Sets the value of the role property.
      Parameters:
      role - the new value of the path property
    • getAttributes

      public Map<String,Object> getAttributes()
      Access method for the attributes property. If there is no attributes, return an empty map.
      Returns:
      the current value of the attributes property
    • getAttribute

      public Object getAttribute(String key)
      Returns the value of the named attribute as an Object, or null if no attribute of the given name exists.
      Returns:
      requested attribute or null if not found
    • putAttribute

      public void putAttribute(String key, Object value)
      Put a new attribute in this component
      Parameters:
      key - String key for attribute
      value - Attibute value.
    • put

      public void put(String name, Object content)
      Put an attribute in component / template definition. Attribute can be used as content for tag get.
      Parameters:
      name - Attribute name
      content - Attribute value
    • put

      public void put(String name, Object content, boolean direct)
      Put an attribute in template definition. Attribute can be used as content for tag get.
      Parameters:
      name - Attribute name
      content - Attribute value
      direct - Determines how content is handled by get tag: true means content is printed directly; false, the default, means content is included
    • put

      public void put(String name, Object content, boolean direct, String role)
      Put an attribute in template definition. Attribute can be used as content for tag get.
      Parameters:
      name - Attribute name
      content - Attribute value
      direct - Determines how content is handled by get tag: true means content is printed directly; false, the default, means content is included
      role - Determine if content is used by get tag. If user is in role, content is used.
    • put

      public void put(String name, Object content, String type, String role)
      Put an attribute in template definition. Attribute can be used as content for tag get.
      Parameters:
      name - Attribute name
      content - Attribute value
      type - attribute type: template, string, definition
      role - Determine if content is used by get tag. If user is in role, content is used.
    • toString

      public String toString()
      Returns a description of the attributes.
      Overrides:
      toString in class Object
    • getControllerType

      public String getControllerType()
      Get associated controller type. Type denote a fully qualified classname.
    • setControllerType

      public void setControllerType(String controllerType)
      Set associated controller type. Type denote a fully qualified classname.
      Parameters:
      controllerType - Typeof associated controller
    • setControllerUrl

      public void setControllerUrl(String controller)
      Set associated controller name as an url, and controller type as "url". Name must be an url (not checked). Convenience method.
      Parameters:
      controller - Controller url
    • setControllerClass

      public void setControllerClass(String controller)
      Set associated controller name as a classtype, and controller type as "classname". Name denote a fully qualified classname Convenience method.
      Parameters:
      controller - Controller classname.
    • getController

      public String getController()
      Get associated controller local URL. URL should be local to webcontainer in order to allow request context followup. URL comes as a string.
    • setController

      public void setController(String url)
      Set associated controller URL. URL should be local to webcontainer in order to allow request context followup. URL is specified as a string.
      Parameters:
      url - Url called locally
    • getControllerInstance

      public Controller getControllerInstance()
      Get controller instance.
      Returns:
      controller instance.
    • getOrCreateController

      public Controller getOrCreateController() throws InstantiationException
      Get or create controller. Get controller, create it if necessary.
      Returns:
      controller if controller or controllerType is set, null otherwise.
      Throws:
      InstantiationException - if an error occur while instanciating Controller : (classname can't be instanciated, Illegal access with instanciated class, Error while instanciating class, classname can't be instanciated.
    • setControllerInstance

      public void setControllerInstance(Controller controller)
      Set controller.
    • createController

      public static Controller createController(String name, String controllerType) throws InstantiationException
      Create a new instance of controller named in parameter. If controllerType is specified, create controller accordingly. Otherwise, if name denote a classname, create an instance of it. If class is subclass of org.apache.struts.action.Action, wrap controller appropriately. Otherwise, consider name as an url.
      Parameters:
      name - Controller name (classname, url, ...)
      controllerType - Expected Controller type
      Returns:
      org.apache.struts.tiles.Controller
      Throws:
      InstantiationException - if an error occur while instanciating Controller : (classname can't be instanciated, Illegal access with instanciated class, Error while instanciating class, classname can't be instanciated.
    • createControllerFromClassname

      public static Controller createControllerFromClassname(String classname) throws InstantiationException
      Create a controller from specified classname.
      Parameters:
      classname - Controller classname.
      Returns:
      org.apache.struts.tiles.Controller
      Throws:
      InstantiationException - if an error occur while instanciating Controller: (classname can't be instantiated, Illegal access with instantiated class, Error while instantiating class, classname can't be instantiated.