gdamour     2005/08/19 23:49:06

  Added:       modules/itests/src/cmp2/cmrmapping ejb-jar.xml
                        openejb-jar.xml
  Log:

  o GERONIMO-675 CMR / CMP Fields should not be read-only
  
  Some additional enhancement to support the scenario where a primary key column
  is also a foreign key column.
  
  This basically implements the rules that Jeremy was recommending to apply
  in such a case:
  
  when the primary key is set in the ejbCreate<Method> the associated CMR field,
  i.e. the CMR mapped to the foreign key column, is marked as under 
construction.
  
  From this point, the CMR must be set before the commit of the current
  transaction. If not set, then the transaction is marked as rolled back.
  
  Also, if an attempt is made to reset the pk field by relating the entity to
  the wrong entity, an IllegalStateException is thrown.
  
  o Also sync the code with the refactoring of the Association and 
AssociationEnd
  classes: the Association.isOneToOne, isOneToMany, isManyToOne and
  isManyToMany methods have been moved to AssociationEnd.
  
  Revision  Changes    Path
  1.1                  openejb/modules/itests/src/cmp2/cmrmapping/ejb-jar.xml
  
  Index: ejb-jar.xml
  ===================================================================
  <?xml version="1.0" encoding="US-ASCII"?>
  
  <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee";
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
      http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";
      version="2.1">
  
      <enterprise-beans>
          <entity>
              <ejb-name>OneOwningSideBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.cmrmapping.OneOwningSideLocalHome</local-home>
              
<local>org.openejb.test.entity.cmp2.cmrmapping.OneOwningSideLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.cmrmapping.OneOwningSideBean</ejb-class>
              <persistence-type>Container</persistence-type>
              
<prim-key-class>org.openejb.test.entity.cmp2.cmrmapping.CompoundPK</prim-key-class>
              <reentrant>false</reentrant>
              <cmp-version>2.x</cmp-version>
              <abstract-schema-name>Order</abstract-schema-name>
              <cmp-field><field-name>id</field-name></cmp-field>
              <cmp-field><field-name>field1</field-name></cmp-field>
          </entity>
  
          <entity>
              <ejb-name>OneInverseSideBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.cmrmapping.OneInverseSideLocalHome</local-home>
              
<local>org.openejb.test.entity.cmp2.cmrmapping.OneInverseSideLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.cmrmapping.OneInverseSideBean</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>Order</abstract-schema-name>
              <cmp-field><field-name>id</field-name></cmp-field>
              <primkey-field>id</primkey-field>
          </entity>
  
          <entity>
              <ejb-name>ManyOwningSideBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.cmrmapping.ManyOwningSideLocalHome</local-home>
              
<local>org.openejb.test.entity.cmp2.cmrmapping.ManyOwningSideLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.cmrmapping.ManyOwningSideBean</ejb-class>
              <persistence-type>Container</persistence-type>
              
<prim-key-class>org.openejb.test.entity.cmp2.cmrmapping.CompoundPK</prim-key-class>
              <reentrant>false</reentrant>
              <cmp-version>2.x</cmp-version>
              <abstract-schema-name>Order</abstract-schema-name>
              <cmp-field><field-name>id</field-name></cmp-field>
              <cmp-field><field-name>field1</field-name></cmp-field>
          </entity>
  
          <session>
              <ejb-name>CMRMappingFacadeBean</ejb-name>
              
<home>org.openejb.test.entity.cmp2.cmrmapping.CMRMappingFacadeHome</home>
              
<remote>org.openejb.test.entity.cmp2.cmrmapping.CMRMappingFacadeRemote</remote>
              
<ejb-class>org.openejb.test.entity.cmp2.cmrmapping.CMRMappingFacadeBean</ejb-class>
              <session-type>Stateless</session-type>
              <transaction-type>Bean</transaction-type>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/OneOwningSideLocalHome</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.cmrmapping.OneOwningSideLocalHome</local-home>
                  
<local>org.openejb.test.entity.cmp2.cmrmapping.OneOwningSideLocal</local>
                  <ejb-link>OneOwningSideBean</ejb-link>
              </ejb-local-ref>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/OneInverseSideLocalHome</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.cmrmapping.OneInverseSideLocalHome</local-home>
                  
<local>org.openejb.test.entity.cmp2.cmrmapping.OneInverseSideLocal</local>
                  <ejb-link>OneInverseSideBean</ejb-link>
              </ejb-local-ref>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/ManyOwningSideLocalHome</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.cmrmapping.ManyOwningSideLocalHome</local-home>
                  
