Can't get past it.  Relates to use of identity and a Base class from
which I derive all classes.

This is a continuation of a mapping excercise i started a week ago.  I
am using RC2 version of Castor for the purposes of marshaling a map of
Integer/Address Object.  

With keith's help, i got the Map working by insuring that the collection
of objects preceded the references.

Now as i move forward and add a few items i'm finding that i'm getting
problems when i mix extended classes with identity.

Problem statement.

I basically have 4 objects

        Party (abstract class) contains a Mapped collection of Addresses
by Reference
        Business (derived from Party)
        Address (contains address information)

I was able to get this to work properly, but now i have introduced a
base class for all of the above obects
called "BusinessObject"  It is very small, has only 2 or 3 methods.

So, now Party and Address are derived from BusinessObject

Below is a mapping file that works.  Notice that i do not specify that
Address is derived from BusinessObject and I place the 2 fields of
interest in Address Mapping that is defined in BusinessObject.

Everything works fine.  But as soon as I add
extended="com.trivin.bo.BusinessObject" to Address (and remove the
fields related to BusinessObject) thus virtually making no logical
change to it i get the following error:

Unable to resolve ID for instance of class 'com.trivin.bo.party.Address'
due to the following error: No identity descriptor available



---Mapping File that Works----
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version
1.0//EN"
                         "http://castor.exolab.org/mapping.dtd";>

<mapping>
<!-- *********************************** Business Object (the super
Object) ********************** -->
        <class name="com.trivin.bo.BusinessObject" auto-complete="true">
         <!-- ************* Exclude
*************************************** -->
                 <field name="BOFactory" get-method="getBOFactory"
type="com.trivin.bo.BOFactory" transient="true" />
           <!--
************************************************************** -->
               
               <field name="productID" type="integer" >
                      <bind-xml name="productID" node="attribute" />
                </field>
        </class>


<!-- *********************************** Party **********************
-->
        <class name = "com.trivin.bo.party.Party"
extends="com.trivin.bo.BusinessObject" identity="castorHashCode"
auto-complete="true">

         <!-- ************* Exclude
*************************************** -->
                 <field name="addressRoles" type="integer"
get-method="getAddressRoles" collection="array" transient="true" />
                 <field name="partyType" type="integer" transient="true"
/>
                 <field name="partyID" type="long" transient="true" />
                 <field name="business" type="boolean" transient="true"
/>
                 <field name="individual" type="boolean"
transient="true" />
                 <field name="name" type="string" transient="true" />
         <!--
************************************************************** -->
                <field name="castorHashCode" type="integer" >
                      <bind-xml name="key" node="attribute" />
                </field>
                <field  name="suspensionViolation" type="string" >
                  <bind-xml name="suspensionViolation" node="attribute"
/>
                </field>
                <field  name="suspensionState" type="string" >
                  <bind-xml name="suspensionState" node="attribute" />
                </field>
                <field  name="phone" type="string" >
                  <bind-xml name="phone" node="attribute" />
                </field>
                <field  name="dmvId" type="string" >
                  <bind-xml name="dmvId" node="attribute" />
                </field>
                <field  name="FAX" type="string" >
                  <bind-xml name="FAX" node="attribute" />
                </field>
                <field  name="jurisdiction" type="string" >
                  <bind-xml name="Jurisdiction" node="attribute" />
                </field>
            <!-- End Map of Address References -->
                <field name="castorAddresses"
                       type="com.trivin.bo.party.Address"
                          collection="array"  >
                        <bind-xml name="Address" location="Addresses"/>
                </field>
            <!-- Hashmap of with key as Role and Value as Address -->
                <field name="addressMap"
                       type="org.exolab.castor.mapping.MapItem"
collection="map"
                       get-method="getAddressMap"
set-method="setAddressMap" >
                        <bind-xml>
                            <class name=
"org.exolab.castor.mapping.MapItem">
                                <field name="key" type="integer">
                                    <bind-xml name="role" node =
"attribute"/>
                                 </field>
                                 <field name="value"
type="com.trivin.bo.party.Address">
                                     <bind-xml name="Address"
node="element" reference="true"  />
                                </field>
                             </class>
                        </bind-xml>
                </field>
        </class>
<!-- *********************************** Business **********************
-->
        <class name="com.trivin.bo.party.Business"
extends="com.trivin.bo.party.Party" auto-complete="true">
                 <field name="name" type="string">
                        <bind-xml name="Name" node="attribute"/>
                 </field>
                 <field  name="doingBusinessAs" type="string" >
                  <bind-xml name="DBA" node="attribute" />
                </field>
                <field  name="feidNumber" type="string" >
                  <bind-xml name="FEIDNumber" node="attribute" />
                </field>
      </class>
