[seam-commits] Seam SVN: r7999 - trunk/src/main/org/jboss/seam.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Mon Apr 21 16:06:44 EDT 2008
Author: norman.richards at jboss.com
Date: 2008-04-21 16:06:44 -0400 (Mon, 21 Apr 2008)
New Revision: 7999
Modified:
trunk/src/main/org/jboss/seam/components-2.1.xsd
Log:
JBSEAM-1531
Modified: trunk/src/main/org/jboss/seam/components-2.1.xsd
===================================================================
--- trunk/src/main/org/jboss/seam/components-2.1.xsd 2008-04-21 18:54:20 UTC (rev 7998)
+++ trunk/src/main/org/jboss/seam/components-2.1.xsd 2008-04-21 20:06:44 UTC (rev 7999)
@@ -1,8 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- targetNamespace="http://jboss.com/products/seam/components"
- xmlns:components="http://jboss.com/products/seam/components">
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://jboss.com/products/seam/components"
+ xmlns:components="http://jboss.com/products/seam/components">
+ <xs:annotation>
+ <xs:documentation>
+ The top-level schema for a Seam components.xml. For more information on Seam, see
+ http://www.seamframework.org.
+ </xs:documentation>
+ </xs:annotation>
+
<xs:element name="components">
+ <xs:annotation>
+ <xs:documentation> The components tag is a the root element for a components.xml containing multiples
+ component definitions. </xs:documentation>
+ </xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="components:component"/>
@@ -13,7 +25,12 @@
</xs:choice>
</xs:complexType>
</xs:element>
+
<xs:element name="component">
+ <xs:annotation>
+ <xs:documentation> The component tag defines a single Seam component. It may serve as to the root element of
+ a fine-grained *.component.xml file. </xs:documentation>
+ </xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="components:property"/>
@@ -22,88 +39,204 @@
<xs:attributeGroup ref="components:attlist.ejbcomponent"/>
</xs:complexType>
</xs:element>
-
- <xs:element name="import" type="xs:string"/>
+ <xs:element name="import" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ The import tag declares additional global component namespaces that will be in effect for
+ all components.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
<xs:attributeGroup name="attlist.ejbcomponent">
- <xs:attribute name="jndi-name"/>
+ <xs:attribute name="jndi-name" type="components:string">
+ <xs:annotation>
+ <xs:documentation>
+ The JNDI name used to lookup the component. This value is only used with EJB
+ components that don't follow the global JNDI pattern.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:attributeGroup>
-
+
<xs:attributeGroup name="attlist.component">
- <xs:attribute name="name"/>
- <xs:attribute name="class"/>
+ <xs:attribute name="name" type="components:componentName">
+ <xs:annotation>
+ <xs:documentation>The name of component</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="class" type="components:componentName">
+ <xs:annotation>
+ <xs:documentation>The Java class of the component implementation</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
<xs:attribute name="scope">
+ <xs:annotation>
+ <xs:documentation>The scope of the component</xs:documentation>
+ </xs:annotation>
+
<xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="stateless"/>
- <xs:enumeration value="event"/>
- <xs:enumeration value="page"/>
- <xs:enumeration value="conversation"/>
- <xs:enumeration value="session"/>
- <xs:enumeration value="business_process"/>
- <xs:enumeration value="application"/>
- <xs:enumeration value="STATELESS"/>
- <xs:enumeration value="EVENT"/>
- <xs:enumeration value="PAGE"/>
- <xs:enumeration value="CONVERSATION"/>
- <xs:enumeration value="SESSION"/>
- <xs:enumeration value="BUSINESS_PROCESS"/>
- <xs:enumeration value="APPLICATION"/>
- </xs:restriction>
+ <xs:union memberTypes="components:scopeType components:expressionType"></xs:union>
</xs:simpleType>
</xs:attribute>
- <xs:attribute name="precedence" type="xs:int"/>
- <xs:attribute name="installed" default="true" type="xs:boolean"/>
- <xs:attribute name="auto-create" default="false" type="xs:boolean"/>
- <xs:attribute name="startup" default="false" type="xs:boolean"/>
- <xs:attribute name="startupDepends" type="xs:string"/>
+
+ <xs:attribute name="precedence" default="20">
+ <xs:annotation>
+ <xs:documentation>
+ The precedence of the component, expressed as a positive integer. Higher
+ precedence components override lower precedence components. The pre-definied precedence
+ values are:
+
+ BUILT_IN = 0,
+ FRAMEWORK = 10,
+ APPLICATION = 20,
+ DEPLOYMENT = 30,
+ MOCK = 40
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:nonNegativeInteger components:precedenceType components:expressionType"></xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="installed" default="true" type="components:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ The installed value indicates whether or not the component definition should be installed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="auto-create" default="false" type="components:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether or not a components instance should be created when
+ one doesn't exist and when the component is requested using a method that
+ would not normally instantiate a new instance. (such as basic injection)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="startup" default="false" type="components:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates that an instance of the component should be created when the
+ the component's controlling scope starts. This is only used for application and
+ session scope.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="startupDepends" type="components:string">
+ <xs:annotation>
+ <xs:documentation>
+ A list of component names that this component depends on and that should be created before
+ this component is started.
+ </xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:attributeGroup>
+
<xs:element name="factory">
+ <xs:annotation>
+ <xs:documentation>
+ Factories are like a component instances except their values are
+ determined by computing a value or calling a method on another
+ component.
+ </xs:documentation>
+ </xs:annotation>
<xs:complexType>
<xs:attributeGroup ref="components:attlist.factory"/>
</xs:complexType>
</xs:element>
+
<xs:attributeGroup name="attlist.factory">
- <xs:attribute name="name" use="required"/>
- <xs:attribute name="method"/>
- <xs:attribute name="value"/>
+ <xs:attribute name="name" use="required">
+ <xs:annotation>
+ <xs:documentation>The name of the factory component</xs:documentation>
+ </xs:annotation></xs:attribute>
+
+ <xs:attribute name="method">
+ <xs:annotation>
+ <xs:documentation>
+ The method binding used to evauluate the factory value. A factory should have either
+ a method binding or a value binding, but not both.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="value">
+ <xs:annotation>
+ <xs:documentation>
+ The value binding used to evauluate the factory value. A factory should have either
+ a method binding or a value binding, but not both.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
<xs:attribute name="scope">
+ <xs:annotation>
+ <xs:documentation>The scope of the factory value</xs:documentation>
+ </xs:annotation>
+
<xs:simpleType>
- <xs:restriction base="xs:token">
- <xs:enumeration value="stateless"/>
- <xs:enumeration value="event"/>
- <xs:enumeration value="page"/>
- <xs:enumeration value="conversation"/>
- <xs:enumeration value="session"/>
- <xs:enumeration value="business_process"/>
- <xs:enumeration value="application"/>
- <xs:enumeration value="STATELESS"/>
- <xs:enumeration value="EVENT"/>
- <xs:enumeration value="PAGE"/>
- <xs:enumeration value="CONVERSATION"/>
- <xs:enumeration value="SESSION"/>
- <xs:enumeration value="BUSINESS_PROCESS"/>
- <xs:enumeration value="APPLICATION"/>
- </xs:restriction>
+ <xs:union memberTypes="components:scopeType components:expressionType"></xs:union>
</xs:simpleType>
</xs:attribute>
- <xs:attribute name="auto-create" type="xs:boolean"/>
+
+ <xs:attribute name="auto-create" default="false" type="components:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Indicates whether or not the factory value should be created when
+ one doesn't exist and when the component is requested using a method that
+ would not normally instantiate a new instance. (such as basic injection)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:attributeGroup>
+
+
<xs:element name="property">
+ <xs:annotation>
+ <xs:documentation>
+ A generic property. The body contains the value or values.
+ </xs:documentation>
+ </xs:annotation>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="components:key"/>
- <xs:element ref="components:value"/>
+ <xs:element ref="components:key" />
+ <xs:element ref="components:value" />
</xs:choice>
<xs:attributeGroup ref="components:attlist.property"/>
</xs:complexType>
</xs:element>
+
<xs:attributeGroup name="attlist.property">
- <xs:attribute name="name" use="required"/>
+ <xs:attribute name="name" use="required" type="components:string">
+ <xs:annotation>
+ <xs:documentation>The property name</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:attributeGroup>
- <xs:element name="key" type="xs:string"/>
- <xs:element name="value" type="xs:string"/>
+
+ <xs:element name="key" type="components:string">
+ <xs:annotation>
+ <xs:documentation>For map values, the key for the following value</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="value" type="components:string">
+ <xs:annotation>
+ <xs:documentation>
+ For list values, the value to be added.
+ For map values, the value for the preceding key
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
<xs:complexType name="multiValuedProperty">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="components:value"/>
@@ -118,6 +251,9 @@
</xs:complexType>
<xs:element name="event">
+ <xs:annotation>
+ <xs:documentation>An event handler definition</xs:documentation>
+ </xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="components:action"/>
@@ -125,17 +261,97 @@
<xs:attributeGroup ref="components:attlist.event"/>
</xs:complexType>
</xs:element>
+
<xs:attributeGroup name="attlist.event">
- <xs:attribute name="type" use="required"/>
+ <xs:attribute name="type" use="required" type="components:componentNameType" >
+ <xs:annotation>
+ <xs:documentation>The event type to handle</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:attributeGroup>
<xs:element name="action">
+ <xs:annotation>
+ <xs:documentation>The action to be taken when the event occurs</xs:documentation>
+ </xs:annotation>
<xs:complexType>
<xs:attributeGroup ref="components:attlist.action"/>
</xs:complexType>
</xs:element>
+
<xs:attributeGroup name="attlist.action">
- <xs:attribute name="execute" use="required"/>
+ <xs:attribute name="execute" use="required" type="components:elType">
+ <xs:annotation>
+ <xs:documentation>An EL expression to be invoked when the event is invoked</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:attributeGroup>
+ <xs:simpleType name="propertyType">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="@.+@"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="elType">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\#\{.+\}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- place holder - need something more expressive -->
+ <xs:simpleType name="componentNameType">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="expressionType">
+ <xs:union memberTypes="components:elType components:propertyType"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="boolean">
+ <xs:union memberTypes="xs:boolean components:expressionType"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="string">
+ <xs:union memberTypes="xs:string components:expressionType"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="int">
+ <xs:union memberTypes="xs:int components:expressionType"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="componentName">
+ <xs:union memberTypes="components:componentNameType components:expressionType" />
+ </xs:simpleType>
+
+ <xs:simpleType name="scopeType">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="stateless"/>
+ <xs:enumeration value="event"/>
+ <xs:enumeration value="page"/>
+ <xs:enumeration value="conversation"/>
+ <xs:enumeration value="session"/>
+ <xs:enumeration value="business_process"/>
+ <xs:enumeration value="application"/>
+ <xs:enumeration value="STATELESS"/>
+ <xs:enumeration value="EVENT"/>
+ <xs:enumeration value="PAGE"/>
+ <xs:enumeration value="CONVERSATION"/>
+ <xs:enumeration value="SESSION"/>
+ <xs:enumeration value="BUSINESS_PROCESS"/>
+ <xs:enumeration value="APPLICATION"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="precedenceType">
+ <xs:restriction base="xs:int">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="40"/>
+ </xs:restriction>
+ </xs:simpleType>
</xs:schema>
More information about the seam-commits
mailing list