blob: 8bb8c8ece5bfa35b5f6dc0d204459844f322aa58 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
/*
* $Revision$
*
* Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<xsd:schema xmlns="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"
xmlns:ext100="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
xmlns:ext110="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0"
xmlns:ext120="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0"
xmlns:ext130="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.3.0"
xmlns:ext140="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.4.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0"
targetNamespace="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0.0">
<xsd:import namespace="http://www.osgi.org/xmlns/blueprint/v1.0.0" />
<xsd:import namespace="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0" />
<xsd:import namespace="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0" />
<xsd:import namespace="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0" />
<xsd:import namespace="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.3.0" />
<xsd:import namespace="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.4.0" />
<!-- property placeholder -->
<xsd:element name="property-placeholder" type="TpropertyPlaceholder"/>
<xsd:complexType name="TpropertyPlaceholder">
<xsd:complexContent>
<xsd:extension base="bp:Tcomponent">
<xsd:sequence>
<!-- nested properties declaration -->
<xsd:element name="default-properties" type="TdefaultProperties" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="ext100:location" />
<xsd:element ref="ext110:location" />
<xsd:element ref="ext120:location" />
<xsd:element ref="ext130:location" />
<xsd:element ref="ext140:location" />
</xsd:choice>
</xsd:sequence>
<!-- #### What should be the type for a persistent id? I think we need to define one like class and method -->
<xsd:attribute name="persistent-id" type="xsd:string" use="required"/>
<xsd:attribute name="placeholder-prefix" type="xsd:string" use="optional" default="${"/>
<xsd:attribute name="placeholder-suffix" type="xsd:string" use="optional" default="}"/>
<xsd:attribute name="defaults-ref" type="bp:Tidref" use="optional"/>
<xsd:attribute name="update-strategy" type="TplaceholderUpdateStrategyType" use="optional" default="none"/>
<xsd:attributeGroup ref="extAttributes" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:simpleType name="TplaceholderUpdateStrategyType">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="none"/>
<xsd:enumeration value="reload"/>
</xsd:restriction>
</xsd:simpleType>
<!-- #### is this the correct type here? This is defining placeholder properties,
so should this be a restricted set of value types or should this be expanded to
all of the elements you can inject into a bean property? -->
<xsd:complexType name="TdefaultProperties">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="property" type="bp:Tproperty"/>
</xsd:sequence>
</xsd:complexType>
<xsd:attributeGroup name="extAttributes">
<xsd:attribute ref="ext100:ignore-missing-locations" use="optional" />
<xsd:attribute ref="ext110:ignore-missing-locations" use="optional" />
<xsd:attribute ref="ext120:ignore-missing-locations" use="optional" />
<xsd:attribute ref="ext130:ignore-missing-locations" use="optional" />
<xsd:attribute ref="ext140:ignore-missing-locations" use="optional" />
<xsd:attribute ref="ext100:system-properties" use="optional" />
<xsd:attribute ref="ext110:system-properties" use="optional" />
<xsd:attribute ref="ext120:system-properties" use="optional" />
<xsd:attribute ref="ext130:system-properties" use="optional" />
<xsd:attribute ref="ext140:system-properties" use="optional" />
</xsd:attributeGroup>
<!-- managed-properties -->
<xsd:element name="managed-properties" type="TmanagedProperties"/>
<xsd:complexType name="TmanagedProperties">
<xsd:attribute name="persistent-id" type="xsd:string" use="required"/>
<xsd:attribute name="update-strategy" type="TupdateStrategyType" use="optional"/>
<xsd:attribute name="update-method" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="TupdateStrategyType">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="none"/>
<xsd:enumeration value="component-managed"/>
<xsd:enumeration value="container-managed"/>
</xsd:restriction>
</xsd:simpleType>
<!-- managed-service-factory -->
<xsd:element name="managed-service-factory" type="TmanagedServiceFactory"/>
<xsd:complexType name="TmanagedServiceFactory">
<xsd:complexContent>
<xsd:extension base="bp:Tcomponent">
<xsd:sequence>
<xsd:group ref="bp:GbaseServiceElements"/>
<xsd:element name="managed-component" type="TmanagedComponent" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="interface" type="bp:Tclass" use="optional" />
<xsd:attribute name="ref" type="bp:Tidref" use="optional" />
<xsd:attribute name="auto-export" type="bp:TautoExportModes" default="disabled" />
<xsd:attribute name="ranking" type="xsd:int" default="0"/>
<xsd:attribute name="factory-pid" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TmanagedComponent">
<xsd:group ref="bp:GbeanElements"/>
<xsd:attribute name="class" type="bp:Tclass"/>
<xsd:attribute name="init-method" type="bp:Tmethod"/>
<xsd:attribute name="destroy-method" type="bp:Tmethod"/>
<xsd:attribute name="factory-method" type="bp:Tmethod"/>
<xsd:attribute name="factory-component" type="bp:Tidref"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
<!-- cm-properties -->
<xsd:element name="cm-properties" type="TcmProperties"/>
<xsd:complexType name="TcmProperties">
<xsd:complexContent>
<xsd:extension base="bp:Tcomponent">
<xsd:attribute name="persistent-id" type="xsd:string" use="required"/>
<xsd:attribute name="update" type="xsd:boolean" use="optional" default="false"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>