geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gno...@apache.org
Subject svn commit: r772085 - in /geronimo/sandbox/blueprint/blueprint-core/src/main: java/org/apache/geronimo/blueprint/context/Parser.java resources/org/apache/geronimo/blueprint/blueprint.xsd
Date Wed, 06 May 2009 07:22:17 GMT
Author: gnodet
Date: Wed May  6 07:22:16 2009
New Revision: 772085

URL: http://svn.apache.org/viewvc?rev=772085&view=rev
Log:
Update to latest schema

Modified:
    geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java
    geronimo/sandbox/blueprint/blueprint-core/src/main/resources/org/apache/geronimo/blueprint/blueprint.xsd

Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java?rev=772085&r1=772084&r2=772085&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/java/org/apache/geronimo/blueprint/context/Parser.java Wed May  6 07:22:16 2009
@@ -591,18 +591,25 @@
                         service.addRegistrationListener(parseRegistrationListener(e));
                     } else if (nodeNameEquals(e, BEAN_ELEMENT)) {
                         if (service.getServiceComponent() != null) {
-                            throw new ComponentDefinitionException("Only one of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or custom inner element can be set");
+                            throw new ComponentDefinitionException("Only one of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or " + REF_ELEMENT + " element can be set");
                         }
                         service.setServiceComponent((Target) parseBeanMetadata(e, false));
-                    } else {
-                        // TODO: can be ref, reference or a custom element
+                    } else if (nodeNameEquals(e, REF_ELEMENT)) {
+                        if (service.getServiceComponent() != null) {
+                            throw new ComponentDefinitionException("Only one of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or " + REF_ELEMENT + " element can be set");
+                        }
+                        String component = e.getAttribute(COMPONENT_ATTRIBUTE);
+                        if (component == null || component.length() == 0) {
+                            throw new ComponentDefinitionException("Element " + REF_ELEMENT + " must have a valid " + COMPONENT_ATTRIBUTE + " attribute");
+                        }
+                        service.setServiceComponent(new RefMetadataImpl(component));
                     }
                 }
             }
         }
         // Check service
         if (service.getServiceComponent() == null) {
-            throw new ComponentDefinitionException("One of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or custom inner element must be set");
+            throw new ComponentDefinitionException("One of " + REF_ATTRIBUTE + " attribute, " + BEAN_ELEMENT + " element or " + REF_ELEMENT + " element must be set");
         }
         
         ComponentMetadata s = service;

Modified: geronimo/sandbox/blueprint/blueprint-core/src/main/resources/org/apache/geronimo/blueprint/blueprint.xsd
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/blueprint-core/src/main/resources/org/apache/geronimo/blueprint/blueprint.xsd?rev=772085&r1=772084&r2=772085&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/blueprint-core/src/main/resources/org/apache/geronimo/blueprint/blueprint.xsd (original)
+++ geronimo/sandbox/blueprint/blueprint-core/src/main/resources/org/apache/geronimo/blueprint/blueprint.xsd Wed May  6 07:22:16 2009
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
     /*
-    * $Revision: 6890 $
+    * $Revision: 6938 $
     *
     * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
     *
@@ -18,415 +18,1105 @@
     * limitations under the License.
     */
     -->
-<xsd:schema xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-            targetNamespace="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-            elementFormDefault="qualified"
-            attributeFormDefault="unqualified"
-            version="1.0.0">
+<xsd:schema xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    targetNamespace="http://www.osgi.org/xmlns/blueprint/v1.0.0" elementFormDefault="qualified"
+    attributeFormDefault="unqualified" version="1.0.0">
+
+    <xsd:annotation>
+        <xsd:documentation>
+        <![CDATA[
+
+      This is the XML Schema for the OSGi Blueprint service 1.0.0
+      development descriptor.  Blueprint configuration files
+      using this schema must indicate the schema using the
+      blueprint/v1.0.0 namespace.  For example,
+
+      <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+      if used as a qualified namespace, "bp:" is the recommended
+      namespace prefix.
+      ]]>
+        </xsd:documentation>
+    </xsd:annotation>
 
     <!-- Schema elements for core component declarations -->
 
     <xsd:complexType name="Tcomponent" abstract="true">
