Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk Patch that fixes java.util.ConcurrentModificationException on flush

Apparently that was caused by triggering a fetch group,
and that in turn happened because of mapping.compareForChange was called by
DeferredChangeDetectionPolicy for a mapping outside the fetch group.
Hunted all usages of this method and changed them all to NOT be called outside
the fetch group.
----- Original Message -----
Sent: Sunday, June 06, 2010 11:29 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk Patch that fixes NPE in ObjectBuilder.copyObject
----- Original Message -----
Sent: Sunday, June 06, 2010 7:51 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk small corrections to the last patch
----- Original Message -----
Sent: Sunday, June 06, 2010 1:33 AM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk assorted last minute fixes patch.

Fixed exceptions' messages;
CopyGroup now adds primary keys and version (just as fetch group) unless
explicitly told not to do so (only applies to CASCADE_TREE mode);
Also fixed CopyGroup so that it always switches to CASCADE_TREE mode as soon as
(at least one) attribute is added.
Added fieldaccess.FetchGroups test suite - copy of FetchGroups test suite, but
uses field access.
----- Original Message -----
Sent: Friday, June 04, 2010 3:57 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk FetchGroup validation patch - extended.
Default and named FetchGroups validated during FetchGroupManager post
initialization;
FetchGroup validated with all nested FetchGroups in
ObjectLevelReadQuery.prePrepare method;
Defined exceptions for invalid attributes (no mapping, no reference mapping on
reference attribute, no reference descriptor, no reference FetchGroupManager);
Updated serialization test.
 
Additions made to the original FetchGroup validation patch:
added explicit triggering of target fetch group in mergeInObject if it's not a superset of the source fetch group;
addAttribute method no longer returns AttributeItem;
moved load method from LoadGroup to AbstractSession (leaving LoagGroup empty for now);
allowed QueryHints.FETCH_GROUP and LOAD_GROUP to accept AttributeGroup.
----- Original Message -----
Sent: Wednesday, June 02, 2010 8:16 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk CopyGroup patch

Commented out the failing tests - problems in read merge;
Defined a new class CopyGroup derived from AggregateGroup;
deprecated ObjectCopyingPolicy, which is now derived fron CopyGroup;
deprecated the old copyObject method - both versions of it;
defined a new copy method to AbstractSession and EntityManagerImpl that takes
CopyPolicy;
copy method accepts both objects and collections;
copy method makes a copy according to CopyPolicy -
  all attributes in the CopyPolicy are copied;
  none attributes outside the CopyPolicy are copied;
the copied object assigned the corresponding EntityFetchGroup and detached
(session == null);
In case of relational leaf attribute ("address" or "manager.phoneNumbers")
  all non-reference attributes that are included in default fetch group + pk
are copied;
copy method still not implemented in case for entities without fetch groups (no
fetch group manager);
By default CopyGroup
  like the old ObjectCopyingPolicy uses CASCADE_PRIVATE_PARTS cascading;
  unlike it doesn't nullify copy's pk;
As soon as an attribute is added to CopyPolicy its cascading is changed to the
new CASCADE_TREE option that is a new functionality.
----- Original Message -----
Sent: Tuesday, June 01, 2010 2:03 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk:
Correction patch after James' review.

James' comments:

- addPartialAttribute, did you also deprecate the one that takes an _expression_?

- ObjectLevelReadQuery, addSelectionFieldsForJoinedExpression, code is odd,
cast to Vector<DatabaseField> but then casts to Object and allows _expression_?

- getFetchGroupSelectionFields, in general try to avoid using Vector (List).

- shouldReadMapping, short circuit was removed?



Some more comments from refreshing my view.

- FetchGroupManager, has a bunch of public methods that should be marked
internal

- Should have a test for embeddable attributes, we should probably throw some
kind of error if we don't support this, also aggregate collections.

- ForeignReferenceMapping, batchValueFromRow, the setting of the fetch group
should be in the prepare of the nested batch query, not cloning it and
repreparing it.

- FetchGroup, set/shouldLoad should have a user comment explaining what is does

- LoadGroup, should avoid using DescriptorIterator as performance issue and not
polymorphic, should dispatch to ObjectBuilder/mappings