<!-- *********************************** Individual
********************** -->
        <class name="com.trivin.bo.party.Individual"
extends="com.trivin.bo.party.Party"  auto-complete="true">
          <!-- ************* Exclude
*************************************** -->
                <field name="eyeColor" type="string" transient="true" />
                 <field name="birthDateString" type="string"
transient="true" />
          <!--
************************************************************** -->

                <field  name="birthDate" type="date" >
                  <bind-xml name="birthDate" node="attribute" />
                </field>
                <field  name="irpExempt" type="string" >
                  <bind-xml name="irpExempt" node="attribute" />
                </field>
                <field  name="prefix" type="string" >
                  <bind-xml name="prefix" node="attribute" />
                </field>
                <field  name="firstName" type="string" >
                  <bind-xml name="firstName" node="attribute" />
                </field>
                <field  name="middleName" type="string" >
                  <bind-xml name="middleName" node="attribute" />
                </field>
                <field  name="lastName" type="string" >
                  <bind-xml name="lastName" node="attribute" />
                </field>
                <field  name="suffix" type="string" >
                  <bind-xml name="suffix" node="attribute" />
                </field>
                <field  name="organDonor" type="string" >
                  <bind-xml name="organDonor" node="attribute" />
                </field>
                <field  name="custSSN" type="string" >
                  <bind-xml name="custSSN" node="attribute" />
                </field>
                <field  name="gender" type="string" >
                  <bind-xml name="gender" node="attribute" />
                </field>
                <field  name="custType" type="string" >
                  <bind-xml name="custType" node="attribute" />
                </field>
        </class>

<!-- *********************************** Address **********************
-->
        <class name="com.trivin.bo.party.Address"
identity="castorHashCode" auto-complete="true">
         
          <!-- ************* BusinessObjects Mappings
*************************************** -->

  <field name="BOFactory" get-method="getBOFactory"
type="com.trivin.bo.BOFactory" transient="true" />
               <field name="productID" type="integer" >
                      <bind-xml name="productID" node="attribute" />
                </field>

<!-- ************* BusinessObjects Mappings
*************************************** -->

                <field name="addressID" type="long" transient="true" />

                <field name="castorHashCode" type="integer" >
                      <bind-xml name="key" node="attribute" />
                </field>
                <field name="zipCode" type="string" >
                      <bind-xml name="zipCode" node="attribute" />
                </field>
                <field name="state" type="string" >
                      <bind-xml name="state" node="attribute" />
                </field>
                <field name="country" type="string" >
                      <bind-xml name="country" node="attribute" />
                </field>
                <field name="street1" type="string" >
                      <bind-xml name="street1" node="attribute" />
                </field>
                <field name="street2" type="string" >
                      <bind-xml name="street2" node="attribute" />
                </field>
                <field name="street3" type="string" >
                      <bind-xml name="street3" node="attribute" />
                </field>
                <field name="city" type="string" >
                      <bind-xml name="city" node="attribute" />
                </field>
                <field name="county" type="string" >
                      <bind-xml name="county" node="attribute" />
                </field>
        </class>
</mapping>


---- Mapping file that does not work and gets the error -----
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version
1.0//EN"
                         "http://castor.exolab.org/mapping.dtd";>

<mapping>
<!-- *********************************** Business Object (the super
Object) ********************** -->
        <class name="com.trivin.bo.BusinessObject" auto-complete="true">
         <!-- ************* Exclude
*************************************** -->
                 <field name="BOFactory" get-method="getBOFactory"
type="com.trivin.bo.BOFactory" transient="true" />
           <!--
************************************************************** -->
               
               <field name="productID" type="integer" >
                      <bind-xml name="productID" node="attribute" />
                </field>
        </class>


<!-- *********************************** Party **********************
-->
        <class name = "com.trivin.bo.party.Party"
extends="com.trivin.bo.BusinessObject" identity="castorHashCode"
auto-complete="true">

         <!-- ************* Exclude
*************************************** -->
                 <field name="addressRoles" type="integer"
get-method="getAddressRoles" collection="array" transient="true" />
                 <field name="partyType" type="integer" transient="true"
/>
                 <field name="partyID" type="long" transient="true" />
                 <field name="business" type="boolean" transient="true"
/>
                 <field name="individual" type="boolean"
transient="true" />
                 <field name="name" type="string" transient="true" />
         <!--
************************************************************** -->
                <field name="castorHashCode" type="integer" >
                      <bind-xml name="key" node="attribute" />
                </field>
                <field  name="suspensionViolation" type="string" >
                  <bind-xml name="suspensionViolation" node="attribute"