-        <xsd:attribute name="id" type="xsd:ID"/>
+        <xsd:annotation>
+            <xsd:documentation>
+            <![CDATA[
+
+          The Tcomponent type is the base type for top-level
+          Blueprint components.  The <bean> <reference>, <service>,
+          <ref-set>, and <ref-list> elements are all derived from
+          the Tcomponent type.  This type defines an id attributre
+          that is used create references between different components.
+          Component elements can also be inlined within other component
+          definitions.  The id attribute is not valid when inliine.
+          ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:attribute name="id" type="xsd:ID" />
     </xsd:complexType>
 
-    <xsd:element name="blueprint" type="Tblueprint"/>
+    <xsd:element name="blueprint" type="Tblueprint">
+        <xsd:annotation>
+            <xsd:documentation>
+            <![CDATA[
+
+          The <blueprint> element is the root element for a blueprint
+          configuration file.  A blueprint configuration has two sections.
+          The first section (contained within <type-converters> elements)
+          identifies components that are used for converting values into
+          different target types.  The type converters are optional, so
+          the file does not need to specify a type converter section.
+
+          Following the type converters are the component definitions.
+          Components are <bean>, <service>, <reference>, <ref-set>, and
+          <ref-list> elements that identify the bundle components that will
+          be managed by the blueprint service.
+          ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+    </xsd:element>
 
     <xsd:complexType name="Tblueprint">
         <xsd:sequence>
-            <xsd:element name="description" type="Tdescription" minOccurs="0"/>
-            <xsd:element name="type-converters" type="Ttype-converters" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="description" type="Tdescription" minOccurs="0" />
+            <xsd:element name="type-converters" type="Ttype-converters" minOccurs="0"
+                maxOccurs="1" />
             <!-- top-level components -->
             <xsd:choice minOccurs="0" maxOccurs="unbounded">
-                <xsd:group ref="allComponents"/>
+                <xsd:group ref="allComponents" />
             </xsd:choice>
         </xsd:sequence>
 
         <!-- Defaults-->
-        <xsd:attribute name="default-lazy-init" default="false"
-            type="Tlazy-init"/>
-        <xsd:attribute name="default-init-method" type="Tmethod"/>
-        <xsd:attribute name="default-destroy-method" type="Tmethod"/>
-        <xsd:attribute name="default-timeout" type="xsd:unsignedLong"
-            default="300000"/>
-        <xsd:attribute name="default-availability" type="Tavailability"
-            default="mandatory"/>
-        <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        <xsd:attribute name="default-lazy-init" default="false" type="Tlazy-init">
+            <xsd:annotation>
+                <xsd:documentation>
+                  <![CDATA[
+                  Specifies the default lazy-init setting that will be defined
+                  for <bean> components.  If not specified, the global
+                  default is "false".  Individual <bean> components may
+                  override the default
+                  ]]>
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="default-init-method" type="Tmethod">
+            <xsd:annotation>
+                <xsd:documentation>
+                  <![CDATA[
+                  Specifies the default init-method that will be defined
+                  for <bean> components.  If not specified, no default
+                  init-method is defined.  It is not an error for a
+                  bean to not implement the indicated default init-method.
+                  The value will be ignored.  A bean can also specify
+                  a different init-method or disable the init-method
+                  call by specifying an init-method value of "".
+                  ]]>
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="default-destroy-method" type="Tmethod">
+            <xsd:annotation>
+                <xsd:documentation>
+                  <![CDATA[
+                  Specifies the default destroy-method that will be defined
+                  for <bean> components.  If not specified, no default
+                  destroy-method is defined.  It is not an error for a
+                  bean to not implement the indicated default destroy-method.
+                  The value will be ignored.  A bean can also specify
+                  a different destroy-method or disable the destroy-method
+                  call by specifying a destroy-method value of "".
+                  ]]>
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="default-timeout" type="Ttimeout" default="300000">
+            <xsd:annotation>
+                <xsd:documentation>
+                  <![CDATA[
+                  Specifies the default timeout value to be used when operations
+                  are invoked on unstatisfied service references.  If the
+                  reference does not change to a satisfied state within the timeout
+                  window, an error is raised on the method invocation.  The
+                  default timeout value is 300000 milliseconds and individual
+                  <reference> element can override the specified configuration
+                  default.
+                  ]]>
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="default-availability" type="Tavailability" default="mandatory">
+            <xsd:annotation>
+                <xsd:documentation>
+                  <![CDATA[
+                  Specifies the default availability value to be used for
+                  <reference>, <ref-set>, and <ref-list> components.  The
+                  normal default is "mandatory", and can be changed by individual
+                  service reference components.
+                  ]]>
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:anyAttribute namespace="##other" processContents="lax" />
     </xsd:complexType>
 
     <xsd:complexType name="Ttype-converters">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The type used for the <type-converters> element.  The
+              <type-converters> section is a set of <bean>, <ref>, or
+              <reference> elements that identify the type convert components
+              that will ference components.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:group ref="targetComponent"/>
+            <xsd:group ref="targetComponent" />
         </xsd:choice>
     </xsd:complexType>
 
-	<!-- Components that provide a reasonable target for injection
+    <!-- Components that provide a reasonable target for injection
 	used for listeners, etc. -->
 
-	<xsd:group name="targetComponent">
-		<xsd:choice>
-			<xsd:element name="bean" type="Tbean"/>
-			<xsd:element name="reference" type="Treference"/>
-            <xsd:element name="ref" type="Tref"/>
-			<xsd:any namespace="##other" processContents="strict" minOccurs="0"
-				maxOccurs="unbounded"/>
-		</xsd:choice>
-	</xsd:group>
-
-	<xsd:group name="allComponents">
-		<xsd:choice>
-			<xsd:element name="service" type="Tservice"/>
-			<xsd:element name="ref-list" type="Tref-collection"/>
-			<xsd:element name="ref-set" type="Tref-collection"/>
-			<xsd:group ref="targetComponent"/>
-		</xsd:choice>
-	</xsd:group>
+    <xsd:group name="targetComponent">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              A targetcomponent is one that can be a target for a
+              listener, registration-listener, or type-converter element.
+              This is used in contexts where the requirement is a single
+              provided object that will implement a particular interface.
+              The provided object is obtained either from a <ref> element
+              or inline (<bean> or <reference>).
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice>
+            <xsd:element name="bean" type="Tbean" />
+            <xsd:element name="reference" type="Treference" />
+            <xsd:element name="ref" type="Tref" />
+            <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
+        </xsd:choice>
+    </xsd:group>
+
+    <xsd:group name="allComponents">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              allComponents is used in contexts where all component element
+              types are value.  The set of component elements contains
+              <bean>, <service>, <reference>, <ref-set>, and <ref-list>.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice>
+            <xsd:element name="service" type="Tservice" />
+            <xsd:element name="ref-list" type="Tref-collection" />
+            <xsd:element name="ref-set" type="Tref-collection" />
+            <xsd:group ref="targetComponent" />
+        </xsd:choice>
+    </xsd:group>
 
     <xsd:group name="beanElements">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              A reusable definition of the elements allowed on a <bean> element.
+              This definition is also used by the <bpcm:managed-component>
+              element used in the blueprint-cm schema.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:sequence>
-            <xsd:element name="description" type="Tdescription" minOccurs="0"/>
+            <xsd:element name="description" type="Tdescription" minOccurs="0" />
             <xsd:choice minOccurs="0" maxOccurs="unbounded">
-                <xsd:element name="argument" type="Targument"/>
-                <xsd:element name="property" type="Tproperty"/>
+                <xsd:element name="argument" type="Targument" />
+                <xsd:element name="property" type="Tproperty" />
                 <xsd:any namespace="##other" processContents="strict" minOccurs="0"
-                         maxOccurs="unbounded"/>
+                    maxOccurs="unbounded" />
             </xsd:choice>
         </xsd:sequence>
     </xsd:group>
 
     <xsd:complexType name="Tbean">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The type defintion for a <bean> component.
+              This definition is also used by the <bpcm:managed-component>
+              element used in the blueprint-cm schema.  The <bean> attributes
+              provide the characteristics for how to create a bean instance.
+              Constructor arguments and injected properties are specified
+              via child <argument> and <property> elements.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:complexContent>
             <xsd:extension base="Tcomponent">
-                <xsd:group ref="beanElements"/>
-				<xsd:attribute name="class" type="Tclass"/>
-				<xsd:attribute name="depends-on" type="xsd:normalizedString"/>
-				<xsd:attribute name="init-method" type="TnullableMethod"/>
-				<xsd:attribute name="destroy-method" type="TnullableMethod"/>
-				<xsd:attribute name="factory-method" type="Tmethod"/>
-				<xsd:attribute name="factory-component" type="Tidref"/>
-
-				<xsd:attribute name="scope">
-					<xsd:simpleType>
-						<xsd:restriction base="xsd:NMTOKEN">
-							<xsd:enumeration value="singleton"/>
-							<xsd:enumeration value="prototype"/>
-							<xsd:enumeration value="bundle"/>
-						</xsd:restriction>
-					</xsd:simpleType>
-				</xsd:attribute>
-
-				<xsd:attribute name="lazy-init" type="Tlazy-init" default="default"/>
-                <xsd:anyAttribute namespace="##other" processContents="lax"/>
+                <xsd:group ref="beanElements" />
+                <xsd:attribute name="class" type="Tclass" />
+                <xsd:attribute name="depends-on" type="TdependsOn" />
+                <xsd:attribute name="init-method" type="TnullableMethod" />
+                <xsd:attribute name="destroy-method" type="TnullableMethod" />
+                <xsd:attribute name="factory-method" type="Tmethod" />
+                <xsd:attribute name="factory-component" type="Tidref" />
+
+                <xsd:attribute name="scope">
+                    <xsd:simpleType>
+                        <xsd:restriction base="xsd:NMTOKEN">
+                            <xsd:enumeration value="singleton" />
+                            <xsd:enumeration value="prototype" />
+                            <xsd:enumeration value="bundle" />
+                        </xsd:restriction>
+                    </xsd:simpleType>
+                </xsd:attribute>
+
+                <xsd:attribute name="lazy-init" type="Tlazy-init">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          The lazy-init attribute for this <bean>.  This can either
+                          be "eager" ("false") or "lazy" ("true").  If not specified, it
+                          defaults to default-lazy-init attribute of the enclosing
+                          <blueprint> element.  The default, default is "eager"
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+                <xsd:anyAttribute namespace="##other" processContents="lax" />
             </xsd:extension>
         </xsd:complexContent>
     </xsd:complexType>
 
     <xsd:complexType name="Targument">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              An argument used to create an object defined by a <bean>
+              component.  The <argument> elements are the arguments for the
+              bean class constructor or passed to the bean factory method.
+
+              The type, if specified, is used to disambiguate the constructor
+              or method signature.  Arguments may also be matched up with
+              arguments by explicitly specifying the index position.  If the
+              index is used, then all <argument> elements for the bean must
+              also specify the index.
+
+              The value and ref attributes are convenience shortcuts to make
+              the <argument> tag easier to code.  A fuller set of injected
+              values and types can be specified using one of the "value"
+              type elements.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:sequence>
-            <xsd:element name="description" type="Tdescription" minOccurs="0"/>
-            <xsd:group ref="value"/>
+            <xsd:element name="description" type="Tdescription" minOccurs="0" />
+            <xsd:group ref="value" />
         </xsd:sequence>
-        <xsd:attribute name="index" type="xsd:nonNegativeInteger"/>
-        <xsd:attribute name="type" type="Tclass"/>
-        <xsd:attribute name="ref" type="Tidref"/>
-        <xsd:attribute name="value" type="TstringValue"/>
+        <xsd:attribute name="index" type="xsd:nonNegativeInteger" />
+        <xsd:attribute name="type" type="Tclass" />
+        <xsd:attribute name="ref" type="Tidref" />
+        <xsd:attribute name="value" type="TstringValue" />
     </xsd:complexType>
 
     <xsd:complexType name="Tproperty">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              A property that will be injected into a created <bean>
+              component.  The <property> elements correspond to named
+              JavaBean setting methods for a created bean object.
+
+              The value and ref attributes are convenience shortcuts to make
+              the <argument> tag easier to code.  A fuller set of injected
+              values and types can be specified using one of the "value"
+              type elements.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:sequence>
-            <xsd:element name="description" type="Tdescription" minOccurs="0"/>
-            <xsd:group ref="value"/>
+            <xsd:element name="description" type="Tdescription" minOccurs="0" />
+            <xsd:group ref="value" />
         </xsd:sequence>
-        <xsd:attribute name="name" type="Tmethod" use="required"/>
-        <xsd:attribute name="ref" type="Tidref"/>
-        <xsd:attribute name="value" type="TstringValue"/>
+        <xsd:attribute name="name" type="Tmethod" use="required" />
+        <xsd:attribute name="ref" type="Tidref" />
+        <xsd:attribute name="value" type="TstringValue" />
     </xsd:complexType>
 
     <xsd:complexType name="Tkey">
-        <xsd:group ref="nonNullValue"/>
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The Tkey type defines the element types that are permitted
+              for Map key situations.  These can be any of the "value"
+              types other than the <null> element.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:group ref="nonNullValue" />
+    </xsd:complexType>
+
+    <!-- reference -->
+    <xsd:complexType name="Treference">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The Treference type defines the <reference> element.  These
+              are instances of the TserviceReference type, with the addition
+              of a timeout attribute.  If the timeout is not specified,
+              the default-timeout value is inherited from the encapsulating
+              <blueprint> definition.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:complexContent>
+            <xsd:extension base="TserviceReference">
+                <xsd:attribute name="timeout" use="optional" type="Ttimeout" />
+            </xsd:extension>
+        </xsd:complexContent>
     </xsd:complexType>
 
-	<!-- reference -->
-	<xsd:complexType name="Treference">
-		<xsd:complexContent>
-			<xsd:extension base="TserviceReference">
-				<xsd:attribute name="timeout" use="optional" type="xsd:unsignedLong"/>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<!-- ref-set, ref-list -->
-	<xsd:complexType name="Tref-collection">
-		<xsd:complexContent>
-			<xsd:extension base="TserviceReference">
-				<xsd:sequence>
-                     <xsd:element name="comparator" type="Tcomparator" minOccurs="0" maxOccurs="1"/>
+    <!-- ref-set, ref-list -->
+    <xsd:complexType name="Tref-collection">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The Tref-collection builds in the characteristics of the
+              TserviceReference type to define characteristics of the <ref-set>
+              and <ref-list> elements.  This adds in the characteristics that
+              only apply to collections of references (e.g., sorting).
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:complexContent>
+            <xsd:extension base="TserviceReference">
+                <xsd:sequence>
+                    <xsd:element name="comparator" type="Tcomparator" minOccurs="0"
+                        maxOccurs="1">
+                        <xsd:annotation>
+                            <xsd:documentation>
+                               <![CDATA[
+                               The <comparator> element defines a comparator instance that will
+                               be used to sort the constructed reference collection.
+                               ]]>
+                            </xsd:documentation>
+                        </xsd:annotation>
+                    </xsd:element>
                 </xsd:sequence>
 
-				<xsd:attribute name="comparator-ref" type="xsd:token"
-					use="optional"/>
+                <xsd:attribute name="comparator-ref" type="xsd:token" use="optional">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          A shortcut alternative to using a <comparator> element when the
+                          comparator target is a top-level <bean> or <service> element.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+
+                <xsd:attribute name="member-type" use="optional">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          Indicates the type of object that will be placed within the
+                          reference collection.  "service-instance" indicates the collection
+                          contains blueprint proxies for imported services.  "service-reference"
+                          indicates the collection contains ServiceReferenc objects matching
+                          the target service type.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                    <xsd:simpleType>
+                        <xsd:restriction base="xsd:NMTOKEN">
+                            <xsd:enumeration value="service-instance" />
+                            <xsd:enumeration value="service-reference" />
+                        </xsd:restriction>
+                    </xsd:simpleType>
+                </xsd:attribute>
+
+                <xsd:attribute name="ordering-basis" use="optional">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          Indicates how collection sorting is handled.  An ordering
+                          basis of "service" indicates sorting is handled using the service
+                          instance.  "service-reference" indicates sorting is accomplished using
+                          the ServiceReference objects for the contained services.  The default
+                          value is an implicit "none", indicating no sorting should be performed.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                    <xsd:simpleType>
+                        <xsd:restriction base="xsd:NMTOKEN">
+                            <xsd:enumeration value="service" />
+                            <xsd:enumeration value="service-reference" />
+                        </xsd:restriction>
+                    </xsd:simpleType>
+                </xsd:attribute>
+
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <!-- Reference base class -->
+    <xsd:complexType name="TserviceReference">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TserviceReference is the base element type used for <reference>,
+              <ref-set>, and <ref-list> elements.  This type defines all of the
+              characteristics common to both sorts of references.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:complexContent>
+            <xsd:extension base="Tcomponent">
+                <xsd:sequence>
+                    <xsd:element name="description" type="Tdescription" minOccurs="0" />
+                    <xsd:element name="interfaces" minOccurs="0" maxOccurs="1" type="Tinterfaces">
+                        <xsd:annotation>
+                            <xsd:documentation>
+                          <![CDATA[
+                          The definition of the required interfaces that the obtained services
+                          must implement.   There is also a shortcut attribute defined for
+                          the typical case of just a single interface class.
+                          ]]>
+                            </xsd:documentation>
+                        </xsd:annotation>
+                    </xsd:element>
+
+                    <!-- listener -->
+                    <xsd:element name="listener" type="TReferenceListener" minOccurs="0"
+                        maxOccurs="unbounded">
+                        <xsd:annotation>
+                            <xsd:documentation>
+                              <![CDATA[
+                              A definition of a listener that will watch for bind/unbind events
+                              associated with the service reference.  The targetted listener can
+                              be a <ref> to a <bean> or <reference> element, or an inline
+                              <bean> or <reference>.
+                              ]]>
+                            </xsd:documentation>
+                        </xsd:annotation>
+                    </xsd:element>
+                </xsd:sequence>
 
-				<xsd:attribute name="member-type" use="optional">
-					<xsd:simpleType>
-						<xsd:restriction base="xsd:NMTOKEN">
-							<xsd:enumeration value="service-instance"/>
-							<xsd:enumeration value="service-reference"/>
-						</xsd:restriction>
-					</xsd:simpleType>
-				</xsd:attribute>
-
-				<xsd:attribute name="ordering-basis" use="optional">
-					<xsd:simpleType>
-						<xsd:restriction base="xsd:NMTOKEN">
-							<xsd:enumeration value="service"/>
-							<xsd:enumeration value="service-reference"/>
-						</xsd:restriction>
-					</xsd:simpleType>
-				</xsd:attribute>
-
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<!-- Reference base class -->
-	<xsd:complexType name="TserviceReference">
-		<xsd:complexContent>
-			<xsd:extension base="Tcomponent">
-			    <xsd:sequence>
-   				<xsd:element name="interfaces" minOccurs="0" maxOccurs="1"
-   					type="Tinterfaces"/>
-
-     				<!-- listener ### why is this called listerm and not reference listener? -->
-     				<xsd:element name="listener" type="TReferenceListener" minOccurs="0"
-   	    				maxOccurs="unbounded"/>
-   				</xsd:sequence>
-
-				<xsd:attribute name="interface" use="optional" type="Tclass"/>
-				<xsd:attribute name="filter" use="optional" type="xsd:normalizedString"/>
-				<xsd:attribute name="component-name" type="Tidref"
-					use="optional"/>
-				<xsd:attribute name="availability" type="Tavailability"
-					use="optional" default="mandatory"/>
-                <xsd:anyAttribute namespace="##other" processContents="lax"/>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
+                <xsd:attribute name="interface" use="optional" type="Tclass" />
+                <xsd:attribute name="filter" use="optional" type="xsd:normalizedString">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          A filter string used to narrow the search for a matching service
+                          reference.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+                <xsd:attribute name="component-name" type="Tidref" use="optional">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          An optional specifier that can be used to match a service definition
+                          to one created by a specific blueprint component.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+                <xsd:attribute name="availability" type="Tavailability" use="optional">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          Use to control the initial processing of service references at
+                          blueprint context startup.  "mandatory" indicates the context
+                          should not start unless the service is available within the
+                          specified context startup period.  "optional" indicates availability
+                          of this service is not a requirement at bundle startup.
+
+                          NOTE:  No default is specified because this can be overridden
+                          by the default-availability attribute of the <blueprint> element.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+                <xsd:anyAttribute namespace="##other" processContents="lax" />
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
 
     <xsd:complexType name="TReferenceListener">
-        <xsd:group ref="targetComponent"/>
-        <xsd:attribute name="ref" type="xsd:token"
-            use="optional"/>
-        <xsd:attribute name="bind-method" type="Tmethod"
-            use="required"/>
-        <xsd:attribute name="unbind-method" type="Tmethod"
-            use="required"/>
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TReferenceListener defines a reference listener that is attached
+              to a <reference>, <ref-set>, or <ref-list> element.  The listener
+              object can be specified as a <ref> or as an inline <bean> or
+              <reference> component.  Listener events are mapped to the indicated
+              bind or unbind methods.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:group ref="targetComponent" />
+        <xsd:attribute name="ref" type="xsd:token" use="optional" />
+        <xsd:attribute name="bind-method" type="Tmethod" use="required" />
+        <xsd:attribute name="unbind-method" type="Tmethod" use="required" />
     </xsd:complexType>
 
     <xsd:simpleType name="Tlazy-init">
-        <xsd:restriction base="xsd:NMTOKEN">
-            <xsd:enumeration value="false"/>
-            <xsd:enumeration value="true"/>
-            <xsd:enumeration value="default"/>
-        </xsd:restriction>
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tlazy-init defines a lazy-init type.  This is used in this
+              schema by the <blueprint> default-lazy-init attribute and the
+              <bean> lazy-init attribute.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:boolean" />
     </xsd:simpleType>
 
     <xsd:simpleType name="Tavailability">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tlazy-init defines an availability attribute type.  This is used in this
+              schema by the <blueprint> default-availability attribute and the
+              <reference>, <ref-set>, and <ref-list> availability attribute.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:restriction base="xsd:token">
-            <xsd:enumeration value="mandatory"/>
-            <xsd:enumeration value="optional"/>
+            <xsd:enumeration value="mandatory" />
+            <xsd:enumeration value="optional" />
         </xsd:restriction>
     </xsd:simpleType>
 
     <xsd:complexType name="Tcomparator">
-        <xsd:group ref="targetComponent"/>
+        <xsd:group ref="targetComponent" />
     </xsd:complexType>
 
     <!-- service -->
 
     <xsd:complexType name="Tservice">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tservice is the type for services exported by this blueprint bundle.
+              Services are sourced by either a <ref> to a <bean> component or an
+              <inline> bean component.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:complexContent>
             <xsd:extension base="Tcomponent">
                 <xsd:sequence>
-                	<xsd:group ref="serviceElements"/>
-                	<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
-                    	processContents="lax"/>
+                    <xsd:group ref="serviceElements" />
+                    <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
+                        processContents="lax" />
                 </xsd:sequence>
-                <xsd:attribute name="interface" type="Tclass" use="optional"/>
-                <xsd:attribute name="ref" type="Tidref" use="optional"/>
-                <xsd:attribute name="depends-on" type="xsd:normalizedString" use="optional"/>
-                <xsd:attribute name="auto-export" type="TautoExportModes" default="disabled"/>
-                <xsd:attribute name="ranking" type="xsd:int" default="0"/>
-                <xsd:anyAttribute namespace="##other" processContents="lax"/>
+                <xsd:attribute name="interface" type="Tclass" use="optional" />
+                <xsd:attribute name="ref" type="Tidref" use="optional" />
+                <xsd:attribute name="depends-on" type="TdependsOn" use="optional">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          depends-on identifies (by name) other components that this service
+                          depends on.  The service will only be registered after the
+                          depends-on services are successfully completed.  Also, if there
+                          are <reference>, <ref-list>, <ref-set> elements with unstatisfied
+                          manadatory references, then the depends-on relationship will also
+                          be used to determine whether this service is registered or
+                          unregistered.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+                <xsd:attribute name="auto-export" type="TautoExportModes" default="disabled" />
+                <xsd:attribute name="ranking" type="xsd:int" default="0">
+                    <xsd:annotation>
+                        <xsd:documentation>
+                          <![CDATA[
+                          A service ranking value that is added to the service properties
+                          the service will be published with.
+                          ]]>
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:attribute>
+                <xsd:anyAttribute namespace="##other" processContents="lax" />
             </xsd:extension>
         </xsd:complexContent>
     </xsd:complexType>
 
     <xsd:group name="serviceElements">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              A set of service elements that is shared by the <service> element
+              in this schema and the <managed-service-factory> element in the
+              blueprint-cm schema.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:sequence>
-        	<xsd:element name="interfaces" type="Tinterfaces" minOccurs="0"/>
-
-    		<!-- #### I'm not sure this should be a Tmap.  Service properties can only
-                 have string keys, and Map can have any type.  I suspect this needs its
-                 own type -->
-            <xsd:element name="service-properties" type="Tmap" minOccurs="0"/>
-         	<xsd:element name="registration-listener" type="TregistrationListener" minOccurs="0" maxOccurs="unbounded"/>
-          	<xsd:element name="bean" type="Tbean" minOccurs="0" maxOccurs="1"/>
+            <xsd:element name="description" type="Tdescription" minOccurs="0" />
+            <xsd:element name="interfaces" type="Tinterfaces" minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+                      <![CDATA[
+                      A collection of one or more interface class names this service
+                      will be registered under.  The <service> element also has
+                      a shortcut interface attribute for the usual case of just
+                      a single interface being used.  This also cannot be used if
+                      the auto-export attribute is used.
+                      ]]>
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+
+            <xsd:element name="service-properties" type="TserviceProperties" minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+                      <![CDATA[
+                      The service provided when the service is registered.  The service
+                      properties are similar to map elements, but the keys must always
+                      be strings, and the values are required to be in a narrower range.
+                      ]]>
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="registration-listener" type="TregistrationListener"
+                minOccurs="0" maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+                      <![CDATA[
+                      A set of 0 or more registration listeners attached to this service
+                      component.  The registration listeners will be notified whenever the
+                      service is registered or unregistered from the framework service
+                      registry.
+                      ]]>
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:choice minOccurs="0" maxOccurs="1">
+                <xsd:annotation>
+                    <xsd:documentation>
+                      <![CDATA[
+                      These are the two types of elements that can be bound as a service.
+                      This will be either a <ref> to a <bean> component or an inline <bean> component.
+                      ]]>
+                    </xsd:documentation>
+                </xsd:annotation>
+                <xsd:element name="bean" type="Tbean" />
+                <xsd:element name="ref" type="Tref" />
+            </xsd:choice>
         </xsd:sequence>
     </xsd:group>
 
 
     <xsd:complexType name="TregistrationListener">
-        <xsd:group ref="targetComponent"/>
-        <xsd:attribute name="ref" type="Tidref"
-            use="optional"/>
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              A registration listener definition.  The target registration listener
+              can be either a <ref> to a <bean> or <service> component, or an inline
+              <bean> or <service> component definition.  The registration-method and
+              unregistration-method attributes define the methods that will be called
+              for the respective events.
+
+              For the very common case of using a <ref> to a listener component, the
+              ref attribute may also be used as a shortcut.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:group ref="targetComponent" />
+        <xsd:attribute name="ref" type="Tidref" use="optional" />
         <!--  ### why are there both required? -->
-        <xsd:attribute name="registration-method"
-            type="Tmethod" use="required"/>
-        <xsd:attribute name="unregistration-method"
-            type="Tmethod" use="required"/>
+        <xsd:attribute name="registration-method" type="Tmethod" use="required" />
+        <xsd:attribute name="unregistration-method" type="Tmethod" use="required" />
     </xsd:complexType>
 
-	<!--
+    <!--
 	Values
 	-->
 
-	<xsd:group name="value">
+    <xsd:group name="value">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The set of "value" types that can be used in any place a value
+              can be specified.  This set includes the <ref> and <idref> elements, any of the
+              component types (<bean>, <service>, etc.) as inline components, the
+              generic <value> element for types sourced from string values, any of the
+              collection types (<set>, <list>, <array>, <map>, <props>), and the
+              <null> type to inject a null value.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:choice>
-			<xsd:group ref="nonNullValue"/>
-            <xsd:element name="null" type="Tnull"/>
-		</xsd:choice>
-	</xsd:group>
+            <xsd:group ref="nonNullValue" />
+            <xsd:element name="null" type="Tnull" />
+        </xsd:choice>
+    </xsd:group>
 
     <xsd:complexType name="Tnull">
-    	<xsd:choice minOccurs="0" maxOccurs="unbounded"/>
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The definition for a <null> value type.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice minOccurs="0" maxOccurs="unbounded" />
     </xsd:complexType>
 
-	<xsd:group name="nonNullValue">
-		<xsd:sequence>
-			<xsd:group ref="allComponents"/>
-			<xsd:choice minOccurs="0" maxOccurs="1">
-				<xsd:element name="idref" type="Tref"/>
-				<xsd:element name="value" type="Tvalue"/>
-				<xsd:element name="list" type="Tcollection"/>
-				<xsd:element name="set" type="Tcollection"/>
-				<xsd:element name="map" type="Tmap"/>
-				<xsd:element name="array" type="Tcollection"/>
-				<xsd:element name="props" type="Tprops"/>
-			</xsd:choice>
-		</xsd:sequence>
-	</xsd:group>
-
-	<xsd:complexType name="Tref">
-		<xsd:complexContent>
-			<!--- ### what is this restriction doing ??? -->
-			<xsd:restriction base="xsd:anyType">
-				<xsd:attribute name="component" type="Tidref" use="required"/>
-			</xsd:restriction>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="Tvalue" mixed="true">
-		<xsd:attribute name="type" type="Tclass"/>
-	</xsd:complexType>
-
-	<!-- Collection Values -->
-
-	<xsd:complexType name="Tcollection">
-		<xsd:complexContent>
-			<xsd:extension base="TtypedCollection">
-				<xsd:group ref="value" minOccurs="0" maxOccurs="unbounded"/>
-			</xsd:extension>
-		</xsd:complexContent>
-	</xsd:complexType>
-
-	<xsd:complexType name="Tprops">
-	    <xsd:sequence>
-   			<xsd:element name="prop" type="Tprop" minOccurs="0" maxOccurs="unbounded"/>
-   		</xsd:sequence>
-	</xsd:complexType>
+    <xsd:group name="nonNullValue">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The set of "value" types that can be used in any place a non-null value
+              can be specified.  This set includes the <ref> and <idref> elements, any of the
+              component types (<bean>, <service>, etc.) as inline components, the
+              generic <value> element for types sourced from string values, and any of the
+              collection types (<set>, <list>, <array>, <map>, <props>).
+
+              The <null> type is NOT a member of this group.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="allComponents" />
+            <xsd:choice minOccurs="0" maxOccurs="1">
+                <xsd:element name="idref" type="Tref" />
+                <xsd:element name="value" type="Tvalue" />
+                <xsd:element name="list" type="Tcollection" />
+                <xsd:element name="set" type="Tcollection" />
+                <xsd:element name="map" type="Tmap" />
+                <xsd:element name="array" type="Tcollection" />
+                <xsd:element name="props" type="Tprops" />
+            </xsd:choice>
+        </xsd:sequence>
+    </xsd:group>
+
+    <xsd:complexType name="Tref">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tref is the type used for <ref> elements.  This specifies a required
+              component id for the reference component.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:attribute name="component" type="Tidref" use="required" />
+    </xsd:complexType>
+
+    <xsd:complexType name="Tvalue" mixed="true">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tvalue is the type used for <value> elements.  The <value> element
+              is used for types that can be created from a single string value.
+              The string value is the data value for the element.  The optional
+              type attribute allows a target conversion value to be explicitly
+              specified.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:attribute name="type" type="Tclass" use="optional" />
+    </xsd:complexType>
+
+    <!-- Collection Values -->
+
+    <xsd:complexType name="TtypedCollection">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TtypeCollection defines comment attributes shared among different
+              collection types that allow a default value type to be specified.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:attribute name="value-type" type="Tclass" />
+    </xsd:complexType>
+
+
+    <xsd:complexType name="Tcollection">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tcollection is the base schema type for different ordered collection
+              types.  This is shared between the <array>, <list>, and <set> elements.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:complexContent>
+            <xsd:extension base="TtypedCollection">
+                <xsd:group ref="value" minOccurs="0" maxOccurs="unbounded" />
+            </xsd:extension>
+        </xsd:complexContent>
+    </xsd:complexType>
+
+    <xsd:complexType name="Tprops">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tprops is the type used by the <props> value element.  The prop elements
+              are pairs of string-valued keys and values.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="prop" type="Tprop" minOccurs="0" maxOccurs="unbounded" />
+        </xsd:sequence>
+    </xsd:complexType>
 
     <xsd:complexType name="Tprop" mixed="true">
-        <xsd:attribute name="key" type="TstringValue" use="required"/>
-        <xsd:attribute name="value" type="TstringValue" use="optional"/>
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tprop is a single property element for a <props> value type.  The property
+              value can be specified using either the attribute, or as value data for
+              the property element.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:attribute name="key" type="TstringValue" use="required" />
+        <xsd:attribute name="value" type="TstringValue" use="optional" />
     </xsd:complexType>
 
     <!-- 'map' element type -->
     <xsd:complexType name="Tmap">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tmap is the base type used for <map> elements.  A map may have a
+              default value type specified, so it inherits from the TtypeCollection
+              type.  A key type can also be specified, and the map members are
+              created from the entry elements, which require a key/value pair.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:complexContent>
             <xsd:extension base="TtypedCollection">
                 <xsd:sequence>
-                	<xsd:element name="entry" type="Tentry" minOccurs="0" maxOccurs="unbounded"/>
+                    <xsd:element name="entry" type="TmapEntry" minOccurs="0" maxOccurs="unbounded" />
                 </xsd:sequence>
-                <xsd:attribute name="key-type" type="Tclass"/>
+                <xsd:attribute name="key-type" type="Tclass" />
             </xsd:extension>
         </xsd:complexContent>
     </xsd:complexType>
 
     <!-- 'entry' element type -->
-    <xsd:complexType name="Tentry">
+    <xsd:complexType name="TmapEntry">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TmapEntry is used for <entry> elements nested inside of a <map> element.
+              Each <entry> instance defines a key/value pair that will be added to the
+              Map.  Both the keys and values may be arbitrary types.  Keys must not
+              be <null> but <null> is permitted for entry values.  A default type
+              can be specified for both the keys and the values, but individual keys
+              or values can override the default.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:sequence>
-            <xsd:element name="key" type="Tkey" minOccurs="0"/>
-            <xsd:group ref="value"/>
+            <xsd:element name="key" type="Tkey" minOccurs="0" />
+            <xsd:group ref="value" />
         </xsd:sequence>
-        <xsd:attribute name="key" type="TstringValue"/>
-        <xsd:attribute name="key-ref" type="Tidref"/>
-        <xsd:attribute name="value" type="TstringValue"/>
-        <xsd:attribute name="value-ref" type="Tidref"/>
-    </xsd:complexType>
-
-	<xsd:complexType name="TtypedCollection">
-    	<xsd:attribute name="value-type" type="Tclass"/>
-	</xsd:complexType>
-
-	<!-- General types -->
-
-	<xsd:complexType name="Tdescription" mixed="true">
-		<xsd:choice minOccurs="0" maxOccurs="unbounded"/>
-	</xsd:complexType>
-
-	<xsd:complexType name="Tinterfaces">
-		<xsd:choice minOccurs="1" maxOccurs="unbounded">
-			<xsd:element name="value" type="Tclass"/>
-		</xsd:choice>
-	</xsd:complexType>
-
-	<!-- Should be used for all attributes and elements that refer to classes -->
-	<xsd:simpleType name="Tclass">
-		<xsd:restriction base="xsd:NCName"/>
-	</xsd:simpleType>
-
-	<!-- Should be used for all attributes and elements that refer to method names -->
-	<xsd:simpleType name="Tmethod">
-		<xsd:restriction base="xsd:NCName"/>
-	</xsd:simpleType>
-
-	<!-- Should be used for all attributes and elements that refer to method names -->
-	<xsd:simpleType name="TnullableMethod">
-		<xsd:restriction base="xsd:token">
-            <xsd:pattern value="[\i-[:]][\c-[:]]*"/>
-            <xsd:pattern value=""/>                        
+        <xsd:attribute name="key" type="TstringValue" />
+        <xsd:attribute name="key-ref" type="Tidref" />
+        <xsd:attribute name="value" type="TstringValue" />
+        <xsd:attribute name="value-ref" type="Tidref" />
+    </xsd:complexType>
+
+
+    <!-- 'service property' element type -->
+    <xsd:complexType name="TserviceProperties">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TserviceProperty is used for <service-properties> elements.
+              The syntax is similar to what is defined for <map>, but keys must be
+              string values and there are no type defaults that can be specified.
+              created from the entry elements, which require a key/value pair.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="entry" type="TservicePropertyEntry" minOccurs="0"
+                maxOccurs="unbounded" />
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <!-- 'entry' element type -->
+    <xsd:complexType name="TservicePropertyEntry">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TservicePropertyEntry is an entry value used for the <service-properties>
+              element.  This does not allow a child <key> element and there are no
+              key-ref or value-ref attributes.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="value" />
+        </xsd:sequence>
+        <xsd:attribute name="key" type="TstringValue" use="required" />
+        <xsd:attribute name="value" type="TstringValue" use="optional" />
+    </xsd:complexType>
+
+    <!-- General types -->
+
+    <xsd:complexType name="Tdescription" mixed="true">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              A generic <description> element type to allow documentation to added to the
+              blueprint configuration.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice minOccurs="0" maxOccurs="unbounded" />
+    </xsd:complexType>
+
+    <xsd:complexType name="Tinterfaces">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              The type definition for the <interfaces> element used for <service>,
+              <reference>, <ref-set>, and <ref-list>;
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice minOccurs="1" maxOccurs="unbounded">
+            <xsd:element name="value" type="TinterfaceValue" />
+        </xsd:choice>
+    </xsd:complexType>
+
+    <xsd:simpleType name="TinterfaceValue">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TinterfaceValue is used for subelements of the <interfaces> element.
+              This is just a <value>xxxxx</value> element where the contained
+              value is the name of an interface class.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="Tclass" />
+    </xsd:simpleType>
+
+    <xsd:simpleType name="Tclass">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tclass is a base type that should be used for all attributes that
+              refer to java class names or java types.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:NCName" />
+    </xsd:simpleType>
+
+    <xsd:simpleType name="Tmethod">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tmethod is a base type that should be used for all attributes that
+              refer to java method names.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:NCName" />
+    </xsd:simpleType>
+
+    <xsd:simpleType name="TnullableMethod">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tmethod is a base type that should be used for all attributes that
+              refer to java method names.  This version also allows "" to be
+              specified to specify that no name should be used.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:token">
+            <xsd:pattern value="[\i-[:]][\c-[:]]*" />
+            <xsd:pattern value="" />
         </xsd:restriction>
-	</xsd:simpleType>
+    </xsd:simpleType>
+
+    <!-- Should be used for all attributes and elements that refer to method names -->
+    <xsd:simpleType name="Tidref">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Tidref is a base type that should be used for all attributes that
+              refer to component ids.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:NCName" />
+    </xsd:simpleType>
 
-	<!-- Should be used for all attributes and elements that refer to method names -->
-	<xsd:simpleType name="Tidref">
-		<xsd:restriction base="xsd:NCName"/>
-	</xsd:simpleType>
-
-	<!-- Should be used for value= attributes that specify string values -->
-	<xsd:simpleType name="TstringValue">
-		<xsd:restriction base="xsd:normalizedString"/>
-	</xsd:simpleType>
+    <xsd:simpleType name="TstringValue">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TstringValue is a base type that should be used for all attributes that
+              refer to raw string values
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:normalizedString" />
+    </xsd:simpleType>
 
     <xsd:simpleType name="TautoExportModes">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TautoExportModes is a base type that should be used for export-mode
+              attributes.  Also used by the blueprint-cm compendium.
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
         <xsd:restriction base="xsd:token">
-            <xsd:enumeration value="disabled"/>
-            <xsd:enumeration value="interfaces"/>
-            <xsd:enumeration value="class-hierarchy"/>
-            <xsd:enumeration value="all-classes"/>
+            <xsd:enumeration value="disabled" />
+            <xsd:enumeration value="interfaces" />
+            <xsd:enumeration value="class-hierarchy" />
+            <xsd:enumeration value="all-classes" />
         </xsd:restriction>
     </xsd:simpleType>
 
+    <xsd:simpleType name="Ttimeout">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              Ttimeout is a base type that should be used for all attributes that
+              specify timeout values
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:unsignedLong" />
+    </xsd:simpleType>
+
+    <xsd:simpleType name="TdependsOn">
+        <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              TdependsOn is a base type that should be used for all attributes that
+              specify depends-on relationships
+              ]]>
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:normalizedString" />
+    </xsd:simpleType>
 
 </xsd:schema>



Mime
View raw message