Author: alien11689 Date: Sun Jan 22 17:00:17 2017 New Revision: 1779837 URL: http://svn.apache.org/viewvc?rev=1779837&view=rev Log: [TEST] test validate generated xml against xsd
Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/resources/schema/ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/resources/schema/blueprint.xsd Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/PackageFinder.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/referencelistener/ReferenceListenerHandler.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/referencelistener/ReferenceListenerBeanWithName.java Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/PackageFinder.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/PackageFinder.java?rev=1779837&r1=1779836&r2=1779837&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/PackageFinder.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/PackageFinder.java Sun Jan 22 17:00:17 2017 @@ -62,11 +62,11 @@ class PackageFinder { return packages; } - static class SearchFile { + private static class SearchFile { String prefix; File f; - public SearchFile(String prefix, File f) { + SearchFile(String prefix, File f) { this.prefix = prefix; this.f = f; } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/referencelistener/ReferenceListenerHandler.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/referencelistener/ReferenceListenerHandler.java?rev=1779837&r1=1779836&r2=1779837&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/referencelistener/ReferenceListenerHandler.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/main/java/org/apache/aries/blueprint/plugin/referencelistener/ReferenceListenerHandler.java Sun Jan 22 17:00:17 2017 @@ -103,10 +103,10 @@ public class ReferenceListenerHandler im xmlStreamWriter.writeStartElement("reference-listener"); xmlStreamWriter.writeAttribute("ref", referenceListenerDefinition.ref); if (referenceListenerDefinition.bind != null) { - xmlStreamWriter.writeAttribute("bind", referenceListenerDefinition.bind); + xmlStreamWriter.writeAttribute("bind-method", referenceListenerDefinition.bind); } if (referenceListenerDefinition.unbind != null) { - xmlStreamWriter.writeAttribute("unbind", referenceListenerDefinition.unbind); + xmlStreamWriter.writeAttribute("unbind-method", referenceListenerDefinition.unbind); } xmlStreamWriter.writeEndElement(); } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java?rev=1779837&r1=1779836&r2=1779837&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/GeneratorTest.java Sun Jan 22 17:00:17 2017 @@ -36,9 +36,16 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; +import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamSource; +import javax.xml.validation.Schema; +import javax.xml.validation.SchemaFactory; +import javax.xml.validation.Validator; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; @@ -49,6 +56,7 @@ import java.io.InputStream; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -63,6 +71,7 @@ public class GeneratorTest { private static XPath xpath; private static Document document; + private static byte[] xmlAsBytes; @BeforeClass public static void setUp() throws Exception { @@ -83,7 +92,8 @@ public class GeneratorTest { new Generator(context, os, blueprintConfiguration).generate(); System.out.println(os.toString("UTF-8")); - document = readToDocument(os); + xmlAsBytes = os.toByteArray(); + document = readToDocument(xmlAsBytes, false); xpath = XPathFactory.newInstance().newXPath(); } @@ -515,22 +525,22 @@ public class GeneratorTest { assertXpathEquals(referenceList, "@availability", "mandatory"); assertXpathEquals(referenceList, "@interface", ServiceA.class.getName()); assertXpathEquals(referenceList, "reference-listener/@ref", "referenceListenerListBean"); - assertXpathEquals(referenceList, "reference-listener/@bind", "add"); - assertXpathEquals(referenceList, "reference-listener/@unbind", "remove"); + assertXpathEquals(referenceList, "reference-listener/@bind-method", "add"); + assertXpathEquals(referenceList, "reference-listener/@unbind-method", "remove"); } @Test public void referenceListnerForReference() throws Exception { assertNotNull(getBeanById("referenceListenerBeanWithNameWithoutMethods")); - Node reference = getReferenceById("serviceAReference"); + Node reference = getReferenceById("serviceAReferenceWithoutMethods"); assertXpathDoesNotExist(reference, "@filter"); assertXpathDoesNotExist(reference, "@component-name"); assertXpathEquals(reference, "@availability", "optional"); assertXpathEquals(reference, "@interface", ServiceA.class.getName()); assertXpathEquals(reference, "reference-listener/@ref", "referenceListenerBeanWithNameWithoutMethods"); - assertXpathDoesNotExist(reference, "reference-listener/@bind"); - assertXpathDoesNotExist(reference, "reference-listener/@unbind"); + assertXpathDoesNotExist(reference, "reference-listener/@bind-method"); + assertXpathDoesNotExist(reference, "reference-listener/@unbind-method"); } @Test @@ -543,8 +553,8 @@ public class GeneratorTest { assertXpathEquals(reference, "@availability", "optional"); assertXpathEquals(reference, "@interface", ServiceA.class.getName()); assertXpathEquals(reference, "reference-listener/@ref", "referenceListenerBeanWithoutMethodsAnnotation"); - assertXpathEquals(reference, "reference-listener/@bind", "addMe"); - assertXpathEquals(reference, "reference-listener/@unbind", "removeMe"); + assertXpathEquals(reference, "reference-listener/@bind-method", "addMe"); + assertXpathEquals(reference, "reference-listener/@unbind-method", "removeMe"); } @Test @@ -561,8 +571,8 @@ public class GeneratorTest { assertXpathEquals(reference, "@availability", "optional"); assertXpathEquals(reference, "@interface", ServiceB.class.getName()); assertXpathEquals(reference, "reference-listener/@ref", "referenceListenerToProduceForSingle"); - assertXpathEquals(reference, "reference-listener/@bind", "register"); - assertXpathEquals(reference, "reference-listener/@unbind", "unregister"); + assertXpathEquals(reference, "reference-listener/@bind-method", "register"); + assertXpathEquals(reference, "reference-listener/@unbind-method", "unregister"); } @Test @@ -579,8 +589,8 @@ public class GeneratorTest { assertXpathEquals(referenceList, "@availability", "optional"); assertXpathEquals(referenceList, "@interface", ServiceB.class.getName()); assertXpathEquals(referenceList, "reference-listener/@ref", "referenceListenerToProduceForList"); - assertXpathEquals(referenceList, "reference-listener/@bind", "addMe"); - assertXpathEquals(referenceList, "reference-listener/@unbind", "removeMe"); + assertXpathEquals(referenceList, "reference-listener/@bind-method", "addMe"); + assertXpathEquals(referenceList, "reference-listener/@unbind-method", "removeMe"); } @Test @@ -597,8 +607,19 @@ public class GeneratorTest { assertXpathEquals(referenceList, "@availability", "mandatory"); assertXpathEquals(referenceList, "@interface", ServiceB.class.getName()); assertXpathEquals(referenceList, "reference-listener/@ref", "referenceListenerToProduceWithBindingMethodsByName"); - assertXpathEquals(referenceList, "reference-listener/@bind", "addMe"); - assertXpathEquals(referenceList, "reference-listener/@unbind", "removeMe"); + assertXpathEquals(referenceList, "reference-listener/@bind-method", "addMe"); + assertXpathEquals(referenceList, "reference-listener/@unbind-method", "removeMe"); + } + + @Test + public void generatedXmlIsValid() throws Exception { + Document document = readToDocument(xmlAsBytes, true); + + Source xmlFile = new DOMSource(document); + SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); + Schema schema = schemaFactory.newSchema(new StreamSource(GeneratorTest.class.getResourceAsStream("/schema/blueprint.xsd"))); + Validator validator = schema.newValidator(); + validator.validate(xmlFile); } private void assertXpathDoesNotExist(Node node, String xpathExpression) throws XPathExpressionException { @@ -609,10 +630,12 @@ public class GeneratorTest { assertEquals(expected, xpath.evaluate(xpathExpression, node)); } - private static Document readToDocument(ByteArrayOutputStream os) throws ParserConfigurationException, + private static Document readToDocument(byte[] xmlAsBytes, boolean nameSpaceAware) throws ParserConfigurationException, SAXException, IOException { - InputStream is = new ByteArrayInputStream(os.toByteArray()); + + InputStream is = new ByteArrayInputStream(xmlAsBytes); DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setNamespaceAware(nameSpaceAware); DocumentBuilder builder = builderFactory.newDocumentBuilder(); return builder.parse(is); } Modified: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/referencelistener/ReferenceListenerBeanWithName.java URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/referencelistener/ReferenceListenerBeanWithName.java?rev=1779837&r1=1779836&r2=1779837&view=diff ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/referencelistener/ReferenceListenerBeanWithName.java (original) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/java/org/apache/aries/blueprint/plugin/test/referencelistener/ReferenceListenerBeanWithName.java Sun Jan 22 17:00:17 2017 @@ -25,7 +25,7 @@ import org.apache.aries.blueprint.plugin import javax.inject.Named; -@ReferenceListener(referenceInterface = ServiceA.class, cardinality = Cardinality.SINGLE, referenceName = "serviceAReference") +@ReferenceListener(referenceInterface = ServiceA.class, cardinality = Cardinality.SINGLE, referenceName = "serviceAReferenceWithoutMethods") @Singleton @Named("referenceListenerBeanWithNameWithoutMethods") public class ReferenceListenerBeanWithName { Added: aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/resources/schema/blueprint.xsd URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/resources/schema/blueprint.xsd?rev=1779837&view=auto ============================================================================== --- aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/resources/schema/blueprint.xsd (added) +++ aries/trunk/blueprint/plugin/blueprint-maven-plugin/src/test/resources/schema/blueprint.xsd Sun Jan 22 17:00:17 2017 @@ -0,0 +1,1233 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- + /* + * $Id: 2b09558a5a4a6cf1633def5e13fb5737c30a1a8f $ + * + * Copyright (c) OSGi Alliance (2008, 2013). 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://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.1"> + + <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:annotation> + <xsd:documentation> + <![CDATA[ + The Tcomponent type is the base type for top-level + Blueprint components. The <bean> <reference>, <service>, + and <reference-list> elements are all derived from + the Tcomponent type. This type defines an id attribute + 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 inlined. + ]]> + </xsd:documentation> + </xsd:annotation> + + <xsd:attribute name="id" type="xsd:ID" /> + + <xsd:attribute name="activation" type="Tactivation"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The activation attribute for this component. This can either + be "eager" or "lazy". If not specified, it + defaults to default-activation attribute of the enclosing + <blueprint> element. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + + <xsd:attribute name="depends-on" type="TdependsOn"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + depends-on identifies (by id) other components that this component + depends on. The component only be activated after the + depends-on components are successfully activated. Also, if there + are <reference> or <reference-list> elements with unstatisfied + manadatory references, then the depends-on relationship will also + be used to determine whether this service is enabled or not. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + </xsd:complexType> + + <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 the <type-converters> element) + 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>, and + <reference-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" /> + <!-- top-level components --> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="service" type="Tservice" /> + <xsd:element name="reference-list" type="Treference-list" /> + <xsd:element name="bean" type="Tbean" /> + <xsd:element name="reference" type="Treference" /> + <xsd:any namespace="##other" processContents="lax" /> + </xsd:choice> + </xsd:sequence> + + <!-- Defaults--> + <xsd:attribute name="default-activation" default="eager" + type="Tactivation"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + Specifies the default activation setting that will be defined + for components. If not specified, the global default is "eager". + Individual components may override the default value. + ]]> + </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>, and <reference-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 converter components. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="bean" type="Tbean" /> + <xsd:element name="reference" type="Treference" /> + <xsd:element name="ref" type="Tref" /> + <xsd:any namespace="##other" processContents="lax" /> + </xsd:choice> + </xsd:complexType> + + <!-- + Components that provide a reasonable target for injection used for + listeners, etc. + --> + + <xsd:group name="GtargetComponent"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + A target component is one that can be a target for a + listener, registration-listener or service elements. + 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 an inlined <bean> or <reference>. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:element name="bean" type="Tinlined-bean" /> + <xsd:element name="reference" type="Tinlined-reference" /> + <xsd:element name="ref" type="Tref" /> + <xsd:any namespace="##other" processContents="lax" /> + </xsd:choice> + </xsd:group> + + <xsd:group name="GallComponents"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + An all components is used in contexts where all component element + types are values. The set of component elements contains + <bean>, <service>, <reference>, <reference-list> and <ref>. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:element name="service" type="Tinlined-service" /> + <xsd:element name="reference-list" type="Tinlined-reference-list" /> + <xsd:group ref="GtargetComponent" /> + </xsd:choice> + </xsd:group> + + <xsd:group name="GbeanElements"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + A bean elements is a reusable definition of the elements allowed on + a <bean> element. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <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:any namespace="##other" processContents="lax" /> + </xsd:choice> + </xsd:sequence> + </xsd:group> + + <xsd:complexType name="Tbean"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The type definition for a <bean> component. 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="GbeanElements" /> + <xsd:attribute name="class" type="Tclass" /> + <xsd:attribute name="init-method" type="Tmethod" /> + <xsd:attribute name="destroy-method" type="Tmethod" /> + <xsd:attribute name="factory-method" type="Tmethod" /> + <xsd:attribute name="factory-ref" type="Tidref" /> + <xsd:attribute name="scope" type="Tscope" /> + <xsd:anyAttribute namespace="##other" + processContents="lax" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="Tinlined-bean"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The Tinlined-bean type is used for inlined (i.e. non top level) + <bean> elements. Those elements have some restrictions on + the attributes that can be used to define them. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:restriction base="Tbean"> + <xsd:group ref="GbeanElements" /> + <xsd:attribute name="id" use="prohibited" /> + <xsd:attribute name="depends-on" type="TdependsOn" /> + <xsd:attribute name="activation" use="prohibited" + fixed="lazy" /> + <xsd:attribute name="class" type="Tclass" /> + <xsd:attribute name="init-method" type="Tmethod" /> + <xsd:attribute name="destroy-method" use="prohibited" /> + <xsd:attribute name="factory-method" type="Tmethod" /> + <xsd:attribute name="factory-ref" type="Tidref" /> + <xsd:attribute name="scope" use="prohibited" /> + <xsd:anyAttribute namespace="##other" + processContents="lax" /> + </xsd:restriction> + </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="Gvalue" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="index" type="xsd:nonNegativeInteger" /> + <xsd:attribute name="type" type="Ttype" /> + <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="Gvalue" minOccurs="0" /> + </xsd:sequence> + <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: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="GnonNullValue" /> + </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:sequence> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" + processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="timeout" type="Ttimeout" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="Tinlined-reference"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The Tinlined-reference type is used for inlined (i.e. non top level) + <reference> elements. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:restriction base="Treference"> + <xsd:sequence> + <xsd:group ref="GserviceReferenceElements" /> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" + processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="id" use="prohibited" /> + <xsd:attribute name="depends-on" type="TdependsOn" /> + <xsd:attribute name="activation" use="prohibited" + fixed="lazy" /> + <xsd:attribute name="interface" type="Tclass" /> + <xsd:attribute name="filter" type="xsd:normalizedString" /> + <xsd:attribute name="component-name" type="Tidref" /> + <xsd:attribute name="availability" type="Tavailability" /> + <xsd:attribute name="timeout" type="Ttimeout" /> + <xsd:anyAttribute namespace="##other" + processContents="lax" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <!-- reference-list --> + <xsd:complexType name="Treference-list"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The Treference-list builds in the characteristics of the + TserviceReference type to define characteristics of the + <reference-list>. This adds in the characteristics that + only apply to collections of references (e.g., member-type). + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="TserviceReference"> + <xsd:sequence> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" + processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="member-type" type="Tservice-use" + default="service-object"> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="Tinlined-reference-list"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The Tinlined-reference-list type is used for inlined (i.e. non top level) + <reference-list> elements. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:restriction base="Treference-list"> + <xsd:sequence> + <xsd:group ref="GserviceReferenceElements" /> + <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" + processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="id" use="prohibited" /> + <xsd:attribute name="depends-on" type="TdependsOn" /> + <xsd:attribute name="activation" use="prohibited" + fixed="lazy" /> + <xsd:attribute name="interface" type="Tclass" /> + <xsd:attribute name="filter" type="xsd:normalizedString" /> + <xsd:attribute name="component-name" type="Tidref" /> + <xsd:attribute name="availability" type="Tavailability" /> + <xsd:attribute name="member-type" type="Tservice-use" + default="service-object" /> + <xsd:anyAttribute namespace="##other" + processContents="lax" /> + </xsd:restriction> + </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> + and <reference-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:group ref="GserviceReferenceElements" /> + </xsd:sequence> + + <xsd:attribute name="interface" type="Tclass"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The interface that the OSGi service must implement and that will be + implemented by the proxy object. + This attribute is optional. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="filter" 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"> + <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"> + <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:group name="GserviceReferenceElements"> + <xsd:sequence> + <xsd:element name="description" type="Tdescription" + minOccurs="0" /> + <!-- listener --> + <xsd:element name="reference-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:group> + + <xsd:complexType name="TreferenceListener"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + TReferenceListener defines a reference listener that is attached + to a <reference> or <reference-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:sequence> + <xsd:group ref="GtargetComponent" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="ref" type="Tidref" /> + <xsd:attribute name="bind-method" type="Tmethod" /> + <xsd:attribute name="unbind-method" type="Tmethod" /> + </xsd:complexType> + + <xsd:simpleType name="Tactivation"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + Tactivation defines the activation type for components. This is used in this + schema by the <blueprint> default-activation attribute and the + activation attribute. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="eager" /> + <xsd:enumeration value="lazy" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="Tavailability"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + Tavailability defines an availability attribute type. This is used in this + schema by the <blueprint> default-availability attribute and the + <reference> and <reference-list> availability attribute. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="mandatory" /> + <xsd:enumeration value="optional" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- 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="GserviceElements" /> + </xsd:sequence> + <xsd:attribute name="interface" type="Tclass"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The interface that this OSGi service will provide. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="ref" type="Tidref"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The ref attribute can be used to specify the component that provides + the object exported as an OSGi service. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="auto-export" type="TautoExportModes" + default="disabled"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + If set to a value different from "disabled", the Blueprint Container + will introspect the target to discover the set of interfaces or classes + that the service will be registered under. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <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:complexType name="Tinlined-service"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The Tinlined-service type is used for inlined (i.e. non top level) + <service> elements. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:restriction base="Tservice"> + <xsd:sequence> + <xsd:group ref="GserviceElements" /> + </xsd:sequence> + <xsd:attribute name="id" use="prohibited" /> + <xsd:attribute name="depends-on" type="TdependsOn" /> + <xsd:attribute name="activation" use="prohibited" + fixed="lazy" /> + <xsd:attribute name="interface" type="Tclass" /> + <xsd:attribute name="ref" type="Tidref" /> + <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:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:group name="GbaseServiceElements"> + <xsd:sequence> + <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:sequence> + </xsd:group> + + <xsd:group name="GserviceElements"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + A set of service elements. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:group ref="GbaseServiceElements" /> + <xsd:group ref="GtargetComponent" minOccurs="0"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + A service definition can use any of the target types as an inline element + as well. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:group> + </xsd:sequence> + </xsd:group> + + <xsd:complexType name="TregistrationListener"> + <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:sequence> + <xsd:group ref="GtargetComponent" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="ref" type="Tidref" /> + <xsd:attribute name="registration-method" type="Tmethod" /> + <xsd:attribute name="unregistration-method" type="Tmethod" /> + </xsd:complexType> + + <!-- Values --> + + <xsd:group name="Gvalue"> + <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="GnonNullValue" /> + <xsd:element name="null" type="Tnull" /> + </xsd:choice> + </xsd:group> + + <xsd:complexType name="Tnull"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + The definition for a <null> value type. + ]]> + </xsd:documentation> + </xsd:annotation> + </xsd:complexType> + + <xsd:group name="GnonNullValue"> + <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:choice> + <xsd:group ref="GallComponents" /> + <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: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-id" 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="Ttype" /> + </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="Ttype" /> + </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="Gvalue" 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: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" /> + </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="TmapEntry" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="key-type" type="Ttype" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- 'entry' element type --> + <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="Gvalue" minOccurs="0" /> + </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> + + <!-- '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:any namespace="##other" processContents="lax" + 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="Gvalue" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="key" type="TstringValue" use="required" /> + <xsd:attribute name="value" type="TstringValue" /> + </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> + ]]> + </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. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NCName" /> + </xsd:simpleType> + + <xsd:simpleType name="Ttype"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + Ttype is a base type that refer to java types such as classes or + arrays. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="[\i-[:]][\c-[:]]*(\[\])*" /> + </xsd:restriction> + </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> + + <!-- + 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> + + <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. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NMTOKEN"> + <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> + <xsd:simpleType> + <xsd:list itemType="Tidref" /> + </xsd:simpleType> + <xsd:minLength value="1" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="Tscope"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="singleton" /> + <xsd:enumeration value="prototype" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="xsd:QName"> + <xsd:pattern value=".+:.+" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="Tservice-use"> + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + Indicates the type of object that will be placed within the + reference collection. "service-object" indicates the + collection contains blueprint proxies for imported services. + "service-reference" indicates the collection contains + ServiceReference objects matching the target service type. + ]]> + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="service-object" /> + <xsd:enumeration value="service-reference" /> + </xsd:restriction> + </xsd:simpleType> + +</xsd:schema>