- ObjectLevelReadQuery, setting of fetch group should be in mapping, not
cloning and repreparing query in query

- ClassWeaver, does not look like fetch groups are weaved if change tracking is
not weaved?

- MethodWeaver, same thing

- QuerySQLTracker uses tabs, also the class already exists in the testing
framework package, so no need to define another


The patch corrects most of the problems mentioned in these comments.
----- Original Message -----
Sent: Tuesday, May 25, 2010 5:24 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Bug 244124 - Add Nested FetchGroup

Checked into trunk  two independent patches for fetch groups: fetch joins and weaving.

 

 

Fetch join patch - take 2.

A new version of patch that adds support for fetch joins used together with

nested fetch groups.

In case joined attribute is outside of the fetch group a WARNING is logged.

The query still works but very inefficiently: the fetch group is triggered and

the whole object is read in.

The only possibility here would be to throw an exception instead - throwing

away joined attribute (don't know how hard that would be to do) doesn't seem

right - both fetch group and fetch joins specified directly on the query.

 

 

Weaving patch

Fixes some weaving problems introduced in Main patch (see bug 314340).

This patch fixes only part of that bug: static weaving tests pass, but

beanvalidation tests still fail.

----- Original Message -----
Sent: Tuesday, May 25, 2010 3:06 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Fetch join patch - take 2.

A new version of patch that adds support for fetch joins used together with
nested fetch groups.

In case joined attribute is outside of the fetch group a WARNING is logged.
The query still works but very inefficiently: the fetch group is triggered and
the whole object is read in.

The only possibility here would be to throw an exception instead - throwing
away joined attribute (don't know how hard that would be to do) doesn't seem
right - both fetch group and fetch joins specified directly on the query.
----- Original Message -----
Sent: Wednesday, May 19, 2010 4:33 PM
Subject: Re: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Addition to prev. patch
Added load method to AbstractSession, too.
Checked into trunk.
----- Original Message -----
Sent: Wednesday, May 19, 2010 3:35 PM
Subject: [eclipselink-dev] Re: Bug 244124 - Add Nested FetchGroup

Checked into trunk Main patch - take 3.
There are some things not done yet:
1) merging in cache still uses "one-storey" union;
2) fetch joins
 
All the fetch groups assigned to objects now are of type EntityFetchGroup.
It's a flat (not nested) fetch group that only reflects the state of its owner
object.
A single EntityFetchGroup may be shared by many objects, and it is immutable.
An EntityFetchGroup usually not created directly but rather looked up on the
FetchGroupmanager (keyed by set of its attributes).
 
When a value is set into not fetched attribute in serialized object (the one
that doesn't have a session) then a new EntityFetchGroup created to reflect the
new object's fetch state.
 
Deprecated partial attributes
Added LOAD_GROUP_ATTRIBUTE QueryHint.
Added "load" method to JpaEntityManager.
----- Original Message -----
Sent: Friday, May 14, 2010 8:51 PM
Subject: Re: Bug 244124 - Add Nested FetchGroup

Rolledback my last fix for Bug 244124 - Add Nested FetchGroup.

It caused cb test failures in moxy and dbws.

Back to the prev. rev.7240

Will investigate on Monday.

----- Original Message -----
Sent: Friday, May 14, 2010 5:58 PM
Subject: Bug 244124 - Add Nested FetchGroup

Checked into trunk.
Main patch.

The patch provides basic nested fetch group functionality.

FetchGroup got a new shouldLoad flag - it indicates whether its attributes
should be loaded.
Also there is a new class LoadGroup, which allows to manage loading of
individual relational attributes.

There is still work to be done in the area of merging with cache and fetch
joins.

A new test package org.eclipse.persistence.testing.tests.jpa.fetchgroups was
added.

See simple examples of different loading arrangements in findMinEmployee tests
in NestedDefaultFetchGroupTests.

A simple merge was tested and works:
serialize object with a fetch group applied to it;
update serialized object (even attribute outside the fetch group);
serialize it back to the server;
merge.
See a simple example in SimpleSerializeFetchGroupTests.simpleSerializeAndMerge.


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev

Back to the top