<local>org.openejb.test.entity.cmp2.cmrmapping.ManyOwningSideLocal</local>
                  <ejb-link>ManyOwningSideBean</ejb-link>
              </ejb-local-ref>
          </session>
      </enterprise-beans>
  
      <relationships>
          <ejb-relation>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>OneOwningSideBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>oneInverseSide</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>OneInverseSideBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>oneOwningSide</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
          </ejb-relation>
          <ejb-relation>
              <ejb-relationship-role>
                  <multiplicity>Many</multiplicity>
                  <relationship-role-source>
                      <ejb-name>ManyOwningSideBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>oneInverseSide</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>OneInverseSideBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>manyOwningSide</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
          </ejb-relation>
      </relationships>
      
      <assembly-descriptor>
          <container-transaction>
              <method>
                  <ejb-name>OneOwningSideBean</ejb-name>
                  <method-name>*</method-name>
              </method>
              <trans-attribute>Supports</trans-attribute>
          </container-transaction>
          <container-transaction>
              <method>
                  <ejb-name>OneInverseSideBean</ejb-name>
                  <method-name>*</method-name>
              </method>
              <trans-attribute>Supports</trans-attribute>
          </container-transaction>
          <container-transaction>
              <method>
                  <ejb-name>ManyOwningSideBean</ejb-name>
                  <method-name>*</method-name>
              </method>
              <trans-attribute>Supports</trans-attribute>
          </container-transaction>
      </assembly-descriptor>
  </ejb-jar>
  
  
  
  1.1                  
openejb/modules/itests/src/cmp2/cmrmapping/openejb-jar.xml
  
  Index: openejb-jar.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <openejb-jar
      xmlns="http://www.openejb.org/xml/ns/openejb-jar";
      configId="org/openejb/cmp2/CMRMapping"
      parentId="org/apache/geronimo/DefaultDatabase">
  
      <dependency>
          <uri>junit/jars/junit-3.8.1.jar</uri>
      </dependency>
  
      <cmp-connection-factory>
          <application>null</application>
          <module>org/apache/geronimo/DefaultDatabase</module>
          <name>DefaultDatasource</name>
      </cmp-connection-factory>
  
      <enterprise-beans>
          <entity>
              <ejb-name>OneOwningSideBean</ejb-name>
              <table-name>OneOwning</table-name>
              <cmp-field-mapping>
                  <cmp-field-name>id</cmp-field-name>
                  <table-column>id</table-column>
              </cmp-field-mapping>
              <cmp-field-mapping>
                  <cmp-field-name>field1</cmp-field-name>
                  <table-column>field1</table-column>
              </cmp-field-mapping>
          </entity>
          <entity>
              <ejb-name>OneInverseSideBean</ejb-name>
              <table-name>OneInverse</table-name>
              <cmp-field-mapping>
                  <cmp-field-name>id</cmp-field-name>
                  <table-column>id</table-column>
              </cmp-field-mapping>
          </entity>
          <entity>
              <ejb-name>ManyOwningSideBean</ejb-name>
              <table-name>ManyOwning</table-name>
              <cmp-field-mapping>
                  <cmp-field-name>id</cmp-field-name>
                  <table-column>id</table-column>
              </cmp-field-mapping>
              <cmp-field-mapping>
                  <cmp-field-name>field1</cmp-field-name>
                  <table-column>field1</table-column>
              </cmp-field-mapping>
          </entity>
          
          <session>
              <ejb-name>CMRMappingFacadeBean</ejb-name>
              <jndi-name>cmp2/CMRMappingFacade</jndi-name>
          </session>
      </enterprise-beans>
  
      <relationships>
          <ejb-relation>
              <ejb-relationship-role>
                  <relationship-role-source>
                      <ejb-name>OneInverseSideBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>oneOwningSide</cmr-field-name>
                  </cmr-field>
                  <role-mapping>
                      <cmr-field-mapping>
                          <key-column>id</key-column>
                          <foreign-key-column>field1</foreign-key-column>
                      </cmr-field-mapping>
                  </role-mapping>
              </ejb-relationship-role>
          </ejb-relation>
          <ejb-relation>
              <ejb-relationship-role>
                  <relationship-role-source>
                      <ejb-name>OneInverseSideBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>manyOwningSide</cmr-field-name>
                  </cmr-field>
                  <role-mapping>
                      <cmr-field-mapping>
                          <key-column>id</key-column>
                          <foreign-key-column>field1</foreign-key-column>
                      </cmr-field-mapping>
                  </role-mapping>
              </ejb-relationship-role>
          </ejb-relation>
  
      </relationships>
  
  </openejb-jar>
  
  
  

Reply via email to