<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
   "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
   "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar >

   <enterprise-beans>

      <!-- Session Beans -->
      <session>
         <description>JUnit Session Bean Test Runner</description>
         <ejb-name>EJBTestRunnerEJB</ejb-name>
         <home>org.jboss.test.util.ejb.EJBTestRunnerHome</home>
         <remote>org.jboss.test.util.ejb.EJBTestRunner</remote>
         <ejb-class>org.jboss.test.util.ejb.EJBTestRunnerBean</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Bean</transaction-type>
      </session>

      <session >
         <ejb-name>Facade</ejb-name>
         <home>org.jboss.test.cmp2.optimisticlock.interfaces.FacadeHome</home>
         <remote>org.jboss.test.cmp2.optimisticlock.interfaces.Facade</remote>
         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.FacadeBean</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Container</transaction-type>
      </session>

		<session>
			<ejb-name>TestSession</ejb-name>
			<home>org.jboss.test.cmp2.optimisticlock.bug1006723.testsession.TestSessionRemoteHome</home>
			<remote>org.jboss.test.cmp2.optimisticlock.bug1006723.testsession.TestSessionRemote</remote>
			<ejb-class>org.jboss.test.cmp2.optimisticlock.bug1006723.testsession.TestSessionBean</ejb-class>
			<session-type>Stateless</session-type>
			<transaction-type>Container</transaction-type>
			<ejb-local-ref>
				<ejb-ref-name>ejb/EntityA</ejb-ref-name>
				<ejb-ref-type>Entity</ejb-ref-type>
				<local-home>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityALocalHome</local-home>
				<local>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityALocal</local>
				<ejb-link>EntityA</ejb-link>
			</ejb-local-ref>
			<ejb-local-ref>
				<ejb-ref-name>ejb/EntityB</ejb-ref-name>
				<ejb-ref-type>Entity</ejb-ref-type>
				<local-home>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityBLocalHome</local-home>
				<local>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityBLocal</local>
				<ejb-link>EntityB</ejb-link>
			</ejb-local-ref>
		</session>

      <!-- Entity Beans -->
		<entity>
			<ejb-name>EntityA</ejb-name>
			<local-home>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityALocalHome</local-home>
			<local>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityALocal</local>
			<ejb-class>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityABean</ejb-class>
			<persistence-type>Container</persistence-type>
			<prim-key-class>java.lang.Long</prim-key-class>
			<reentrant>False</reentrant>
			<cmp-version>2.x</cmp-version>
			<abstract-schema-name>EntityABean</abstract-schema-name>
			<cmp-field>
				<field-name>OIDCMP</field-name>
			</cmp-field>
			<primkey-field>OIDCMP</primkey-field>
		</entity>
		<entity>
			<ejb-name>EntityB</ejb-name>
			<local-home>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityBLocalHome</local-home>
			<local>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityBLocal</local>
			<ejb-class>org.jboss.test.cmp2.optimisticlock.bug1006723.testentity.EntityBBean</ejb-class>
			<persistence-type>Container</persistence-type>
			<prim-key-class>java.lang.Long</prim-key-class>
			<reentrant>False</reentrant>
			<cmp-version>2.x</cmp-version>
			<abstract-schema-name>EntityBBean</abstract-schema-name>
			<cmp-field>
				<field-name>OIDCMP</field-name>
			</cmp-field>
			<cmp-field>
				<field-name>lastModifiedCMP</field-name>
			</cmp-field>
			<primkey-field>OIDCMP</primkey-field>
		</entity>

      <entity>
         <ejb-name>EntityGroupLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityGroupLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityGroupLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

      <entity>
         <ejb-name>EntityModifiedLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityModifiedLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityModifiedLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

      <entity>
         <ejb-name>EntityReadLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityReadLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityReadLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

      <entity>
         <ejb-name>EntityVersionLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityVersionLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityVersionLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

      <entity>
         <ejb-name>EntityExplicitVersionLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityExplicitVersionLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityExplicitVersionLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

      <entity>
         <ejb-name>EntityTimestampLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityTimestampLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityTimestampLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

      <entity>
         <ejb-name>EntityKeyGeneratorLocking</ejb-name>

         <local-home>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocalHome</local-home>
         <local>org.jboss.test.cmp2.optimisticlock.interfaces.CmpEntityLocal</local>

         <ejb-class>org.jboss.test.cmp2.optimisticlock.ejb.CmpEntityBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Integer</prim-key-class>
         <reentrant>false</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>EntityKeyGeneratorLocking</abstract-schema-name>
         <cmp-field >
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>stringGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup1</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup1</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>stringGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>integerGroup2</field-name>
         </cmp-field>
         <cmp-field >
            <field-name>doubleGroup2</field-name>
         </cmp-field>
         <cmp-field>
            <field-name>versionField</field-name>
         </cmp-field>
         <primkey-field>id</primkey-field>

         <query>
            <query-method>
               <method-name>findById</method-name>
               <method-params>
                  <method-param>java.lang.Integer</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[select object(o) from EntityKeyGeneratorLocking o where o.id=?1]]></ejb-ql>
         </query>
      </entity>

   </enterprise-beans>

	<relationships>
		<ejb-relation>
			<ejb-relation-name>EntityA-EntityB</ejb-relation-name>
			<ejb-relationship-role>
				<ejb-relationship-role-name>EntityA-1:m-EntityB</ejb-relationship-role-name>
				<multiplicity>One</multiplicity>
				<relationship-role-source>
					<ejb-name>EntityA</ejb-name>
				</relationship-role-source>
				<cmr-field>
					<cmr-field-name>entityBsCMR</cmr-field-name>
				</cmr-field>
			</ejb-relationship-role>
			<ejb-relationship-role>
				<ejb-relationship-role-name>EntityB-m:1-EntityA</ejb-relationship-role-name>
				<multiplicity>Many</multiplicity>
				<cascade-delete/>
				<relationship-role-source>
					<ejb-name>EntityB</ejb-name>
				</relationship-role-source>
			</ejb-relationship-role>
		</ejb-relation>
	</relationships>

   <assembly-descriptor>
      <container-transaction >
         <method >
            <ejb-name>Facade</ejb-name>
            <method-name>modifyGroup1InRequiresNew</method-name>
         </method>       
         <method >
            <ejb-name>Facade</ejb-name>
            <method-name>modifyGroup2InRequiresNew</method-name>
         </method>       
         <trans-attribute>RequiresNew</trans-attribute>
      </container-transaction>
   </assembly-descriptor>

</ejb-jar>
