dev@glassfish.java.net

REVIEW: Updated CDI Schema Changes

From: Roger Kitain <Roger.Kitain_at_Sun.COM>
Date: Thu, 07 Jan 2010 12:30:50 -0500

Ok - seems I missed this email back on Nov 24. Please review. It is my
understanding that
this will be checked into the trunk.

Thanks, Roger.

Roberto Chinnici wrote:
> Final one, hopefully.
>
>
> ------------------------------------------------------------------------
>
> Subject:
> Re: XSD for CDI
> From:
> Pete Muir <pete.muir_at_jboss.org>
> Date:
> Tue, 24 Nov 2009 11:13:19 +0000
> To:
> Roberto Chinnici <Roberto.Chinnici_at_Sun.COM>
>
> To:
> Roberto Chinnici <Roberto.Chinnici_at_Sun.COM>
>
>
> Hi Roberto,
>
> Understood about the MR, thanks for the warning :-) I've attached a version with the namespace fixed up.
>
> Thanks,
>
>
> ------------------------------------------------------------------------
>
>
>
> On 23 Nov 2009, at 21:59, Roberto Chinnici wrote:
>
>
>> Roberto Chinnici wrote:
>>
>>> Pete Muir wrote:
>>>
>>>> Hi Roberto
>>>>
>>>> We found some bugs in the original XSD for beans.xml and also added some documentation. It would be great if we can get this into the EE release :-)
>>>>
>>>> Currently we are using the namespace http://seamframework.org/ns/CDI, but we can change that if it doesn't align well with EE. Just let me know.
>>>>
>>>>
>>> We consider the schemas as part of the spec, so you cannot keep updating them arbitrarily. It's OK (I presume) to fix bugs ahead of final release, but after that you need to use the MR process. Did the schema get posted on the final approval ballot page?
>>>
>>> Also, doesn't the spec use a different namespace? That needs to be nailed down too.
>>>
>> To answer my own question: the spec uses http://java.sun.com/xml/ns/javaee/.
>> The schema location is given as http://java.sun.com/xml/ns/javaee/beans_1_0.xsd.
>>
>>
>
>



Index: beans_1_0.xsd
===================================================================
--- beans_1_0.xsd (revision 34779)
+++ beans_1_0.xsd (working copy)
@@ -1,65 +1,180 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-JBoss, Home of Professional Open Source
-Copyright 2008, Red Hat Middleware LLC, and individual contributors
-by the @authors tag. See the copyright.txt in the distribution for a
-full listing of individual contributors.
-
-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.
--->
-
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified"
- targetNamespace="http://seamframework.org/ns/CDI"
- xmlns:cdi="http://seamframework.org/ns/CDI"
- version="1.0">
-
- <xs:element name="beans">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="cdi:policies"/>
- <xs:element ref="cdi:interceptors" />
- <xs:element ref="cdi:decorators" />
- </xs:choice>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="policies">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="cdi:class" />
- <xs:element ref="cdi:annotation" />
- </xs:choice>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="interceptors">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="cdi:class" />
- </xs:choice>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="decorators">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="cdi:class"/>
- </xs:choice>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="class" type="xs:string" />
-
- <xs:element name="annotation" type="xs:string" />
-
-</xs:schema>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag.
+ See the copyright.txt in the distribution for a full listing of
+ individual contributors. 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.
+ -->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" targetNamespace="http://java.sun.com/xml/ns/javaee"
+ xmlns:javaee="http://java.sun.com/xml/ns/javaee" version="1.0">
+
+ <xs:annotation>
+ <xs:documentation>
+ Contexts and Dependency Injection (CDI) defines
+ a set of complementary services that help improve the structure
+ of application code. beans.xml is used to enable CDI services
+ for the current bean archive as well as to enable named
+ interceptors, decorators and alternatives for the current bean
+ archive.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="beans">
+ <xs:annotation>
+ <xs:documentation>
+ Bean classes of enabled beans must be
+ deployed in bean archives. A library jar, EJB jar,
+ application client jar or rar archive is a bean archive if
+ it has a file named beans.xml in the META-INF directory. The
+ WEB-INF/classes directory of a war is a bean archive if
+ there is a file named beans.xml in the WEB-INF directory of
+ the war. A directory in the JVM classpath is a bean archive
+ if it has a file named beans.xml in the META-INF directory.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:all>
+ <xs:element ref="javaee:interceptors" />
+ <xs:element ref="javaee:decorators" />
+ <xs:element ref="javaee:alternatives" />
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="interceptors">
+ <xs:annotation>
+ <xs:documentation>
+ By default, a bean archive has no enabled
+ interceptors bound via interceptor bindings. An interceptor
+ must be explicitly enabled by listing its class under the
+ &lt;interceptors&gt; element of the beans.xml file of the
+ bean archive. The order of the interceptor declarations
+ determines the interceptor ordering. Interceptors which
+ occur earlier in the list are called first. If the same
+ class is listed twice under the &lt;interceptors&gt;
+ element, the container automatically detects the problem and
+ treats it as a deployment problem.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="class" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ Each child &lt;class&gt; element
+ must specify the name of an interceptor class. If
+ there is no class with the specified name, or if
+ the class with the specified name is not an
+ interceptor class, the container automatically
+ detects the problem and treats it as a deployment
+ problem.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="decorators">
+ <xs:annotation>
+ <xs:documentation>
+ By default, a bean archive has no enabled
+ decorators. A decorator must be explicitly enabled by
+ listing its bean class under the &lt;decorators&gt; element
+ of the beans.xml file of the bean archive. The order of the
+ decorator declarations determines the decorator ordering.
+ Decorators which occur earlier in the list are called first.
+ If the same class is listed twice under the
+ &lt;decorators&gt; element, the container automatically
+ detects the problem and treats it as a deployment problem.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="class" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ Each child &lt;class&gt; element
+ must specify the name of a decorator class. If
+ there is no class with the specified name, or if
+ the class with the specified name is not a
+ decorator class, the container automatically
+ detects the problem and treats it as a deployment
+ problem.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="alternatives">
+ <xs:annotation>
+ <xs:documentation>
+ An alternative is a bean that must be
+ explicitly declared in the beans.xml file if it should be
+ available for lookup, injection or EL resolution. By
+ default, a bean archive has no selected alternatives. An
+ alternative must be explicitly declared using the
+ &lt;alternatives&gt; element of the beans.xml file of the
+ bean archive. The &lt;alternatives&gt; element contains a
+ list of bean classes and stereotypes. An alternative is
+ selected for the bean archive if either: the alternative is
+ a managed bean or session bean and the bean class of the
+ bean is listed, or the alternative is a producer method,
+ field or resource, and the bean class that declares the
+ method or field is listed, or any @Alternative stereotype of
+ the alternative is listed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="class" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ Each child &lt;class&gt; element
+ must specify the name of an alternative bean class.
+ If there is no class with the specified name, or if
+ the class with the specified name is not an
+ alternative bean class, the container automatically
+ detects the problem and treats it as a deployment
+ problem. If the same class is listed twice under
+ the &lt;alternatives&gt; element, the container
+ automatically detects the problem and treats it as
+ a deployment problem.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="stereotype" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ Each child &lt;stereotype&gt;
+ element must specify the name of an @Alternative
+ stereotype annotation. If there is no annotation
+ with the specified name, or the annotation is not
+ an @Alternative stereotype, the container
+ automatically detects the problem and treats it as
+ a deployment problem. If the same stereotype is
+ listed twice under the &lt;alternatives&gt;
+ element, the container automatically detects the
+ problem and treats it as a deployment problem.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>