I'm not sure. Under what situations does the code get hit now? I'm
most concerned as it relates to cross-DataMap resolution and mutlipel
DataMaps.
On 9/30/05, Andrus Adamchik <andru..bjectstyle.org> wrote:
> I am planning to apply the change below to EntityResolver. What it
> means internally is that EntityResolver
> will become more "pessimistic" and won't attempt to reconstruct the
> cache if an entity lookup fails.
>
> What it means to the users is that an exception will be thrown if an
> attempt is made to lookup unmapped entity.
>
> Does anyone think that making EntityResolver more tight is a bad
> thing (or will disturb too much of the existing code)?
>
> Andrus
>
>
> Index: EntityResolver.java
> ===================================================================
> RCS file: /cvsroot/cayenne/cayenne/src/cayenne/java/org/objectstyle/
> cayenne/map/EntityResolver.java,v
> retrieving revision 1.17
> diff -u -r1.17 EntityResolver.java
> --- EntityResolver.java 30 Sep 2005 03:34:12 -0000 1.17
> +++ EntityResolver.java 30 Sep 2005 04:06:38 -0000
>.. -105,6 +105,8 @@
> protected List maps;
> protected Map entityInheritanceCache;
> protected EntityResolver clientEntityResolver;
> +
> + boolean indexed;
> /**
> * Creates new EntityResolver.
>.. -286,6 +288,7 @@
> procedureCache.clear();
> entityInheritanceCache.clear();
> clientEntityResolver = null;
> + indexed = false;
> }
> /**
>.. -410,6 +413,8 @@
> }
> }
> }
> +
> + indexed = true;
> }
> /**
>.. -708,12 +713,19 @@
> }
> ObjEntity result = (ObjEntity) objEntityCache.get(object);
> - if (result == null) {
> - // reconstruct cache just in case some of the datamaps
> - // have changed and now contain the required information
> + if (result != null) {
> + return result;
> + }
> +
> + if (!indexed) {
> constructCache();
> result = (ObjEntity) objEntityCache.get(object);
> +
> + if (result != null) {
> + return result;
> + }
> }
> - return result;
> +
> + throw new CayenneRuntimeException("No ObjEntity mapped for
> object: " + object);
> }
> }
>
>
>
This archive was generated by hypermail 2.0.0 : Fri Sep 30 2005 - 00:13:43 EDT