/>
                </field>
                <field  name="suspensionState" type="string" >
                  <bind-xml name="suspensionState" node="attribute" />
                </field>
                <field  name="phone" type="string" >
                  <bind-xml name="phone" node="attribute" />
                </field>
                <field  name="dmvId" type="string" >
                  <bind-xml name="dmvId" node="attribute" />
                </field>
                <field  name="FAX" type="string" >
                  <bind-xml name="FAX" node="attribute" />
                </field>
                <field  name="jurisdiction" type="string" >
                  <bind-xml name="Jurisdiction" node="attribute" />
                </field>
            <!-- End Map of Address References -->
                <field name="castorAddresses"
                       type="com.trivin.bo.party.Address"
                          collection="array"  >
                        <bind-xml name="Address" location="Addresses"/>
                </field>
            <!-- Hashmap of with key as Role and Value as Address -->
                <field name="addressMap"
                       type="org.exolab.castor.mapping.MapItem"
collection="map"
                       get-method="getAddressMap"
set-method="setAddressMap" >
                        <bind-xml>
                            <class name=
"org.exolab.castor.mapping.MapItem">
                                <field name="key" type="integer">
                                    <bind-xml name="role" node =
"attribute"/>
                                 </field>
                                 <field name="value"
type="com.trivin.bo.party.Address">
                                     <bind-xml name="Address"
node="element" reference="true"  />
                                </field>
                             </class>
                        </bind-xml>
                </field>
        </class>
<!-- *********************************** Business **********************
-->
        <class name="com.trivin.bo.party.Business"
extends="com.trivin.bo.party.Party" auto-complete="true">
                 <field name="name" type="string">
                        <bind-xml name="Name" node="attribute"/>
                 </field>
                 <field  name="doingBusinessAs" type="string" >
                  <bind-xml name="DBA" node="attribute" />
                </field>
                <field  name="feidNumber" type="string" >
                  <bind-xml name="FEIDNumber" node="attribute" />
                </field>
      </class>
<!-- *********************************** Individual
********************** -->
        <class name="com.trivin.bo.party.Individual"
extends="com.trivin.bo.party.Party"  auto-complete="true">
          <!-- ************* Exclude
*************************************** -->
                <field name="eyeColor" type="string" transient="true" />
                 <field name="birthDateString" type="string"
transient="true" />
          <!--
************************************************************** -->

                <field  name="birthDate" type="date" >
                  <bind-xml name="birthDate" node="attribute" />
                </field>
                <field  name="irpExempt" type="string" >
                  <bind-xml name="irpExempt" node="attribute" />
                </field>
                <field  name="prefix" type="string" >
                  <bind-xml name="prefix" node="attribute" />
                </field>
                <field  name="firstName" type="string" >
                  <bind-xml name="firstName" node="attribute" />
                </field>
                <field  name="middleName" type="string" >
                  <bind-xml name="middleName" node="attribute" />
                </field>
                <field  name="lastName" type="string" >
                  <bind-xml name="lastName" node="attribute" />
                </field>
                <field  name="suffix" type="string" >
                  <bind-xml name="suffix" node="attribute" />
                </field>
                <field  name="organDonor" type="string" >
                  <bind-xml name="organDonor" node="attribute" />
                </field>
                <field  name="custSSN" type="string" >
                  <bind-xml name="custSSN" node="attribute" />
                </field>
                <field  name="gender" type="string" >
                  <bind-xml name="gender" node="attribute" />
                </field>
                <field  name="custType" type="string" >
                  <bind-xml name="custType" node="attribute" />
                </field>
        </class>

<!-- *********************************** Address **********************
-->
        <class name="com.trivin.bo.party.Address"
extends="com.trivin.bo.BusinessObject" identity="castorHashCode"
auto-complete="true">
         

                <field name="addressID" type="long" transient="true" />

                <field name="castorHashCode" type="integer" >
                      <bind-xml name="key" node="attribute" />
                </field>
                <field name="zipCode" type="string" >
                      <bind-xml name="zipCode" node="attribute" />
                </field>
                <field name="state" type="string" >
                      <bind-xml name="state" node="attribute" />
                </field>
                <field name="country" type="string" >
                      <bind-xml name="country" node="attribute" />
                </field>
                <field name="street1" type="string" >
                      <bind-xml name="street1" node="attribute" />
                </field>
                <field name="street2" type="string" >
                      <bind-xml name="street2" node="attribute" />
                </field>
                <field name="street3" type="string" >
                      <bind-xml name="street3" node="attribute" />
                </field>
                <field name="city" type="string" >
                      <bind-xml name="city" node="attribute" />
                </field>
                <field name="county" type="string" >
                      <bind-xml name="county" node="attribute" />
                </field>
        </class>
</mapping>

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to