This Bugzilla instance is deprecated, and most Eclipse projects now use GitHub or Eclipse GitLab. Please see the deprecation plan for details.
Bug 289108 - JPA: Refactor CMPPolicy.getPKClass() with unused getKeyClassFields() call as it has no effect
Summary: JPA: Refactor CMPPolicy.getPKClass() with unused getKeyClassFields() call as ...
Status: CLOSED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Eclipselink (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows Vista
: P5 minor (vote)
Target Milestone: ---   Edit
Assignee: Nobody - feel free to take it CLA
QA Contact:
URL: http://wiki.eclipse.org/EclipseLink/D...
Whiteboard:
Keywords:
Depends on: 290048
Blocks:
  Show dependency tree
 
Reported: 2009-09-10 12:33 EDT by Michael OBrien CLA
Modified: 2022-06-09 10:21 EDT (History)
1 user (show)

See Also:


Attachments
simple fix (1.04 KB, patch)
2010-09-02 14:47 EDT, Chris Delahunt CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael OBrien CLA 2009-09-10 12:33:57 EDT
>The following call to getKeyClassFields(null) when there is no pkClass seems odd and has no effect - I think we should just be returning null directly instead of performing an unused get call.

>See code coverage, this if is true 9 times out of 10923.
Maybe in the past the getKeyClassFields() call did more than just do a get.

>package org.eclipse.persistence.internal.jpa;
    /** Stores the fields for this classes compound primary key class if required. */
    protected KeyElementAccessor[] keyClassFields;

public class CMP3Policy extends CMPPolicy {
 147  10923      public Class getPKClass() {
 148  10923          if(this.pkClass == null && getPKClassName() == null) {
 149  9     --->        getKeyClassFields(null);
 150                 } 
 151  10923          return this.pkClass;
                 }


>Testing 
org.eclipse.persistence.mappings.AggregateCollectionMapping[redStripes]
on
EntityTypeImpl@14900486:ExpertBeerConsumer [ javaType: class org.eclipse.persistence.testing.models.jpa.inherited.ExpertBeerConsumer descriptor: RelationalDescriptor(org.eclipse.persistence.testing.models.jpa.inherited.ExpertBeerConsumer --> [DatabaseTable(CMP3_CONSUMER), DatabaseTable(EXPERT_CONSUMER)]), mappings: [org.eclipse.persistence.mappings.DirectToFieldMapping[id-->CMP3_CONSUMER.ID], org.eclipse.persistence.mappings.DirectToFieldMapping[version-->CMP3_CONSUMER.VERSION], org.eclipse.persistence.mappings.DirectToFieldMapping[name-->CMP3_CONSUMER.NAME], org.eclipse.persistence.mappings.DirectToFieldMapping[iQ-->EXPERT_CONSUMER.CONSUMER_IQ], org.eclipse.persistence.mappings.OneToManyMapping[coronaBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[blueBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[telephoneNumbers], org.eclipse.persistence.mappings.OneToManyMapping[certifications], org.eclipse.persistence.mappings.OneToManyMapping[heinekenBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[blueLightBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[alpineBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[becksBeersToConsume], org.eclipse.persistence.mappings.OneToManyMapping[canadianBeersToConsume], org.eclipse.persistence.mappings.AggregateCollectionMapping[redStripes], org.eclipse.persistence.mappings.DirectCollectionMapping[designations], org.eclipse.persistence.mappings.DirectCollectionMapping[acclaims], org.eclipse.persistence.mappings.DirectMapMapping[celebrations], org.eclipse.persistence.mappings.DirectMapMapping[awards], org.eclipse.persistence.mappings.DirectMapMapping[quotes], org.eclipse.persistence.mappings.ManyToManyMapping[committees], org.eclipse.persistence.mappings.AggregateObjectMapping[accredidation], org.eclipse.persistence.mappings.AggregateCollectionMapping[records]]]

Thread [Thread-3] (Suspended (breakpoint at line 149 in CMP3Policy))	
	CMP3Policy.getPKClass() line: 149	
	MapAttributeImpl<X,K,V>.<init>(ManagedTypeImpl<X>, CollectionMapping, boolean) line: 82	
	EntityTypeImpl<X>(ManagedTypeImpl<X>).initialize() line: 1067	
	MetamodelImpl.initialize() line: 351	
	MetamodelImpl.<init>(DatabaseSession) line: 88	
	MetamodelImpl.<init>(EntityManagerFactory) line: 98	
	EntityManagerFactoryImpl.getMetamodel() line: 433	
	EntityManagerImpl.getMetamodel() line: 2054	
	AdvancedJPAJunitTest.testMetamodelMinimalSanityTest() line: 194	

this	CMP3Policy  (id=109)	
	descriptor	RelationalDescriptor  (id=114)	
	fieldToAccessorMap	HashMap<K,V>  (id=117)	
	forceUpdate	null	
	keyClassFields	CMPPolicy$KeyElementAccessor[0]  (id=121)	
	mappedClass	null	
	modificationDeferralLevel	2	
	nonDeferredCreateTime	0	
	pessimisticLockingPolicy	null	
	pkClass	null	
	pkClassName	null	
	updateAllFields	null
Comment 1 Michael OBrien CLA 2009-09-21 15:05:01 EDT
>see related bug# 290048
Comment 2 Michael OBrien CLA 2009-11-12 07:49:50 EST
>This no longer blocks bug # 266912 - as we have workarounds for bug# 294811 and bug# 294765 as well.
Comment 3 Chris Delahunt CLA 2010-09-02 14:47:40 EDT
Created attachment 178085 [details]
simple fix
Comment 4 Chris Delahunt CLA 2010-09-03 09:35:50 EDT
checked into 2.2 through revision 8127
Comment 5 Eclipse Webmaster CLA 2022-06-09 10:21:44 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink