gdamour     2005/06/22 07:27:17

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

  GERONIMO-665, checkpoint.
  
  Prefetching works for finders, selects and CMR.
  
  For CMR, it works as expected only if the entity is already defined by the
  transactional cache.
  
  Proper prefetching capabilities for CMR and CMP still need to be implemented.
  
  Revision  Changes    Path
  1.1                  openejb/modules/itests/src/cmp2/prefetch/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>AddressBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.model.AddressLocalHome</local-home>
              <local>org.openejb.test.entity.cmp2.model.AddressLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.model.AddressBean</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>Address</abstract-schema-name>
              <cmp-field><field-name>id</field-name></cmp-field>
              <cmp-field><field-name>street</field-name></cmp-field>
              <cmp-field><field-name>city</field-name></cmp-field>
              <primkey-field>id</primkey-field>
          </entity>
  
          <entity>
              <ejb-name>LineItemBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.model.LineItemLocalHome</local-home>
              <local>org.openejb.test.entity.cmp2.model.LineItemLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.model.LineItemBean</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>LineItem</abstract-schema-name>
              <cmp-field><field-name>id</field-name></cmp-field>
              <cmp-field><field-name>quantity</field-name></cmp-field>
              <primkey-field>id</primkey-field>
          </entity>
  
          <entity>
              <ejb-name>OrderBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.model.OrderLocalHome</local-home>
              <local>org.openejb.test.entity.cmp2.model.OrderLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.model.OrderBean</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>
              <cmp-field><field-name>reference</field-name></cmp-field>
              <primkey-field>id</primkey-field>
              <query>
                  <query-method>
                      <method-name>findPrefetchAll</method-name>
                      <method-params>
                          <method-param>java.lang.Integer</method-param>
                      </method-params>
                  </query-method>
                  <ejb-ql>
                      <![CDATA[SELECT OBJECT(o) FROM Order AS o WHERE o.id = 
?1]]>
                  </ejb-ql>
              </query>
          </entity>
  
          <entity>
              <ejb-name>ProductBean</ejb-name>
              
<local-home>org.openejb.test.entity.cmp2.model.ProductLocalHome</local-home>
              <local>org.openejb.test.entity.cmp2.model.ProductLocal</local>
              
<ejb-class>org.openejb.test.entity.cmp2.model.ProductBean</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>Product</abstract-schema-name>
              <cmp-field><field-name>id</field-name></cmp-field>
              <cmp-field><field-name>name</field-name></cmp-field>
              <cmp-field><field-name>productType</field-name></cmp-field>
              <primkey-field>id</primkey-field>
          </entity>
  
          <session>
              <ejb-name>PrefetchFacadeBean</ejb-name>
              
<home>org.openejb.test.entity.cmp2.prefetch.PrefetchFacadeHome</home>
              
<remote>org.openejb.test.entity.cmp2.prefetch.PrefetchFacadeObject</remote>
              
<ejb-class>org.openejb.test.entity.cmp2.prefetch.PrefetchFacadeBean</ejb-class>
              <session-type>Stateless</session-type>
              <transaction-type>Bean</transaction-type>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/Address</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.model.AddressLocalHome</local-home>
                  <local>org.openejb.test.entity.cmp2.model.AddressLocal</local>
                  <ejb-link>AddressBean</ejb-link>
              </ejb-local-ref>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/LineItem</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.model.LineItemLocalHome</local-home>
                  
<local>org.openejb.test.entity.cmp2.model.LineItemLocal</local>
                  <ejb-link>LineItemBean</ejb-link>
              </ejb-local-ref>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/Order</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.model.OrderLocalHome</local-home>
                  <local>org.openejb.test.entity.cmp2.model.OrderLocal</local>
                  <ejb-link>OrderBean</ejb-link>
              </ejb-local-ref>
              <ejb-local-ref>
                  <ejb-ref-name>ejb/Product</ejb-ref-name>
                  <ejb-ref-type>Entity</ejb-ref-type>
                  
