blob: bdbdaa66ee9caa04b19030587e4ad58f1630dbb8 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!-- A prototype xsd schema for the pojoserver xml deployer
$Id: bean-deployer_2_0.xsd 70437 2008-03-05 17:13:04Z alesj $
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="urn:jboss:bean-deployer:2.0"
xmlns="urn:jboss:bean-deployer:2.0"
version="1.0">
<xsd:complexType name="beanType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The bean is an instance of a pojo.
e.g.
<bean name="MyName" class="com.acme.POJO">
<classloader .../>
<constructor .../>
<property .../>
<property .../>
<depends .../>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="alias" type="aliasType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="related-class" type="relatedClassType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="classloader" type="classloaderType" minOccurs="0"/>
<xsd:element name="constructor" type="constructorType" minOccurs="0"/>
<xsd:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="create" type="lifecycleType" minOccurs="0"/>
<xsd:element name="start" type="lifecycleType" minOccurs="0"/>
<xsd:element name="stop" type="lifecycleType" minOccurs="0"/>
<xsd:element name="destroy" type="lifecycleType" minOccurs="0"/>
<xsd:element name="depends" type="dependsType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="demand" type="demandType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="supply" type="supplyType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="install" type="installType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="uninstall" type="installType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="incallback" type="installCallbackType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="uncallback" type="uninstallCallbackType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="class" type="xsd:token" use="optional"/>
<xsd:attribute name="mode" type="controllerModeType" use="optional"/>
<xsd:attribute name="parent" type="xsd:string" use="optional"/>
<xsd:attribute name="abstract" type="xsd:boolean" use="optional"/>
<xsd:attribute name="autowire-type" type="autowireTypeType" use="optional"/>
<xsd:attribute name="autowire-candidate" type="xsd:boolean" use="optional"/>
<xsd:attribute name="access-mode" type="accessModeType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="classloaderType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The classloader is to load the bean
e.g.
<bean ...>
<classloader><inject bean="Classloader"/></classloader>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="classLoaderValueType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="abstractBeanfactoryType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Base type for beanfatoryType.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="alias" type="aliasType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="related-class" type="relatedClassType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="classloader" type="classloaderType" minOccurs="0"/>
<xsd:element name="constructor" type="constructorType" minOccurs="0"/>
<xsd:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="create" type="lifecycleType" minOccurs="0"/>
<xsd:element name="start" type="lifecycleType" minOccurs="0"/>
<xsd:element name="depends" type="dependsType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="demand" type="demandType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="supply" type="supplyType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="install" type="installType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="uninstall" type="installType" minOccurs="0" maxOccurs="unbounded"/>
<!--
<xsd:element name="incallback" type="intallCallbackType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="uncallback" type="uninstallCallbackType" minOccurs="0" maxOccurs="unbounded"/>
-->
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="beanfactoryType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The beanfactory is a org.jboss.beans.metadata.plugins.factory.GenericBeanFactory deployment.
This gives you a factory such you can invoke createBean() multiple times with the guarantee
that the injected objects are "installed".
e.g.
<bean name="User" class="com.acme.User">
<property name="factory"><inject bean="Factory"/></property>
</bean>
<beanfactory name="Factory" class="com.acme.SomeBean">
<property name="someProperty"><inject bean="SomeOtherBean"/></property>
</beanFactory>
package com.acme.User;
public class User {
// factory has been configured at this point
public void setFactory(GenericBeanFactory factory) {
SomeBean bean1 = factory.createBean();
System.out.println(bean1.getSomeProperty()); // "SomeOtherBean"
SomeBean bean2 = factory.createBean();
System.out.println(bean2.getSomeProperty()); // "SomeOtherBean"
}
}
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="abstractBeanfactoryType">
<xsd:attribute name="class" type="xsd:token" use="required"/>
<xsd:attribute name="access-mode" type="accessModeType" use="optional"/>
<xsd:attribute name="factoryClass" type="xsd:token" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="lazyType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Wrap the existing bean into lazy proxy.
Expose the full class or just interfaces.
Name is optional, and if no name is provided bean+'Proxy' will be used.
e.g.
<lazy name="UserProxy" bean="User">
<interface>org.acme.domain.IUser</interface>
</lazy>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="interface" type="interfaceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="bean" type="xsd:string" use="required"/>
<xsd:attribute name="exposeClass" type="xsd:boolean" default="false" use="optional"/>
</xsd:complexType>
<xsd:complexType name="constructorType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The constructor for this bean(factory) instance.
e.g. simple constructor - new POJO(new String("String value"));
<bean name="MyBean" class="com.acme.POJO">
<constructor>
<parameter>String value</parameter>
</constructor>
</bean>
e.g. static factory - com.acme.Factory.newInstance(new String("String value"));
<bean name="MyBean" class="com.acme.POJO">
<constructor factoryClass="com.acme.Factory" factoryMethod="newInstance">
<parameter>String value</parameter>
</constructor>
</bean>
e.g. instance factory - "SomeOtherBean".newInstance(new String("String value"));
<bean name="MyBean" class="com.acme.POJO">
<constructor factoryMethod="newInstance">
<factory bean="SomeOtherBean"/>
<parameter>String value</parameter>
</constructor>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:choice minOccurs="0">
<xsd:sequence>
<xsd:element name="factory" type="factoryType" minOccurs="0"/>
<xsd:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:element name="bean" type="beanType"/>
<xsd:element name="lazy" type="lazyType"/>
<xsd:element name="value" type="plainValueType"/>
<xsd:element name="collection" type="collectionType"/>
<xsd:element name="list" type="listType"/>
<xsd:element name="set" type="setType"/>
<xsd:element name="array" type="arrayType"/>
<xsd:element name="map" type="mapType"/>
<xsd:element name="inject" type="injectionType"/>
<xsd:element name="value-factory" type="valueFactoryType"/>
<xsd:any namespace="##other" processContents="strict">
<xsd:annotation>
<xsd:documentation>An extension value</xsd:documentation>
</xsd:annotation>
</xsd:any>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="factoryClass" type="classNameType" use="optional"/>
<xsd:attribute name="factoryMethod" type="xsd:token" use="optional"/>
</xsd:complexType>
<xsd:complexType name="lifecycleType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The lifecycle lets you override the method parameters passed to the
create, start, stop, destroy lifecycle callbacks.
e.g.
<bean>
<create method="initialize">
<parameter>String value</parameter>
</create>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="method" type="xsd:token" use="optional"/>
<xsd:attribute name="ignored" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="installType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The install type you write your installation methods state operations.
The install operation is invoked after the start lifecycle.
The uninstall operation is invoked before the stop lifecycle.
e.g.
<bean>
<install bean="Repository" method="add">
<parameter><this/></parameter>
</install>
<uninstall bean="Repository" method="remove">
<parameter><this/></parameter>
</uninstall>
</bean>
If you don't include a bean attribute, the method is invoked on your bean
e.g.
<bean>
<install method="install"/>
<uninstall bean="method="uninstall"/>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="bean" type="xsd:string" use="optional"/>
<xsd:attribute name="method" type="xsd:token" use="required"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="uninstallCallbackType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Callback item description.
Define you methods for callback invocation.
e.g.
<bean>
<uncallback method="addSomething" />
<uncallback property="items" cardinality="2..n" />
<uncallback property="info" signature="org.jboss.test.Info"/>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="method" type="xsd:token" use="optional"/>
<xsd:attribute name="property" type="xsd:token" use="optional"/>
<xsd:attribute name="cardinality" type="xsd:token" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="signature" type="xsd:token" use="optional"/>
</xsd:complexType>
<xsd:complexType name="installCallbackType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Callback item description.
Define you methods for callback invocation.
e.g.
<bean>
<incallback method="addSomething" />
<incallback property="items" cardinality="2..n" />
<incallback property="info" signature="org.jboss.test.Info"/>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="method" type="xsd:token" use="optional"/>
<xsd:attribute name="property" type="xsd:token" use="optional"/>
<xsd:attribute name="cardinality" type="xsd:token" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="signature" type="xsd:token" use="optional"/>
</xsd:complexType>
<xsd:complexType name="dependencyType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A dependency represents an injection into the bean.
They can be used anywhere a string value can appear.
e.g. Bean instance - "InjectedIntoMe".setSomeProperty("BeanInjected");
<bean name="InjectedIntoMe" ...>
<property name="someProperty"><inject bean="BeanInjected"/>
</bean>
<bean name="BeanInjected" .../>
e.g. Bean property - "InjectedIntoMe".setSomeProperty("BeanInjected".getOtherProperty());
<bean name="InjectedIntoMe" ...>
<property name="someProperty"><inject bean="BeanInjected" property="otherProperty"/>
</bean>
<bean name="BeanInjected" .../>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="bean" type="xsd:string" use="required"/>
<xsd:attribute name="property" type="xsd:string" use="optional"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="injectionType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A dependency represents an injection into the bean.
They can be used anywhere a string value can appear.
e.g. Bean instance - "InjectedIntoMe".setSomeProperty("BeanInjected");
<bean name="InjectedIntoMe" ...>
<property name="someProperty"><inject bean="BeanInjected"/>
</bean>
<bean name="BeanInjected" .../>
e.g. Bean property - "InjectedIntoMe".setSomeProperty("BeanInjected".getOtherProperty());
<bean name="InjectedIntoMe" ...>
<property name="someProperty"><inject bean="BeanInjected" property="otherProperty"/>
</bean>
<bean name="BeanInjected" .../>
e.g. Contextual injection - finding exactly one instance which matches property's class type
<bean name="InjectedIntoMe" ...>
<property name="transactionManager"><inject/></property>
</bean>
e.g. Contextual injection - finding exactly one instance which matches property's name
<bean name="InjectedIntoMe" ...>
<property name="transactionManager"><inject type="ByName"/></property>
</bean>
e.g. Contextual injection - set optional injection; execute callback if currently no matching context exists
<bean name="InjectedIntoMe" ...>
<property name="transactionManager"><inject option="Callback"/></property>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="bean" type="xsd:string" use="optional"/>
<xsd:attribute name="property" type="xsd:string" use="optional"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
<xsd:attribute name="type" type="autowireTypeType" use="optional" default="ByClass"/>
<xsd:attribute name="option" type="optionType" use="optional" default="Strict"/>
<xsd:attribute name="fromContext" type="contextType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="searchType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
e.g. Search injection - by scope.
<bean name="InjectedIntoMe" ...>
<property name="transactionManager"><search bean="someTMbean" type="top"/></property>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="bean" type="xsd:string" use="required"/>
<xsd:attribute name="property" type="xsd:string" use="optional"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="type" type="searchTypeType" use="required"/>
</xsd:complexType>
<xsd:complexType name="valueFactoryType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A dependency represents an value injection into the bean.
They can be used anywhere a string value can appear.
e.g. Bean instance - "InjectedIntoMe".setSomeProperty("ValueFactory".getValue("foo.bar.prop", "mydefault"));
<bean name="InjectedIntoMe" ...>
<property name="someProperty">
<value-factory bean="BeanInjected" method="getValue">
<parameter>foo.bar.prop</parameter>
<parameter>mydefault</parameter>
</value-factory>
</property>
</bean>
<bean name="BeanInjected" .../>
e.g. Bean instance - "InjectedIntoMe".setSomeProperty("ValueFactory".getValue("foo.bar.prop"));
<bean name="InjectedIntoMe" ...>
<property name="someProperty">
<value-factory bean="BeanInjected" method="getValue" parameter="foo.bar.prop" default="mydefault" />
</property>
</bean>
<bean name="BeanInjected" .../>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="parameter" type="parameterType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="bean" type="xsd:string"/>
<xsd:attribute name="method" type="xsd:string"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
<xsd:attribute name="parameter" type="xsd:string" use="optional"/>
<xsd:attribute name="default" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="factoryType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A factory represents another bean used to construct an object.
e.g. Bean instance - "InjectedIntoMe".setSomeProperty("BeanInjected");
<bean name="ConstructMe" ...>
<constructor factoryMethod="someMethod">
<factory bean="Factory"/>
</constructor>
</bean>
<bean name="Factory" .../>
You can also inject a property of the bean bean
e.g.
<bean name="ConstructMe" ...>
<constructor factoryMethod="someMethod">
<factory bean="Builder" property="getFactory"/>
</constructor>
</bean>
Or you can construct a factory in place using a different schema/namsapce
e.g.
<bean name="ConstructMe" ...>
<constructor factoryMethod="someMethod">
<factory>
<javabean xmlns="someOtherNamespace" class="com.acme.FactoryClass"/>
</factory>
</constructor>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="bean" type="xsd:string" use="optional"/>
<xsd:attribute name="property" type="xsd:string" use="optional"/>
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="whenRequired" type="controllerStateType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="aliasType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Bean's aliases.
e.g.
<bean name="MyName" class="com.acme.POJO">
<alias>YourName</alias>
<alias><javabean xmlns="urn:jboss:javabean:2.0" class="whatevever"/></alias>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="namedAliasType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
An alias that has a name attribute.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="aliasType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="relatedClassType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Related classes.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="parameterType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A parameter is used to define the constructor, factory
and lifecycle method usage.
e.g. Using number of parameters when this is unique enough
<bean ...>
<constructor>
<parameter>1st Parameter</parameter>
<parameter>2nd Parameter</parameter>
</constructor>
</bean>
e.g. Explicitly stating the parameter type to resolve overloading
<bean ...>
<constructor>
<parameter>1st Parameter</parameter>
<parameter class="java.lang.String">2nd Parameter</parameter>
</constructor>
</bean>
e.g. To override the injected type use <value/>
<bean ...>
<constructor>
<parameter>1st Parameter</parameter>
<!-- Parameter is java.lang.Object, but we inject a String -->
<parameter class="java.lang.Object">
<value class="java.lang.String">2nd Parameter</value>
</parameter>
</constructor>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="annotatedValueType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="propertyType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A property defines values passed to the setters.
e.g. Using the type from the setter argument
<bean ...>
<property name="someProperty">Some value</property>
</bean>
e.g. Overridding the injected type
<bean ...>
<property name="someProperty" class="java.lang.String">Some value</property>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="namedValueType">
<xsd:attribute name="preinstantiate" type="xsd:boolean" use="optional" default="true"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="annotationType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The annotation type represents a Java5 annotation on the particular join point.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="replace" type="xsd:boolean"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="interfaceType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The interface type represents an interface class.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string" />
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="classNameType">
<xsd:annotation>
<xsd:documentation> The elements that use this type designate the name
of a Java class or interface. The name is in the form of a "binary
name", as defined in the JLS and as used in Class.forName().
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:group name="valueGroup">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The value group represents the comment elements of the other configurations
<parameter/>, <property/> or collection components
e.g.
<property name="someProperty">
<list><value class="java.lang.String">Hello</value></list>
</property>
e.g. This also defines the null value
<property name="someProperty"><null/></property>
as opposed to the empty string
<property name="someProperty"></property>
or the string "null"
<property name="someProperty">null</property>
The this operation lets you pass yourself as a parameter.
e.g.
<install bean="SomeOtherBean> method="install">
<parameter><this/></parameter>
</install>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<!--<xsd:element name="bean" type="beanType"/>-->
<!--<xsd:element name="lazy" type="lazyType"/>-->
<xsd:element name="value" type="plainValueType"/>
<xsd:element name="inject" type="injectionType"/>
<xsd:element name="value-factory" type="valueFactoryType"/>
<xsd:element name="collection" type="collectionType"/>
<xsd:element name="list" type="listType"/>
<xsd:element name="set" type="setType"/>
<xsd:element name="array" type="arrayType"/>
<xsd:element name="map" type="mapType"/>
<xsd:element name="null">
<xsd:complexType/>
</xsd:element>
<xsd:element name="this">
<xsd:complexType/>
</xsd:element>
<xsd:any namespace="##other" processContents="strict">
<xsd:annotation>
<xsd:documentation>An extension value</xsd:documentation>
</xsd:annotation>
</xsd:any>
</xsd:choice>
</xsd:group>
<xsd:complexType name="plainValueType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A simple value, used in collections and to specify a type for parameters.
e.g.
<parameter><value class="com.acme.MyClass">xxx</value></parameter>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="class" type="classNameType" use="optional"/>
<xsd:attribute name="replace" type="xsd:boolean" use="optional"/>
<xsd:attribute name="trim" type="xsd:boolean" use="optional"/>
</xsd:complexType>
<xsd:complexType name="valueType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A value that can take other values, i.e. properties and parameters.
e.g.
<parameter><value class="com.acme.MyClass">xxx</value></parameter>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="plainValueType">
<xsd:sequence>
<xsd:choice minOccurs="0">
<xsd:group ref="valueGroup"/>
</xsd:choice>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="classLoaderValueType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A value that represents a classloader.
e.g.
<classloader><inject bean="SomeClassLoader"/></parameter>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:choice>
<xsd:element name="bean" type="beanType"/>
<xsd:element name="inject" type="dependencyType"/>
<xsd:element name="null">
<xsd:complexType/>
</xsd:element>
<xsd:any namespace="##other" processContents="strict">
<xsd:annotation>
<xsd:documentation>An extension value</xsd:documentation>
</xsd:annotation>
</xsd:any>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="annotatedValueType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A value that can take annotations.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="valueType">
<xsd:sequence>
<xsd:element name="annotation" type="annotationType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="namedValueType" mixed="true">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A value that has a name, currently only a property.
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="annotatedValueType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="baseCollectionType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A collection defines a java.util.Collection object.
It has two class definitions:
class: The implementation class of the collection
elementClass: The default implementation class of the elements
The default "class" is a java.util.ArrayList unless the point of injection
defines a concrete type, e.g. in the signature of the setter
example:
<property name="whatever" class="java.util.ArrayList" elementClass="java.net.URL">
<value>http://localhost</value> <!-- Creates a URL -->
<value class="java.lang.String">http://localhost</value> <!-- Creates a String -->
</property>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:group ref="valueGroup"/>
</xsd:choice>
<xsd:attribute name="class" type="classNameType" use="optional"/>
<xsd:attribute name="elementClass" type="classNameType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="collectionType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A collection, see baseCollectionType
the default collection is a java.util.ArrayList
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="baseCollectionType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="listType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A list, see baseCollectionType
the default list is a java.util.ArrayList
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="baseCollectionType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="setType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A set, see baseCollectionType
the default set is a java.util.HashSet
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="baseCollectionType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="arrayType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
An array, see baseCollectionType
the default array is a java.lang.Object[]
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="baseCollectionType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="mapType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
A map defines a java.util.Map object.
It has three class definitions:
class: The implementation class of the class
keyClass: The default implementation class of the keys
valueClass: The default implementation class of the values
The default "class" is a java.util.HashMap unless the point of injection
defines a concrete type, e.g. in the signature of the setter
e.g.:
<property name="whatever" class="java.util.HashMap" keyClass="java.lang.String" valueClas="java.net.URL">
<!-- map.put(new String("default"), new URL("http://localhost"));
<entry><key>default</key><value>http://localhost</value>
<!-- map.put(new String("default"), new String("http://localhost"));
<entry><key>default</key><value class="java.lang.String">http://localhost</value>
</property>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="entry" type="entryType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="class" type="classNameType" use="optional"/>
<xsd:attribute name="keyClass" type="classNameType" use="optional"/>
<xsd:attribute name="valueClass" type="classNameType" use="optional"/>
</xsd:complexType>
<xsd:complexType name="entryType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
An entry in map. These are made of key/value pairs
e.g.:
<entry><key>default</key><value>http://localhost</value>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="key" type="valueType" minOccurs="0"/>
<xsd:element name="value" type="valueType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="dependsType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The depends element is used to define that one bean depends upon
another for the create/start/stop/destroy lifecycle
e.g.:
<bean name="IGoFirst" .../>
<bean name="IGoSecond" ...>
<depends>IGoFirst</depends>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="demandType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The demand is used to specify a dependency on a supply
and when the demand should be supplied
e.g.:
ISupply must be installed before IDemand is constructed
<bean name="IDemand">
<demand state="Instantiated">theSupply</demand>
</bean>
<bean name="ISupply" ...>
<supply>theSupply</supply>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="state" type="controllerStateType" use="optional"/>
<xsd:attribute name="transformer" type="xsd:token" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="supplyType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The supply is used to specify that the bean supplies a demanded dependency
e.g.:
<bean name="IDemand" ...>
<demand>theSupply</demand>
</bean>
<bean name="ISupply" ...>
<supply>theSupply</supply>
</bean>
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="class" type="classNameType" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="controllerStateType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The controller state is used to say when dependencies must be satisfied.
Valid values include:
Described
Instantiated
Configured
Create
Start
Installed
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="controllerModeType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
The controller mode, used to control how automatic the bean progresses
through the controller lifecyle (the states).
Valid values include:
Automatic (default) - the controller takes the bean to "Installed"
Manual - the user must tell the controller the required state
On Demand - the controller takes the bean to "Installed" when another bean depends on it
Disabled - the controller or user cannot change the state
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="accessModeType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
Access type, valid values include:
property (default)
field
public_member
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="autowireTypeType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
You can set the type of lookup requirement - class type (ByClass) or property name (ByName)
Valid values include:
None
ByClass (default)
ByName
Constructor
Auto
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="searchTypeType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
You can set the search lookup by type:
Valid values include:
DEFAULT,
LOCAL,
TOP,
PARENT_ONLY,
PARENT,
DEPTH,
LEAVES,
WIDTH,
CHILD_ONLY_DEPTH,
CHILD_ONLY_LEAVES,
CHILD_ONLY_WIDTH
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="optionType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
You can set the type of lookup option - Strict or Callback
Valid values include:
Strict (default)
Callback
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="contextType">
<xsd:annotation>
<xsd:documentation>
<![CDATA[
You can set the type of context property lookup
Valid values include:
name
metadata
scope
]]>
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>