Hi Emmanuel,

As Poxies work with interfaces only you have to make sure that all your reference attributes are typed as Interfaces too!

A field
B aB;
can only be assigned with a B instance, but not with a Proxy implementing InterfaceB. This is what the error message is trying to tell you.


You must define aB as
InterfaceB aB;

cheers,
thomas


Emmanuel Dupont wrote:
All,





As the maillist is out of order, I would like to know if there are some
trouble with the dynamic proxy ?



I have two objects A, B who work fine with Ojb and since I have been puting
the "dynamic" proxy in the repository.xml it haven't been working.



I only do this :



Object A implement InterfaceA

Object B implement InterfaceB



proxy="dynamic" in the repository.xml



Declaration of the InterfaceA and InterfaceB with all the method signatures
of A and B.



That's all.. This is driving me nuts !!





I have some collections between A, B and C, D..



It fails at the attributes b from A with is a link to B.



[org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl]
ERROR: while set field:


object class[ A target field: aB

target field type: class B

object value class: $Proxy1

object value: [Id] 15]

[org.apache.ojb.broker.accesslayer.IndirectionHandler] ERROR: Method
invoking failed for method *toString* on object null

Error setting field:aB in object:A

java.lang.IllegalArgumentException

      at
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.
java:63)

at java.lang.reflect.Field.set(Field.java:519)

      at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:147)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence
BrokerImpl.java:1527)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per
sistenceBrokerImpl.java:1632)

      at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti
ty(DelegatingPersistenceBroker.java:284)

      at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi
rectionHandler.java:290)

      at
org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect
ionHandler.java:277)

      at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl
er.java:246)

at $Proxy0.toString(Unknown Source)

      at
com.jware.test.businessobjects.AlertBO.getAlertInformation(BO.java:69)

at com.jware.test.businessobjects.Application.run(Application.java:28)

      at
com.jware.test.businessobjects.Application.main(Application.java:12)

rethrown as org.apache.ojb.broker.metadata.MetadataException: Error setting
field:aB in object:A

      at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:165)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence
BrokerImpl.java:1527)

      at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per
sistenceBrokerImpl.java:1632)

      at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti
ty(DelegatingPersistenceBroker.java:284)

      at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi
rectionHandler.java:290)

      at
org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect
ionHandler.java:277)

      at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl
er.java:246)

at $Proxy0.toString(Unknown Source)

at BO.getInformation(BO.java:69)

at com.jware.test.businessobjects.Application.run(Application.java:28)

      at
com.jware.test.businessobjects.Application.main(Application.java:12)

Caused by: java.lang.IllegalArgumentException



Thanks a lot !







--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to