<local-home>org.openejb.test.entity.cmp2.model.ProductLocalHome</local-home>
                  <local>org.openejb.test.entity.cmp2.model.ProductLocal</local>
                  <ejb-link>ProductBean</ejb-link>
              </ejb-local-ref>
              <resource-ref>
                  <res-ref-name>jdbc/CMPDatasource</res-ref-name>
                  <res-type>javax.sql.DataSource</res-type>
                  <res-auth>Container</res-auth>
              </resource-ref>
          </session>
      </enterprise-beans>
  
      <relationships>
          <ejb-relation>
              <ejb-relationship-role>
                  <multiplicity>Many</multiplicity>
                  <relationship-role-source>
                      <ejb-name>OrderBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>shippingAddress</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>AddressBean</ejb-name>
                  </relationship-role-source>
              </ejb-relationship-role>
          </ejb-relation>
          <ejb-relation>
              <ejb-relationship-role>
                  <multiplicity>Many</multiplicity>
                  <relationship-role-source>
                      <ejb-name>OrderBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>billingAddress</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>AddressBean</ejb-name>
                  </relationship-role-source>
              </ejb-relationship-role>
          </ejb-relation>
          <ejb-relation>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>OrderBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>lineItems</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                  <multiplicity>Many</multiplicity>
                  <relationship-role-source>
                      <ejb-name>LineItemBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>order</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
          </ejb-relation>
          <ejb-relation>
              <ejb-relationship-role>
                  <multiplicity>One</multiplicity>
                  <relationship-role-source>
                      <ejb-name>ProductBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>lineItems</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
              <ejb-relationship-role>
                  <multiplicity>Many</multiplicity>
                  <relationship-role-source>
                      <ejb-name>LineItemBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>product</cmr-field-name>
                  </cmr-field>
              </ejb-relationship-role>
          </ejb-relation>
      </relationships>
      
      <assembly-descriptor>
          <container-transaction>
              <method>
                  <ejb-name>AddressBean</ejb-name>
                  <method-name>*</method-name>
              </method>
              <trans-attribute>Supports</trans-attribute>
          </container-transaction>
          <container-transaction>
              <method>
                  <ejb-name>LineItemBean</ejb-name>
                  <method-name>*</method-name>
              </method>
              <trans-attribute>Supports</trans-attribute>
          </container-transaction>
          <container-transaction>
              <method>
                  <ejb-name>OrderBean</ejb-name>
                  <method-name>*</method-name>
              </method>
              <trans-attribute>Supports</trans-attribute>
          </container-transaction>
          <container-transaction>
              <method>
                  <ejb-name>ProductBean</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/prefetch/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/Prefetch"
      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>AddressBean</ejb-name>
              <table-name>address</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>street</cmp-field-name>
                  <table-column>street</table-column>
              </cmp-field-mapping>
              <cmp-field-mapping>
                  <cmp-field-name>city</cmp-field-name>
                  <table-column>city</table-column>
              </cmp-field-mapping>
              <prefetch-group>
                  <group>
                      <group-name>prefetchAll</group-name>
                      <cmp-field-name>street</cmp-field-name>
                      <cmp-field-name>city</cmp-field-name>
                  </group>
              </prefetch-group>
          </entity>
          <entity>
              <ejb-name>LineItemBean</ejb-name>
              <table-name>line_item</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>quantity</cmp-field-name>
                  <table-column>quantity</table-column>
              </cmp-field-mapping>
              <prefetch-group>
                  <group>
                      <group-name>prefetchAll</group-name>
                      <cmp-field-name>quantity</cmp-field-name>
                      <cmr-field>
                          <cmr-field-name>product</cmr-field-name>
                      </cmr-field>
                  </group>
              </prefetch-group>
          </entity>
          <entity>
              <ejb-name>OrderBean</ejb-name>
              <table-name>order_table</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>reference</cmp-field-name>
                  <table-column>reference</table-column>
              </cmp-field-mapping>
              <prefetch-group>
                  <group>
                      <group-name>prefetchAll</group-name>
                      <cmp-field-name>reference</cmp-field-name>
                      <cmr-field>
                          <cmr-field-name>shippingAddress</cmr-field-name>
                      </cmr-field>
                      <cmr-field>
                          <cmr-field-name>billingAddress</cmr-field-name>
                      </cmr-field>
                      <cmr-field>
                          <cmr-field-name>lineItems</cmr-field-name>
                      </cmr-field>
                  </group>
              </prefetch-group>
              <query>
                  <query-method>
                      <method-name>findPrefetchAll</method-name>
                      <method-params>
                          <method-param>java.lang.Integer</method-param>
                      </method-params>
                  </query-method>
                  <group-name>prefetchAll</group-name>
              </query>
          </entity>
          <entity>
              <ejb-name>ProductBean</ejb-name>
              <table-name>product</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>name</cmp-field-name>
                  <table-column>name</table-column>
              </cmp-field-mapping>
              <cmp-field-mapping>
                  <cmp-field-name>productType</cmp-field-name>
                  <table-column>product_type</table-column>
              </cmp-field-mapping>
              <prefetch-group>
                  <group>
                      <group-name>prefetchAll</group-name>
                      <cmp-field-name>name</cmp-field-name>
                      <cmp-field-name>productType</cmp-field-name>
                  </group>
              </prefetch-group>
          </entity>
          
          <session>
              <ejb-name>PrefetchFacadeBean</ejb-name>
              <jndi-name>cmp2/Prefetch/PrefetchFacade</jndi-name>
              <resource-ref>
                  <ref-name>jdbc/CMPDatasource</ref-name>
                  <application>null</application>
                  <module>org/apache/geronimo/DefaultDatabase</module>
                  <name>DefaultDatasource</name>
              </resource-ref>
          </session>
      </enterprise-beans>
  
      <relationships>
          <ejb-relation>
              <ejb-relationship-role>
                  <relationship-role-source>
                      <ejb-name>OrderBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>shippingAddress</cmr-field-name>
                  </cmr-field>
                  <foreign-key-column-on-source/>
                  <role-mapping>
                      <cmr-field-mapping>
                          <key-column>id</key-column>
                          
