[EMAIL PROTECTED] wrote:
yes. but the object in question does support the OrganizationIF . Take a look at the code:Why do you think that the partner object should support OrganizationIF? It's perfectly reasonable that it does not, for some configurations of data/classes.
-----snip---
// class definition
public class OrganisationPO extends PartnerPO implements OrganisationIF, java.io.Serializable {
---- snip----
the queried object is a of type OrgansiationPO. (Because before switching to dynamic proxy, this class
was of this type)
joerg
Furthermore, if you load it using dynamic proxies, you've said I want to treat this as a PartnerIF the fact that the real object behind the scenes might implement a other interfaces is not relevant.
David
|---------+---------------------------> | | Joerg Lensing | | | <[EMAIL PROTECTED]| | | nsing.de> | | | | | | 09/11/2003 09:02| | | AM | | | Please respond | | | to "OJB Users | | | List" | | | | |---------+---------------------------> >--------------------------------------------------------------------------------------------------------------------------------------------------------------| | | | To: OJB Users List <[EMAIL PROTECTED]> | | cc: | | Subject: dynamci Proxy: ClassCastException with Interfaces | | | >--------------------------------------------------------------------------------------------------------------------------------------------------------------|
hi all,
I'm using dynamic proxies for these classes
look at this Interface/class-hierarchy:
AbstractPersistentIF |_PartnerIF |_OrganisationIF |_PersonIF
(PO: persistent/mapped objects) AbstractPersistentPO |_PartnerPO |_OrganisationPO |_PersonPO
if i query an organisation: ---- snip-------- public PartnerIF getPartnerByOID(int pOID,Transaction tx) {
// obtain a broker instance from the current transaction HasBroker hasBroker = (HasBroker) tx; PersistenceBroker broker = hasBroker.getBroker(); Criteria crit = new Criteria();
crit.addEqualTo("id", new Integer(pOID));
Query query = new QueryByCriteria(PartnerPO.class, crit);
PartnerIF partner = (PartnerIF)broker.getObjectByQuery(query);
if (broker.hasClassDescriptor(partner.getClass())) {
tx.lock(partner, org.odmg.Transaction.READ); } return partner; } ----snip
if i test the implemented interfaces for the queried class (-->partner.getClass().getIntefaces();), it doesn't show the right implemented interface. The class shoud show OrganisationIF, but shows PersonIF as being implemented by this class
who can help?
tx joerg
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]