cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Jarrel <garyjar...@gmail.com>
Subject Relationship Fetching Behavior and Case Sensetivity
Date Thu, 27 May 2010 00:42:20 GMT
Hi Guys,

Another interesting aspect that I came across, perhaps best explained
via a small example

public class Customer {
    @Override
    public AccountsCustomer getAccountsCustomer() {
        AccountsCustomer accCustomer = super.getAccountsCustomer();

        try {
            accCustomer.getCustomerCode();
        } catch (Exception e) {
            // we need to aslo check without case sensetivity.
            try {
                accCustomer =
DataObjectUtils.objectForPK(getObjectContext(),
AccountsCustomer.class, getCustomerCode());
                accCustomer.getCustomerCode();
            } catch (Exception e1) {
                return null;
            }
        }

        return accCustomer;
    }
}

I have a Customer class which represents the customer in the web
database, within this class I have getAccountsCustomer() which
actually pulls the record from a customer table in the accounts
database. Now I have no control over the structure of this accounts
database, and the primary keys of the customer table as meaningful
string representations of the customer code.

Now in the getAccountsCustomer method above which I am overriding from
_Customer the first call super.getAccountsCustomer(); actually returns
a hollow object and since I do not want the hollow object but rather a
null I call the getCustomerCode method causing a Fault Exception and
subsequently return null.

This all works fine but only when the customer code cases are the same
in both databases.

So in my test case I reset the customer code in the web customer to
the same as it is in the accounts customer but to lower case and my
getAccountsCustomer() method starts returning null.

This was the case until I put in the second try block which uses
DataObjectUtils (as shown above). The DataObjectUtils.objectForPK
seems to work ignoring cases while the readProperty methods seem to
case sensitive.

Just felt like a bit of an inconsistency.

Cheers,

Gary

Mime
View raw message