<foreign-key-column>fk_shipping_address</foreign-key-column>
                      </cmr-field-mapping>
                  </role-mapping>
              </ejb-relationship-role>
          </ejb-relation>    
          <ejb-relation>
              <ejb-relationship-role>
                  <relationship-role-source>
                      <ejb-name>OrderBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>billingAddress</cmr-field-name>
                  </cmr-field>
                  <foreign-key-column-on-source/>
                  <role-mapping>
                      <cmr-field-mapping>
                          <key-column>id</key-column>
                          
<foreign-key-column>fk_billing_address</foreign-key-column>
                      </cmr-field-mapping>
                  </role-mapping>
              </ejb-relationship-role>
          </ejb-relation>    
          <ejb-relation>
              <ejb-relationship-role>
                  <relationship-role-source>
                      <ejb-name>OrderBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>lineItems</cmr-field-name>
                  </cmr-field>
                  <role-mapping>
                      <cmr-field-mapping>
                          <key-column>id</key-column>
                          <foreign-key-column>fk_order</foreign-key-column>
                      </cmr-field-mapping>
                  </role-mapping>
              </ejb-relationship-role>
          </ejb-relation>    
          <ejb-relation>
              <ejb-relationship-role>
                  <relationship-role-source>
                      <ejb-name>ProductBean</ejb-name>
                  </relationship-role-source>
                  <cmr-field>
                      <cmr-field-name>lineItems</cmr-field-name>
                  </cmr-field>
                  <role-mapping>
                      <cmr-field-mapping>
                          <key-column>id</key-column>
                          <foreign-key-column>fk_product</foreign-key-column>
                      </cmr-field-mapping>
                  </role-mapping>
              </ejb-relationship-role>
          </ejb-relation>    
      </relationships>
  
  </openejb-jar>
  
  
  

Reply via email to