felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clem...@apache.org
Subject svn commit: r713977 - /felix/trunk/ipojo/manipulator/src/main/resources/core.xsd
Date Fri, 14 Nov 2008 11:08:05 GMT
Author: clement
Date: Fri Nov 14 03:08:05 2008
New Revision: 713977

URL: http://svn.apache.org/viewvc?rev=713977&view=rev
Log:
Commit a missing file (core.xsd in the manipulator).

Added:
    felix/trunk/ipojo/manipulator/src/main/resources/core.xsd

Added: felix/trunk/ipojo/manipulator/src/main/resources/core.xsd
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/resources/core.xsd?rev=713977&view=auto
==============================================================================
--- felix/trunk/ipojo/manipulator/src/main/resources/core.xsd (added)
+++ felix/trunk/ipojo/manipulator/src/main/resources/core.xsd Fri Nov 14 03:08:05 2008
@@ -0,0 +1,461 @@
+<!--
+	Licensed to the Apache Software Foundation (ASF) under one
+	or more contributor license agreements.  See the NOTICE file
+	distributed with this work for additional information
+	regarding copyright ownership.  The ASF licenses this file
+	to you 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.
+-->
+<xs:schema elementFormDefault="qualified" targetNamespace="org.apache.felix.ipojo"
+	xmlns="org.apache.felix.ipojo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:annotation>
+    	<xs:documentation>iPOJO Core XML-Schema. This grammars models iPOJO descriptor
using core features. It provides several extensibility mechanism in order to compose this
schema with external handlers and other component implementation type such as compositions.</xs:documentation></xs:annotation>
+    <xs:element name="ipojo">
+		<xs:complexType>
+            <xs:annotation>
+            	<xs:documentation>iPOJO top level element.</xs:documentation>
+            </xs:annotation>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element ref="handler" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                    	<xs:documentation>The handler declarations.</xs:documentation>
+                    </xs:annotation>
+				</xs:element>
+				<xs:element ref="instance" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                    	<xs:documentation>The instance declarations.</xs:documentation>
+                    </xs:annotation>
+				</xs:element>
+				<xs:element ref="component" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                    	<xs:documentation>The component type declarations.</xs:documentation>
+                    </xs:annotation>
+				</xs:element>
+				<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
+				</xs:any>
+			</xs:choice>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="HandlerType">
+        <xs:annotation>
+        	<xs:documentation>Description of the handler.</xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+			<xs:extension base="RootElementType">
+				<xs:sequence maxOccurs="unbounded" minOccurs="0">
+					<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any"
+						processContents="skip">
+					</xs:any>
+				</xs:sequence>
+				<xs:attribute name="classname" type="xs:string" use="required">
+                    <xs:annotation>
+                    	<xs:documentation>The implementation class of the handler. The
specified class must implement (direcly or not) the "org.apache.felix.ipojo.Handler" interface.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="name" type="xs:string" use="required">
+                    <xs:annotation>
+                    	<xs:documentation>The name of the handler.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="namespace" type="xs:string" use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>The XML namespace of the handler.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="architecture" type="xs:boolean"
+					use="optional" fixed="false">
+                    <xs:annotation>
+                    	<xs:documentation>Enables or disables the architecture exposition.
By default, the architecture is not exposed. This allows handler introspection.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+				<xs:attribute name="level" type="xs:int" use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>The start level of the handler.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="InstanceType">
+        <xs:annotation>
+        	<xs:documentation>Describes an instance of a component.</xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+			<xs:extension base="RootElementType">
+				<xs:sequence minOccurs="0" maxOccurs="unbounded">
+					<xs:element name="property" type="InstancePropertyType">
+						<xs:annotation>
+							<xs:documentation>The instance properties.</xs:documentation>
+						</xs:annotation></xs:element>
+				</xs:sequence>
+				<xs:attribute name="component" type="xs:string">
+					<xs:annotation>
+						<xs:documentation>The name of the instance component type.</xs:documentation>
+					</xs:annotation></xs:attribute>
+				<xs:attribute name="name" type="xs:string" use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>The (unique) name of the instance.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="InstancePropertyType">
+        <xs:annotation>
+        	<xs:documentation>Defines a property of an instance configuration.</xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+			<xs:element name="property" type="InstancePropertyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
+		</xs:sequence>
+		<xs:attribute name="name" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>Name of the property. Can be optional if a property is inside
a structure.
+The 'instance.name' property has a special semantic as it will be used as the instance name.</xs:documentation>
+			</xs:annotation></xs:attribute>
+		<xs:attribute name="value" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>Value of the property. Can be null for property containing other
properties.</xs:documentation>
+			</xs:annotation></xs:attribute>
+		<xs:attribute name="type" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>Type of the property, used to create the adequate object. Supported
values are list, array, dictionary and map.</xs:documentation>
+			</xs:annotation></xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RootElementType"></xs:complexType>
+	<xs:complexType name="ComponentType">
+		<xs:annotation>
+			<xs:documentation>Declares an atomic (i.e. primitive) component type.</xs:documentation>
+		</xs:annotation>
+		<xs:choice minOccurs="0" maxOccurs="unbounded">
+			<xs:element ref="callback" minOccurs="0"
+				maxOccurs="unbounded">
+                <xs:annotation>
+                	<xs:documentation>Describes the method(s) to invoke when the component's
state changes.</xs:documentation>
+                </xs:annotation>
+			</xs:element>
+			<xs:element ref="provides" minOccurs="0"
+				maxOccurs="unbounded">
+                <xs:annotation>
+                	<xs:documentation>Indicates the component provided service(s). By
default, all implemented interfaces are published.</xs:documentation>
+                </xs:annotation>
+			</xs:element>
+			<xs:element ref="requires" minOccurs="0"
+				maxOccurs="unbounded">
+                <xs:annotation>
+                	<xs:documentation>Indicates the service requirements of the component.</xs:documentation>
+                </xs:annotation>
+			</xs:element>
+			<xs:element ref="properties" minOccurs="0"
+				maxOccurs="unbounded">
+                <xs:annotation>
+                	<xs:documentation>Describes the properties of the component.</xs:documentation>
+                </xs:annotation>
+			</xs:element>
+			<xs:element ref="controller" minOccurs="0" maxOccurs="1">
+				<xs:annotation>
+					<xs:documentation>Lifecycle controller for this component.</xs:documentation>
+				</xs:annotation></xs:element>
+			<xs:any namespace="##other" processContents="lax"
+				minOccurs="0" maxOccurs="unbounded">
+			</xs:any>
+		</xs:choice>
+		<xs:attribute name="name" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>Specifies the name of the component type. This name is used to
identify the factory attached to this 	type. If not specified, the factory name is the implementation
class name.</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="public" type="xs:boolean" use="optional">
+			<xs:annotation>
+				<xs:documentation>Determines if the component type is public or private. A public
factory (default) can be used from any bundles.</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="classname" type="xs:string"
+			use="required">
+			<xs:annotation>
+				<xs:documentation>Specifies the implementation class of the component type.</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="architecture" type="xs:boolean"
+			use="optional">
+			<xs:annotation>
+				<xs:documentation>Enables or disables the architecture exposition. By default,
the architecture is exposed. This allows instance introspection.</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="immediate" type="xs:boolean"
+			use="optional">
+            <xs:annotation>
+            	<xs:documentation>Creates the object of the component implementation type
as soon as the component instance becomes valid. The default value is "true" if the component
doesn't provide any service, "false" otherwise.</xs:documentation>
+            </xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="factory-method" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>Factory method called to create POJO objects instead of the constructor.
The specified method must be a static method of the implementation class returning an instance
of this implementation class. The factory method can receive the bundle context in argument.</xs:documentation>
+			</xs:annotation></xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RequiresType">
+        <xs:annotation>
+        	<xs:documentation>Description of component services requirements.</xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+			<xs:extension base="ServiceDependencyType">
+				<xs:sequence minOccurs="0" maxOccurs="unbounded">
+					<xs:element name="callback"
+						type="DependencyCallbackType">
+                        <xs:annotation>
+                        	<xs:documentation>Service requirement method invocation description.
Here can be specified a bind method called when a service appears and an unbind method called
when a service disappears.</xs:documentation>
+                        </xs:annotation>
+					</xs:element>
+				</xs:sequence>
+				
+				<xs:attribute name="interface" type="xs:string"
+				    use="prohibited">
+                    <xs:annotation>
+                    	<xs:documentation>The interface describing the required service
type. This attribute is needed only when using aggregate dependencies with field injection
and when the type of this field is a list, vector, collection and set. This attribute is deprecated,
use 'specification'.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+				
+				<xs:attribute name="field" type="xs:string"
+					use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>The name of the field representing the service
dependency in the implementation class.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+
+				<xs:attribute name="nullable" type="xs:boolean"
+					use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>Enable or disable the Nullable pattern on optional
service dependencies. By default, Nullable pattern is enabled. If disabled, iPOJO will inject
null instead of a Nullable object.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+
+				<xs:attribute name="default-implementation"
+					type="xs:string" use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>Specifies the default implementation class for
an optional service dependency. If no providers are found, iPOJO creates an instance of the
default-implementation (nullary constructor) and injects it. The given class must implement
the required service interface.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+
+				<xs:attribute name="from" type="xs:string"
+					use="optional">
+                    <xs:annotation>
+                    	<xs:documentation>Specific service provider. The dependency can
only be fulfilled by the component with the matching name, or by the service with a matching
PID.</xs:documentation>
+                    </xs:annotation>
+				</xs:attribute>
+				
+				<xs:attribute name="scope" use="optional">
+					<xs:simpleType>
+						<xs:restriction base="xs:string">
+							<xs:enumeration value="global"></xs:enumeration>
+							<xs:enumeration value="composite"></xs:enumeration>
+							<xs:enumeration value="composite+global"></xs:enumeration>
+						</xs:restriction>
+					</xs:simpleType>
+				</xs:attribute>
+
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="DependencyCallbackType">
+        <xs:annotation>
+        	<xs:documentation>Dependency callbacks are used to receive notification when
service providers arrive and leave.</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="method" type="xs:string" use="required">
+        	<xs:annotation>
+        		<xs:documentation>Method to call</xs:documentation>
+        	</xs:annotation></xs:attribute>
+		<xs:attribute name="type" use="required">
+            <xs:annotation>
+            	<xs:documentation>Type of callback (bind or unbind). Bind means that the
method will be called when a provider arrives. Unbind means that the method will be called
when a provider leaves.</xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="bind"></xs:enumeration>
+					<xs:enumeration value="unbind"></xs:enumeration>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="CallbackType">
+        <xs:annotation>
+        	<xs:documentation>Lifecycle Callback. Allows a POJO to be notified when the
instance becomes valid or invalid.</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="method" type="xs:string" use="required">
+        	<xs:annotation>
+        		<xs:documentation>Specifies the method to call on the transition.</xs:documentation>
+        	</xs:annotation></xs:attribute>
+		<xs:attribute name="transition" use="required">
+            <xs:annotation>
+            	<xs:documentation>Specifies the transition when the callback needs to
be invoked.</xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+                <xs:annotation>
+                	<xs:documentation>Lifecycle transition state. "validate" means that
the component's instance was invalid and becomes valid, "invalidate" means that the component's
intance was valid and becomes invalid.</xs:documentation>
+                </xs:annotation>
+                <xs:restriction base="xs:string">
+					<xs:enumeration value="validate"></xs:enumeration>
+					<xs:enumeration value="invalidate"></xs:enumeration>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:element name="provides" type="ProvidesType" id="provides"></xs:element>
+	<xs:complexType name="ProvidesType">
+        <xs:annotation>
+        	<xs:documentation>Provided service(s) description.</xs:documentation>
+        </xs:annotation>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+			<xs:element name="property" type="PropertyType">
+				<xs:annotation>
+					<xs:documentation>List of service specific properties.</xs:documentation>
+				</xs:annotation></xs:element>
+		</xs:sequence>
+		<xs:attribute name="interface" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>The list of interfaces of the service to expose. By default,
all interfaces implemented by the component implementation class are published.</xs:documentation>
+			</xs:annotation></xs:attribute>
+		<xs:attribute name="factory" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>POJO factory policy. By default, the POJO object is created once
(singleton). If the factory is set to "SERVICE", the creation policy follows the OSGi service
factory policy (one object object per asking bundle).</xs:documentation>
+			</xs:annotation></xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="PropertyType">
+		<xs:annotation>
+			<xs:documentation>
+				Defines a component property.
+			</xs:documentation>
+		</xs:annotation>
+		<xs:attribute name="field" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					Field of the property
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="method" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					Setter method of the property. This method is called
+					to inject property value.
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="name" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					Name of the property.
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="value" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					Default value of the property.
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="type" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>
+					Type of the property.
+				</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+        <xs:attribute name="mandatory" type="xs:boolean" use="optional" default="false">
+        	<xs:annotation>
+        		<xs:documentation>Set the property as mandatory. A mandatory property MUST
receive a value either in the component type description or in the instance configuration.
Properties are optional by default.</xs:documentation>
+        	</xs:annotation></xs:attribute>
+    </xs:complexType>
+	<xs:element name="callback" type="CallbackType" id="callback"></xs:element>
+	<xs:element name="controller" type="ControllerType" id="controller">
+		<xs:annotation>
+			<xs:documentation></xs:documentation>
+		</xs:annotation></xs:element>
+	<xs:element name="requires" type="RequiresType" id="requires"></xs:element>
+	<xs:element name="component" type="ComponentType" id="component"></xs:element>
+	<xs:element name="handler" type="HandlerType" id="handler"></xs:element>
+	<xs:element name="instance" type="InstanceType" id="instance"></xs:element>
+
+    <xs:element name="properties" type="PropertiesType" id="properties"></xs:element>
+	<xs:complexType name="PropertiesType">
+        <xs:annotation>
+        	<xs:documentation>List of component, instance or service properties. This
field will receive the property value.</xs:documentation>
+        </xs:annotation>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+			<xs:element name="property" type="PropertyType">
+				<xs:annotation>
+					<xs:documentation>The list of properties.</xs:documentation>
+				</xs:annotation></xs:element>
+		</xs:sequence>
+		<xs:attribute name="propagation" type="xs:boolean" use="optional">
+			<xs:annotation>
+				<xs:documentation>Propagation of the component properties to the provided services.
If this parameter is set to "true", each time properties are reconfigured, they are propagated
to each service published by the component.</xs:documentation>
+			</xs:annotation></xs:attribute>
+		<xs:attribute name="pid" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>Unique identifier used to reconfigure components properties (via
 Managed Services) with the Configuration Admin.</xs:documentation>
