On 10/4/05, David Forslund <[EMAIL PROTECTED]> wrote: > I get the following error when trying to access a field of an element of > a list: > > [PersistentField] ERROR: while set field: > [try to set 'object value' in 'target object' > target obj class: gov.lanl.PidServer.PTrait_ > target field name: values > target field type: class java.util.ArrayList > target field declared in: gov.lanl.PidServer.PTrait_ > object value class: > org.apache.ojb.broker.util.collections.RemovalAwareCollection > object value: [EMAIL PROTECTED] > ] > org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error > setting field:values in object:gov.lanl.PidServer.PTrait_ > 2005-10-03 22:45:20,189 [Thread-2] ERROR > gov.lanl.Database.OJBDatabaseMgr - retrieveElements: ';' filter: > '[state = 1, [[[values.value LIKE Forslund%, [values.name = XPN.0]], > [values.value LIKE David%, [values.name = XPN.1]], [values.value LIKE > W.%, [values.name = XPN.2]], [values.value LIKE Dr.%, [values.name = > XPN.3]]], [[values.value LIKE Los Alamos National Lab%, [values.name = > XAD.0]], [values.value LIKE Los Alamos%, [values.name = XAD.2]], > [values.value LIKE NM%, [values.name = XAD.3]], [values.value LIKE > 87544%, [values.name = XAD.4]], [values.value LIKE US%, [values.name = > XAD.5]]], [[values.value LIKE 01%, [values.name = XTN.0]], [values.value > LIKE 505-555-1212%, [values.name = XTN.1]]], [[values.value LIKE > 1012011234%, [values.name = ST.0]]], [[values.value LIKE 194402018%, > [values.name = TS.0]]], [value LIKE file:///d:/Java/netforge/dwf.gif%, > [name = vCard/PHOTO]]]]', error: > org.apache.ojb.broker.PersistenceBrokerException: > org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error > setting field:values in object:gov.lanl.PidServer.PTrait_ > at > org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImplNew.setValueFor(Unknown > Source) > at > org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImplNew.set(Unknown > Source) > at > org.apache.ojb.broker.accesslayer.CollectionPrefetcher.associateBatched(Unknown > Source) > at > org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(Unknown > Source) > at > org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Unknown > Source) > at > org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown > Source) > at > org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown > Source) > at > org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown > Source) > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknown > Source) > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown > Source) > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown > Source) > at > gov.lanl.Database.OJBDatabaseMgr.retrieveElements(OJBDatabaseMgr.java:413) > > PTrait_ has a private ArrayList called values. It contains NameValue_ > elements which have public accessible String fields (also with get/sets) > "name" and "value" > There are gets/sets for the Values ArrayList in PTrait_. PTrait_ > extends an abstract class which (partially) implements the Trait_ > interface. > > I can't tell why I can't access the values in PTrait_. What I'm doing > seems consistent with one of the examples in QueryTest except for the > inheritance aspect. Any suggestions?
The IllegalAccess error suggests that you're running in an environment with a SecurityManager enabled that prevents your code from accessing private fields, eg. an application server. You can either grant your application that right (see the security manager documentation). Or you can direct OJB to make the field accessible first before using it by changing the used PersistentField implementation in OJB.properties to PersistentFieldPrivilegedImpl. Or - if the field in question has accessors - use bean access instead by changing it to PersistentFieldIntrospectorImpl or to PersistentFieldAutoProxyImpl (which uses bean access or direct (privileged) access depending on what's available). Tom --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]