+			</xs:annotation></xs:attribute>
+	</xs:complexType>
+	
+	<xs:complexType name="ServiceDependencyType">
+	    <xs:attribute name="specification" type="xs:string" use="optional">
+	    	<xs:annotation>
+	    		<xs:documentation>The specification describing the required service type. This
attribute is needed only when using aggregate dependencies with field injection and when the
type of this field is a list, vector, collection and set.</xs:documentation>
+	    	</xs:annotation></xs:attribute>
+		<xs:attribute name="optional" type="xs:boolean" use="optional">
+            <xs:annotation>
+            	<xs:documentation>Sets the service dependency optionality</xs:documentation>
+            </xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="aggregate" type="xs:boolean" use="optional">
+            <xs:annotation>
+            	<xs:documentation>Sets the service dependency cardinality.</xs:documentation>
+            </xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="policy" use="optional">
+            <xs:annotation>
+            	<xs:documentation>Sets the binding policy of the dependency. Three policies
are supported. The dynamic policy supports service providers dynamism. The static policy freezes
the provider set as soon as the dependency is used. The dynamic-priority policy is an extension
of the dynamic policy, but providers are ranked.</xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="dynamic"></xs:enumeration>
+					<xs:enumeration value="static"></xs:enumeration>
+					<xs:enumeration value="dynamic-priority"></xs:enumeration>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+		<xs:attribute name="comparator" type="xs:string" use="optional">
+            <xs:annotation>
+            	<xs:documentation>The comparator attribute allows specifying the class
used to compare providers. This class must implemented the java.util.Comparator class and
must support the comparison of service references.</xs:documentation>
+            </xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="filter" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>LDAP filter used to filter providers</xs:documentation>
+			</xs:annotation></xs:attribute>
+		<xs:attribute name="id" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>id of the service dependency. The id allows to indentify and
to refert to this dependency.</xs:documentation>
+			</xs:annotation></xs:attribute>
+	</xs:complexType>
+
+    <xs:complexType name="ControllerType">
+        <xs:annotation>
+        	<xs:documentation>Specifies the lifecycle controller of a component, which
allows to validate or invalidate component instances.</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="field" type="xs:string" use="required">
+            <xs:annotation>
+            	<xs:documentation>The name of the component lifecycle controller field.
The type of the specified field must be boolean. Setting the value of the specified field
to "true" means the validation of the component instance while setting it to "false" means
the invalidation of the component instance.</xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+</xs:schema>
\ No newline at end of file



Mime
View raw message