You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by st...@apache.org on 2023/05/06 07:18:25 UTC

[openjpa] branch master updated (05069dfee -> 142393297)

This is an automated email from the ASF dual-hosted git repository.

struberg pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git


    from 05069dfee Bump postgresql from 42.5.0 to 42.5.1 (#109)
     new d9ceb4452 OPENJPA-2908 Jakarta-3.0 API - WIP!
     new 3a436b585 OPENJPA-2809 more test fixes
     new 9a87badd3 OPENJPA-2908 fix derby snake case test
     new 6fc05e14d OPENJPA-2908 fix delayed collection proxies
     new 4ec4598ad OPENJPA-2909 move proxy code to own package
     new 487159da3 OPENJPA-2909 first skeleton for ASM based proxies
     new 65242c70b OPENJPA-2909 generate ProxyDate
     new 94a2bf97b OPENJPA-2909 finish Date proxy via ASM
     new 87458c708 OPENJPA-2909 generate CalendarProxy via ASM
     new 12f780eb7 OPENJPA-2909 implement ASM proxy for Collections
     new 8f9547b64 OPENJPA-2909 rough implementation with ASM is ready
     new ec946b678 OPENJPA-2909 more proxy generator fixes
     new 7532498e7 OPENJPA-2909 more class generator fixes
     new ecff638a0 OPENJPA-2909 fix stack calculation
     new 2535a24d5 OPENJPA-2909 fix ClassLoading if proxy cannot be loaded
     new 0ddc38512 OPENJPA-2908 finish jakarta migration
     new 142393297 OPENJPA-2908 reflekt Jakarta API in our readme

The 17 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.adoc                                        |    2 +-
 openjpa-all/pom.xml                                |   14 +-
 openjpa-examples/image-gallery/pom.xml             |    3 +-
 .../openjpa/example/gallery/TestJPAValidation.java |   10 +-
 .../gallery/constraint/ImageConstraint.java        |    4 +-
 .../example/gallery/constraint/ImageContent.java   |    4 +-
 .../gallery/constraint/ImageContentValidator.java  |    4 +-
 .../example/gallery/constraint/ImageValidator.java |    4 +-
 .../gallery/constraint/SequencedImageGroup.java    |    4 +-
 .../openjpa/example/gallery/model/Album.java       |   12 +-
 .../openjpa/example/gallery/model/Creator.java     |   14 +-
 .../openjpa/example/gallery/model/Image.java       |   18 +-
 .../openjpa/example/gallery/model/Location.java    |   10 +-
 .../src/test/resources/META-INF/persistence.xml    |    8 +-
 .../jest/src/main/java/demo/Actor.java             |    8 +-
 .../jest/src/main/java/demo/DataLoader.java        |    2 +-
 .../jest/src/main/java/demo/Movie.java             |    8 +-
 .../jest/src/main/java/demo/SimpleApp.java         |    6 +-
 .../src/main/resources/META-INF/persistence.xml    |    8 +-
 openjpa-examples/openbooks/index.html              |    4 +-
 openjpa-examples/openbooks/pom.xml                 |    2 +-
 .../java/jpa/tools/swing/AttributeLegendView.java  |    2 +-
 .../main/java/jpa/tools/swing/AttributeView.java   |    2 +-
 .../main/java/jpa/tools/swing/EntityDataModel.java |   10 +-
 .../src/main/java/jpa/tools/swing/EntityTable.java |    6 +-
 .../main/java/jpa/tools/swing/EntityTableView.java |    8 +-
 .../main/java/jpa/tools/swing/EntityTypeView.java  |    4 +-
 .../java/jpa/tools/swing/InstanceDataModel.java    |    4 +-
 .../main/java/jpa/tools/swing/InstanceView.java    |    2 +-
 .../main/java/jpa/tools/swing/MetamodelHelper.java |   12 +-
 .../main/java/jpa/tools/swing/MetamodelView.java   |    8 +-
 .../main/java/jpa/tools/swing/QueryDecorator.java  |    2 +-
 .../src/main/java/openbook/domain/Author.java      |   10 +-
 .../src/main/java/openbook/domain/Book.java        |   14 +-
 .../src/main/java/openbook/domain/Customer.java    |    8 +-
 .../src/main/java/openbook/domain/Inventory.java   |   10 +-
 .../src/main/java/openbook/domain/LineItem.java    |   14 +-
 .../main/java/openbook/domain/PurchaseOrder.java   |   18 +-
 .../main/java/openbook/server/OpenBookService.java |    2 +-
 .../java/openbook/server/OpenBookServiceImpl.java  |   22 +-
 .../java/openbook/server/PersistenceService.java   |    6 +-
 .../main/java/openbook/server/QueryDecorator.java  |    2 +-
 .../java/openbook/server/QueryParameterBinder.java |    2 +-
 .../main/java/openbook/server/ServiceFactory.java  |    6 +-
 .../src/main/resources/META-INF/persistence.xml    |   16 +-
 .../trader/client/TradingServiceAdapter.java       |    4 +-
 .../java/org/apache/openjpa/trader/domain/Ask.java |    6 +-
 .../java/org/apache/openjpa/trader/domain/Bid.java |    6 +-
 .../org/apache/openjpa/trader/domain/Stock.java    |    6 +-
 .../org/apache/openjpa/trader/domain/Tradable.java |   18 +-
 .../org/apache/openjpa/trader/domain/Trade.java    |   12 +-
 .../org/apache/openjpa/trader/domain/Trader.java   |   10 +-
 .../apache/openjpa/trader/service/Exchange.java    |    6 +-
 .../apache/openjpa/trader/service/MarketFeed.java  |    2 +-
 .../openjpa/trader/service/PersistenceService.java |    8 +-
 openjpa-examples/pom.xml                           |    2 +-
 openjpa-examples/simple/pom.xml                    |    2 +-
 .../simple/src/main/java/embeddables/Address.java  |    8 +-
 .../src/main/java/embeddables/ContactInfo.java     |    4 +-
 .../src/main/java/embeddables/Coordinates.java     |   10 +-
 .../simple/src/main/java/embeddables/Main.java     |    8 +-
 .../simple/src/main/java/embeddables/Phone.java    |    4 +-
 .../simple/src/main/java/embeddables/User.java     |   18 +-
 .../simple/src/main/java/hellojpa/Main.java        |    8 +-
 .../simple/src/main/java/hellojpa/Message.java     |    6 +-
 .../src/main/java/mapping/BuildSchemaPC.java       |   12 +-
 .../src/main/java/mapping/BuildUTF8SchemaPC.java   |   12 +-
 .../simple/src/main/java/relations/Deity.java      |   20 +-
 .../simple/src/main/java/relations/Main.java       |    8 +-
 .../simple/src/main/java/reversemapping/Main.java  |    2 +-
 openjpa-features/pom.xml                           |    2 +-
 openjpa-features/src/main/feature/feature.xml      |    4 +-
 openjpa-integration/daytrader/pom.xml              |    2 +-
 .../integration/daytrader/AccountDataBean.java     |   32 +-
 .../daytrader/AccountProfileDataBean.java          |   16 +-
 .../integration/daytrader/HoldingDataBean.java     |   30 +-
 .../integration/daytrader/OrderDataBean.java       |   32 +-
 .../integration/daytrader/QuoteDataBean.java       |   16 +-
 .../integration/daytrader/TestDaytrader.java       |    6 +-
 .../openjpa/integration/daytrader/TradeAction.java |    2 +-
 .../integration/daytrader/TradeJPADirect.java      |    8 +-
 openjpa-integration/examples/pom.xml               |    2 +-
 openjpa-integration/jmx/pom.xml                    |    2 +-
 .../openjpa/integration/jmx/CachedEntity.java      |    8 +-
 .../integration/jmx/TestJMXPlatformMBeans.java     |    2 +-
 openjpa-integration/pom.xml                        |    2 +-
 openjpa-integration/slf4j/pom.xml                  |    2 +-
 .../openjpa/integration/slf4j/TestLogFactory.java  |    2 +-
 openjpa-integration/tck/pom.xml                    |    8 +-
 openjpa-integration/tck/tck2-20091209.xml          |    2 +-
 openjpa-integration/tck/tck2-20101205.xml          |    2 +-
 openjpa-integration/tck/tck2-20110815.xml          |   10 +-
 openjpa-integration/validation/pom.xml             |   24 +-
 .../provider/DummyPersistenceProviderResolver.java |    4 +-
 .../persistence/provider/DummyProvider1.java       |    8 +-
 .../persistence/provider/DummyProvider2.java       |    8 +-
 .../provider/TestPersistenceProviderResolver.java  |   10 +-
 .../openjpa/integration/validation/Address.java    |   18 +-
 .../openjpa/integration/validation/Book.java       |   14 +-
 .../integration/validation/ConstraintBoolean.java  |   16 +-
 .../integration/validation/ConstraintDates.java    |   16 +-
 .../integration/validation/ConstraintDecimal.java  |   16 +-
 .../integration/validation/ConstraintDigits.java   |   14 +-
 .../integration/validation/ConstraintNull.java     |   16 +-
 .../integration/validation/ConstraintNumber.java   |   16 +-
 .../integration/validation/ConstraintPattern.java  |   14 +-
 .../integration/validation/ConstraintSize.java     |   14 +-
 .../openjpa/integration/validation/Customer.java   |    8 +-
 .../integration/validation/DefGrpEntity.java       |    8 +-
 .../openjpa/integration/validation/IAddress.java   |    2 +-
 .../openjpa/integration/validation/IPerson.java    |    2 +-
 .../openjpa/integration/validation/Image.java      |   10 +-
 .../openjpa/integration/validation/Location.java   |   10 +-
 .../integration/validation/MixedGrpEntity.java     |    8 +-
 .../integration/validation/NonDefGrpEntity.java    |    8 +-
 .../openjpa/integration/validation/Person.java     |   22 +-
 .../openjpa/integration/validation/Publisher.java  |    6 +-
 .../integration/validation/SimpleEntity.java       |   26 +-
 .../validation/TestConstraintViolation.java        |   10 +-
 .../integration/validation/TestConstraints.java    |    6 +-
 .../integration/validation/TestMappedSuper.java    |    4 +-
 .../openjpa/integration/validation/TestMerge.java  |    4 +-
 .../validation/TestTraversableResolver.java        |    6 +-
 .../integration/validation/TestValidatingLEM.java  |   14 +-
 .../validation/TestValidationGroups.java           |   16 +-
 .../openjpa/integration/validation/constraints.xml |    4 +-
 .../openjpa/integration/validation/persistence.xml |   20 +-
 openjpa-jdbc/pom.xml                               |    2 +-
 .../jdbc/kernel/InstanceResultObjectProvider.java  |    2 +-
 .../apache/openjpa/jdbc/kernel/TableJDBCSeq.java   |    2 +-
 .../openjpa/jdbc/meta/ReverseMappingTool.java      |    2 +-
 .../meta/strats/StoreCollectionFieldStrategy.java  |    2 +-
 .../openjpa/jdbc/schema/DataSourceFactory.java     |    2 +-
 .../apache/openjpa/jdbc/sql/OracleDictionary.java  |    2 +-
 .../openjpa/jdbc/schema/localizer.properties       |    2 +-
 openjpa-jest/pom.xml                               |    7 +-
 .../openjpa/persistence/jest/JESTServlet.java      |    2 +-
 .../persistence/jest/JSONObjectFormatter.java      |    4 +-
 .../openjpa/persistence/jest/MetamodelHelper.java  |   12 +-
 .../openjpa/persistence/jest/ObjectFormatter.java  |    2 +-
 .../openjpa/persistence/jest/QueryCommand.java     |    2 +-
 .../openjpa/persistence/jest/XMLFormatter.java     |   10 +-
 .../openjpa/persistence/jest/jest-instance.xsd     |    2 +-
 openjpa-jest/src/test/java/demo/Actor.java         |    8 +-
 openjpa-jest/src/test/java/demo/DataLoader.java    |    2 +-
 openjpa-jest/src/test/java/demo/Movie.java         |    8 +-
 openjpa-junit5/pom.xml                             |    6 +-
 .../internal/OpenJPADirectoriesEnhancer.java       |    6 +-
 .../java/org/apache/openjpa/junit5/MyEntity.java   |    4 +-
 openjpa-kernel/pom.xml                             |   10 +-
 .../org/apache/openjpa/ant/MetaDataToolTask.java   |    2 +-
 .../apache/openjpa/conf/OpenJPAConfiguration.java  |    2 +-
 .../openjpa/conf/OpenJPAConfigurationImpl.java     |   30 +-
 .../openjpa/datacache/CacheDistributionPolicy.java |    4 +-
 .../apache/openjpa/ee/AbstractManagedRuntime.java  |    8 +-
 .../apache/openjpa/ee/AutomaticManagedRuntime.java |   10 +-
 .../openjpa/ee/InvocationManagedRuntime.java       |    2 +-
 .../org/apache/openjpa/ee/JNDIManagedRuntime.java  |    2 +-
 .../java/org/apache/openjpa/ee/ManagedRuntime.java |    6 +-
 .../org/apache/openjpa/ee/OSGiManagedRuntime.java  |   12 +-
 .../apache/openjpa/ee/RegistryManagedRuntime.java  |   20 +-
 .../apache/openjpa/ee/SunOneManagedRuntime.java    |    2 +-
 .../org/apache/openjpa/ee/WASManagedRuntime.java   |   30 +-
 .../org/apache/openjpa/ee/WLSManagedRuntime.java   |    4 +-
 .../openjpa/event/JMSRemoteCommitProvider.java     |   26 +-
 .../openjpa/kernel/AbstractBrokerFactory.java      |    8 +-
 .../java/org/apache/openjpa/kernel/Broker.java     |    2 +-
 .../java/org/apache/openjpa/kernel/BrokerImpl.java |   14 +-
 .../openjpa/kernel/FetchConfigurationImpl.java     |    6 +-
 .../apache/openjpa/kernel/LocalManagedRuntime.java |   12 +-
 .../apache/openjpa/kernel/ResultShapePacker.java   |    2 +-
 .../org/apache/openjpa/kernel/jpql/JPQLParser.java |    2 +-
 .../openjpa/meta/AbstractMetaDataDefaults.java     |    8 +-
 .../openjpa/util/ClassLoaderProxyService.java      |  154 ++
 .../apache/openjpa/util/ClassWriterTracker.java    |   58 +
 .../org/apache/openjpa/util/GeneratedClasses.java  |   11 +
 .../apache/openjpa/util/ProxyConcurrentMaps.java   |   54 -
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 2055 +++++++++++---------
 .../org/apache/openjpa/util/asm/AsmHelper.java     |  182 ++
 .../util/{ => proxy}/DelayedArrayListProxy.java    |   16 +-
 .../util/{ => proxy}/DelayedHashSetProxy.java      |   17 +-
 .../{ => proxy}/DelayedLinkedHashSetProxy.java     |   16 +-
 .../util/{ => proxy}/DelayedLinkedListProxy.java   |   16 +-
 .../{ => proxy}/DelayedPriorityQueueProxy.java     |   16 +-
 .../openjpa/util/{ => proxy}/DelayedProxy.java     |    2 +-
 .../util/{ => proxy}/DelayedTreeSetProxy.java      |   16 +-
 .../util/{ => proxy}/DelayedVectorProxy.java       |   16 +-
 .../apache/openjpa/util/{ => proxy}/ProxyBean.java |    4 +-
 .../openjpa/util/{ => proxy}/ProxyCalendar.java    |    4 +-
 .../openjpa/util/{ => proxy}/ProxyCollection.java  |    4 +-
 .../openjpa/util/{ => proxy}/ProxyCollections.java |    5 +-
 .../apache/openjpa/util/{ => proxy}/ProxyDate.java |    4 +-
 .../apache/openjpa/util/{ => proxy}/ProxyMap.java  |    4 +-
 .../apache/openjpa/util/{ => proxy}/ProxyMaps.java |   34 +-
 .../apache/openjpa/datacache/localizer.properties  |    2 +-
 .../apache/openjpa/ee/TestOSGiManagedRuntime.java  |   22 +-
 .../org/apache/openjpa/util/TestProxyManager.java  |   32 +
 openjpa-kubernetes/pom.xml                         |    2 +-
 openjpa-lib/pom.xml                                |    6 +-
 .../apache/openjpa/lib/conf/ConfigurationImpl.java |    4 +-
 .../openjpa/lib/meta/ClassMetaDataIterator.java    |    1 +
 .../apache/openjpa/lib/util/J2DoPrivHelper.java    |   16 +-
 .../openjpa/lib/util/TemporaryClassLoader.java     |    3 +-
 openjpa-persistence-jdbc/pom.xml                   |    6 +-
 openjpa-persistence-jdbc/src/main/ant/enhancer.xml |    1 +
 .../jdbc/AnnotationPersistenceMappingParser.java   |   88 +-
 .../AnnotationPersistenceMappingSerializer.java    |   46 +-
 .../apache/openjpa/persistence/jdbc/Columns.java   |    2 +-
 .../openjpa/persistence/jdbc/JDBCFetchPlan.java    |    2 +-
 .../persistence/jdbc/JDBCFetchPlanImpl.java        |    2 +-
 .../jdbc/JDBCPersistenceProductDerivation.java     |    4 +-
 .../openjpa/persistence/jdbc/MappingOverride.java  |    2 +-
 .../jdbc/XMLPersistenceMappingParser.java          |    8 +-
 .../jdbc/XMLPersistenceMappingSerializer.java      |    4 +-
 .../openjpa/persistence/jdbc/XMappingOverride.java |    2 +-
 .../openjpa/persistence/jdbc/XSecondaryTable.java  |    2 +-
 .../org/apache/openjpa/audit/AuditedEntry.java     |   20 +-
 .../java/org/apache/openjpa/audit/TestAudit.java   |    4 +-
 .../audit/TestBeginEventOnTransactionListener.java |    4 +-
 .../src/test/java/org/apache/openjpa/audit/X.java  |    4 +-
 .../openjpa/conf/TestAutoDetachProperty.java       |    6 +-
 .../openjpa/conf/TestBadAutoDetachProperty.java    |    6 +-
 .../org/apache/openjpa/conf/TestBadJdbcUrl.java    |    8 +-
 .../openjpa/conf/TestCacheMarshallerEndToEnd.java  |    4 +-
 .../openjpa/conf/TestDynamicConfiguration.java     |    2 +-
 .../org/apache/openjpa/conf/TestGetProperty.java   |    6 +-
 .../org/apache/openjpa/conf/TestQueryHints.java    |   14 +-
 .../apache/openjpa/conf/TestQueryProperties.java   |   38 +-
 .../conf/TestSpecificationConfiguration.java       |    2 +-
 .../apache/openjpa/enhance/EnhancedSubClass.java   |    2 +-
 .../apache/openjpa/enhance/EnhancedSuperClass.java |    6 +-
 ...TestDataCachingAndUnenhancedPropertyAccess.java |    2 +-
 .../openjpa/enhance/TestSimpleUnenhancedQuery.java |    2 +-
 .../enhance/UnenhancedBootstrapInstance.java       |    4 +-
 .../enhance/UnenhancedBootstrapInstance2.java      |    4 +-
 .../enhance/UnenhancedCompoundPKFieldAccess.java   |    6 +-
 .../UnenhancedCompoundPKFieldAccessSubclass.java   |    4 +-
 .../UnenhancedCompoundPKFieldAccessSuperclass.java |    6 +-
 .../UnenhancedCompoundPKPropertyAccess.java        |    6 +-
 .../openjpa/enhance/UnenhancedFieldAccess.java     |   18 +-
 .../UnenhancedFieldAccessPrimitiveWrapper.java     |   18 +-
 ...nhancedFieldAccessPrimitiveWrapperSubclass.java |    6 +-
 .../enhance/UnenhancedFieldAccessSubclass.java     |    6 +-
 .../UnenhancedIdentityIdPropertyAccess.java        |    8 +-
 .../org/apache/openjpa/enhance/UnenhancedMany.java |    6 +-
 .../org/apache/openjpa/enhance/UnenhancedOne.java  |    6 +-
 .../apache/openjpa/enhance/UnenhancedPObject.java  |    2 +-
 .../openjpa/enhance/UnenhancedPropertyAccess.java  |   18 +-
 .../enhance/UnenhancedPropertyAccessSubclass.java  |    6 +-
 .../openjpa/enhance/UnenhancedUnlistedClass.java   |    4 +-
 .../openjpa/enhance/UnenhancedUnlistedReferer.java |    6 +-
 .../org/apache/openjpa/enhance/ids/Device.java     |   10 +-
 .../org/apache/openjpa/enhance/ids/Hardware.java   |    8 +-
 .../org/apache/openjpa/enhance/ids/Software.java   |    8 +-
 .../openjpa/enhance/ids/TestOptimizeIdCopy.java    |    4 +-
 .../openjpa/event/TestLifecycleListener.java       |    2 +-
 .../event/TestSJVMRemoteCommitProvider.java        |    2 +-
 .../openjpa/instrumentation/CacheableEntity.java   |    8 +-
 .../TestInstrumentationProvider.java               |    2 +-
 .../java/org/apache/openjpa/jdbc/kernel/A.java     |    8 +-
 .../org/apache/openjpa/jdbc/kernel/Employee.java   |   12 +-
 .../org/apache/openjpa/jdbc/kernel/EntityA.java    |   18 +-
 .../org/apache/openjpa/jdbc/kernel/EntityB.java    |   18 +-
 .../org/apache/openjpa/jdbc/kernel/EntityC.java    |   18 +-
 .../org/apache/openjpa/jdbc/kernel/EntityD.java    |   16 +-
 .../org/apache/openjpa/jdbc/kernel/EntityE.java    |   16 +-
 .../org/apache/openjpa/jdbc/kernel/EntityF.java    |    8 +-
 .../org/apache/openjpa/jdbc/kernel/EntityG.java    |    8 +-
 .../openjpa/jdbc/kernel/M21UniDepartment.java      |    6 +-
 .../apache/openjpa/jdbc/kernel/M21UniEmployee.java |    8 +-
 .../openjpa/jdbc/kernel/M2MBiDepartment.java       |   10 +-
 .../apache/openjpa/jdbc/kernel/M2MBiEmployee.java  |   10 +-
 .../openjpa/jdbc/kernel/OptSelectEntity.java       |   14 +-
 .../java/org/apache/openjpa/jdbc/kernel/Story.java |   12 +-
 .../java/org/apache/openjpa/jdbc/kernel/Task.java  |   14 +-
 .../jdbc/kernel/TestCollectionTracking.java        |    4 +-
 .../jdbc/kernel/TestForeignKeyCountViolation.java  |    2 +-
 .../openjpa/jdbc/kernel/TestInsertOrder.java       |    2 +-
 .../openjpa/jdbc/kernel/TestM21UniVersion.java     |    2 +-
 .../openjpa/jdbc/kernel/TestM2MBiVersion.java      |    2 +-
 .../jdbc/kernel/TestNoForeignKeyViolation.java     |    2 +-
 .../org/apache/openjpa/jdbc/meta/EntityBool.java   |    6 +-
 .../apache/openjpa/jdbc/meta/EntityBoolChar.java   |    6 +-
 .../apache/openjpa/jdbc/meta/TestBooleanValue.java |    4 +-
 .../openjpa/jdbc/meta/TestCalendarField.java       |    2 +-
 .../jdbc/meta/TestMappingToolAutoDelete.java       |    4 +-
 .../openjpa/jdbc/meta/strats/AbstractLobTest.java  |    4 +-
 .../jdbc/meta/strats/InputStreamLobEntity.java     |    4 +-
 .../openjpa/jdbc/meta/strats/ReaderLobEntity.java  |    4 +-
 .../openjpa/jdbc/oracle/TestOracleXmlColumn.java   |    4 +-
 .../apache/openjpa/jdbc/oracle/XmlColEntity.java   |   12 +-
 .../jdbc/persistence/classcriteria/Artist.java     |   14 +-
 .../jdbc/persistence/classcriteria/Book.java       |   12 +-
 .../jdbc/persistence/classcriteria/Item.java       |   20 +-
 .../jdbc/persistence/classcriteria/Movie.java      |   12 +-
 .../jdbc/procedure/TestStoredProcedure.java        |    6 +-
 .../entity/EntityWithStoredProcedure.java          |   22 +-
 .../DelimitedIdentifiersAllFieldTypesEntity.java}  |   57 +-
 .../openjpa/jdbc/sql/SnakeCaseDDLMy1Entity.java    |   44 +
 .../openjpa/jdbc/sql/SnakeCaseDDLMy2Entity.java    |   26 +
 .../openjpa/jdbc/sql/TestDelimitIdentifiers.java   |  413 +---
 .../apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java  |   74 +-
 .../openjpa/jira1100/BadVersionFieldEntity.java    |   47 +
 .../openjpa/jira1100/TestBadVersionField.java      |   34 +-
 .../org/apache/openjpa/jira1794/AggEntity.java     |    8 +-
 .../org/apache/openjpa/jira1794/AggEntity_.java    |    4 +-
 .../openjpa/jira1794/TestAggregateFunctions.java   |   20 +-
 .../jira2780/TestJira2780ReverseCustomizer.java    |    4 +-
 .../openjpa/jira_2883/OracleGeneratedIdEntity.java |   47 +
 .../openjpa/jira_2883/TestOracleGeneratedId.java   |   33 +-
 .../java/org/apache/openjpa/jta/ContainerTest.java |    2 +-
 .../org/apache/openjpa/jta/JTAManagedRuntime.java  |    6 +-
 .../org/apache/openjpa/jta/SimpleTransaction.java  |   14 +-
 .../openjpa/jta/SimpleTransactionManager.java      |   18 +-
 .../kernel/AbstractBrokerSerializationTest.java    |    2 +-
 .../kernel/TestBrokerFactoryEventManager.java      |    2 +-
 .../kernel/TestBrokerFactoryListenerRegistry.java  |    2 +-
 .../kernel/TestDynamicClassRegistration.java       |    6 +-
 .../kernel/TestEntityManagerFactoryPool.java       |    4 +-
 .../openjpa/kernel/TestQueryCompilationCache.java  |    2 +-
 .../lib/conf/TestEquivalentConfiguration.java      |   10 +-
 .../src/test/java/org/apache/openjpa/meta/A.java   |    4 +-
 .../org/apache/openjpa/meta/AbstractThing.java     |    8 +-
 .../test/java/org/apache/openjpa/meta/Artist.java  |    2 +-
 .../src/test/java/org/apache/openjpa/meta/B.java   |    6 +-
 .../src/test/java/org/apache/openjpa/meta/C.java   |   12 +-
 .../test/java/org/apache/openjpa/meta/Item.java    |   12 +-
 .../test/java/org/apache/openjpa/meta/PChild.java  |   10 +-
 .../java/org/apache/openjpa/meta/PChildBi.java     |   12 +-
 .../test/java/org/apache/openjpa/meta/Painter.java |    2 +-
 .../test/java/org/apache/openjpa/meta/Parent.java  |   16 +-
 .../test/java/org/apache/openjpa/meta/Person.java  |    6 +-
 .../openjpa/openjpa2018/OpenJPA2018Test.java       |   10 +-
 .../org/apache/openjpa/openjpa2018/User2018.java   |    6 +-
 .../org/apache/openjpa/persistence/Country.java    |    8 +-
 .../java/org/apache/openjpa/persistence/Embed.java |    2 +-
 .../apache/openjpa/persistence/Issue428Entity.java |    4 +-
 .../org/apache/openjpa/persistence/Security.java   |   16 +-
 .../openjpa/persistence/TestOpenJPA2330.java       |    4 +-
 .../org/apache/openjpa/persistence/TestUnwrap.java |    6 +-
 .../TestXMLPersistenceMetaDataParser.java          |    2 +-
 .../access/AbstractMappedSuperField.java           |   12 +-
 .../access/AbstractMappedSuperProperty.java        |   14 +-
 .../access/DefFieldMixedPropAccess.java            |   20 +-
 .../access/DefPropMixedFieldAccess.java            |   20 +-
 .../persistence/access/EmbedFieldAccess.java       |    6 +-
 .../apache/openjpa/persistence/access/EmbedId.java |    6 +-
 .../openjpa/persistence/access/EmbedInnerProp.java |    8 +-
 .../persistence/access/EmbedMixedAccess.java       |    8 +-
 .../persistence/access/EmbedOuterField.java        |    6 +-
 .../persistence/access/EmbedPropAccess.java        |    6 +-
 .../openjpa/persistence/access/FieldAccess.java    |   16 +-
 .../access/FieldAccessPropStratsEntity.java        |   28 +-
 .../persistence/access/FieldEmbedEntity.java       |   18 +-
 .../openjpa/persistence/access/FieldSub.java       |   14 +-
 .../openjpa/persistence/access/FieldSub2.java      |   10 +-
 .../openjpa/persistence/access/FieldSub3.java      |   14 +-
 .../openjpa/persistence/access/Ingredient.java     |   10 +-
 .../persistence/access/MappedCallbackSup.java      |    4 +-
 .../persistence/access/MappedSuperField.java       |   14 +-
 .../persistence/access/MappedSuperProperty.java    |   12 +-
 .../openjpa/persistence/access/MenuItem.java       |   18 +-
 .../openjpa/persistence/access/MixedFieldSub.java  |   16 +-
 .../persistence/access/MixedMappedSuper.java       |   14 +-
 .../persistence/access/MixedMultEmbedEntity.java   |   18 +-
 .../persistence/access/MixedNestedEmbedEntity.java |   18 +-
 .../openjpa/persistence/access/PropAccess.java     |   14 +-
 .../access/PropAccessFieldStratsEntity.java        |   28 +-
 .../persistence/access/PropEmbedEntity.java        |   18 +-
 .../openjpa/persistence/access/PropEntity.java     |    6 +-
 .../persistence/access/PropMixedEntity.java        |   18 +-
 .../access/PropertyAccessCapitalization.java       |    6 +-
 .../PropertyAccessCapitalizationOldBehavior.java   |   10 +-
 .../openjpa/persistence/access/PropertySub.java    |   14 +-
 .../openjpa/persistence/access/PropertySub2.java   |   14 +-
 .../openjpa/persistence/access/PropertySub3.java   |   14 +-
 .../openjpa/persistence/access/Quantity.java       |   10 +-
 .../persistence/access/SuperFieldEntity.java       |   18 +-
 .../persistence/access/SuperPropertyEntity.java    |   18 +-
 .../persistence/access/TestDefaultAccess.java      |    4 +-
 .../persistence/access/TestExplicitAccess.java     |    2 +-
 .../access/TestPropertyAccessCapitalization.java   |    2 +-
 .../access/xml/TestXMLExplicitAccess.java          |    2 +-
 .../persistence/annotations/PColl_EmbedB.java      |    6 +-
 .../persistence/annotations/PColl_EntityA.java     |   10 +-
 .../persistence/annotations/PColl_EntityA1.java    |   10 +-
 .../persistence/annotations/PColl_EntityB.java     |    6 +-
 .../persistence/annotations/PColl_EntityC.java     |   10 +-
 .../annotations/PColl_EntityStringEager.java       |    6 +-
 .../annotations/PColl_EntityStringLazy.java        |    6 +-
 .../persistence/annotations/TestEmbeddedId.java    |    2 +-
 .../persistence/annotations/TestEnumerated.java    |    2 +-
 .../persistence/annotations/TestGenerators.java    |    2 +-
 .../persistence/annotations/TestMapKey.java        |    2 +-
 .../annotations/TestPersistentCollection.java      |    4 +-
 .../persistence/annotations/TestVersion.java       |    2 +-
 .../common/apps/annotApp/annotype/AnnoTest1.java   |   50 +-
 .../common/apps/annotApp/annotype/AnnoTest2.java   |   34 +-
 .../common/apps/annotApp/annotype/AnnoTest3.java   |   18 +-
 .../apps/annotApp/annotype/ContractEmployee.java   |    8 +-
 .../apps/annotApp/annotype/DateValidator.java      |    4 +-
 .../annotApp/annotype/DefaultCallbackListener.java |   14 +-
 .../common/apps/annotApp/annotype/EmbedOwner.java  |   24 +-
 .../common/apps/annotApp/annotype/EmbedValue.java  |   12 +-
 .../common/apps/annotApp/annotype/EmbedValue2.java |    6 +-
 .../apps/annotApp/annotype/EmbeddableSuper.java    |   14 +-
 .../apps/annotApp/annotype/EmbeddableSuperSub.java |   12 +-
 .../apps/annotApp/annotype/EmbeddedIdClass.java    |    6 +-
 .../apps/annotApp/annotype/EmbeddedIdEntity.java   |   20 +-
 .../common/apps/annotApp/annotype/Employee.java    |   24 +-
 .../common/apps/annotApp/annotype/Entity1.java     |   24 +-
 .../common/apps/annotApp/annotype/Entity2.java     |   12 +-
 .../common/apps/annotApp/annotype/Flat1.java       |   16 +-
 .../common/apps/annotApp/annotype/Flat2.java       |    4 +-
 .../apps/annotApp/annotype/FlightSchedule.java     |   14 +-
 .../common/apps/annotApp/annotype/Generator.java   |   14 +-
 .../apps/annotApp/annotype/LongNameValidator.java  |    4 +-
 .../apps/annotApp/annotype/NameValidator.java      |    8 +-
 .../apps/annotApp/annotype/OrderByEntity.java      |   12 +-
 .../common/apps/annotApp/annotype/Party.java       |    4 +-
 .../common/apps/annotApp/annotype/Party1.java      |   10 +-
 .../apps/annotApp/annotype/PropertyAccess1.java    |    4 +-
 .../common/apps/annotApp/annotype/Schedule.java    |   22 +-
 .../common/apps/annotApp/annotype/Site.java        |   10 +-
 .../common/apps/annotApp/annotype/Site1.java       |   10 +-
 .../common/apps/annotApp/annotype/Store.java       |   12 +-
 .../common/apps/annotApp/annotype/Store1.java      |   10 +-
 .../apps/annotApp/annotype/StringValidator.java    |    4 +-
 .../apps/annotApp/annotype/TablePerClass1.java     |   18 +-
 .../apps/annotApp/annotype/TablePerClass2.java     |    4 +-
 .../apps/annotApp/annotype/TxRollbackEntity.java   |   16 +-
 .../apps/annotApp/ddtype/ContractEmployee.java     |    8 +-
 .../common/apps/annotApp/ddtype/DateValidator.java |    4 +-
 .../common/apps/annotApp/ddtype/Employee.java      |   24 +-
 .../common/apps/annotApp/ddtype/Entity1.java       |   24 +-
 .../common/apps/annotApp/ddtype/Entity2.java       |   12 +-
 .../apps/annotApp/ddtype/FlightSchedule.java       |   10 +-
 .../apps/annotApp/ddtype/LifeCycleDDEntity.java    |   10 +-
 .../apps/annotApp/ddtype/LifeCycleDDEntity2.java   |   16 +-
 .../apps/annotApp/ddtype/LifeCycleDDEntitySub.java |    4 +-
 .../apps/annotApp/ddtype/LongNameValidator.java    |    4 +-
 .../common/apps/annotApp/ddtype/NameValidator.java |    8 +-
 .../common/apps/annotApp/ddtype/Schedule.java      |   20 +-
 .../apps/annotApp/ddtype/StringValidator.java      |    4 +-
 .../apps/annotApp/ddtype/TxRollbackEntity.java     |   16 +-
 .../persistence/annotations/xml/DerivedA.java      |    4 +-
 .../persistence/annotations/xml/DerivedB.java      |    6 +-
 .../persistence/annotations/xml/EntityA.java       |   14 +-
 .../persistence/annotations/xml/EntityB.java       |   16 +-
 .../arrays/TestAnnoExceptionEntity.java            |    2 +-
 .../persistence/arrays/TestXMLExceptionEntity.java |    2 +-
 .../arrays/model/AnnoExceptionEntity.java          |   10 +-
 .../openjpa/persistence/batch/exception/Ent1.java  |    4 +-
 .../batch/exception/TestBatchLimitException.java   |    4 +-
 .../openjpa/persistence/blob/BlobEntity.java       |    8 +-
 .../apache/openjpa/persistence/blob/TestBlobs.java |    6 +-
 .../persistence/blob/mysql/BlobColumnEntity.java   |    8 +-
 .../persistence/blob/mysql/ClobColumnEntity.java   |    8 +-
 .../cache/jpa/AbstractCacheModeTestCase.java       |    8 +-
 .../cache/jpa/AbstractCacheTestCase.java           |    6 +-
 .../persistence/cache/jpa/TestCacheModeAll.java    |    2 +-
 .../cache/jpa/TestCacheModeDisableSelective.java   |    2 +-
 .../TestCacheModeDisableSelectiveInheritance.java  |    4 +-
 .../persistence/cache/jpa/TestCacheModeEmpty.java  |    2 +-
 .../cache/jpa/TestCacheModeEnableSelective.java    |    2 +-
 .../persistence/cache/jpa/TestCacheModeNone.java   |    2 +-
 .../cache/jpa/TestCacheModeUnspecified.java        |    2 +-
 .../jpa/TestCacheModeUnspecifiedDataCacheTrue.java |    2 +-
 .../cache/jpa/TestMultiEMFCacheModes.java          |   20 +-
 .../cache/jpa/TestPropertyCacheModeAll.java        |    4 +-
 .../jpa/TestPropertyCacheModeDisableSelective.java |    4 +-
 .../jpa/TestPropertyCacheModeEnableSelective.java  |    4 +-
 .../cache/jpa/TestPropertyCacheModeInvalid.java    |    4 +-
 .../cache/jpa/TestPropertyCacheModeNone.java       |    4 +-
 .../jpa/TestPropertyCacheModeUnspecified.java      |    4 +-
 .../cache/jpa/model/CacheableEntity.java           |   10 +-
 .../cache/jpa/model/ChildUncacheable.java          |    6 +-
 .../cache/jpa/model/NegatedCachableEntity.java     |    8 +-
 .../cache/jpa/model/NegatedUncacheableEntity.java  |    8 +-
 .../cache/jpa/model/ParentUnspecifiedEntity.java   |    8 +-
 .../cache/jpa/model/UncacheableEntity.java         |   10 +-
 .../cache/jpa/model/UnspecifiedEntity.java         |    8 +-
 .../cache/jpa/model/XmlCacheableEntity.java        |    8 +-
 .../cache/jpa/model/XmlUncacheableEntity.java      |    8 +-
 .../persistence/callbacks/AddListenerEntity.java   |    6 +-
 .../callbacks/DuplicateListenerEntity.java         |    8 +-
 .../callbacks/EntityListenerEntity.java            |    8 +-
 .../callbacks/EntityListenerMappedSuperClass.java  |    4 +-
 .../callbacks/ExceptionsFromCallbacksEntity.java   |   24 +-
 .../callbacks/GlobalListenerEntity.java            |    6 +-
 .../persistence/callbacks/ListenerImpl.java        |   14 +-
 .../persistence/callbacks/ListenerInEntity.java    |   20 +-
 .../persistence/callbacks/MSCListenerEntity.java   |    6 +-
 .../openjpa/persistence/callbacks/Message.java     |   12 +-
 .../persistence/callbacks/MessageListenerImpl.java |   14 +-
 .../callbacks/PostLoadListenerEntity.java          |    8 +-
 .../callbacks/PostLoadListenerImpl.java            |    2 +-
 .../persistence/callbacks/PostPersistEntity.java   |    8 +-
 .../callbacks/TestExceptionsFromCallbacks.java     |    4 +-
 .../callbacks/TestMessageListeners.java            |    2 +-
 .../callbacks/TestPostPersistCallback.java         |    2 +-
 .../persistence/cascade/CascadePersistEntity.java  |   10 +-
 .../apache/openjpa/persistence/cascade/Edge.java   |   14 +-
 .../persistence/cascade/TestCascadePersist.java    |    4 +-
 .../cascade/TestMultiCascadePersist.java           |    8 +-
 .../apache/openjpa/persistence/cascade/Vertex.java |   20 +-
 .../openjpa/persistence/cascade/VertexType.java    |   16 +-
 .../cascade/pudefault/AnEmbeddable.java            |    4 +-
 .../pudefault/EmbeddableWithRelationships.java     |   10 +-
 .../cascade/pudefault/PUDEntityA01.java            |   18 +-
 .../cascade/pudefault/PUDEntityA02.java            |   12 +-
 .../cascade/pudefault/PUDEntityAE01.java           |   20 +-
 .../persistence/cascade/pudefault/PUDEntityB.java  |   10 +-
 .../pudefault/TestNoPUDefaultCascadePersist.java   |    2 +-
 .../pudefault/TestPUDefaultCascadePersist.java     |    2 +-
 .../openjpa/persistence/common/apps/Address.java   |   14 +-
 .../openjpa/persistence/common/apps/ArtCourse.java |    4 +-
 .../openjpa/persistence/common/apps/CompUser.java  |   26 +-
 .../persistence/common/apps/ComplexEmbeddedPC.java |    8 +-
 .../openjpa/persistence/common/apps/Course.java    |   14 +-
 .../persistence/common/apps/Department.java        |   10 +-
 .../persistence/common/apps/EmbeddedOwnerPC.java   |   14 +-
 .../persistence/common/apps/EmbeddedPC.java        |    6 +-
 .../openjpa/persistence/common/apps/Entity1.java   |   24 +-
 .../openjpa/persistence/common/apps/Entity2.java   |    8 +-
 .../persistence/common/apps/FemaleUser.java        |    4 +-
 .../openjpa/persistence/common/apps/MaleUser.java  |    4 +-
 .../openjpa/persistence/common/apps/Part.java      |   12 +-
 .../openjpa/persistence/common/apps/PartPK.java    |    4 +-
 .../persistence/common/apps/RuntimeTest1.java      |   20 +-
 .../persistence/common/apps/RuntimeTest2.java      |    4 +-
 .../persistence/common/apps/ScienceCourse.java     |    4 +-
 .../openjpa/persistence/common/apps/Shirt.java     |   12 +-
 .../openjpa/persistence/common/apps/Student.java   |   16 +-
 .../openjpa/persistence/common/apps/Textile.java   |   16 +-
 .../openjpa/persistence/common/apps/TextilePK.java |    8 +-
 .../openjpa/persistence/common/apps/Trousers.java  |    6 +-
 .../persistence/common/utils/AbstractTestCase.java |    6 +-
 .../openjpa/persistence/compat/Bi_1To1_JT.java     |   12 +-
 .../openjpa/persistence/compat/Bi_1ToM_FK.java     |   10 +-
 .../openjpa/persistence/compat/Bi_1ToM_JT.java     |   10 +-
 .../openjpa/persistence/compat/Bi_1ToM_Map_JT.java |   10 +-
 .../persistence/compat/Bi_1ToM_Map_RelKey_JT.java  |   10 +-
 .../openjpa/persistence/compat/Department.java     |   12 +-
 .../persistence/compat/EmbeddableSuper.java        |   14 +-
 .../persistence/compat/EmbeddableSuperSub.java     |   12 +-
 .../openjpa/persistence/compat/Employee.java       |   16 +-
 .../apache/openjpa/persistence/compat/EntityA.java |   10 +-
 .../apache/openjpa/persistence/compat/EntityB.java |   14 +-
 .../apache/openjpa/persistence/compat/EntityC.java |    8 +-
 .../openjpa/persistence/compat/EntityC_B11JT.java  |    8 +-
 .../openjpa/persistence/compat/EntityC_B1MFK.java  |   10 +-
 .../openjpa/persistence/compat/EntityC_B1MJT.java  |   12 +-
 .../persistence/compat/EntityC_B1M_Map_JT.java     |   14 +-
 .../compat/EntityC_B1M_Map_RelKey_JT.java          |   14 +-
 .../openjpa/persistence/compat/EntityC_U11JT.java  |    6 +-
 .../openjpa/persistence/compat/EntityC_U1MFK.java  |    8 +-
 .../persistence/compat/EntityC_U1M_Map_FK.java     |    8 +-
 .../compat/EntityC_U1M_Map_RelKey_FK.java          |    8 +-
 .../persistence/compat/FullTimeEmployee.java       |    6 +-
 .../apache/openjpa/persistence/compat/Invoice.java |   10 +-
 .../openjpa/persistence/compat/LineItem.java       |    6 +-
 .../openjpa/persistence/compat/MappedSuper.java    |   12 +-
 .../persistence/compat/PartTimeEmployee.java       |    6 +-
 .../openjpa/persistence/compat/SimpleEntity.java   |   26 +-
 .../openjpa/persistence/compat/SimpleEntity2.java  |   16 +-
 .../TestContainerSpecCompatibilityOptions.java     |    4 +-
 .../persistence/compat/TestDupNamedQuery.java      |    2 +-
 .../persistence/compat/TestMessageListener.java    |    2 +-
 .../compat/TestNonPrimaryKeyQueryParameters.java   |    6 +-
 .../persistence/compat/TestQuerySQLCache.java      |    6 +-
 .../compat/TestSpecCompatibilityOptions.java       |    4 +-
 .../openjpa/persistence/compat/Uni_1To1_JT.java    |   12 +-
 .../openjpa/persistence/compat/Uni_1ToM_FK.java    |   12 +-
 .../openjpa/persistence/compat/Uni_1ToM_JT.java    |   14 +-
 .../persistence/compat/Uni_1ToM_Map_FK.java        |   14 +-
 .../persistence/compat/Uni_1ToM_Map_RelKey_FK.java |   14 +-
 .../openjpa/persistence/compat/Uni_MTo1_JT.java    |   12 +-
 .../apache/openjpa/persistence/conf/Person.java    |   10 +-
 .../persistence/conf/TestOpenJPAConfiguration.java |    2 +-
 .../conf/TestOverrideNonJtaDataSource.java         |   14 +-
 .../persistence/conf/TestSwitchConnection.java     |   14 +-
 .../org/apache/openjpa/persistence/criteria/A.java |    8 +-
 .../apache/openjpa/persistence/criteria/A_.java    |    4 +-
 .../criteria/AbstractCriteriaTestCase.java         |    8 +-
 .../openjpa/persistence/criteria/Account.java      |   14 +-
 .../openjpa/persistence/criteria/Account_.java     |    4 +-
 .../openjpa/persistence/criteria/Address.java      |   12 +-
 .../openjpa/persistence/criteria/Address_.java     |    4 +-
 .../org/apache/openjpa/persistence/criteria/B.java |    4 +-
 .../apache/openjpa/persistence/criteria/B_.java    |    4 +-
 .../openjpa/persistence/criteria/BlogUser.java     |    8 +-
 .../openjpa/persistence/criteria/BlogUser_.java    |    6 +-
 .../org/apache/openjpa/persistence/criteria/C.java |    8 +-
 .../apache/openjpa/persistence/criteria/C_.java    |   12 +-
 .../openjpa/persistence/criteria/CompUser.java     |   26 +-
 .../openjpa/persistence/criteria/CompUser_.java    |    6 +-
 .../openjpa/persistence/criteria/Contact.java      |    6 +-
 .../openjpa/persistence/criteria/Contact_.java     |    6 +-
 .../openjpa/persistence/criteria/Contractor.java   |    2 +-
 .../openjpa/persistence/criteria/Contractor_.java  |    2 +-
 .../openjpa/persistence/criteria/Course.java       |   12 +-
 .../openjpa/persistence/criteria/Course_.java      |    6 +-
 .../openjpa/persistence/criteria/CreditCard.java   |   14 +-
 .../openjpa/persistence/criteria/CreditCard_.java  |    6 +-
 .../openjpa/persistence/criteria/CriteriaTest.java |    2 +-
 .../openjpa/persistence/criteria/Customer.java     |   16 +-
 .../openjpa/persistence/criteria/Customer_.java    |    8 +-
 .../org/apache/openjpa/persistence/criteria/D.java |    6 +-
 .../apache/openjpa/persistence/criteria/D_.java    |    4 +-
 .../openjpa/persistence/criteria/Department.java   |   10 +-
 .../openjpa/persistence/criteria/Department_.java  |    6 +-
 .../openjpa/persistence/criteria/Dependent.java    |   12 +-
 .../openjpa/persistence/criteria/DependentId.java  |    2 +-
 .../openjpa/persistence/criteria/DependentId_.java |    4 +-
 .../openjpa/persistence/criteria/Dependent_.java   |    4 +-
 .../criteria/EmbeddableDomainTestCase.java         |    4 +-
 .../openjpa/persistence/criteria/Employee.java     |   20 +-
 .../openjpa/persistence/criteria/Employee_.java    |    4 +-
 .../persistence/criteria/EntityWithIdClass.java    |    6 +-
 .../openjpa/persistence/criteria/Exempt.java       |    4 +-
 .../openjpa/persistence/criteria/Exempt_.java      |    4 +-
 .../openjpa/persistence/criteria/FemaleUser.java   |    4 +-
 .../openjpa/persistence/criteria/FemaleUser_.java  |    2 +-
 .../persistence/criteria/FrequentFlierPlan.java    |    6 +-
 .../persistence/criteria/FrequentFlierPlan_.java   |    4 +-
 .../apache/openjpa/persistence/criteria/Item.java  |   10 +-
 .../apache/openjpa/persistence/criteria/Item_.java |    6 +-
 .../persistence/criteria/JoinDomainTestCase.java   |    4 +-
 .../openjpa/persistence/criteria/LineItem.java     |   12 +-
 .../openjpa/persistence/criteria/LineItem_.java    |    4 +-
 .../openjpa/persistence/criteria/Magazine.java     |   18 +-
 .../openjpa/persistence/criteria/Magazine_.java    |    4 +-
 .../openjpa/persistence/criteria/MaleUser.java     |    4 +-
 .../openjpa/persistence/criteria/MaleUser_.java    |    2 +-
 .../openjpa/persistence/criteria/Manager.java      |   10 +-
 .../openjpa/persistence/criteria/Manager_.java     |    4 +-
 .../apache/openjpa/persistence/criteria/Movie.java |    8 +-
 .../openjpa/persistence/criteria/Movie_.java       |    4 +-
 .../apache/openjpa/persistence/criteria/Order.java |   14 +-
 .../openjpa/persistence/criteria/Order_.java       |    6 +-
 .../openjpa/persistence/criteria/Person.java       |   12 +-
 .../openjpa/persistence/criteria/Person_.java      |    6 +-
 .../apache/openjpa/persistence/criteria/Phone.java |   10 +-
 .../openjpa/persistence/criteria/Phone_.java       |    6 +-
 .../apache/openjpa/persistence/criteria/Photo.java |    8 +-
 .../openjpa/persistence/criteria/Photo_.java       |    4 +-
 .../openjpa/persistence/criteria/Product.java      |   12 +-
 .../openjpa/persistence/criteria/Product_.java     |    4 +-
 .../openjpa/persistence/criteria/Publisher.java    |   16 +-
 .../openjpa/persistence/criteria/Publisher_.java   |    6 +-
 .../openjpa/persistence/criteria/Request.java      |    8 +-
 .../openjpa/persistence/criteria/Request_.java     |    4 +-
 .../openjpa/persistence/criteria/Semester.java     |    8 +-
 .../openjpa/persistence/criteria/Semester_.java    |    4 +-
 .../openjpa/persistence/criteria/Student.java      |   16 +-
 .../openjpa/persistence/criteria/Student_.java     |    6 +-
 .../persistence/criteria/TestByteArray.java        |   10 +-
 .../openjpa/persistence/criteria/TestCQL.java      |    4 +-
 .../openjpa/persistence/criteria/TestCriteria.java |   12 +-
 .../criteria/TestDateStringConversion.java         |    6 +-
 .../persistence/criteria/TestDistinctCriteria.java |   10 +-
 .../openjpa/persistence/criteria/TestEdit.java     |   18 +-
 .../criteria/TestEmbeddableCriteria.java           |   26 +-
 .../persistence/criteria/TestFetchJoin.java        |    4 +-
 .../persistence/criteria/TestJPQLSubquery.java     |   22 +-
 .../persistence/criteria/TestJoinCondition.java    |   18 +-
 .../criteria/TestMetaModelTypesafeCriteria.java    |   44 +-
 .../persistence/criteria/TestQueryByExample.java   |    4 +-
 .../TestRemoteQueryCacheCriteriaQuery.java         |   10 +-
 .../persistence/criteria/TestStringCriteria.java   |   26 +-
 .../persistence/criteria/TestSubqueries.java       |    6 +-
 .../criteria/TestTypeSafeCondExpression.java       |   16 +-
 .../persistence/criteria/TestTypesafeCriteria.java |   36 +-
 .../openjpa/persistence/criteria/Transaction.java  |    4 +-
 .../persistence/criteria/TransactionHistory.java   |    8 +-
 .../persistence/criteria/TransactionHistory_.java  |    4 +-
 .../openjpa/persistence/criteria/Transaction_.java |    2 +-
 .../openjpa/persistence/criteria/VideoStore.java   |   20 +-
 .../openjpa/persistence/criteria/VideoStore_.java  |    6 +-
 .../persistence/criteria/init/AddressEntity.java   |   10 +-
 .../persistence/criteria/init/AddressPk.java       |    4 +-
 .../persistence/criteria/init/MyUserEntity.java    |   14 +-
 .../criteria/init/TestCriteriaInitialization.java  |   10 +-
 .../persistence/criteria/multiselect/DimDay.java   |    8 +-
 .../persistence/criteria/multiselect/DimDay_.java  |    6 +-
 .../criteria/multiselect/FactWorkAssignment.java   |    8 +-
 .../criteria/multiselect/FactWorkAssignment_.java  |    6 +-
 .../TestCriteriaMultiselectAliasing.java           |   18 +-
 .../openjpa/persistence/criteria/results/Bar.java  |    4 +-
 .../openjpa/persistence/criteria/results/Bar_.java |    4 +-
 .../openjpa/persistence/criteria/results/Foo.java  |    6 +-
 .../openjpa/persistence/criteria/results/Foo_.java |    4 +-
 .../openjpa/persistence/criteria/results/Item.java |   14 +-
 .../persistence/criteria/results/Item_.java        |    4 +-
 .../persistence/criteria/results/Order.java        |   14 +-
 .../persistence/criteria/results/Order_.java       |    6 +-
 .../persistence/criteria/results/Producer.java     |    8 +-
 .../persistence/criteria/results/Producer_.java    |    4 +-
 .../persistence/criteria/results/ShipRate.java     |   12 +-
 .../openjpa/persistence/criteria/results/Shop.java |   10 +-
 .../persistence/criteria/results/Shop_.java        |    6 +-
 .../criteria/results/TestMultiselect.java          |   10 +-
 .../criteria/results/TestTypedResults.java         |   16 +-
 .../persistence/datacache/CacheLoadTest.java       |    4 +-
 .../openjpa/persistence/datacache/CacheTest.java   |    4 +-
 .../persistence/datacache/CachedEmployee.java      |    4 +-
 .../datacache/CachedEntityStatistics.java          |   16 +-
 .../persistence/datacache/CachedManager.java       |    4 +-
 .../persistence/datacache/CachedPerson.java        |   10 +-
 .../persistence/datacache/CascadeChild.java        |    6 +-
 .../persistence/datacache/CascadeParent.java       |   10 +-
 .../persistence/datacache/IdentityIdClass.java     |    8 +-
 .../apache/openjpa/persistence/datacache/Item.java |    8 +-
 .../persistence/datacache/MapEmbeddable.java       |    2 +-
 .../openjpa/persistence/datacache/MapHolder.java   |    8 +-
 .../datacache/OptimisticLockInstance.java          |   10 +-
 .../openjpa/persistence/datacache/Order.java       |   14 +-
 .../persistence/datacache/OrderedOneManyChild.java |    6 +-
 .../datacache/OrderedOneManyParent.java            |   10 +-
 .../openjpa/persistence/datacache/Purchase.java    |   14 +-
 .../datacache/TestArrayFieldsInDataCache.java      |    2 +-
 .../datacache/TestAutoIncrementAndDataCaching.java |    2 +-
 .../datacache/TestBulkJPQLAndDataCache.java        |    2 +-
 .../datacache/TestBulkUpdatesAndVersionColumn.java |    8 +-
 .../TestBulkUpdatesDataCacheEviction.java          |    4 +-
 .../persistence/datacache/TestCacheExclusions.java |    6 +-
 .../datacache/TestDataCacheBehavesIdentical.java   |    4 +-
 .../TestDataCacheOptimisticLockRecovery.java       |    6 +-
 .../datacache/TestDataCacheStoreManager.java       |    2 +-
 .../datacache/TestEmbeddedCollection.java          |    2 +-
 .../persistence/datacache/TestEntitiesAsKeys.java  |    2 +-
 .../persistence/datacache/TestFlushDataCache.java  |    4 +-
 .../persistence/datacache/TestJPACache.java        |    6 +-
 .../datacache/TestJPAEmbeddableDataCache.java      |    4 +-
 .../persistence/datacache/TestJPQL2Queries.java    |    2 +-
 .../TestJPQL2ResultsAndResultClasses.java          |    2 +-
 .../datacache/TestJPQLRelationProjections.java     |    2 +-
 .../persistence/datacache/TestM2MInDataCache.java  |    2 +-
 .../datacache/TestMutableParameters.java           |    2 +-
 .../datacache/TestOrderbyInDataCache.java          |    2 +-
 .../datacache/TestPCParametersInQueries.java       |    2 +-
 .../persistence/datacache/TestQueryResultSize.java |    4 +-
 .../persistence/datacache/TestResultShapes.java    |    2 +-
 .../persistence/datacache/TestStatistics.java      |    2 +-
 .../datacache/TestUniteratedQueryResult.java       |    2 +-
 .../datacache/common/apps/AppIdCacheObject.java    |    2 +-
 .../persistence/datacache/common/apps/AttachA.java |    4 +-
 .../persistence/datacache/common/apps/AttachB.java |    2 +-
 .../persistence/datacache/common/apps/AttachC.java |    2 +-
 .../persistence/datacache/common/apps/AttachD.java |    2 +-
 .../persistence/datacache/common/apps/AttachE.java |    4 +-
 .../persistence/datacache/common/apps/AttachF.java |    2 +-
 .../datacache/common/apps/CacheObjectA.java        |   28 +-
 .../datacache/common/apps/CacheObjectAChild1.java  |    4 +-
 .../datacache/common/apps/CacheObjectAChild2.java  |    4 +-
 .../datacache/common/apps/CacheObjectB.java        |    8 +-
 .../datacache/common/apps/CacheObjectBChild1.java  |    2 +-
 .../datacache/common/apps/CacheObjectC.java        |    8 +-
 .../datacache/common/apps/CacheObjectD.java        |    8 +-
 .../datacache/common/apps/CacheObjectE.java        |    8 +-
 .../datacache/common/apps/CacheObjectF.java        |    2 +-
 .../datacache/common/apps/CacheObjectG.java        |    2 +-
 .../datacache/common/apps/CacheObjectH.java        |    2 +-
 .../datacache/common/apps/CacheObjectJ.java        |   12 +-
 .../apps/CacheObjectWithExternalizedFields.java    |    2 +-
 .../datacache/common/apps/EmbeddedEntity.java      |    4 +-
 .../common/apps/EmbeddingOwnerEntity.java          |    8 +-
 .../common/apps/FlushDataCacheObject.java          |    2 +-
 .../datacache/common/apps/M2MEntityE.java          |    8 +-
 .../datacache/common/apps/M2MEntityF.java          |    8 +-
 .../persistence/datacache/common/apps/PObject.java |   10 +-
 .../datacache/common/apps/RuntimeTest1.java        |   18 +-
 .../datacache/common/apps/RuntimeTest2.java        |    4 +-
 .../apps/SelfReferencingCacheTestObject.java       |    6 +-
 .../common/apps/TransactionalClassPC.java          |    2 +-
 .../datacache/entities/ContactInfo.java            |    6 +-
 .../persistence/datacache/entities/Person.java     |   16 +-
 .../persistence/datacache/entities/Phone.java      |   16 +-
 .../datacache/stats/TestStatistics.java            |    4 +-
 .../persistence/delimited/identifiers/Animal.java  |   12 +-
 .../persistence/delimited/identifiers/Animal2.java |   18 +-
 .../persistence/delimited/identifiers/Car.java     |   12 +-
 .../persistence/delimited/identifiers/Car2.java    |   18 +-
 .../persistence/delimited/identifiers/Cat.java     |    4 +-
 .../persistence/delimited/identifiers/Cat2.java    |    4 +-
 .../delimited/identifiers/Chevrolet.java           |    4 +-
 .../delimited/identifiers/Chevrolet2.java          |    4 +-
 .../persistence/delimited/identifiers/Dog.java     |    4 +-
 .../persistence/delimited/identifiers/Dog2.java    |    4 +-
 .../persistence/delimited/identifiers/EntityA.java |   26 +-
 .../persistence/delimited/identifiers/EntityB.java |   14 +-
 .../persistence/delimited/identifiers/EntityC.java |   22 +-
 .../persistence/delimited/identifiers/EntityD.java |    8 +-
 .../delimited/identifiers/EntityD2.java            |   12 +-
 .../delimited/identifiers/EntityD3.java            |    8 +-
 .../delimited/identifiers/EntityD4.java            |    8 +-
 .../persistence/delimited/identifiers/EntityE.java |   14 +-
 .../persistence/delimited/identifiers/EntityF.java |   24 +-
 .../persistence/delimited/identifiers/EntityG.java |    6 +-
 .../persistence/delimited/identifiers/EntityH.java |   22 +-
 .../persistence/delimited/identifiers/EntityI.java |    8 +-
 .../delimited/identifiers/EntityI2.java            |   12 +-
 .../delimited/identifiers/EntityI3.java            |    8 +-
 .../delimited/identifiers/EntityI4.java            |    8 +-
 .../persistence/delimited/identifiers/Pontiac.java |    4 +-
 .../delimited/identifiers/Pontiac2.java            |    4 +-
 .../TestDelimIdResultSetAnnotations.java           |    2 +-
 .../identifiers/TestDelimInheritance.java          |    2 +-
 .../identifiers/TestDelimitedJoinAnnotation.java   |    2 +-
 .../delimited/identifiers/TestManualDelimId.java   |    2 +-
 .../TestManualDelimIdResultSetAnnotations.java     |    2 +-
 .../identifiers/TestManualDelimInheritance.java    |    2 +-
 .../TestManualDelimitedJoinAnnotations.java        |    2 +-
 .../delimited/identifiers/noschema/EntityC.java    |   22 +-
 .../delimited/identifiers/noschema/EntityD.java    |    8 +-
 .../delimited/identifiers/noschema/EntityD2.java   |   12 +-
 .../delimited/identifiers/noschema/EntityD3.java   |    8 +-
 .../delimited/identifiers/noschema/EntityD4.java   |    8 +-
 .../delimited/identifiers/noschema/EntityE.java    |   14 +-
 .../delimited/identifiers/noschema/EntityF.java    |   24 +-
 .../delimited/identifiers/noschema/EntityG.java    |    6 +-
 .../noschema/TestNoSchemaManualDelimId.java        |    2 +-
 ...TestNoSchemaManualDelimitedJoinAnnotations.java |    2 +-
 .../identifiers/xml/TestXmlDelimIdResultSets.java  |    2 +-
 .../identifiers/xml/TestXmlDelimInheritance.java   |    2 +-
 .../xml/TestXmlDelimitedJoinAnnotation.java        |    2 +-
 .../persistence/derivedid/EBigDecimalID.java       |    6 +-
 .../persistence/derivedid/EBigIntegerID.java       |    4 +-
 .../persistence/derivedid/EDBigDecimalID.java      |    6 +-
 .../persistence/derivedid/EDBigIntegerID.java      |    6 +-
 .../openjpa/persistence/derivedid/EDDateID.java    |    6 +-
 .../openjpa/persistence/derivedid/EDSQLDateID.java |    6 +-
 .../openjpa/persistence/derivedid/EDateID.java     |    4 +-
 .../openjpa/persistence/derivedid/ESQLDateID.java  |    4 +-
 .../persistence/derivedid/TestDerivedIdentity.java |    4 +-
 .../apache/openjpa/persistence/detach/Entity1.java |   10 +-
 .../openjpa/persistence/detach/Entity10.java       |   10 +-
 .../openjpa/persistence/detach/Entity11.java       |    4 +-
 .../openjpa/persistence/detach/Entity12.java       |    4 +-
 .../openjpa/persistence/detach/Entity13.java       |   10 +-
 .../openjpa/persistence/detach/Entity14.java       |    4 +-
 .../openjpa/persistence/detach/Entity20.java       |   12 +-
 .../apache/openjpa/persistence/detach/Entity3.java |    8 +-
 .../apache/openjpa/persistence/detach/Entity4.java |    8 +-
 .../apache/openjpa/persistence/detach/Entity5.java |    6 +-
 .../apache/openjpa/persistence/detach/Entity6.java |    8 +-
 .../apache/openjpa/persistence/detach/Entity7.java |    4 +-
 .../apache/openjpa/persistence/detach/Entity8.java |    8 +-
 .../apache/openjpa/persistence/detach/Entity9.java |    4 +-
 .../apache/openjpa/persistence/detach/EntityA.java |   14 +-
 .../apache/openjpa/persistence/detach/EntityB.java |    6 +-
 .../apache/openjpa/persistence/detach/EntityC.java |    6 +-
 .../apache/openjpa/persistence/detach/EntityD.java |    6 +-
 .../apache/openjpa/persistence/detach/EntityE.java |    6 +-
 .../persistence/detach/IntVersionEntity.java       |   12 +-
 .../persistence/detach/IntegerVersionEntity.java   |    6 +-
 .../persistence/detach/NoVersionEntity.java        |    4 +-
 .../persistence/detach/TimestampVersionEntity.java |    6 +-
 .../SerializableDetachedStateManager.java          |   14 +-
 .../openjpa/persistence/detach/xml/Driver.java     |    4 +-
 .../openjpa/persistence/detach/xml/Owner.java      |    4 +-
 .../openjpa/persistence/detach/xml/Passenger.java  |    4 +-
 .../persistence/detach/xml/TestDetachXML.java      |    4 +-
 .../detachment/DetachmentOneManyChild.java         |   12 +-
 .../detachment/DetachmentOneManyParent.java        |   16 +-
 .../openjpa/persistence/detachment/Record.java     |    6 +-
 .../detachment/TestAttachConstructedCopy.java      |    2 +-
 .../detachment/TestAttachWithNoChanges.java        |    4 +-
 .../persistence/detachment/TestCascadeMerge.java   |    2 +-
 .../persistence/detachment/TestDetachLite.java     |    4 +-
 .../TestDetachedEntityCascadePersist.java          |    2 +-
 .../persistence/detachment/TestDetachment.java     |    2 +-
 .../detachment/TestDetachmentOneMany.java          |    2 +-
 .../TestGetReferenceAndImplicitDetachment.java     |    4 +-
 .../detachment/TestNoCascadeOneToManyMerge.java    |    2 +-
 .../detachment/TestNoCascadeOneToOneMerge.java     |    2 +-
 .../persistence/detachment/model/DMCustomer.java   |   16 +-
 .../detachment/model/DMCustomerInventory.java      |   16 +-
 .../persistence/detachment/model/DMItem.java       |    6 +-
 .../model/NoDetachedStateEntityFieldAccess.java    |   16 +-
 .../model/NoDetachedStateEntityPropertyAccess.java |   14 +-
 .../persistence/detachment/model/SimpleA.java      |   14 +-
 .../persistence/detachment/model/SimpleB.java      |   16 +-
 .../persistence/detachment/model/SimpleC.java      |   14 +-
 .../persistence/detachment/model/SimpleRef.java    |    8 +-
 .../discriminator/CharAbstractEntity.java          |   16 +-
 .../persistence/discriminator/CharLeafEntity.java  |    2 +-
 .../persistence/discriminator/CharRootEntity.java  |    4 +-
 .../discriminator/IntegerAbstractEntity.java       |   16 +-
 .../discriminator/IntegerLeafEntity.java           |    2 +-
 .../discriminator/IntegerRootEntity.java           |    4 +-
 .../discriminator/StringAbstractEntity.java        |   16 +-
 .../discriminator/StringLeafEntity.java            |    2 +-
 .../discriminator/StringRootEntity.java            |    4 +-
 .../discriminator/TestDiscriminatorTypes.java      |    4 +-
 .../persistence/discriminator/fetch/Employee.java  |   10 +-
 .../persistence/discriminator/fetch/Manager.java   |   10 +-
 .../persistence/discriminator/fetch/Person.java    |   12 +-
 .../discriminator/fetch/TestLazyFetch.java         |    6 +-
 .../openjpa/persistence/distinctjoin/Course.java   |   28 +-
 .../openjpa/persistence/distinctjoin/Lecturer.java |   10 +-
 .../persistence/distinctjoin/LocalizedText.java    |    4 +-
 .../persistence/distinctjoin/TestDistinctJoin.java |    6 +-
 .../dynamicschema/EntityReservedWords.java         |    4 +-
 .../dynamicschema/EntityVeryLongNames.java         |    8 +-
 .../persistence/dynamicschema/ResWordEntity.java   |    8 +-
 .../dynamicschema/TestResWordEntity.java           |    2 +-
 .../org/apache/openjpa/persistence/embed/A.java    |   22 +-
 .../apache/openjpa/persistence/embed/Address.java  |    6 +-
 .../openjpa/persistence/embed/BaseEntity.java      |    6 +-
 .../org/apache/openjpa/persistence/embed/Book.java |   14 +-
 .../apache/openjpa/persistence/embed/Company1.java |   10 +-
 .../openjpa/persistence/embed/Company1_.java       |    6 +-
 .../apache/openjpa/persistence/embed/Company2.java |    8 +-
 .../openjpa/persistence/embed/Company2_.java       |    6 +-
 .../openjpa/persistence/embed/ContactInfo.java     |    8 +-
 .../openjpa/persistence/embed/Department1.java     |   10 +-
 .../openjpa/persistence/embed/Department1_.java    |    6 +-
 .../openjpa/persistence/embed/Department2.java     |    8 +-
 .../openjpa/persistence/embed/Department2_.java    |    6 +-
 .../openjpa/persistence/embed/Department3.java     |   10 +-
 .../openjpa/persistence/embed/Department3_.java    |    6 +-
 .../apache/openjpa/persistence/embed/Division.java |    6 +-
 .../openjpa/persistence/embed/Division_.java       |    4 +-
 .../apache/openjpa/persistence/embed/EChild.java   |    6 +-
 .../apache/openjpa/persistence/embed/EGeneric.java |   10 +-
 .../apache/openjpa/persistence/embed/EParent.java  |    8 +-
 .../apache/openjpa/persistence/embed/Embed.java    |    2 +-
 .../apache/openjpa/persistence/embed/EmbedXml.java |    4 +-
 .../apache/openjpa/persistence/embed/Embed_.java   |    4 +-
 .../persistence/embed/Embed_Coll_Embed.java        |   10 +-
 .../persistence/embed/Embed_Coll_Embed_.java       |    6 +-
 .../persistence/embed/Embed_Coll_Integer.java      |    4 +-
 .../persistence/embed/Embed_Coll_Integer_.java     |    6 +-
 .../openjpa/persistence/embed/Embed_Coll_Map.java  |    4 +-
 .../openjpa/persistence/embed/Embed_Embed.java     |   10 +-
 .../openjpa/persistence/embed/Embed_Embed_.java    |    4 +-
 .../persistence/embed/Embed_Embed_ToMany.java      |    4 +-
 .../persistence/embed/Embed_Embed_ToMany_.java     |    4 +-
 .../persistence/embed/Embed_MappedToOne.java       |    4 +-
 .../embed/Embed_MappedToOneCascadeDelete.java      |    8 +-
 .../persistence/embed/Embed_MappedToOne_.java      |    4 +-
 .../persistence/embed/Embed_Single_Coll.java       |    6 +-
 .../openjpa/persistence/embed/Embed_ToMany.java    |    6 +-
 .../openjpa/persistence/embed/Embed_ToMany_.java   |    6 +-
 .../openjpa/persistence/embed/Embed_ToOne.java     |    6 +-
 .../openjpa/persistence/embed/Embed_ToOne_.java    |    4 +-
 .../apache/openjpa/persistence/embed/Employee.java |   12 +-
 .../openjpa/persistence/embed/Employee1.java       |    8 +-
 .../openjpa/persistence/embed/Employee1_.java      |    4 +-
 .../openjpa/persistence/embed/Employee2.java       |    8 +-
 .../openjpa/persistence/embed/Employee2_.java      |    4 +-
 .../openjpa/persistence/embed/Employee3.java       |   10 +-
 .../openjpa/persistence/embed/Employee3_.java      |    4 +-
 .../openjpa/persistence/embed/EmployeeName3.java   |    2 +-
 .../openjpa/persistence/embed/EmployeeName3_.java  |    4 +-
 .../openjpa/persistence/embed/EmployeePK2.java     |    2 +-
 .../openjpa/persistence/embed/EmployeePK2_.java    |    4 +-
 .../embed/EntityA_Coll_Embed_Embed.java            |   14 +-
 .../embed/EntityA_Coll_Embed_Embed_.java           |    6 +-
 .../embed/EntityA_Coll_Embed_ToOne.java            |   20 +-
 .../embed/EntityA_Coll_Embed_ToOne_.java           |    6 +-
 .../persistence/embed/EntityA_Coll_String.java     |   26 +-
 .../persistence/embed/EntityA_Coll_String_.java    |    6 +-
 .../openjpa/persistence/embed/EntityA_Embed.java   |   14 +-
 .../embed/EntityA_Embed_Coll_Embed.java            |   18 +-
 .../embed/EntityA_Embed_Coll_Embed_.java           |    4 +-
 .../embed/EntityA_Embed_Coll_Integer.java          |   12 +-
 .../embed/EntityA_Embed_Coll_Integer_.java         |    4 +-
 .../persistence/embed/EntityA_Embed_Coll_Map.java  |   14 +-
 .../persistence/embed/EntityA_Embed_Complex.java   |   32 +-
 .../persistence/embed/EntityA_Embed_Embed.java     |   14 +-
 .../persistence/embed/EntityA_Embed_Embed_.java    |    4 +-
 .../embed/EntityA_Embed_Embed_ToMany.java          |   14 +-
 .../embed/EntityA_Embed_Embed_ToMany_.java         |    4 +-
 .../embed/EntityA_Embed_MappedToOne.java           |   14 +-
 .../EntityA_Embed_MappedToOneCascadeDelete.java    |   14 +-
 .../embed/EntityA_Embed_MappedToOne_.java          |    4 +-
 .../embed/EntityA_Embed_Single_Coll.java           |    6 +-
 .../persistence/embed/EntityA_Embed_ToMany.java    |   14 +-
 .../persistence/embed/EntityA_Embed_ToMany_.java   |    4 +-
 .../persistence/embed/EntityA_Embed_ToOne.java     |   14 +-
 .../persistence/embed/EntityA_Embed_ToOne_.java    |    4 +-
 .../apache/openjpa/persistence/embed/EntityB1.java |    8 +-
 .../openjpa/persistence/embed/EntityB1_.java       |    4 +-
 .../apache/openjpa/persistence/embed/EntityB2.java |   12 +-
 .../openjpa/persistence/embed/FileName4.java       |    2 +-
 .../apache/openjpa/persistence/embed/Geocode.java  |    2 +-
 .../apache/openjpa/persistence/embed/Item1.java    |   10 +-
 .../apache/openjpa/persistence/embed/Item1_.java   |    6 +-
 .../apache/openjpa/persistence/embed/Item2.java    |    8 +-
 .../apache/openjpa/persistence/embed/Item2_.java   |    6 +-
 .../apache/openjpa/persistence/embed/Item3.java    |   12 +-
 .../apache/openjpa/persistence/embed/Item3_.java   |    6 +-
 .../apache/openjpa/persistence/embed/Item4.java    |   10 +-
 .../apache/openjpa/persistence/embed/Item5.java    |   10 +-
 .../apache/openjpa/persistence/embed/JobInfo.java  |    4 +-
 .../apache/openjpa/persistence/embed/Listing.java  |    6 +-
 .../openjpa/persistence/embed/LocationDetails.java |    4 +-
 .../openjpa/persistence/embed/ParkingSpot.java     |    8 +-
 .../openjpa/persistence/embed/PhoneNumber.java     |    8 +-
 .../openjpa/persistence/embed/ProgramManager.java  |    8 +-
 .../apache/openjpa/persistence/embed/Seller.java   |   10 +-
 .../openjpa/persistence/embed/TestEmbeddable.java  |   10 +-
 .../persistence/embed/TestEmbeddableXml.java       |    6 +-
 .../openjpa/persistence/embed/TestEmbedded.java    |    4 +-
 .../persistence/embed/TestEmbeddedWithQuery.java   |    4 +-
 .../embed/TestUpdateEmbeddedQueryResult.java       |    4 +-
 .../openjpa/persistence/embed/VicePresident.java   |    8 +-
 .../openjpa/persistence/embed/VicePresident_.java  |    4 +-
 .../embed/attrOverrides/AbstractEmployee.java      |   10 +-
 .../persistence/embed/attrOverrides/Address.java   |   10 +-
 .../embed/attrOverrides/AnnoOverEmbed.java         |    4 +-
 .../embed/attrOverrides/ContactInfo.java           |    8 +-
 .../persistence/embed/attrOverrides/Customer.java  |   14 +-
 .../embed/attrOverrides/EmergencyContactInfo.java  |    8 +-
 .../persistence/embed/attrOverrides/Employee.java  |   28 +-
 .../persistence/embed/attrOverrides/JobInfo.java   |    4 +-
 .../embed/attrOverrides/PartTimeEmployee.java      |   14 +-
 .../persistence/embed/attrOverrides/Person.java    |   12 +-
 .../embed/attrOverrides/PhoneNumber.java           |    8 +-
 .../embed/attrOverrides/ProgramManager.java        |    8 +-
 .../persistence/embed/attrOverrides/Project.java   |    6 +-
 .../embed/attrOverrides/PropertyInfo.java          |    2 +-
 .../embed/attrOverrides/PropertyOwner.java         |    6 +-
 .../embed/attrOverrides/PropertyRecord.java        |   16 +-
 .../embed/attrOverrides/TestAssocOverrides.java    |    6 +-
 .../embed/attrOverrides/TestAssocOverridesXML.java |    2 +-
 .../embed/attrOverrides/TestAttrOverrides.java     |    6 +-
 .../embed/attrOverrides/TestAttrOverridesXml.java  |    6 +-
 .../persistence/embed/attrOverrides/Zipcode.java   |    4 +-
 .../persistence/embed/compositepk/Subject.java     |    6 +-
 .../persistence/embed/compositepk/SubjectKey.java  |    4 +-
 .../persistence/embed/compositepk/SubjectKey_.java |    6 +-
 .../embed/compositepk/SubjectWithIdClass.java      |   10 +-
 .../embed/compositepk/SubjectWithIdClass_.java     |    6 +-
 .../persistence/embed/compositepk/Subject_.java    |    6 +-
 .../compositepk/TestCompositePrimaryKeys.java      |   18 +-
 .../persistence/embed/compositepk/Topic.java       |   16 +-
 .../persistence/embed/compositepk/Topic_.java      |    6 +-
 .../persistence/embed/lazy/BeverageHolder.java     |    8 +-
 .../apache/openjpa/persistence/embed/lazy/Guy.java |    8 +-
 .../openjpa/persistence/embed/lazy/Recliner.java   |   16 +-
 .../openjpa/persistence/embed/lazy/ReclinerId.java |    4 +-
 .../persistence/embed/lazy/TestLazyEmbeddable.java |    2 +-
 .../enhance/DynamicEnhancementSuite.java           |    2 +-
 .../persistence/enhance/EntityWithEnum.java        |    6 +-
 .../TestEmbeddableEntityWithIDAnnotation.java      |    2 +-
 .../enhance/TestEmbeddedEnumSqlGeneration.java     |    2 +-
 .../enhance/TestSubclassedBehavior.java            |    4 +-
 .../apps/BackingFieldNameMismatchInstance.java     |   10 +-
 .../enhance/common/apps/BaseEntity.java            |   12 +-
 .../enhance/common/apps/BasicSubclassInstance.java |    8 +-
 .../enhance/common/apps/DerivedEntity.java         |    8 +-
 .../enhance/common/apps/DetachablePC.java          |    2 +-
 .../enhance/common/apps/DetachableVersionedPC.java |    2 +-
 .../apps/EmbeddableEntityWithIDAnnotation.java     |    6 +-
 .../persistence/enhance/common/apps/Entity1.java   |   24 +-
 .../persistence/enhance/common/apps/Entity2.java   |    8 +-
 .../common/apps/IDOwningClassTestEntity.java       |    4 +-
 .../common/apps/ManagedInverseTestInstance.java    |   14 +-
 .../common/apps/ManagedInverseTestInstance2.java   |   14 +-
 .../persistence/enhance/common/apps/No2NoArgs.java |    2 +-
 .../persistence/enhance/common/apps/No3NoArgs.java |    2 +-
 .../persistence/enhance/common/apps/NoClone.java   |    2 +-
 .../persistence/enhance/common/apps/NoNoArgs.java  |    2 +-
 .../enhance/common/apps/NonPCClone.java            |    2 +-
 .../persistence/enhance/common/apps/PCClone.java   |    2 +-
 .../enhance/common/apps/SubclassClone.java         |    2 +-
 .../persistence/enhance/identity/BeneContact.java  |   22 +-
 .../enhance/identity/BeneContactId.java            |    8 +-
 .../persistence/enhance/identity/Beneficiary.java  |   12 +-
 .../openjpa/persistence/enhance/identity/Book.java |   14 +-
 .../persistence/enhance/identity/Book1.java        |   22 +-
 .../persistence/enhance/identity/BookId1.java      |    2 +-
 .../persistence/enhance/identity/Dependent1.java   |   10 +-
 .../persistence/enhance/identity/Dependent2.java   |   10 +-
 .../persistence/enhance/identity/Dependent3.java   |   12 +-
 .../persistence/enhance/identity/Dependent4.java   |   12 +-
 .../persistence/enhance/identity/Dependent5.java   |   12 +-
 .../persistence/enhance/identity/Dependent5a.java  |   12 +-
 .../persistence/enhance/identity/DependentId1.java |    2 +-
 .../persistence/enhance/identity/DependentId2.java |    2 +-
 .../persistence/enhance/identity/DependentId3.java |    2 +-
 .../persistence/enhance/identity/EmpId.java        |    4 +-
 .../persistence/enhance/identity/Employee.java     |   12 +-
 .../persistence/enhance/identity/Employee1.java    |    8 +-
 .../persistence/enhance/identity/Employee2.java    |    8 +-
 .../persistence/enhance/identity/Employee3.java    |   12 +-
 .../persistence/enhance/identity/Employee4.java    |   14 +-
 .../persistence/enhance/identity/Employee5.java    |    4 +-
 .../persistence/enhance/identity/EmployeeId2.java  |    2 +-
 .../persistence/enhance/identity/EmployeeId5.java  |    2 +-
 .../persistence/enhance/identity/Library.java      |   10 +-
 .../persistence/enhance/identity/Library1.java     |   16 +-
 .../persistence/enhance/identity/Line1.java        |   18 +-
 .../persistence/enhance/identity/LineId1.java      |    8 +-
 .../enhance/identity/MedicalHistory1.java          |   10 +-
 .../enhance/identity/MedicalHistory2.java          |   10 +-
 .../enhance/identity/MedicalHistory3.java          |   10 +-
 .../enhance/identity/MedicalHistory4.java          |   10 +-
 .../openjpa/persistence/enhance/identity/Page.java |   14 +-
 .../persistence/enhance/identity/Page1.java        |   22 +-
 .../persistence/enhance/identity/PageId1.java      |   10 +-
 .../persistence/enhance/identity/Parent3.java      |   12 +-
 .../persistence/enhance/identity/Person1.java      |    8 +-
 .../persistence/enhance/identity/Person2.java      |   12 +-
 .../persistence/enhance/identity/Person3.java      |   10 +-
 .../persistence/enhance/identity/Person4.java      |    8 +-
 .../persistence/enhance/identity/PersonId1.java    |    2 +-
 .../persistence/enhance/identity/PersonId4.java    |    2 +-
 .../persistence/enhance/identity/PhoneNumber.java  |   10 +-
 .../enhance/identity/TestDerivedIdentity.java      |    2 +-
 .../enhance/identity/TestMappedById.java           |    6 +-
 .../enhance/identity/TestMapsIdXml.java            |    6 +-
 .../identity/TestMultipleLevelDerivedIdentity.java |    2 +-
 .../TestMultipleLevelDerivedIdentity1.java         |    2 +-
 .../apache/openjpa/persistence/entity/EntityA.java |   16 +-
 .../apache/openjpa/persistence/entity/EntityB.java |   18 +-
 .../apache/openjpa/persistence/entity/EntityC.java |   14 +-
 .../persistence/entity/MixedMappingLocation.java   |    2 +-
 .../entity/MixedMappingLocationEmbeddedId.java     |    4 +-
 .../TestEntityManagerConfiguration.java            |    2 +-
 .../common/apps/CascadesEntity.java                |   16 +-
 .../apache/openjpa/persistence/event/AnEntity.java |    6 +-
 .../persistence/event/JMSRemoteEventsTest.java     |   20 +-
 .../event/PostRemoveCallbackEntity.java            |    8 +-
 .../persistence/event/TestBeforeCommit.java        |    6 +-
 .../openjpa/persistence/event/TestPostRemove.java  |    2 +-
 .../event/TestTCPRemoteClassChanges.java           |    2 +-
 .../event/TestTCPRemoteEventsDuration.java         |    2 +-
 .../persistence/event/TestTCPRemoteRecovery.java   |    2 +-
 .../event/TestTCPRemoteRecoveryTransmitAdds.java   |    2 +-
 .../persistence/event/common/apps/Duration.java    |    2 +-
 .../event/common/apps/RuntimeTest1.java            |    8 +-
 .../event/common/apps/RuntimeTest2.java            |    2 +-
 .../event/common/apps/RuntimeTest4.java            |    2 +-
 .../event/common/apps/TransactionalClassPC.java    |    2 +-
 .../openjpa/persistence/exception/PObject.java     |    8 +-
 .../persistence/exception/TestException.java       |   12 +-
 .../exception/TestParameterLogging.java            |    8 +-
 .../openjpa/persistence/external/EntityA.java      |   10 +-
 .../persistence/external/TestExternalValues.java   |    4 +-
 .../openjpa/persistence/fetchgroups/FGAddress.java |    6 +-
 .../persistence/fetchgroups/FGDepartment.java      |    4 +-
 .../persistence/fetchgroups/FGEmployee.java        |   22 +-
 .../openjpa/persistence/fetchgroups/FGManager.java |   10 +-
 .../persistence/fields/ByteArrayHolder.java        |   10 +-
 .../openjpa/persistence/fields/EnumFieldType.java  |    6 +-
 .../openjpa/persistence/fields/EnumSetOwner.java   |    6 +-
 .../openjpa/persistence/fields/TestByteArray.java  |    4 +-
 .../fields/TestEnumQueryConstructor.java           |    4 +-
 .../persistence/fields/TestEnumsInJPQL.java        |    2 +-
 .../openjpa/persistence/flush/Assignment.java      |   22 +-
 .../openjpa/persistence/flush/ClassPeriod.java     |   24 +-
 .../apache/openjpa/persistence/flush/Course.java   |   20 +-
 .../apache/openjpa/persistence/flush/SubTopic.java |   22 +-
 .../persistence/flush/TestCascadingFlush.java      |    2 +-
 .../apache/openjpa/persistence/flush/Topic.java    |   24 +-
 .../foreign/keys/ContainsMultSimpleEntity.java     |    8 +-
 .../persistence/foreign/keys/SimpleEntity.java     |    6 +-
 .../foreign/keys/TestMultForeignKeys.java          |    2 +-
 .../openjpa/persistence/foreign/keys/TopLevel.java |    6 +-
 .../openjpa/persistence/generationtype/Dog.java    |   10 +-
 .../openjpa/persistence/generationtype/Dog1.java   |   10 +-
 .../openjpa/persistence/generationtype/Dog2.java   |   10 +-
 .../openjpa/persistence/generationtype/Dog3.java   |   10 +-
 .../openjpa/persistence/generationtype/Dog4.java   |   10 +-
 .../persistence/generationtype/DogTable.java       |   12 +-
 .../persistence/generationtype/DogTable2.java      |   12 +-
 .../persistence/generationtype/DogTable3.java      |   12 +-
 .../persistence/generationtype/DogTable4.java      |   12 +-
 .../persistence/generationtype/EntityE2.java       |   14 +-
 .../EntityWithGeneratedValueAndPostPersist.java    |   12 +-
 .../generationtype/GeneratedValues.java            |   10 +-
 ...TestEntityWithGeneratedValueAndPostPersist.java |    2 +-
 .../generationtype/TestGeneratedValues.java        |    4 +-
 .../generationtype/TestMultipleSchemaNames.java    |    6 +-
 .../generationtype/TestTableGenerator.java         |    2 +-
 ...tTableGeneratorMultithreadedInitialization.java |    4 +-
 .../TestTableGeneratorUseSchemaNameProp.java       |    2 +-
 .../org/apache/openjpa/persistence/graph/City.java |    4 +-
 .../apache/openjpa/persistence/graph/People.java   |    4 +-
 .../openjpa/persistence/graph/PersistentGraph.java |    6 +-
 .../persistence/graph/PersistentRelation.java      |   14 +-
 .../openjpa/persistence/graph/RelationGraph.java   |    6 +-
 .../persistence/graph/TestPersistentGraph.java     |    4 +-
 .../HungarianNotationFieldDuplicates.java          |    2 +-
 .../hugariannotation/HungarianNotationFields.java  |    8 +-
 .../persistence/hugariannotation/OtherClass.java   |    4 +-
 .../persistence/identity/BooleanIdEntity.java      |    4 +-
 .../identity/ComplexCompoundIdTestEntity.java      |   18 +-
 .../identity/CompoundBooleanIdEntity.java          |    6 +-
 .../persistence/identity/DoubleObjIdEntity.java    |    4 +-
 .../persistence/identity/FloatIdEntity.java        |    4 +-
 .../identity/IdentityGenerationType.java           |    8 +-
 .../identity/SQLBigDecimalIdEntity.java            |    6 +-
 .../identity/SQLBigIntegerIdEntity.java            |    4 +-
 .../persistence/identity/SQLDateIdEntity.java      |    4 +-
 .../identity/SimpleCompoundIdTestEntity.java       |   10 +-
 .../persistence/identity/StringIdEntity.java       |    6 +-
 .../persistence/identity/TestBooleanId.java        |    2 +-
 .../identity/TestCompundIdWithNull.java            |    2 +-
 .../persistence/identity/TestFloatingPointIds.java |    2 +-
 .../persistence/identity/TestGenerationType.java   |    8 +-
 .../persistence/identity/TestSQLBigDecimalId.java  |    2 +-
 .../persistence/identity/TestSQLBigIntegerId.java  |    2 +-
 .../persistence/identity/TestSQLDateId.java        |    2 +-
 .../openjpa/persistence/identity/TestStringId.java |    4 +-
 .../openjpa/persistence/identity/TypeEntity.java   |    6 +-
 .../identity/entityasidentity/Account.java         |   16 +-
 .../identity/entityasidentity/AccountGroup.java    |   12 +-
 .../identity/entityasidentity/Person.java          |    6 +-
 .../TestEntityAsIdentityFields.java                |    4 +-
 .../identity/entityasidentity2/Attendance.java     |   10 +-
 .../identity/entityasidentity2/Course.java         |    8 +-
 .../identity/entityasidentity2/Person.java         |    6 +-
 .../identity/entityasidentity2/Student.java        |   10 +-
 .../TestEntityAsIdentityFields2.java               |    4 +-
 .../persistence/inheritance/AbstractBase.java      |    8 +-
 .../persistence/inheritance/ConcreteSubclass.java  |    2 +-
 .../openjpa/persistence/inheritance/EntityL3.java  |    2 +-
 .../persistence/inheritance/EntityL3Sibling.java   |    2 +-
 .../inheritance/MappedSuperclassBase.java          |    8 +-
 .../inheritance/MappedSuperclassL2.java            |    2 +-
 .../persistence/inheritance/NoGenEntityL3.java     |    2 +-
 .../inheritance/NoGenEntityL3Sibling.java          |    2 +-
 .../inheritance/NoGenMappedSuperclassBase.java     |    4 +-
 .../inheritance/NoGenMappedSuperclassL2.java       |    2 +-
 .../inheritance/TestCallbackEntity.java            |    2 +-
 .../TestDefaultInheritanceStrategy.java            |    4 +-
 .../inheritance/TestFindAbstractClass.java         |    2 +-
 .../TestIdentityWithSingleTableStrategy.java       |    2 +-
 .../inheritance/TestInheritanceWithMSCID.java      |    2 +-
 .../inheritance/TestJoinTableStrategy.java         |    2 +-
 .../inheritance/TestMappedSuperclass.java          |    2 +-
 .../TestMultipleMappedSuperclassHierarchy.java     |    2 +-
 .../TestSharedMappedSuperclassIdValue.java         |    2 +-
 .../abstractjoinedappid/RelationOwner.java         |   14 +-
 .../inheritance/abstractjoinedappid/Subclass.java  |    8 +-
 .../abstractjoinedappid/Superclass.java            |   14 +-
 .../TestAbstractJoinedAppId.java                   |    2 +-
 .../datacache/TestInheritanceWithDataCache.java    |    2 +-
 .../inheritance/embeddable/SharedName2.java        |    2 +-
 .../idmsc/PrimitiveIDMappedSuperclass.java         |    4 +-
 .../chardiscriminator/PIdJTCDMSCEntityB.java       |    4 +-
 .../chardiscriminator/PIdJTCDMSCEntityD.java       |    4 +-
 .../chardiscriminator/PIdJTCDMSCLeafA.java         |    4 +-
 .../chardiscriminator/PIdJTCDMSCLeafB1.java        |    4 +-
 .../chardiscriminator/PIdJTCDMSCLeafB2.java        |    4 +-
 .../chardiscriminator/PIdJTCDMSCLeafC.java         |    4 +-
 .../chardiscriminator/PIdJTCDMSCLeafD1.java        |    4 +-
 .../chardiscriminator/PIdJTCDMSCLeafD2.java        |    4 +-
 .../PIdJTCDMSCMappedSuperclass.java                |    2 +-
 .../chardiscriminator/PIdJTCDMSCRootEntity.java    |   12 +-
 .../intdiscriminator/PIdJTIDMSCEntityB.java        |    4 +-
 .../intdiscriminator/PIdJTIDMSCEntityD.java        |    4 +-
 .../intdiscriminator/PIdJTIDMSCLeafA.java          |    4 +-
 .../intdiscriminator/PIdJTIDMSCLeafB1.java         |    4 +-
 .../intdiscriminator/PIdJTIDMSCLeafB2.java         |    4 +-
 .../intdiscriminator/PIdJTIDMSCLeafC.java          |    4 +-
 .../intdiscriminator/PIdJTIDMSCLeafD1.java         |    4 +-
 .../intdiscriminator/PIdJTIDMSCLeafD2.java         |    4 +-
 .../PIdJTIDMSCMappedSuperclass.java                |    2 +-
 .../intdiscriminator/PIdJTIDMSCRootEntity.java     |   12 +-
 .../stringdiscriminator/PIdJTSDMSCEntityB.java     |    4 +-
 .../stringdiscriminator/PIdJTSDMSCEntityD.java     |    4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafA.java       |    4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafB1.java      |    4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafB2.java      |    4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafC.java       |    4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafD1.java      |    4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafD2.java      |    4 +-
 .../PIdJTSDMSCMappedSuperclass.java                |    2 +-
 .../stringdiscriminator/PIdJTSDMSCRootEntity.java  |   12 +-
 .../chardiscriminator/PIdSTCDMSCEntityB.java       |    4 +-
 .../chardiscriminator/PIdSTCDMSCEntityD.java       |    4 +-
 .../chardiscriminator/PIdSTCDMSCLeafA.java         |    4 +-
 .../chardiscriminator/PIdSTCDMSCLeafB1.java        |    4 +-
 .../chardiscriminator/PIdSTCDMSCLeafB2.java        |    4 +-
 .../chardiscriminator/PIdSTCDMSCLeafC.java         |    4 +-
 .../chardiscriminator/PIdSTCDMSCLeafD1.java        |    4 +-
 .../chardiscriminator/PIdSTCDMSCLeafD2.java        |    4 +-
 .../PIdSTCDMSCMappedSuperclass.java                |    2 +-
 .../chardiscriminator/PIdSTCDMSCRootEntity.java    |   12 +-
 .../intdiscriminator/PIdSTIDMSCEntityB.java        |    4 +-
 .../intdiscriminator/PIdSTIDMSCEntityD.java        |    4 +-
 .../intdiscriminator/PIdSTIDMSCLeafA.java          |    4 +-
 .../intdiscriminator/PIdSTIDMSCLeafB1.java         |    4 +-
 .../intdiscriminator/PIdSTIDMSCLeafB2.java         |    4 +-
 .../intdiscriminator/PIdSTIDMSCLeafC.java          |    4 +-
 .../intdiscriminator/PIdSTIDMSCLeafD1.java         |    4 +-
 .../intdiscriminator/PIdSTIDMSCLeafD2.java         |    4 +-
 .../PIdSTIDMSCMappedSuperclass.java                |    2 +-
 .../intdiscriminator/PIdSTIDMSCRootEntity.java     |   12 +-
 .../stringdiscriminator/PIdSTSDMSCEntityB.java     |    4 +-
 .../stringdiscriminator/PIdSTSDMSCEntityD.java     |    4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafA.java       |    4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafB1.java      |    4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafB2.java      |    4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafC.java       |    4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafD1.java      |    4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafD2.java      |    4 +-
 .../PIdSTSDMSCMappedSuperclass.java                |    2 +-
 .../stringdiscriminator/PIdSTSDMSCRootEntity.java  |   12 +-
 .../inheritance/entity/AbstractClass.java          |    6 +-
 .../persistence/inheritance/entity/Admin.java      |    6 +-
 .../inheritance/entity/BaseCallback.java           |    8 +-
 .../persistence/inheritance/entity/BaseClass.java  |    8 +-
 .../persistence/inheritance/entity/BaseClass2.java |    8 +-
 .../persistence/inheritance/entity/BaseClass3.java |   10 +-
 .../persistence/inheritance/entity/BaseClass4.java |    8 +-
 .../persistence/inheritance/entity/BaseClass5.java |   10 +-
 .../persistence/inheritance/entity/BaseClass6.java |    6 +-
 .../inheritance/entity/ComputerUser.java           |   12 +-
 .../persistence/inheritance/entity/Department.java |   10 +-
 .../persistence/inheritance/entity/Employee.java   |   18 +-
 .../persistence/inheritance/entity/FTEmployee.java |    4 +-
 .../persistence/inheritance/entity/ImplClassA.java |    8 +-
 .../inheritance/entity/ManagedIface.java           |    6 +-
 .../inheritance/entity/ManagedIface2.java          |    6 +-
 .../persistence/inheritance/entity/Manager.java    |    6 +-
 .../inheritance/entity/MappedSuper.java            |    6 +-
 .../persistence/inheritance/entity/MidClass.java   |    4 +-
 .../persistence/inheritance/entity/MidClass2.java  |    4 +-
 .../persistence/inheritance/entity/PTEmployee.java |    4 +-
 .../inheritance/entity/RegularUser.java            |    8 +-
 .../inheritance/entity/SharedName1.java            |    4 +-
 .../inheritance/entity/SharedName2.java            |    4 +-
 .../persistence/inheritance/entity/SubclassA.java  |    4 +-
 .../persistence/inheritance/entity/SubclassB.java  |    4 +-
 .../persistence/inheritance/entity/SubclassC.java  |    4 +-
 .../persistence/inheritance/entity/SubclassD.java  |    4 +-
 .../persistence/inheritance/entity/SubclassE.java  |    4 +-
 .../persistence/inheritance/entity/SubclassF.java  |    4 +-
 .../persistence/inheritance/entity/SubclassG.java  |    6 +-
 .../persistence/inheritance/entity/SubclassH.java  |    6 +-
 .../persistence/inheritance/entity/SubclassI.java  |    6 +-
 .../persistence/inheritance/entity/SubclassJ.java  |    6 +-
 .../persistence/inheritance/entity/SubclassK.java  |    4 +-
 .../inheritance/jointable/Contractor.java          |   20 +-
 .../inheritance/jointable/Department.java          |   24 +-
 .../inheritance/jointable/Employee.java            |   10 +-
 .../inheritance/jointable/FulltimeEmployee.java    |   20 +-
 .../inheritance/jointable/ParttimeEmployee.java    |   20 +-
 .../persistence/inheritance/jointable/Person.java  |   18 +-
 .../jointable/TestInheritanceTypeJoinedQuery.java  |    4 +-
 .../onetomany/TestJointableOneToMany.java          |    4 +-
 .../onetomany/TestMapsIdWithAutoGeneratedKey.java  |    4 +-
 .../inheritance/jointable/onetomany/UMLClass.java  |    2 +-
 .../inheritance/jointable/onetomany/UMLNamed.java  |    8 +-
 .../jointable/onetomany/UMLPackage.java            |    6 +-
 .../jointable/onetomany/UMLPrimitiveType.java      |    2 +-
 .../inheritance/jointable/onetomany/UMLType.java   |    4 +-
 .../mappedsuperclass/CashBaseEntity.java           |    6 +-
 .../DerivedEntityFromMappedSuperWithoutId.java     |    6 +-
 .../mappedsuperclass/MappedSuperWithoutId.java     |    2 +-
 .../inheritance/mappedsuperclass/SharedName1.java  |    2 +-
 .../inheritance/mappedsuperclass/SituationDA.java  |   10 +-
 .../mappedsuperclass/TestMappedSuperClass.java     |    2 +-
 .../mappedsuperclass/ValuableItemDA.java           |    8 +-
 .../mappedsuperclass/idclass/IdClassEntity.java    |    6 +-
 .../mappedsuperclass/idclass/IdClassTestMSC.java   |    6 +-
 .../mappedsuperclass/idclass/TestIdClass.java      |    4 +-
 .../inheritance/polymorphic/BaseEntity.java        |    8 +-
 .../inheritance/polymorphic/EnglishParagraph.java  |    2 +-
 .../inheritance/polymorphic/FrenchParagraph.java   |    2 +-
 .../inheritance/polymorphic/GermanParagraph.java   |    2 +-
 .../inheritance/polymorphic/Translatable.java      |   10 +-
 .../inheritance/polymorphic/Translation.java       |    8 +-
 .../inheritance/serializable/Employee.java         |    2 +-
 .../inheritance/serializable/Person.java           |   10 +-
 .../serializable/TestSerialization.java            |    2 +-
 .../jdbc/FKColumnNamesInner1Entity.java            |   48 +
 .../jdbc/FKColumnNamesInner2Entity.java            |   48 +
 .../persistence/jdbc/TestFKColumnNames.java        |   61 +-
 .../persistence/jdbc/TestIsolationFecthHint.java   |    2 +-
 .../jdbc/TestIsolationLevelOverride.java           |    2 +-
 .../apache/openjpa/persistence/jdbc/TestLobs.java  |    6 +-
 .../persistence/jdbc/TestOptimizeForClause.java    |    2 +-
 .../jdbc/TestSelectForUpdateOverride.java          |    2 +-
 .../persistence/jdbc/TestTimestampPKDeletion.java  |    6 +-
 .../persistence/jdbc/annotations/AnnoTest1.java    |   50 +-
 .../persistence/jdbc/annotations/AnnoTest2.java    |   34 +-
 .../persistence/jdbc/annotations/AnnoTest3.java    |   18 +-
 .../persistence/jdbc/annotations/EmbedOwner.java   |   26 +-
 .../persistence/jdbc/annotations/EmbedValue.java   |   14 +-
 .../persistence/jdbc/annotations/EmbedValue2.java  |    6 +-
 .../persistence/jdbc/annotations/EmbedValue3.java  |    6 +-
 .../jdbc/annotations/EmbeddableSuper.java          |   14 +-
 .../jdbc/annotations/EmbeddableSuperSub.java       |   12 +-
 .../jdbc/annotations/EmbeddedIdClass.java          |    6 +-
 .../jdbc/annotations/EmbeddedIdEntity.java         |   20 +-
 .../jdbc/annotations/EntityWithIndices.java        |   10 +-
 .../jdbc/annotations/ExtensionsEntity.java         |   18 +-
 .../persistence/jdbc/annotations/Flat1.java        |   18 +-
 .../persistence/jdbc/annotations/Flat2.java        |    4 +-
 .../persistence/jdbc/annotations/Generator.java    |   14 +-
 .../annotations/MultiColumnSecondaryVersionPC.java |   16 +-
 .../jdbc/annotations/MultiColumnVersionPC.java     |    8 +-
 .../jdbc/annotations/NativeSequenceEntity.java     |   16 +-
 .../jdbc/annotations/NonstandardMappingEntity.java |   12 +-
 .../annotations/NonstandardMappingEntity3.java     |   14 +-
 .../annotations/NonstandardMappingEntity4.java     |    6 +-
 .../annotations/NonstandardMappingMappedSuper.java |    4 +-
 .../NonstandardMappingMappedSuper4.java            |    4 +-
 .../jdbc/annotations/PropertyAccess1.java          |    4 +-
 .../jdbc/annotations/TablePerClass1.java           |   18 +-
 .../jdbc/annotations/TablePerClass2.java           |    4 +-
 .../jdbc/annotations/TestEJBEmbedded.java          |    2 +-
 .../jdbc/annotations/TestEmbeddedId.java           |    2 +-
 .../jdbc/annotations/TestEnumerated.java           |    2 +-
 .../jdbc/annotations/TestFlatInheritance.java      |    2 +-
 .../jdbc/annotations/TestGenerators.java           |    4 +-
 .../jdbc/annotations/TestJoinedInheritance.java    |    2 +-
 .../jdbc/annotations/TestManyToMany.java           |    2 +-
 .../persistence/jdbc/annotations/TestMapKey.java   |    2 +-
 .../jdbc/annotations/TestMixedAccess.java          |    2 +-
 .../TestNonstandardMappingAnnotations.java         |    2 +-
 .../persistence/jdbc/annotations/TestOneToOne.java |    2 +-
 .../jdbc/annotations/TestPropertyAccess.java       |    2 +-
 .../jdbc/annotations/TestSerializedLobs.java       |    2 +-
 .../persistence/jdbc/annotations/TestVersion.java  |    2 +-
 .../UnenhancedInappropriateTransient.java          |    8 +-
 .../jdbc/annotations/UnenhancedMixedAccess.java    |    6 +-
 .../persistence/jdbc/auto/AutoIncrementEntity.java |   12 +-
 .../persistence/jdbc/common/apps/AttachA.java      |    4 +-
 .../persistence/jdbc/common/apps/AttachB.java      |    2 +-
 .../persistence/jdbc/common/apps/AttachC.java      |    2 +-
 .../persistence/jdbc/common/apps/AttachD.java      |    2 +-
 .../persistence/jdbc/common/apps/AttachE.java      |    4 +-
 .../persistence/jdbc/common/apps/AttachF.java      |    2 +-
 .../jdbc/common/apps/AutoIncrementOpOrderPC.java   |    4 +-
 .../common/apps/AutoIncrementOpOrderPCSub.java     |    4 +-
 .../jdbc/common/apps/AutoIncrementPC1.java         |   16 +-
 .../jdbc/common/apps/AutoIncrementPC2.java         |    4 +-
 .../jdbc/common/apps/AutoIncrementPC3.java         |   14 +-
 .../openjpa/persistence/jdbc/common/apps/Base.java |    2 +-
 .../persistence/jdbc/common/apps/BaseSub1.java     |    2 +-
 .../persistence/jdbc/common/apps/BaseSub1Sub1.java |    2 +-
 .../persistence/jdbc/common/apps/BaseSub1Sub2.java |    2 +-
 .../persistence/jdbc/common/apps/BaseSub2.java     |    2 +-
 .../jdbc/common/apps/BuildSchemaPC.java            |    2 +-
 .../jdbc/common/apps/ByteArrayPKPC.java            |    2 +-
 .../jdbc/common/apps/ByteArrayPKPC2.java           |    2 +-
 .../persistence/jdbc/common/apps/CircularFKPC.java |    4 +-
 .../jdbc/common/apps/CircularFKPC2.java            |    4 +-
 .../jdbc/common/apps/ComplexEmbeddedPC.java        |    2 +-
 .../jdbc/common/apps/ConstantJoinPC.java           |    2 +-
 .../jdbc/common/apps/ConstantJoinPC2.java          |    2 +-
 .../jdbc/common/apps/ConstantJoinPC3.java          |    2 +-
 .../jdbc/common/apps/ConstantJoinPC4.java          |   14 +-
 .../jdbc/common/apps/ConstantJoinPC5.java          |    8 +-
 .../jdbc/common/apps/CustomMappingPC.java          |    8 +-
 .../persistence/jdbc/common/apps/DFGTest.java      |    4 +-
 .../jdbc/common/apps/DataStoreTripsPC.java         |    2 +-
 .../jdbc/common/apps/EagerOuterJoinPC.java         |    4 +-
 .../jdbc/common/apps/EagerOuterJoinPC2.java        |    2 +-
 .../persistence/jdbc/common/apps/EagerPC.java      |   18 +-
 .../persistence/jdbc/common/apps/EagerPCSub.java   |   10 +-
 .../jdbc/common/apps/EmbeddedOwnerPC.java          |    2 +-
 .../persistence/jdbc/common/apps/EmbeddedPC.java   |    2 +-
 .../common/apps/EntityWithFailedExternalizer.java  |    6 +-
 .../persistence/jdbc/common/apps/HelperPC.java     |   12 +-
 .../persistence/jdbc/common/apps/HelperPC2.java    |   14 +-
 .../persistence/jdbc/common/apps/HelperPC3.java    |   12 +-
 .../persistence/jdbc/common/apps/HelperPC4.java    |    4 +-
 .../persistence/jdbc/common/apps/HorizA.java       |    2 +-
 .../jdbc/common/apps/HorizAppInterVerticalA.java   |    2 +-
 .../jdbc/common/apps/HorizAppInterVerticalB.java   |    2 +-
 .../jdbc/common/apps/HorizAppInterVerticalC.java   |    2 +-
 .../jdbc/common/apps/HorizAppInterVerticalD.java   |    2 +-
 .../jdbc/common/apps/HorizAppMultiA.java           |    2 +-
 .../jdbc/common/apps/HorizAppMultiB.java           |    2 +-
 .../jdbc/common/apps/HorizAppMultiC.java           |    2 +-
 .../jdbc/common/apps/HorizAppMultiD.java           |    2 +-
 .../jdbc/common/apps/HorizAppSingleA.java          |    2 +-
 .../jdbc/common/apps/HorizAppSingleB.java          |    2 +-
 .../jdbc/common/apps/HorizAppSingleC.java          |    2 +-
 .../jdbc/common/apps/HorizAppSingleD.java          |    2 +-
 .../persistence/jdbc/common/apps/HorizB.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizC.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizD.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizE.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizF.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizG.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizH.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizI.java       |    2 +-
 .../jdbc/common/apps/HorizInterFlatA.java          |    2 +-
 .../jdbc/common/apps/HorizInterFlatB.java          |    2 +-
 .../jdbc/common/apps/HorizInterFlatC.java          |    2 +-
 .../jdbc/common/apps/HorizInterFlatD.java          |    2 +-
 .../jdbc/common/apps/HorizInterVerticalA.java      |    2 +-
 .../jdbc/common/apps/HorizInterVerticalB.java      |    2 +-
 .../jdbc/common/apps/HorizInterVerticalC.java      |    2 +-
 .../jdbc/common/apps/HorizInterVerticalD.java      |    2 +-
 .../persistence/jdbc/common/apps/HorizJ.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizK.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizL.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizM.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizN.java       |    2 +-
 .../persistence/jdbc/common/apps/HorizO.java       |    2 +-
 .../jdbc/common/apps/HorizRelation.java            |    2 +-
 .../jdbc/common/apps/InverseKeyMapPC.java          |    2 +-
 .../persistence/jdbc/common/apps/InvertA.java      |   12 +-
 .../persistence/jdbc/common/apps/InvertB.java      |   12 +-
 .../jdbc/common/apps/JoinSubclassBase.java         |    2 +-
 .../jdbc/common/apps/JoinSubclassBaseSubFlat.java  |    2 +-
 .../jdbc/common/apps/JoinSubclassBaseSubVert.java  |    2 +-
 .../jdbc/common/apps/JoinTableMapPC.java           |    2 +-
 .../jdbc/common/apps/LRSCompoundPC.java            |    2 +-
 .../persistence/jdbc/common/apps/LRSPC.java        |    2 +-
 .../jdbc/common/apps/LocatorTestObject.java        |    2 +-
 .../jdbc/common/apps/LockGroupSubclass.java        |    2 +-
 .../persistence/jdbc/common/apps/MappingTest1.java |    2 +-
 .../persistence/jdbc/common/apps/MappingTest2.java |    2 +-
 .../persistence/jdbc/common/apps/MappingTest3.java |    2 +-
 .../persistence/jdbc/common/apps/MappingTest4.java |    2 +-
 .../persistence/jdbc/common/apps/MappingTest5.java |    2 +-
 .../persistence/jdbc/common/apps/OpOrderPC.java    |    4 +-
 .../persistence/jdbc/common/apps/OpOrderPCSub.java |    4 +-
 .../jdbc/common/apps/PagingAppIdPC.java            |    2 +-
 .../jdbc/common/apps/PagingHelperPC.java           |    2 +-
 .../persistence/jdbc/common/apps/PagingPC.java     |    2 +-
 .../persistence/jdbc/common/apps/RawSQL.java       |    4 +-
 .../jdbc/common/apps/RecursivelyEmbeddedPC.java    |    2 +-
 .../persistence/jdbc/common/apps/RuntimeTest1.java |   20 +-
 .../persistence/jdbc/common/apps/RuntimeTest2.java |    2 +-
 .../persistence/jdbc/common/apps/RuntimeTest3.java |    2 +-
 .../jdbc/common/apps/TransactionalClassPC.java     |    4 +-
 .../common/apps/UnidirectionalOneToOneOwned.java   |    8 +-
 .../common/apps/UnidirectionalOneToOneOwner.java   |   12 +-
 .../jdbc/common/apps/mappingApp/Entity1.java       |   28 +-
 .../jdbc/common/apps/mappingApp/Entity2.java       |    8 +-
 .../apps/mappingApp/EntityWithCompositeId.java     |   10 +-
 .../mappingApp/OwnerOfEntityWithCompositeId.java   |   24 +-
 .../mappingApp/RecursiveEntityWithCompositeId.java |   26 +-
 .../jdbc/common/apps/mappingApp/SQLMapAddress.java |   20 +-
 .../jdbc/common/apps/mappingApp/SQLMapItem.java    |   16 +-
 .../jdbc/common/apps/mappingApp/SQLMapOrder.java   |   16 +-
 .../jdbc/common/apps/mappingApp/SQLMapPerson.java  |   16 +-
 .../persistence/jdbc/dbcs/MyDBCSEntity.java        |    2 +-
 .../TestBatchFlushWithMetadataException.java       |    4 +-
 .../jdbc/kernel/TestByteArrayAppId.java            |    2 +-
 .../jdbc/kernel/TestDataStoreTrips.java            |    2 +-
 .../jdbc/kernel/TestEJBAutoIncrement.java          |    2 +-
 .../jdbc/kernel/TestEfficientAttach.java           |    2 +-
 .../jdbc/kernel/TestIncrementalJDBCFlushes.java    |    4 +-
 .../kernel/TestOperationOrderUpdateManager.java    |    4 +-
 .../kernel/TestPagingResultObjectProvider.java     |    2 +-
 .../persistence/jdbc/kernel/TestRawSQL.java        |    2 +-
 .../jdbc/kernel/TestUnknownSubclass.java           |    2 +-
 .../jdbc/kernel/TestUpdateWithSubSelect.java       |    2 +-
 .../persistence/jdbc/mapping/Authority.java        |   20 +-
 .../jdbc/mapping/PrecisionTestEntity.java          |   10 +-
 .../TestCompositeIdTraversalInSQLMapping.java      |    4 +-
 .../jdbc/mapping/TestNativeQueries.java            |    4 +-
 .../persistence/jdbc/mapping/bidi/Address.java     |   10 +-
 .../persistence/jdbc/mapping/bidi/Child.java       |    8 +-
 .../jdbc/mapping/bidi/ParentWithAppIdentity.java   |   10 +-
 .../jdbc/mapping/bidi/ParentWithAutoIdentity.java  |   18 +-
 .../mapping/bidi/ParentWithSequenceIdentity.java   |   18 +-
 .../persistence/jdbc/mapping/bidi/Person.java      |   14 +-
 .../mapping/bidi/TestBiDirectionalJoinTable.java   |    4 +-
 ...tOneSidedParentChildWithImplicitForeignKey.java |    2 +-
 .../persistence/jdbc/maps/m2mmapex0/Division.java  |    6 +-
 .../persistence/jdbc/maps/m2mmapex0/Employee.java  |    8 +-
 .../jdbc/maps/m2mmapex0/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex0/TestMany2ManyMap.java      |    6 +-
 .../jdbc/maps/m2mmapex1/Department.java            |    6 +-
 .../persistence/jdbc/maps/m2mmapex1/Division.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex1/Employee.java  |    8 +-
 .../jdbc/maps/m2mmapex1/PhoneNumber.java           |   10 +-
 .../jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java   |    8 +-
 .../persistence/jdbc/maps/m2mmapex10/Employee.java |    8 +-
 .../jdbc/maps/m2mmapex10/EmployeePK.java           |    2 +-
 .../jdbc/maps/m2mmapex10/PhoneNumber.java          |    8 +-
 .../persistence/jdbc/maps/m2mmapex10/PhonePK.java  |    2 +-
 .../jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java |    6 +-
 .../jdbc/maps/m2mmapex2/Department.java            |    6 +-
 .../persistence/jdbc/maps/m2mmapex2/Employee.java  |    8 +-
 .../jdbc/maps/m2mmapex2/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex2/TestMany2ManyMapEx2.java   |    6 +-
 .../jdbc/maps/m2mmapex3/Department.java            |    6 +-
 .../persistence/jdbc/maps/m2mmapex3/Employee.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex3/FullName.java  |    2 +-
 .../jdbc/maps/m2mmapex3/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java   |    6 +-
 .../persistence/jdbc/maps/m2mmapex4/Address.java   |    2 +-
 .../persistence/jdbc/maps/m2mmapex4/Division.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex4/Employee.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex4/Office.java    |   10 +-
 .../jdbc/maps/m2mmapex4/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex4/TestMany2ManyMapEx4.java   |    6 +-
 .../persistence/jdbc/maps/m2mmapex5/Employee.java  |    8 +-
 .../jdbc/maps/m2mmapex5/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex5/TestMany2ManyMapEx5.java   |    6 +-
 .../persistence/jdbc/maps/m2mmapex6/Employee.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex6/FullName.java  |    6 +-
 .../jdbc/maps/m2mmapex6/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex6/TestMany2ManyMapEx6.java   |    6 +-
 .../persistence/jdbc/maps/m2mmapex7/Division.java  |    6 +-
 .../persistence/jdbc/maps/m2mmapex7/Employee.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex7/FullName.java  |    2 +-
 .../jdbc/maps/m2mmapex7/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex7/TestMany2ManyMapEx7.java   |    6 +-
 .../persistence/jdbc/maps/m2mmapex8/Employee.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex8/FullName.java  |    2 +-
 .../jdbc/maps/m2mmapex8/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex8/TestMany2ManyMapEx8.java   |    6 +-
 .../persistence/jdbc/maps/m2mmapex9/Employee.java  |    8 +-
 .../persistence/jdbc/maps/m2mmapex9/FullName.java  |    2 +-
 .../jdbc/maps/m2mmapex9/FullPhoneName.java         |    2 +-
 .../jdbc/maps/m2mmapex9/PhoneNumber.java           |    8 +-
 .../jdbc/maps/m2mmapex9/TestMany2ManyMapEx9.java   |    6 +-
 .../jdbc/maps/qualified/path/Division.java         |    8 +-
 .../jdbc/maps/qualified/path/Employee.java         |    8 +-
 .../jdbc/maps/qualified/path/PersonalInfo.java     |    4 +-
 .../jdbc/maps/qualified/path/Phone.java            |    6 +-
 .../maps/qualified/path/TestQualifiedPath.java     |    2 +-
 .../jdbc/maps/spec_10_1_26_ex0/Department1.java    |   12 +-
 .../jdbc/maps/spec_10_1_26_ex0/Department2.java    |   10 +-
 .../jdbc/maps/spec_10_1_26_ex0/Department3.java    |   12 +-
 .../jdbc/maps/spec_10_1_26_ex0/Employee1.java      |   10 +-
 .../jdbc/maps/spec_10_1_26_ex0/Employee2.java      |   10 +-
 .../jdbc/maps/spec_10_1_26_ex0/Employee3.java      |   12 +-
 .../jdbc/maps/spec_10_1_26_ex0/EmployeeName3.java  |    2 +-
 .../jdbc/maps/spec_10_1_26_ex0/EmployeePK2.java    |    2 +-
 .../maps/spec_10_1_26_ex0/TestSpec10_1_26.java     |    8 +-
 .../jdbc/maps/spec_10_1_26_ex1/Department.java     |   14 +-
 .../jdbc/maps/spec_10_1_26_ex1/Employee.java       |   10 +-
 .../maps/spec_10_1_26_ex1/TestSpec10_1_26_Ex1.java |    6 +-
 .../jdbc/maps/spec_10_1_26_ex2/Department.java     |   12 +-
 .../jdbc/maps/spec_10_1_26_ex2/Employee.java       |   10 +-
 .../jdbc/maps/spec_10_1_26_ex2/EmployeePK.java     |    2 +-
 .../maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java |    8 +-
 .../jdbc/maps/spec_10_1_26_ex3/Department.java     |   12 +-
 .../jdbc/maps/spec_10_1_26_ex3/Employee.java       |   12 +-
 .../jdbc/maps/spec_10_1_26_ex3/EmployeeName.java   |    2 +-
 .../maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex0/Compny1.java        |   10 +-
 .../jdbc/maps/spec_10_1_27_ex0/Compny2.java        |    6 +-
 .../jdbc/maps/spec_10_1_27_ex0/Division.java       |    8 +-
 .../jdbc/maps/spec_10_1_27_ex0/Item1.java          |   10 +-
 .../jdbc/maps/spec_10_1_27_ex0/Item2.java          |    8 +-
 .../maps/spec_10_1_27_ex0/TestSpec10_1_27.java     |    8 +-
 .../jdbc/maps/spec_10_1_27_ex0/VicePresident.java  |   10 +-
 .../jdbc/maps/spec_10_1_27_ex3/Company.java        |   10 +-
 .../jdbc/maps/spec_10_1_27_ex3/Division.java       |    6 +-
 .../maps/spec_10_1_27_ex3/TestSpec10_1_27_Ex3.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex3/VicePresident.java  |    8 +-
 .../jdbc/maps/spec_10_1_27_ex4/Company.java        |    8 +-
 .../jdbc/maps/spec_10_1_27_ex4/Division.java       |    8 +-
 .../maps/spec_10_1_27_ex4/TestSpec10_1_27_Ex4.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex4/VicePresident.java  |   10 +-
 .../jdbc/maps/spec_10_1_27_ex5/Company.java        |    8 +-
 .../jdbc/maps/spec_10_1_27_ex5/Division.java       |    6 +-
 .../maps/spec_10_1_27_ex5/TestSpec10_1_27_Ex5.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex5/VicePresident.java  |    8 +-
 .../jdbc/maps/spec_10_1_27_ex6/Company.java        |   10 +-
 .../jdbc/maps/spec_10_1_27_ex6/Division.java       |    6 +-
 .../maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex6/VicePresident.java  |   10 +-
 .../jdbc/maps/spec_10_1_27_ex7/Company.java        |   10 +-
 .../jdbc/maps/spec_10_1_27_ex7/Division.java       |    8 +-
 .../maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex7/VicePresident.java  |   10 +-
 .../jdbc/maps/spec_10_1_27_ex8/Company.java        |    8 +-
 .../jdbc/maps/spec_10_1_27_ex8/FileName.java       |    2 +-
 .../maps/spec_10_1_27_ex8/TestSpec10_1_27_Ex8.java |    8 +-
 .../jdbc/maps/spec_10_1_27_ex8/VicePresident.java  |    8 +-
 .../jdbc/maps/spec_10_1_29_ex1/Company.java        |   14 +-
 .../jdbc/maps/spec_10_1_29_ex1/Division.java       |   12 +-
 .../maps/spec_10_1_29_ex1/TestSpec10_1_29_Ex1.java |    8 +-
 .../jdbc/maps/spec_10_1_29_ex1/VicePresident.java  |    6 +-
 .../jdbc/maps/spec_10_1_29_ex3/Course.java         |    6 +-
 .../jdbc/maps/spec_10_1_29_ex3/Semester.java       |    6 +-
 .../jdbc/maps/spec_10_1_29_ex3/Student.java        |   14 +-
 .../maps/spec_10_1_29_ex3/TestSpec10_1_29_Ex3.java |    8 +-
 .../jdbc/maps/update/LocalizedString.java          |    2 +-
 .../jdbc/maps/update/MultilingualString.java       |   22 +-
 .../jdbc/maps/update/TestMapUpdate.java            |    6 +-
 .../openjpa/persistence/jdbc/meta/TestDFG.java     |    2 +-
 .../persistence/jdbc/meta/TestEJBByteArray.java    |    2 +-
 .../jdbc/meta/TestEJBColumnIOMappings.java         |    2 +-
 .../meta/TestEJBConstantJoinOnSameRefTable.java    |    2 +-
 .../jdbc/meta/TestEJBCustomMapping.java            |    2 +-
 .../persistence/jdbc/meta/TestEJBDateVersion.java  |    2 +-
 .../persistence/jdbc/meta/TestEJBEager.java        |    2 +-
 .../jdbc/meta/TestEJBInverseOneToOne.java          |    4 +-
 .../jdbc/meta/TestEJBOuterJoinValues.java          |    2 +-
 .../persistence/jdbc/meta/TestMultiDFG.java        |    2 +-
 .../jdbc/meta/TestMultiTableMappings.java          |    2 +-
 .../jdbc/meta/TestUseSchemaElement.java            |    4 +-
 .../openjpa/persistence/jdbc/oracle/PObject.java   |   10 +-
 .../persistence/jdbc/oracle/PObjectNative.java     |    8 +-
 .../persistence/jdbc/oracle/TestAutoIncrement.java |    6 +-
 .../persistence/jdbc/order/BattingOrder.java       |   16 +-
 .../persistence/jdbc/order/BiOrderEntity.java      |    6 +-
 .../jdbc/order/BiOrderMappedByEntity.java          |    8 +-
 .../openjpa/persistence/jdbc/order/Bicycle.java    |    4 +-
 .../apache/openjpa/persistence/jdbc/order/Car.java |   12 +-
 .../persistence/jdbc/order/ColDefTestElement.java  |    8 +-
 .../persistence/jdbc/order/ColDefTestEntity.java   |   16 +-
 .../openjpa/persistence/jdbc/order/Course.java     |   18 +-
 .../openjpa/persistence/jdbc/order/Game.java       |   14 +-
 .../openjpa/persistence/jdbc/order/Home.java       |    8 +-
 .../openjpa/persistence/jdbc/order/Inning.java     |    2 +-
 .../openjpa/persistence/jdbc/order/ObOcEntity.java |   12 +-
 .../openjpa/persistence/jdbc/order/Owner.java      |   22 +-
 .../openjpa/persistence/jdbc/order/Person.java     |    6 +-
 .../openjpa/persistence/jdbc/order/Player.java     |    6 +-
 .../openjpa/persistence/jdbc/order/Student.java    |   14 +-
 .../persistence/jdbc/order/TestOrderColumn.java    |    2 +-
 .../openjpa/persistence/jdbc/order/Trainer.java    |    6 +-
 .../openjpa/persistence/jdbc/order/Widget.java     |   10 +-
 .../jdbc/query/TestAggregateQueryWithNoResult.java |    2 +-
 .../jdbc/query/TestEJBQLSelectNPlusOne.java        |    2 +-
 .../persistence/jdbc/query/TestGroupByQuery.java   |    2 +-
 .../persistence/jdbc/query/TestHintedQuery.java    |    4 +-
 .../persistence/jdbc/query/TestJDBCGrouping.java   |    2 +-
 .../jdbc/query/TestMultipleEntityProjection.java   |    4 +-
 .../query/TestNativeQueryParameterBinding.java     |    4 +-
 .../jdbc/query/TestNativeQueryProcedures.java      |    4 +-
 .../jdbc/query/TestNewJavaObjectQuery.java         |    2 +-
 .../persistence/jdbc/query/TestOrderByQuery.java   |    2 +-
 .../jdbc/query/TestQueryParameterBinding.java      |    4 +-
 .../TestTemporalTypeQueryParameterBinding.java     |    6 +-
 .../query/TestUpdateSingleValuedAssociation.java   |    6 +-
 .../jdbc/query/cache/AbstractQueryCacheTest.java   |    4 +-
 .../persistence/jdbc/query/cache/Department.java   |   12 +-
 .../persistence/jdbc/query/cache/Employee.java     |   16 +-
 .../jdbc/query/cache/FullTimeEmployee.java         |    6 +-
 .../persistence/jdbc/query/cache/Invoice.java      |   10 +-
 .../persistence/jdbc/query/cache/LineItem.java     |    6 +-
 .../openjpa/persistence/jdbc/query/cache/Part.java |   18 +-
 .../persistence/jdbc/query/cache/PartBase.java     |    4 +-
 .../jdbc/query/cache/PartComposite.java            |    6 +-
 .../jdbc/query/cache/PartTimeEmployee.java         |    6 +-
 .../persistence/jdbc/query/cache/Supplier.java     |   10 +-
 .../cache/TestNonPrimaryKeyQueryParameters.java    |    6 +-
 .../query/cache/TestQueryTimestampEviction.java    |    2 +-
 .../persistence/jdbc/query/cache/Usage.java        |   14 +-
 .../persistence/jdbc/query/domain/Applicant.java   |    6 +-
 .../persistence/jdbc/query/domain/Application.java |   10 +-
 .../persistence/jdbc/query/domain/Binder.java      |   10 +-
 .../persistence/jdbc/query/domain/Chess.java       |    2 +-
 .../persistence/jdbc/query/domain/Customer.java    |   10 +-
 .../persistence/jdbc/query/domain/DtaSrc.java      |   12 +-
 .../persistence/jdbc/query/domain/DtaSrcField.java |   16 +-
 .../persistence/jdbc/query/domain/Game.java        |   10 +-
 .../persistence/jdbc/query/domain/IndoorGame.java  |    2 +-
 .../persistence/jdbc/query/domain/Magazine.java    |   10 +-
 .../persistence/jdbc/query/domain/Order.java       |   10 +-
 .../persistence/jdbc/query/domain/Publisher.java   |    8 +-
 .../persistence/jdbc/query/domain/Scrabble.java    |    2 +-
 .../persistence/jdbc/query/domain/TimeEntity.java  |   10 +-
 .../persistence/jdbc/query/domain/TimeKeeper.java  |    8 +-
 .../persistence/jdbc/query/sub/MaxQueryEntity.java |    6 +-
 .../jdbc/query/sub/MaxQueryMapEntity.java          |   10 +-
 .../persistence/jdbc/query/sub/TestSubQuery.java   |    6 +-
 .../jdbc/query/xml/TableNameInXmlEntity.java       |    6 +-
 .../jdbc/query/xml/TestTableNameInXml.java         |    4 +-
 .../schema/TestSchemaGenerationProperties.java     |   64 +-
 .../openjpa/persistence/jdbc/sqlcache/Address.java |    8 +-
 .../openjpa/persistence/jdbc/sqlcache/Author.java  |    8 +-
 .../openjpa/persistence/jdbc/sqlcache/Book.java    |    8 +-
 .../openjpa/persistence/jdbc/sqlcache/CD.java      |    6 +-
 .../openjpa/persistence/jdbc/sqlcache/Child.java   |   12 +-
 .../jdbc/sqlcache/CombinedPKEmbeddedEntity.java    |    4 +-
 .../jdbc/sqlcache/CombinedPKListEntity.java        |   12 +-
 .../jdbc/sqlcache/CombinedPKTestEntity.java        |    4 +-
 .../openjpa/persistence/jdbc/sqlcache/Company.java |   16 +-
 .../persistence/jdbc/sqlcache/Department.java      |   12 +-
 .../persistence/jdbc/sqlcache/Employee.java        |   16 +-
 .../persistence/jdbc/sqlcache/Merchandise.java     |   10 +-
 .../persistence/jdbc/sqlcache/OrderJPA.java        |    4 +-
 .../openjpa/persistence/jdbc/sqlcache/Parent.java  |   16 +-
 .../openjpa/persistence/jdbc/sqlcache/Person.java  |   22 +-
 .../openjpa/persistence/jdbc/sqlcache/Singer.java  |    6 +-
 .../jdbc/sqlcache/TestExternalizedParameter.java   |    4 +-
 .../persistence/jdbc/sqlcache/TestFinderCache.java |    2 +-
 .../sqlcache/TestInExpressionParameterBinding.java |    2 +-
 .../TestMultithreadedReparameterization.java       |    6 +-
 .../jdbc/sqlcache/TestPreparedQueryCache.java      |    8 +-
 .../jdbc/sqlcache/discrim/AbstractExtValue.java    |    8 +-
 .../jdbc/sqlcache/discrim/ComposedPK.java          |    2 +-
 .../jdbc/sqlcache/discrim/ExtValue1.java           |    4 +-
 .../sqlcache/discrim/TestFinderCacheWithNulls.java |    2 +-
 .../jdbc/sqlcache/discrim/UserData.java            |   10 +-
 .../openjpa/persistence/jdbc/strategy/Address.java |   14 +-
 .../persistence/jdbc/strategy/MappedEntity.java    |    8 +-
 .../persistence/jdbc/strategy/MapperEntity.java    |   14 +-
 .../openjpa/persistence/jdbc/strategy/Person.java  |   20 +-
 .../jdbc/strategy/TestHandlerStrategy.java         |    2 +-
 .../jdbc/strategy/TestStrategyAnnotaion.java       |    6 +-
 .../persistence/jdbc/unique/NamedUniqueA.java      |   18 +-
 .../persistence/jdbc/unique/NamedUniqueB.java      |   20 +-
 .../jdbc/unique/TestNamedUniqueConstraint.java     |    2 +-
 ...TestNamedUniqueConstraintWithXMLDescriptor.java |    2 +-
 .../jdbc/unique/TestUniqueConstraint.java          |    2 +-
 .../TestUniqueConstraintWithXMLDescriptor.java     |    2 +-
 .../openjpa/persistence/jdbc/unique/UniqueA.java   |   18 +-
 .../openjpa/persistence/jdbc/unique/UniqueB.java   |   16 +-
 .../jdbc/update/BaseTimestampedEntity.java         |    8 +-
 .../openjpa/persistence/jdbc/update/Child.java     |   10 +-
 .../jdbc/update/NumericVersionedEntity.java        |    8 +-
 .../openjpa/persistence/jdbc/update/Parent.java    |   10 +-
 .../persistence/jdbc/update/TestParentChild.java   |    2 +-
 .../jdbc/update/TestTimestampVersion.java          |    4 +-
 .../persistence/jdbc/update/TimestampedEntity.java |    4 +-
 .../jdbc/version/TestVersionColumn.java            |    4 +-
 .../persistence/jdbc/version/model/IntVersion.java |   10 +-
 .../jdbc/version/model/ShortVersion.java           |   10 +-
 .../jdbc/version/model/TimestampVersion.java       |   10 +-
 .../persistence/jpql/TestOneToManySubQuery.java    |    2 +-
 .../persistence/jpql/clauses/TestBulkUpdate.java   |    4 +-
 .../persistence/jpql/clauses/TestEJBClauses.java   |    2 +-
 .../jpql/clauses/TestEJBDeleteUpdateImpl.java      |    4 +-
 .../jpql/clauses/TestEJBPolymorphicQuery.java      |    2 +-
 .../jpql/clauses/TestEJBQueryInterface.java        |    4 +-
 .../jpql/entities/OrderedElementEntity.java        |    8 +-
 .../jpql/entities/OrderedManyToManyEntity.java     |    8 +-
 .../jpql/entities/OrderedNameEntity.java           |    8 +-
 .../jpql/entities/OrderedOneToManyEntity.java      |    8 +-
 .../jpql/entities/UnorderedNameEntity.java         |    4 +-
 .../jpql/entities/XMLOrderedNameEntity.java        |    4 +-
 .../jpql/expressions/TestEJBQLCondExpression.java  |    2 +-
 .../jpql/expressions/TestEntityTypeExpression.java |    2 +-
 .../expressions/TestInMemoryScalarExpressions.java |    2 +-
 .../persistence/jpql/expressions/TestIndex.java    |    4 +-
 .../expressions/TestJPQLScalarExpressions.java     |    4 +-
 .../jpql/functions/TestEJBQLFunction.java          |    2 +-
 .../jpql/functions/TestSetParameter.java           |    2 +-
 .../openjpa/persistence/jpql/joins/Department.java |   12 +-
 .../persistence/jpql/joins/Department_.java        |    8 +-
 .../openjpa/persistence/jpql/joins/Employee.java   |   14 +-
 .../openjpa/persistence/jpql/joins/Employee_.java  |    6 +-
 .../persistence/jpql/joins/TestEJBJoins.java       |    2 +-
 .../joins/TestJoinFetchWithQueryDataCache.java     |   12 +-
 .../jpql/joins/leftfetch/DepartmentTest.java       |    8 +-
 .../jpql/joins/leftfetch/PersonTest.java           |    6 +-
 .../jpql/joins/leftfetch/TestJoinLeftFetch.java    |    4 +-
 .../jpql/literals/TestLiteralInSQL.java            |    4 +-
 .../openjpa/persistence/jpql/version/Author.java   |    6 +-
 .../openjpa/persistence/jpql/version/Document.java |    6 +-
 .../jpql/version/TestJoinVersionField.java         |    6 +-
 .../persistence/jpql/version/type/BaseEntity.java  |    4 +-
 .../jpql/version/type/ChildVersionEntity.java      |    4 +-
 .../jpql/version/type/LongVersionEntity.java       |    6 +-
 .../version/type/PrimativeLongVersionEntity.java   |    6 +-
 .../version/type/PrimativeShortVersionEntity.java  |    6 +-
 .../jpql/version/type/ShortVersionEntity.java      |    6 +-
 .../jpql/version/type/TestVersionFieldType.java    |    4 +-
 .../jpql/version/type/TimestampVersionEntity.java  |    6 +-
 .../persistence/kernel/EJBLobsInner2Entity.java    |   39 +
 .../persistence/kernel/EJBLobsInnerEntity.java     |   68 +
 ...PersistentFieldsNoPersistentFieldsPCEntity.java |   30 +
 .../persistence/kernel/PessimisticLockEntity.java  |    4 +-
 .../kernel/StaticInnerClassesContainer.java        |   54 +
 .../persistence/kernel/Test2EJBConcurrency.java    |    2 +-
 .../openjpa/persistence/kernel/TestBulkDelete.java |    4 +-
 .../persistence/kernel/TestEJBEmbedded.java        |    2 +-
 .../persistence/kernel/TestEJBEntityManager.java   |    2 +-
 .../kernel/TestEJBGetObjectByIdValue.java          |    2 +-
 .../kernel/TestEJBIncrementalFlushes.java          |    2 +-
 .../persistence/kernel/TestEJBInterfaces.java      |    2 +-
 .../openjpa/persistence/kernel/TestEJBLobs.java    |   83 +-
 .../openjpa/persistence/kernel/TestEJBLocales.java |    2 +-
 .../persistence/kernel/TestEJBManagedInverses.java |    2 +-
 .../kernel/TestEJBNoPersistentFields.java          |   62 +-
 .../TestEJBNoPersistentFieldsNholderEntity.java    |   61 +
 .../persistence/kernel/TestEJBNullValues.java      |    2 +-
 .../kernel/TestEJBObjectCollections.java           |    2 +-
 .../persistence/kernel/TestEJBRetainValues.java    |    2 +-
 .../openjpa/persistence/kernel/TestEJBState.java   |    2 +-
 .../kernel/TestEJBTransactionalClass.java          |    2 +-
 .../persistence/kernel/TestEJBTransactions.java    |    4 +-
 .../persistence/kernel/TestIndirectRecursion.java  |    4 +-
 .../kernel/TestMultipleInsertDeleteSameId.java     |    2 +-
 .../persistence/kernel/TestPersistenceManager.java |    4 +-
 .../kernel/TestPessimisticLockException.java       |    4 +-
 ...estPojoWithoutAnnotationsCannotBePersisted.java |    2 +-
 .../persistence/kernel/TestSecurityContext.java    |   82 +-
 .../persistence/kernel/TestStaticInnerClasses.java |   36 +-
 .../persistence/kernel/TestSuppressBatchOLE.java   |    2 +-
 .../persistence/kernel/common/apps/AImplB.java     |    8 +-
 .../common/apps/AbstractMappedAppIdSuper.java      |    4 +-
 .../kernel/common/apps/AllFieldTypesTest.java      |   16 +-
 .../kernel/common/apps/AllFieldsTypeTest.java      |    8 +-
 .../kernel/common/apps/AppIdClassString.java       |    8 +-
 .../kernel/common/apps/AppIdHolder.java            |    2 +-
 .../persistence/kernel/common/apps/AppIdSubB.java  |    2 +-
 .../persistence/kernel/common/apps/AppIdSubC.java  |    2 +-
 .../persistence/kernel/common/apps/AppIdSubD.java  |    2 +-
 .../persistence/kernel/common/apps/AppIdSubE.java  |    2 +-
 .../persistence/kernel/common/apps/AppIdSubF.java  |    2 +-
 .../persistence/kernel/common/apps/ArraysTest.java |    8 +-
 .../persistence/kernel/common/apps/AttachA.java    |   16 +-
 .../persistence/kernel/common/apps/AttachB.java    |    8 +-
 .../persistence/kernel/common/apps/AttachC.java    |    8 +-
 .../persistence/kernel/common/apps/AttachD.java    |   22 +-
 .../persistence/kernel/common/apps/AttachE.java    |   28 +-
 .../persistence/kernel/common/apps/AttachF.java    |   16 +-
 .../kernel/common/apps/AttachVersionA.java         |    2 +-
 .../kernel/common/apps/AttachVersionB.java         |    2 +-
 .../kernel/common/apps/AttachVersionC.java         |    2 +-
 .../persistence/kernel/common/apps/BlobTest.java   |   14 +-
 .../persistence/kernel/common/apps/Blobs.java      |   10 +-
 .../persistence/kernel/common/apps/ByteArray.java  |    8 +-
 .../kernel/common/apps/CalendarFields.java         |   10 +-
 .../persistence/kernel/common/apps/ColumnIOPC.java |   12 +-
 .../kernel/common/apps/ComplexEmbeddedPC.java      |    8 +-
 .../kernel/common/apps/ConcreteMappedAppIdSub.java |    2 +-
 .../kernel/common/apps/DateVersion.java            |    8 +-
 .../kernel/common/apps/DependentFieldsPC.java      |   22 +-
 .../persistence/kernel/common/apps/DetachSMPC.java |    2 +-
 .../kernel/common/apps/EmbeddedOwnerPC.java        |   12 +-
 .../persistence/kernel/common/apps/EmbeddedPC.java |    6 +-
 .../persistence/kernel/common/apps/Entity1.java    |   24 +-
 .../persistence/kernel/common/apps/Entity2.java    |   12 +-
 .../kernel/common/apps/ExternalValues.java         |    8 +-
 .../persistence/kernel/common/apps/FetchA.java     |    8 +-
 .../persistence/kernel/common/apps/FetchB.java     |    6 +-
 .../persistence/kernel/common/apps/FetchBase.java  |    6 +-
 .../kernel/common/apps/FetchGroupTestObject.java   |   22 +-
 .../common/apps/FetchGroupTestObjectChild.java     |    8 +-
 .../persistence/kernel/common/apps/Inner.java      |   14 +-
 .../kernel/common/apps/InstanceCallbacksTest.java  |   20 +-
 .../kernel/common/apps/InterfaceHolder.java        |   16 +-
 .../kernel/common/apps/InterfaceTestImpl1.java     |    4 +-
 .../kernel/common/apps/InterfaceTestImpl2.java     |    4 +-
 .../kernel/common/apps/InterfaceTestImpl3.java     |    2 +-
 .../kernel/common/apps/InterfaceTestImpl4.java     |    2 +-
 .../persistence/kernel/common/apps/InverseA.java   |   12 +-
 .../persistence/kernel/common/apps/InverseB.java   |    4 +-
 .../persistence/kernel/common/apps/Lobs.java       |   10 +-
 .../kernel/common/apps/LockGroupPC.java            |    4 +-
 .../kernel/common/apps/LockGroupPC2.java           |    2 +-
 .../common/apps/LockGroupPCKnownSubclass.java      |    2 +-
 .../kernel/common/apps/ManagedInterfaceOwner.java  |    2 +-
 .../common/apps/ManagedInterfaceOwnerAppId.java    |    2 +-
 .../kernel/common/apps/MapElementPC.java           |    2 +-
 .../kernel/common/apps/MapElementPCChild.java      |    2 +-
 .../kernel/common/apps/MixedInterfaceImpl.java     |    2 +-
 .../common/apps/ModInstanceCallbackTests.java      |   20 +-
 .../kernel/common/apps/ModRuntimeTest1.java        |   24 +-
 .../kernel/common/apps/ModRuntimeTest2.java        |    4 +-
 .../kernel/common/apps/NonMappedInterfaceImpl.java |    2 +-
 .../kernel/common/apps/ObjectCollectionHolder.java |    6 +-
 .../kernel/common/apps/OuterJoinValuePC.java       |    8 +-
 .../persistence/kernel/common/apps/PCAddress.java  |    8 +-
 .../persistence/kernel/common/apps/PCClassPC.java  |    2 +-
 .../persistence/kernel/common/apps/PCCompany.java  |   16 +-
 .../persistence/kernel/common/apps/PCCountry.java  |    2 +-
 .../kernel/common/apps/PCDepartment.java           |   10 +-
 .../kernel/common/apps/PCDirectory.java            |   18 +-
 .../persistence/kernel/common/apps/PCEmployee.java |    8 +-
 .../persistence/kernel/common/apps/PCFile.java     |   10 +-
 .../persistence/kernel/common/apps/PCPerson.java   |   10 +-
 .../kernel/common/apps/PersistenceAware.java       |    2 +-
 .../kernel/common/apps/PersistentMapHolder.java    |    4 +-
 .../persistence/kernel/common/apps/ProxiesPC.java  |   20 +-
 .../kernel/common/apps/RecursivelyEmbeddedPC.java  |    8 +-
 .../kernel/common/apps/RuntimeTest1.java           |   28 +-
 .../kernel/common/apps/RuntimeTest2.java           |    4 +-
 .../kernel/common/apps/RuntimeTest3.java           |    4 +-
 .../kernel/common/apps/RuntimeTest4.java           |    8 +-
 .../kernel/common/apps/RuntimeTest5.java           |    4 +-
 .../persistence/kernel/common/apps/SCOTest.java    |    8 +-
 .../kernel/common/apps/SecondaryTab.java           |   14 +-
 .../kernel/common/apps/SequenceAssigned.java       |   16 +-
 .../kernel/common/apps/SequenceAssigned2.java      |    4 +-
 .../kernel/common/apps/SequenceAssigned3.java      |    8 +-
 .../kernel/common/apps/SingleIdByte.java           |    2 +-
 .../kernel/common/apps/SingleIdChar.java           |    2 +-
 .../kernel/common/apps/SingleIdInt.java            |    2 +-
 .../kernel/common/apps/SingleIdLong.java           |    2 +-
 .../kernel/common/apps/SingleIdShort.java          |    2 +-
 .../kernel/common/apps/SingleIdString.java         |    2 +-
 .../kernel/common/apps/SingleIdWrapper.java        |    2 +-
 .../persistence/kernel/common/apps/State.java      |   14 +-
 .../persistence/kernel/common/apps/Transition.java |   16 +-
 .../kernel/common/apps/ValueStrategyPC.java        |    8 +-
 .../TestMergeAndPersistWithManagedRelation.java    |    2 +-
 .../TestPessimisticPNonTransToPDirty.java          |    2 +-
 .../log/TestConnectionRetainModeWarning.java       |    2 +-
 .../persistence/managedinterface/ManagedIface.java |   10 +-
 .../managedinterface/ManagedInterfaceEmbed.java    |    2 +-
 .../managedinterface/ManagedInterfaceOwner.java    |   10 +-
 .../managedinterface/ManagedInterfaceSup.java      |    6 +-
 .../managedinterface/MixedInterface.java           |    6 +-
 .../managedinterface/MixedInterfaceImpl.java       |    6 +-
 .../managedinterface/NonMappedInterfaceImpl.java   |    2 +-
 .../managedinterface/SimpleManagedInterface.java   |    4 +-
 .../managedinterface/TestManagedInterfaces.java    |    4 +-
 .../TestSimpleManagedInterface.java                |    2 +-
 .../apache/openjpa/persistence/merge/Child.java    |   22 +-
 .../openjpa/persistence/merge/GrandChild.java      |   16 +-
 .../apache/openjpa/persistence/merge/LineItem.java |   10 +-
 .../openjpa/persistence/merge/LineItemPK.java      |    4 +-
 .../apache/openjpa/persistence/merge/Order.java    |   20 +-
 .../apache/openjpa/persistence/merge/Parent.java   |   16 +-
 .../merge/TestCascadeOneToManyMerge.java           |    2 +-
 .../openjpa/persistence/merge/TestLazyFields.java  |    2 +-
 .../openjpa/persistence/merge/TestMerge.java       |    2 +-
 .../merge/TestMergeDetachStateField.java           |    2 +-
 .../openjpa/persistence/merge/TestMergeNew.java    |    2 +-
 .../persistence/merge/TestMultipleMerge.java       |    2 +-
 .../openjpa/persistence/merge/model/Car.java       |   16 +-
 .../openjpa/persistence/merge/model/Inner.java     |   16 +-
 .../openjpa/persistence/merge/model/Label.java     |   22 +-
 .../openjpa/persistence/merge/model/Label2.java    |   20 +-
 .../openjpa/persistence/merge/model/Make.java      |   16 +-
 .../openjpa/persistence/merge/model/Model.java     |   20 +-
 .../openjpa/persistence/merge/model/Outer.java     |   16 +-
 .../persistence/merge/model/ShipPackage.java       |   20 +-
 .../persistence/merge/model/ShipPackage2.java      |   22 +-
 .../openjpa/persistence/merge/model/Toy.java       |   10 +-
 .../openjpa/persistence/merge/model/ToyBox.java    |   12 +-
 .../openjpa/persistence/meta/ArrayMember.java      |    4 +-
 .../openjpa/persistence/meta/ArrayMember_.java     |    4 +-
 .../apache/openjpa/persistence/meta/Embed0.java    |    8 +-
 .../apache/openjpa/persistence/meta/Embed0_.java   |    4 +-
 .../apache/openjpa/persistence/meta/Embed1.java    |    8 +-
 .../apache/openjpa/persistence/meta/Embed1_.java   |    4 +-
 .../persistence/meta/ExplicitFieldAccess.java      |   10 +-
 .../persistence/meta/ExplicitFieldAccessMixed.java |   10 +-
 .../meta/ExplicitFieldAccessMixed_.java            |    4 +-
 .../persistence/meta/ExplicitFieldAccess_.java     |    4 +-
 .../persistence/meta/ExplicitPropertyAccess.java   |   10 +-
 .../meta/ExplicitPropertyAccessMixed.java          |   10 +-
 .../meta/ExplicitPropertyAccessMixed_.java         |    4 +-
 .../persistence/meta/ExplicitPropertyAccess_.java  |    4 +-
 .../persistence/meta/ImplicitFieldAccessBase.java  |   10 +-
 .../persistence/meta/ImplicitFieldAccessBase_.java |   12 +-
 .../meta/ImplicitFieldAccessMappedSuperclass.java  |    6 +-
 .../meta/ImplicitFieldAccessMappedSuperclass_.java |    4 +-
 .../meta/ImplicitFieldAccessSubclass.java          |    6 +-
 .../meta/ImplicitFieldAccessSubclass_.java         |    6 +-
 .../openjpa/persistence/meta/MdrTestEntity.java    |   14 +-
 .../persistence/meta/MetamodelWithEnumEntity.java  |   44 +
 .../persistence/meta/TestClassMetaData.java        |    2 +-
 .../persistence/meta/TestExternalValues.java       |    4 +-
 .../persistence/meta/TestFactoryMethod.java        |    2 +-
 .../openjpa/persistence/meta/TestMetamodel.java    |   28 +-
 .../persistence/meta/TestMetamodelWithEnum.java    |   32 +-
 .../meta/TestQueryTypeAliasRegistration.java       |    2 +-
 .../persistence/meta/TestValueStrategies.java      |    2 +-
 .../meta/common/apps/ExternalValues.java           |    4 +-
 .../persistence/meta/common/apps/FieldOrderPC.java |    2 +-
 .../meta/common/apps/FieldOrderPCSubclass.java     |    2 +-
 .../persistence/meta/common/apps/MetaTest1.java    |    4 +-
 .../persistence/meta/common/apps/MetaTest2.java    |    6 +-
 .../persistence/meta/common/apps/MetaTest3.java    |    2 +-
 .../persistence/meta/common/apps/MetaTest4.java    |    2 +-
 .../persistence/meta/common/apps/MetaTest5.java    |    2 +-
 .../persistence/meta/common/apps/MetaTest6.java    |    2 +-
 .../persistence/meta/common/apps/MetaTest7.java    |    6 +-
 .../meta/common/apps/NonPersistentFieldsPC.java    |    2 +-
 .../persistence/meta/common/apps/OrderByPC.java    |    2 +-
 .../persistence/meta/common/apps/OrderByPCRel.java |    2 +-
 .../meta/common/apps/OrderByPCRelSub.java          |    2 +-
 .../persistence/meta/common/apps/RuntimeTest1.java |    2 +-
 .../persistence/meta/common/apps/RuntimeTest2.java |    2 +-
 .../persistence/meta/common/apps/RuntimeTest3.java |    2 +-
 .../meta/common/apps/SequenceAssigned.java         |    2 +-
 .../meta/common/apps/SequenceAssigned2.java        |    2 +-
 .../meta/common/apps/SequenceAssigned3.java        |    2 +-
 .../meta/common/apps/TransactionalClassPC.java     |    2 +-
 .../meta/common/apps/UuidAttributeConverter.java   |    4 +-
 .../meta/common/apps/ValueStrategyPC.java          |    2 +-
 .../persistence/models/company/basic/Address.java  |    6 +-
 .../persistence/models/company/basic/Company.java  |   12 +-
 .../persistence/models/company/basic/Customer.java |    6 +-
 .../persistence/models/company/basic/Employee.java |    6 +-
 .../models/company/basic/FullTimeEmployee.java     |    4 +-
 .../persistence/models/company/basic/LineItem.java |    8 +-
 .../models/company/basic/PartTimeEmployee.java     |    4 +-
 .../persistence/models/company/basic/Person.java   |   12 +-
 .../persistence/models/company/basic/Product.java  |    8 +-
 .../models/company/basic/ProductOrder.java         |   10 +-
 .../models/company/fetchlazy/Address.java          |    8 +-
 .../models/company/fetchlazy/Company.java          |   14 +-
 .../models/company/fetchlazy/Customer.java         |    8 +-
 .../models/company/fetchlazy/Employee.java         |    8 +-
 .../models/company/fetchlazy/FullTimeEmployee.java |    6 +-
 .../models/company/fetchlazy/LineItem.java         |   10 +-
 .../models/company/fetchlazy/PartTimeEmployee.java |    6 +-
 .../models/company/fetchlazy/Person.java           |   14 +-
 .../models/company/fetchlazy/Product.java          |   10 +-
 .../models/company/fetchlazy/ProductOrder.java     |   12 +-
 .../models/company/idclass/Address.java            |    6 +-
 .../models/company/idclass/Company.java            |   12 +-
 .../models/company/idclass/Customer.java           |    6 +-
 .../models/company/idclass/Employee.java           |    6 +-
 .../models/company/idclass/FullTimeEmployee.java   |    4 +-
 .../models/company/idclass/LineItem.java           |    8 +-
 .../models/company/idclass/PartTimeEmployee.java   |    4 +-
 .../persistence/models/company/idclass/Person.java |   12 +-
 .../models/company/idclass/Product.java            |    8 +-
 .../models/company/idclass/ProductOrder.java       |   10 +-
 .../persistence/models/company/joined/Address.java |    6 +-
 .../persistence/models/company/joined/Company.java |   12 +-
 .../models/company/joined/Customer.java            |   10 +-
 .../models/company/joined/Employee.java            |   10 +-
 .../models/company/joined/FullTimeEmployee.java    |    8 +-
 .../models/company/joined/LineItem.java            |    8 +-
 .../models/company/joined/PartTimeEmployee.java    |    8 +-
 .../persistence/models/company/joined/Person.java  |   12 +-
 .../persistence/models/company/joined/Product.java |    8 +-
 .../models/company/joined/ProductOrder.java        |   10 +-
 .../openjpa/persistence/models/library/Book.java   |   20 +-
 .../persistence/models/library/Borrower.java       |   18 +-
 .../persistence/models/library/Subject.java        |   12 +-
 .../persistence/models/library/Volunteer.java      |   12 +-
 .../nullity/AbstractNullityTestCase.java           |    2 +-
 .../openjpa/persistence/nullity/NullValues.java    |   16 +-
 .../persistence/nullity/TestBasicFieldNullity.java |    6 +-
 .../persistence/nullity/TestReadOnlyNullity.java   |    2 +-
 .../persistence/nullity/TimestampedEntity.java     |   10 +-
 .../timestamp/TestTimestampOptLockEx.java          |    4 +-
 .../optlockex/timestamp/VersionTSEntity.java       |    8 +-
 .../persistence/property/AccessModsEntity.java     |   12 +-
 .../persistence/property/EmbeddableAddress.java    |    2 +-
 .../persistence/property/EntityContact.java        |    8 +-
 .../persistence/property/PrivAccessModsEntity.java |   12 +-
 .../persistence/property/TestAccessMods.java       |    2 +-
 .../persistence/property/TestCompatAccessMods.java |    2 +-
 .../persistence/property/TestCompatible.java       |    2 +-
 .../persistence/property/TestEMProperties.java     |    8 +-
 .../openjpa/persistence/proxy/AbstractEntity.java  |   12 +-
 .../openjpa/persistence/proxy/ConcreteEntity.java  |    4 +-
 .../openjpa/persistence/proxy/TestDetachMerge.java |    2 +-
 .../persistence/proxy/TestEntitySerialize.java     |    2 +-
 .../persistence/proxy/TestProxyCollection.java     |    4 +-
 .../apache/openjpa/persistence/proxy/TreeNode.java |   14 +-
 .../openjpa/persistence/proxy/delayed/Award.java   |    2 +-
 .../persistence/proxy/delayed/Certification.java   |    8 +-
 .../delayed/DelayedProxyCollectionsTestCase.java   |    6 +-
 .../persistence/proxy/delayed/Location.java        |   10 +-
 .../openjpa/persistence/proxy/delayed/Product.java |    6 +-
 .../persistence/proxy/delayed/alist/Account.java   |   16 +-
 .../proxy/delayed/alist/Department.java            |   22 +-
 .../persistence/proxy/delayed/alist/Employee.java  |   12 +-
 .../persistence/proxy/delayed/alist/Member.java    |    6 +-
 .../delayed/alist/TestDelayedArrayListProxy.java   |    2 +-
 .../alist/TestDelayedArrayListProxyDetachLite.java |    4 +-
 .../proxy/delayed/alist/UserIdentity.java          |   12 +-
 .../persistence/proxy/delayed/hset/Account.java    |   16 +-
 .../persistence/proxy/delayed/hset/Department.java |   22 +-
 .../persistence/proxy/delayed/hset/Employee.java   |   12 +-
 .../persistence/proxy/delayed/hset/Member.java     |    6 +-
 .../delayed/hset/TestDelayedHashSetProxy.java      |    2 +-
 .../hset/TestDelayedHashSetProxyDetachLite.java    |    4 +-
 .../proxy/delayed/hset/UserIdentity.java           |   12 +-
 .../persistence/proxy/delayed/lhset/Account.java   |   16 +-
 .../proxy/delayed/lhset/Department.java            |   22 +-
 .../persistence/proxy/delayed/lhset/Employee.java  |   12 +-
 .../persistence/proxy/delayed/lhset/Member.java    |    6 +-
 .../lhset/TestDelayedLinkedHashSetProxy.java       |    2 +-
 .../TestDelayedLinkedHashSetProxyDetachLite.java   |    4 +-
 .../proxy/delayed/lhset/UserIdentity.java          |   12 +-
 .../persistence/proxy/delayed/llist/Account.java   |   16 +-
 .../proxy/delayed/llist/Department.java            |   22 +-
 .../persistence/proxy/delayed/llist/Employee.java  |   12 +-
 .../persistence/proxy/delayed/llist/Member.java    |    6 +-
 .../delayed/llist/TestDelayedLinkedListProxy.java  |    2 +-
 .../TestDelayedLinkedListProxyDetachLite.java      |    4 +-
 .../proxy/delayed/llist/UserIdentity.java          |   12 +-
 .../persistence/proxy/delayed/pqueue/Account.java  |   16 +-
 .../proxy/delayed/pqueue/Department.java           |   22 +-
 .../persistence/proxy/delayed/pqueue/Employee.java |   12 +-
 .../persistence/proxy/delayed/pqueue/Member.java   |    6 +-
 .../pqueue/TestDelayedPriorityQueueProxy.java      |    2 +-
 .../TestDelayedPriorityQueueProxyDetachLite.java   |    4 +-
 .../proxy/delayed/pqueue/UserIdentity.java         |   12 +-
 .../persistence/proxy/delayed/tset/Account.java    |   16 +-
 .../persistence/proxy/delayed/tset/Department.java |   22 +-
 .../persistence/proxy/delayed/tset/Employee.java   |   12 +-
 .../persistence/proxy/delayed/tset/Member.java     |    6 +-
 .../delayed/tset/TestDelayedTreeSetProxy.java      |    2 +-
 .../tset/TestDelayedTreeSetProxyDetachLite.java    |    4 +-
 .../proxy/delayed/tset/UserIdentity.java           |   12 +-
 .../persistence/proxy/delayed/vec/Account.java     |   16 +-
 .../persistence/proxy/delayed/vec/Department.java  |   22 +-
 .../persistence/proxy/delayed/vec/Employee.java    |   12 +-
 .../persistence/proxy/delayed/vec/Member.java      |    6 +-
 .../proxy/delayed/vec/TestDelayedVectorProxy.java  |    2 +-
 .../vec/TestDelayedVectorProxyDetachLite.java      |    4 +-
 .../proxy/delayed/vec/UserIdentity.java            |   12 +-
 .../persistence/proxy/entities/Address.java        |    8 +-
 .../persistence/proxy/entities/Annuity.java        |   36 +-
 .../persistence/proxy/entities/AnnuityHolder.java  |   14 +-
 .../proxy/entities/AnnuityPersistebleObject.java   |   12 +-
 .../persistence/proxy/entities/Contact.java        |   16 +-
 .../persistence/proxy/entities/EquityAnnuity.java  |    6 +-
 .../persistence/proxy/entities/FixedAnnuity.java   |    6 +-
 .../openjpa/persistence/proxy/entities/Payor.java  |    6 +-
 .../openjpa/persistence/proxy/entities/Payout.java |   12 +-
 .../openjpa/persistence/proxy/entities/Person.java |   24 +-
 .../openjpa/persistence/proxy/entities/Rider.java  |   12 +-
 .../puconf/TestPersistenceUnitConfig.java          |    2 +-
 .../pudefaults/PUDefaultSchemaEntity.java          |   12 +-
 .../PUSchemaInSequenceAnnotationEntity.java        |   12 +-
 .../PUSchemaInSequenceMappingEntity.java           |   12 +-
 .../PUSchemaInTableAnnotationEntity.java           |   14 +-
 .../pudefaults/PUSchemaInTableMappingEntity.java   |   14 +-
 .../pudefaults/TestOpenJPASchemaPUDefault.java     |    4 +-
 .../pudefaults/TestSchemaPUDefault.java            |    4 +-
 .../apache/openjpa/persistence/query/Account.java  |   10 +-
 .../org/apache/openjpa/persistence/query/Case.java |   18 +-
 .../apache/openjpa/persistence/query/Customer.java |   22 +-
 .../openjpa/persistence/query/Dependent.java       |   12 +-
 .../openjpa/persistence/query/DependentId.java     |    2 +-
 .../apache/openjpa/persistence/query/Employee.java |   14 +-
 .../persistence/query/GroupingTestCase.java        |    4 +-
 .../apache/openjpa/persistence/query/Hardware.java |   14 +-
 .../apache/openjpa/persistence/query/Lookup.java   |    8 +-
 .../apache/openjpa/persistence/query/Magazine.java |   16 +-
 .../openjpa/persistence/query/ManyOneEntity.java   |   16 +-
 .../persistence/query/ManyOneEntitySub.java        |    2 +-
 .../persistence/query/NamedQueryEntity.java        |    8 +-
 .../apache/openjpa/persistence/query/Order.java    |   18 +-
 .../openjpa/persistence/query/OrderItem.java       |   16 +-
 .../apache/openjpa/persistence/query/Person.java   |    8 +-
 .../openjpa/persistence/query/Publisher.java       |   14 +-
 .../org/apache/openjpa/persistence/query/Role.java |   16 +-
 .../openjpa/persistence/query/ScheduleDay.java     |   16 +-
 .../persistence/query/ScheduledAssignment.java     |   16 +-
 .../openjpa/persistence/query/SimpleEntity.java    |   26 +-
 .../openjpa/persistence/query/SimpleEntity2.java   |   16 +-
 .../query/Test1x1OrderByResultCollection.java      |    4 +-
 .../persistence/query/TestAbstractSchemaName.java  |    4 +-
 .../query/TestDoubleQuotedStringLiteralInJPQL.java |    4 +-
 .../persistence/query/TestDupNamedQuery.java       |    2 +-
 .../persistence/query/TestEJBDeleteUpdateImpl.java |    2 +-
 .../persistence/query/TestEJBPolymorphicQuery.java |    2 +-
 .../persistence/query/TestEJBQueryInterface.java   |    2 +-
 .../query/TestEscapedSingleQuotesInJPQL.java       |    2 +-
 .../query/TestInMemoryQueryMatchEscapes.java       |    4 +-
 .../persistence/query/TestJDBCEscapeDate.java      |    6 +-
 .../openjpa/persistence/query/TestLocate.java      |    2 +-
 .../persistence/query/TestNamedQueries.java        |    2 +-
 .../query/TestNewEntityAsQueryParameter.java       |    4 +-
 .../persistence/query/TestNewlinesInQueries.java   |    4 +-
 .../persistence/query/TestOutOfBoundsEx.java       |    4 +-
 .../TestProjectionQueryWithIdenticalResult.java    |    2 +-
 .../TestQueryConvertPositionalParameters.java      |    4 +-
 .../query/TestQueryEscapeCharacters.java           |    4 +-
 .../query/TestQueryExcludingSubclasses.java        |    4 +-
 .../query/TestQueryIdOfRelationDoesNotJoin.java    |    4 +-
 .../openjpa/persistence/query/TestQueryLock.java   |   14 +-
 .../persistence/query/TestQueryPagination.java     |    4 +-
 .../persistence/query/TestQueryParameters.java     |   22 +-
 .../persistence/query/TestQueryResultClassAPI.java |    4 +-
 .../persistence/query/TestQueryResults.java        |    2 +-
 .../persistence/query/TestQueryTimeout.java        |  104 +-
 .../query/TestQuotedNumbersInFilters2.java         |    2 +-
 .../persistence/query/TestResultSetMapping.java    |    4 +-
 .../openjpa/persistence/query/TestSimple.java      |    4 +-
 .../openjpa/persistence/query/TestSubquery.java    |    4 +-
 .../openjpa/persistence/query/TestSubstring.java   |    2 +-
 .../persistence/query/TestTimeoutException.java    |   20 +-
 .../persistence/query/TestWildCardCount.java       |    2 +-
 .../openjpa/persistence/query/TupleQueryTest.java  |    6 +-
 .../query/common/apps/CircularFKPC.java            |    2 +-
 .../query/common/apps/CircularFKPC2.java           |    2 +-
 .../persistence/query/common/apps/ComplexA.java    |    6 +-
 .../persistence/query/common/apps/ComplexB.java    |   10 +-
 .../persistence/query/common/apps/ComplexC.java    |   10 +-
 .../persistence/query/common/apps/ComplexD.java    |   10 +-
 .../persistence/query/common/apps/ComplexE.java    |   10 +-
 .../persistence/query/common/apps/ComplexF.java    |   10 +-
 .../persistence/query/common/apps/ComplexG.java    |   10 +-
 .../query/common/apps/CompoundAppIdPC.java         |    6 +-
 .../persistence/query/common/apps/Entity1.java     |   26 +-
 .../persistence/query/common/apps/Entity2.java     |    8 +-
 .../query/common/apps/ModRuntimeTest1.java         |   20 +-
 .../query/common/apps/ModRuntimeTest2.java         |    4 +-
 .../persistence/query/common/apps/Osoba.java       |    8 +-
 .../persistence/query/common/apps/Projekt.java     |    6 +-
 .../persistence/query/common/apps/QTimeout.java    |   22 +-
 .../persistence/query/common/apps/QueryTest1.java  |   16 +-
 .../persistence/query/common/apps/QueryTest2.java  |   10 +-
 .../persistence/query/common/apps/QueryTest3.java  |    2 +-
 .../persistence/query/common/apps/QueryTest4.java  |    8 +-
 .../query/common/apps/RuntimeTest1.java            |    8 +-
 .../query/common/apps/RuntimeTest2.java            |    4 +-
 .../query/common/apps/RuntimeTest3.java            |    4 +-
 .../query/common/apps/RuntimeTest4.java            |    2 +-
 .../query/common/apps/RuntimeTest5.java            |    6 +-
 .../query/common/apps/SimpleAppIdPC.java           |    4 +-
 .../query/common/apps/TransactionalClassPC.java    |    2 +-
 .../results/TestJPQLMultiSelectTypedResults.java   |    4 +-
 .../query/results/TestResultSetMapping.java        |    6 +-
 .../query/sqlresultmapping/CrtOperacaoEntity.java  |    8 +-
 .../CrtRequisicaoChequePersEntity.java             |   16 +-
 .../sqlresultmapping/CrtRequisicaoEntity.java      |   12 +-
 .../sqlresultmapping/TestSQLResultSetMapping.java  |    4 +-
 .../openjpa/persistence/querycache/QCEntity.java   |   10 +-
 .../persistence/querycache/QCEntityM2O.java        |   10 +-
 .../persistence/querycache/TestQueryCache.java     |    4 +-
 .../querycache/TestQueryCacheWithDataCache.java    |    4 +-
 .../persistence/querycache/TestQuerySQLCache.java  |    4 +-
 .../common/apps/BidirectionalOne2OneOwned.java     |    8 +-
 .../common/apps/BidirectionalOne2OneOwner.java     |    8 +-
 .../querycache/common/apps/Entity1.java            |   24 +-
 .../querycache/common/apps/Entity2.java            |   12 +-
 .../common/apps/UnidirectionalOne2OneOwned.java    |    6 +-
 .../common/apps/UnidirectionalOne2OneOwner.java    |    8 +-
 .../apache/openjpa/persistence/recursive/Node.java |   10 +-
 .../recursive/TestRecursiveRelationships.java      |    2 +-
 .../openjpa/persistence/relations/ACase.java       |   14 +-
 .../openjpa/persistence/relations/AEvident.java    |   16 +-
 .../openjpa/persistence/relations/AText.java       |   20 +-
 .../openjpa/persistence/relations/BasicEntity.java |   10 +-
 .../openjpa/persistence/relations/BidiChild.java   |   12 +-
 .../openjpa/persistence/relations/BidiParent.java  |   14 +-
 .../apache/openjpa/persistence/relations/C.java    |   12 +-
 .../apache/openjpa/persistence/relations/CM.java   |   16 +-
 .../relations/CascadingOneManyChild.java           |   12 +-
 .../relations/CascadingOneManyParent.java          |   14 +-
 .../persistence/relations/ChainEntityA.java        |   14 +-
 .../persistence/relations/ChainEntityB.java        |   14 +-
 .../persistence/relations/ChainEntityC.java        |   16 +-
 .../openjpa/persistence/relations/Child.java       |   14 +-
 .../persistence/relations/ChildChildClass.java     |   10 +-
 .../openjpa/persistence/relations/ChildClass.java  |   10 +-
 .../relations/ConcurrentEntityLeft.java            |    8 +-
 .../relations/ConcurrentEntityRight.java           |   10 +-
 .../openjpa/persistence/relations/Customer.java    |   18 +-
 .../apache/openjpa/persistence/relations/D.java    |   10 +-
 .../relations/DataStoreBasicEntity.java            |    6 +-
 .../relations/DataStoreManyOneIdOwner.java         |    8 +-
 .../apache/openjpa/persistence/relations/E.java    |   10 +-
 .../relations/EmbeddableWithRelation.java          |    6 +-
 .../relations/EntityA1InverseEager.java            |    8 +-
 .../relations/EntityA2InverseEager.java            |    8 +-
 .../persistence/relations/EntityAInverseEager.java |   16 +-
 .../persistence/relations/EntityBInverseEager.java |   12 +-
 .../persistence/relations/EntityCInverseEager.java |   10 +-
 .../persistence/relations/EntityDInverseEager.java |   10 +-
 .../openjpa/persistence/relations/GrandChild.java  |   12 +-
 .../persistence/relations/GrandChildClass.java     |   10 +-
 .../relations/HandlerCollectionInstance.java       |    4 +-
 .../relations/HandlerToHandlerMapInstance.java     |    4 +-
 .../relations/HandlerToRelationMapInstance.java    |    6 +-
 .../relations/IdOrderedOneManyChild.java           |    8 +-
 .../relations/IdOrderedOneManyParent.java          |   12 +-
 .../relations/InheritanceHierarchyAbstract.java    |   24 +-
 .../relations/InheritanceHierarchyConcrete.java    |   10 +-
 .../openjpa/persistence/relations/LRSEntity.java   |   10 +-
 .../relations/ManyOneCompoundIdOwner.java          |   12 +-
 .../persistence/relations/ManyOneIdOwner.java      |    8 +-
 .../openjpa/persistence/relations/MapKeyChild.java |   14 +-
 .../persistence/relations/MapKeyParent.java        |   14 +-
 .../relations/MultipleSameTypedEmbedded.java       |   18 +-
 .../persistence/relations/OneManyEagerChild.java   |   14 +-
 .../persistence/relations/OneManyEagerParent.java  |   14 +-
 .../persistence/relations/OneManyLazyChild.java    |   14 +-
 .../openjpa/persistence/relations/OneOneChild.java |   10 +-
 .../persistence/relations/OneOneParent.java        |   10 +-
 .../openjpa/persistence/relations/Order.java       |   14 +-
 .../openjpa/persistence/relations/PPerson.java     |   12 +-
 .../openjpa/persistence/relations/PPhone.java      |   12 +-
 .../openjpa/persistence/relations/Parent.java      |   12 +-
 .../openjpa/persistence/relations/ParentClass.java |    8 +-
 .../relations/RelationToHandlerMapInstance.java    |    6 +-
 .../relations/RelationToRelationMapInstance.java   |    6 +-
 .../persistence/relations/SimpleEmbeddable.java    |    2 +-
 .../relations/TargetedIFaceRelationParent.java     |   12 +-
 .../openjpa/persistence/relations/TblChild.java    |   20 +-
 .../persistence/relations/TblGrandChild.java       |   18 +-
 .../openjpa/persistence/relations/TblParent.java   |   12 +-
 .../TestCascadingOneManyWithForeignKey.java        |    2 +-
 .../persistence/relations/TestChainEntities.java   |    2 +-
 .../persistence/relations/TestEagerBidiSQL.java    |    2 +-
 .../relations/TestIdOrderedOneMany.java            |    2 +-
 .../relations/TestIncompleteRelationship.java      |    2 +-
 .../persistence/relations/TestInverseEagerSQL.java |    4 +-
 .../persistence/relations/TestInverseManager.java  |    2 +-
 .../openjpa/persistence/relations/TestLRS.java     |    2 +-
 .../persistence/relations/TestLazyManyToOne.java   |    2 +-
 .../persistence/relations/TestManyEagerSQL.java    |    4 +-
 .../persistence/relations/TestManyOneAsId.java     |    4 +-
 ...ultipleSameTypedEmbeddedWithEagerRelations.java |    4 +-
 .../persistence/relations/TestO2ORefColumn.java    |    2 +-
 .../persistence/relations/TestOneOneNulls.java     |    2 +-
 .../relations/TestOneToManyWithEagerLazyFetch.java |    2 +-
 ...TestRelationFieldAsPrimaryKeyAndForeignKey.java |    2 +-
 .../relations/TestRelationOrphanRemoval.java       |    2 +-
 .../relations/TestTargetedIFaceRelations.java      |    2 +-
 .../relations/UnidirectionalManyToOne.java         |   12 +-
 .../openjpa/persistence/relations/Util1xmLf.java   |   10 +-
 .../openjpa/persistence/relations/Util1xmRt.java   |    6 +-
 .../apache/openjpa/persistence/relations/VC.java   |   16 +-
 .../apache/openjpa/persistence/relations/VCS.java  |   18 +-
 .../entity/IncompleteRelationshipChildEntity.java  |    8 +-
 .../entity/IncompleteRelationshipParentEntity.java |   20 +-
 .../entity/IncompleteRelationshipSubclass.java     |    2 +-
 .../persistence/relations/entity/LrsEntityA.java   |   20 +-
 .../persistence/relations/entity/LrsEntityB.java   |   14 +-
 .../results/cls/ResultClsAnnotation.java           |   18 +-
 .../results/cls/TestResultClsAnnotation.java       |    4 +-
 .../persistence/results/cls/TestResultClsXml.java  |    4 +-
 .../persistence/sequence/EntityEmployee.java       |   12 +-
 .../openjpa/persistence/sequence/EntityPerson.java |   12 +-
 .../persistence/sequence/GeneratedIdObject.java    |    6 +-
 .../persistence/sequence/SequencedEntity.java      |   14 +-
 .../openjpa/persistence/sequence/TestSequence.java |    2 +-
 .../sequence/TestSequenceGenerationOnMT.java       |    2 +-
 .../persistence/sequence/hsql/HSQLEmployee.java    |   10 +-
 .../persistence/sequence/hsql/HSQLEmployee2.java   |   10 +-
 .../sequence/hsql/TestHSQLSequence.java            |    2 +-
 .../persistence/simple/AbstractSuperclass.java     |    4 +-
 .../openjpa/persistence/simple/AllFieldTypes.java  |    6 +-
 .../persistence/simple/EntityWithTimestampPK.java  |    4 +-
 .../apache/openjpa/persistence/simple/Item.java    |   14 +-
 .../openjpa/persistence/simple/Java8TimeTypes.java |    4 +-
 .../openjpa/persistence/simple/NamedEntity.java    |    8 +-
 .../apache/openjpa/persistence/simple/Person.java  |    6 +-
 .../apache/openjpa/persistence/simple/Place.java   |    4 +-
 .../openjpa/persistence/simple/SubclassPerson.java |   10 +-
 .../persistence/simple/TemporalFieldTypes.java     |    6 +-
 .../persistence/simple/TestBasicAnnotation.java    |    2 +-
 .../simple/TestCaseInsensitiveKeywordsInJPQL.java  |    4 +-
 .../simple/TestEntityManagerFactory.java           |    4 +-
 .../persistence/simple/TestEntityManagerMerge.java |    2 +-
 .../TestEntityManagerMethodsThrowAfterClose.java   |    4 +-
 .../persistence/simple/TestFlushBeforeDetach.java  |    2 +-
 .../persistence/simple/TestJava8TimeTypes.java     |    4 +-
 .../persistence/simple/TestPersistence.java        |    4 +-
 .../persistence/simple/TestPropertiesMethods.java  |   22 +-
 .../openjpa/persistence/simple/TestRefresh.java    |    4 +-
 .../persistence/simple/TestSerializedFactory.java  |    4 +-
 .../simple/TestSubclassOfAbstractSuperclass.java   |    2 +-
 .../openjpa/persistence/spring/LibServiceImpl.java |    6 +-
 .../persistence/spring/LibTestingService.java      |    4 +-
 .../openjpa/persistence/spring/TestLibService.java |    2 +-
 .../spring/TransactionalEntityManagerFactory.java  |    2 +-
 .../value/ImplicitValueStrategyEntity.java         |    4 +-
 .../strategy/value/TestImplicitValueStrategy.java  |    2 +-
 .../strategy/value/TestValueStrategy.java          |    2 +-
 .../strategy/value/ValueStrategyEntity.java        |    4 +-
 .../persistence/temporal/TemporalEntity.java       |    8 +-
 .../temporal/TestTemporalTimestamp.java            |    6 +-
 .../test/AbstractCachedEMFTestCase.java            |    2 +-
 .../test/AbstractPersistenceTestCase.java          |    8 +-
 .../openjpa/persistence/test/ContainerEMFTest.java |    2 +-
 .../persistence/test/PersistenceTestCase.java      |    6 +-
 .../persistence/test/SingleEMFTestCase.java        |    2 +-
 .../openjpa/persistence/test/SingleEMTestCase.java |    2 +-
 .../TestPersistenceProviderFilteringTestCase.java  |   14 +-
 .../openjpa/persistence/util/EagerEmbed.java       |    6 +-
 .../openjpa/persistence/util/EagerEmbedRel.java    |   10 +-
 .../openjpa/persistence/util/EagerEntity.java      |   16 +-
 .../apache/openjpa/persistence/util/LazyEmbed.java |   10 +-
 .../openjpa/persistence/util/LazyEntity.java       |   20 +-
 .../apache/openjpa/persistence/util/MapEntity.java |   16 +-
 .../openjpa/persistence/util/MapKeyEmbed.java      |    2 +-
 .../openjpa/persistence/util/MapValEntity.java     |   14 +-
 .../openjpa/persistence/util/OneToEntity.java      |   12 +-
 .../apache/openjpa/persistence/util/RelEntity.java |    6 +-
 .../persistence/util/TestJPAFacadeHelper.java      |    2 +-
 .../persistence/util/TestPersistenceUnitUtil.java  |    4 +-
 .../persistence/util/TestPersistenceUtil.java      |    6 +-
 .../openjpa/persistence/util/TestProviderUtil.java |    8 +-
 .../openjpa/persistence/util/ToManyEager.java      |    6 +-
 .../openjpa/persistence/util/ToManyLazy.java       |    6 +-
 .../validation/TestValidationFactory.java          |   10 +-
 .../persistence/validation/TestValidationMode.java |    8 +-
 .../xml/TestPersistenceUnitWithoutXSD.java         |    2 +-
 .../persistence/xml/TestToOneLazyXmlOverride.java  |    2 +-
 .../persistence/xml/TestXmlOverrideEntity.java     |    2 +-
 .../openjpa/persistence/xml/XmlOverrideEntity.java |   12 +-
 .../persistence/xml/XmlOverrideToOneEntity.java    |   16 +-
 .../persistence/xmlmapping/entities/Customer.java  |   20 +-
 .../persistence/xmlmapping/entities/EAddress.java  |    4 +-
 .../persistence/xmlmapping/entities/Order.java     |   12 +-
 .../xmlmapping/query/TestXMLCustomerOrder.java     |    4 +-
 .../persistence/xs/AccountingHierarchy.java        |   16 +-
 .../persistence/xs/AccountingHierarchyRate.java    |   16 +-
 .../persistence/xs/TestMergeComplexKey.java        |    4 +-
 .../openjpa/reservedwords/ReservedWordsIT.java     |    4 +-
 .../src/test/resources/META-INF/persistence3.xml   |    8 +-
 .../lib/conf/META-INF/persistence-config.xml       |    8 +-
 .../kernel/common/apps/META-INF/persistence.xml    |   10 +-
 openjpa-persistence-locking/pom.xml                |    2 +-
 .../persistence/lock/extended/LSE1x1Lf.java        |   18 +-
 .../persistence/lock/extended/LSE1x1LfJT.java      |   20 +-
 .../persistence/lock/extended/LSE1x1LfJTLzy.java   |   22 +-
 .../persistence/lock/extended/LSE1x1LfLzy.java     |   20 +-
 .../persistence/lock/extended/LSE1x1Rt.java        |    6 +-
 .../persistence/lock/extended/LSE1xmLf.java        |   18 +-
 .../persistence/lock/extended/LSE1xmLfEgr.java     |   20 +-
 .../persistence/lock/extended/LSE1xmLfJT.java      |   20 +-
 .../persistence/lock/extended/LSE1xmLfJTEgr.java   |   20 +-
 .../persistence/lock/extended/LSE1xmRt.java        |    6 +-
 .../openjpa/persistence/lock/extended/LSEBase.java |   16 +-
 .../persistence/lock/extended/LSEEleCol.java       |   18 +-
 .../persistence/lock/extended/LSEEleColEgr.java    |   20 +-
 .../persistence/lock/extended/LSEJoinAbs.java      |   10 +-
 .../persistence/lock/extended/LSEJoinCon.java      |   12 +-
 .../persistence/lock/extended/LSESecTbl.java       |   20 +-
 .../persistence/lock/extended/LSESngTblAbs.java    |   20 +-
 .../persistence/lock/extended/LSESngTblCon.java    |   12 +-
 .../lock/extended/LockScopeTestCase.java           |   16 +-
 .../lock/extended/Test1x1LockScope.java            |    2 +-
 .../lock/extended/Test1xmLockScope.java            |    2 +-
 .../lock/extended/TestBasicLockScope.java          |    2 +-
 .../openjpa/persistence/lockmgr/Department.java    |    8 +-
 .../openjpa/persistence/lockmgr/Employee.java      |    8 +-
 .../openjpa/persistence/lockmgr/LockEmployee.java  |   12 +-
 .../lockmgr/LockEmployeeNonVersion.java            |    4 +-
 .../lockmgr/MixedLockManagerGenericTest.java       |    2 +-
 .../apache/openjpa/persistence/lockmgr/Person.java |    8 +-
 .../openjpa/persistence/lockmgr/PhoneNumber.java   |    6 +-
 .../persistence/lockmgr/SequencedActionsTest.java  |   16 +-
 .../persistence/lockmgr/TestEmLockMode.java        |    6 +-
 .../persistence/lockmgr/TestEmLockTimeout.java     |   10 +-
 .../persistence/lockmgr/TestFetchHints.java        |   22 +-
 .../openjpa/persistence/lockmgr/TestLocking.java   |    8 +-
 .../lockmgr/TestMixedLockManagerDeadlock.java      |    4 +-
 .../lockmgr/TestMixedLockManagerFindBasic.java     |    2 +-
 .../lockmgr/TestMixedLockManagerFindException.java |    8 +-
 .../TestMixedLockManagerFindPermutation.java       |    2 +-
 .../lockmgr/TestMixedLockManagerLockBasic.java     |    2 +-
 .../lockmgr/TestMixedLockManagerLockException.java |    6 +-
 .../TestMixedLockManagerLockPermutation.java       |    2 +-
 .../lockmgr/TestMixedLockManagerNonVersion.java    |    4 +-
 .../lockmgr/TestMixedLockManagerRefreshBasic.java  |    2 +-
 .../TestMixedLockManagerRefreshException.java      |    4 +-
 .../TestMixedLockManagerRefreshPermutation.java    |    2 +-
 .../lockmgr/TestNamedQueryLockMode.java            |    6 +-
 .../lockmgr/TestOptimisticNamedQueryLockMode.java  |    6 +-
 .../persistence/lockmgr/TestPessimisticLocks.java  |   46 +-
 .../openjpa/persistence/lockmgr/VersionEntity.java |    8 +-
 openjpa-persistence/pom.xml                        |   20 +-
 .../apache/openjpa/persistence/AbstractQuery.java  |    8 +-
 .../AnnotationPersistenceMetaDataParser.java       |  100 +-
 .../AnnotationPersistenceMetaDataSerializer.java   |   46 +-
 .../apache/openjpa/persistence/DataStoreId.java    |    2 +-
 .../openjpa/persistence/EntityExistsException.java |    2 +-
 .../persistence/EntityManagerFactoryImpl.java      |   20 +-
 .../persistence/EntityManagerFactoryValue.java     |    2 +-
 .../openjpa/persistence/EntityManagerImpl.java     |   34 +-
 .../persistence/EntityNotFoundException.java       |    2 +-
 .../org/apache/openjpa/persistence/FetchPlan.java  |    4 +-
 .../apache/openjpa/persistence/FetchPlanImpl.java  |    8 +-
 .../apache/openjpa/persistence/HintHandler.java    |    2 +-
 .../openjpa/persistence/JPAFacadeHelper.java       |    4 +-
 .../apache/openjpa/persistence/JPAProperties.java  |   14 +-
 .../openjpa/persistence/LockScopesHelper.java      |    6 +-
 .../openjpa/persistence/LockTimeoutException.java  |    2 +-
 .../openjpa/persistence/ManagedInterface.java      |    6 +-
 .../openjpa/persistence/MixedLockLevelsHelper.java |    6 +-
 .../openjpa/persistence/NoResultException.java     |    2 +-
 .../persistence/NonUniqueResultException.java      |    2 +-
 .../openjpa/persistence/OpenJPAEntityManager.java  |    8 +-
 .../persistence/OpenJPAEntityManagerFactory.java   |    2 +-
 .../persistence/OpenJPAEntityTransaction.java      |   10 +-
 .../openjpa/persistence/OpenJPAPersistence.java    |   10 +-
 .../persistence/OpenJPAPersistenceUtil.java        |    2 +-
 .../apache/openjpa/persistence/OpenJPAQuery.java   |    8 +-
 .../persistence/OptimisticLockException.java       |    2 +-
 .../apache/openjpa/persistence/ParameterImpl.java  |    2 +-
 .../openjpa/persistence/PersistenceException.java  |    2 +-
 .../persistence/PersistenceMetaDataDefaults.java   |   46 +-
 .../persistence/PersistenceMetaDataFactory.java    |   24 +-
 .../persistence/PersistenceProductDerivation.java  |   16 +-
 .../persistence/PersistenceProviderImpl.java       |   37 +-
 .../persistence/PersistenceUnitInfoImpl.java       |   10 +-
 .../org/apache/openjpa/persistence/Persistent.java |    4 +-
 .../openjpa/persistence/PersistentCollection.java  |    4 +-
 .../apache/openjpa/persistence/PersistentMap.java  |    4 +-
 .../persistence/PessimisticLockException.java      |    2 +-
 .../org/apache/openjpa/persistence/QueryImpl.java  |   12 +-
 .../openjpa/persistence/QueryResultCache.java      |    2 +-
 .../openjpa/persistence/QueryResultCacheImpl.java  |    2 +-
 .../openjpa/persistence/QueryTimeoutException.java |    4 +-
 .../openjpa/persistence/RollbackException.java     |    2 +-
 .../org/apache/openjpa/persistence/StoreCache.java |    2 +-
 .../apache/openjpa/persistence/StoreCacheImpl.java |    2 +-
 .../persistence/StoredProcedureQueryImpl.java      |   26 +-
 .../persistence/TransactionRequiredException.java  |    2 +-
 .../apache/openjpa/persistence/TupleFactory.java   |    6 +-
 .../org/apache/openjpa/persistence/TupleImpl.java  |    4 +-
 .../persistence/XMLPersistenceMetaDataParser.java  |   16 +-
 .../openjpa/persistence/criteria/AliasContext.java |    4 +-
 .../persistence/criteria/CompareByExample.java     |   14 +-
 .../persistence/criteria/CompoundSelections.java   |   14 +-
 .../persistence/criteria/CriteriaBuilderImpl.java  |   47 +-
 .../criteria/CriteriaExpressionBuilder.java        |   22 +-
 .../persistence/criteria/CriteriaQueryImpl.java    |   26 +-
 .../persistence/criteria/ExpressionImpl.java       |    6 +-
 .../openjpa/persistence/criteria/Expressions.java  |   10 +-
 .../persistence/criteria/FetchPathImpl.java        |   14 +-
 .../openjpa/persistence/criteria/FromImpl.java     |   36 +-
 .../apache/openjpa/persistence/criteria/Joins.java |   36 +-
 .../criteria/OpenJPACriteriaBuilder.java           |   14 +-
 .../persistence/criteria/OpenJPACriteriaQuery.java |    2 +-
 .../openjpa/persistence/criteria/OrderImpl.java    |    4 +-
 .../criteria/ParameterExpressionImpl.java          |    2 +-
 .../openjpa/persistence/criteria/PathImpl.java     |   22 +-
 .../persistence/criteria/PredicateImpl.java        |    4 +-
 .../openjpa/persistence/criteria/RootImpl.java     |    4 +-
 .../persistence/criteria/SelectionImpl.java        |    4 +-
 .../openjpa/persistence/criteria/SubqueryImpl.java |   24 +-
 .../persistence/meta/AbstractManagedType.java      |   18 +-
 .../persistence/meta/AnnotationProcessor6.java     |   23 +-
 .../apache/openjpa/persistence/meta/Members.java   |   18 +-
 .../openjpa/persistence/meta/MetamodelImpl.java    |   28 +-
 .../persistence/meta/SourceAnnotationHandler.java  |   30 +-
 .../org/apache/openjpa/persistence/meta/Types.java |   12 +-
 .../persistence/osgi/PersistenceActivator.java     |    8 +-
 .../validation/TraversableResolverImpl.java        |   20 +-
 .../persistence/validation/ValidationUtils.java    |   18 +-
 .../persistence/validation/ValidatorImpl.java      |   18 +-
 ...=> jakarta.persistence.spi.PersistenceProvider} |    0
 .../openjpa/persistence/localizer.properties       |    2 +-
 .../openjpa/persistence/meta/localizer.properties  |    2 +-
 openjpa-project/CHANGES.txt                        |    2 +-
 openjpa-project/RELEASE-NOTES.html                 |    2 +-
 openjpa-project/pom.xml                            |   10 +-
 .../src/doc/manual/jpa_overview_arch.xml           |   12 +-
 .../src/doc/manual/jpa_overview_criteria.xml       |    6 +-
 openjpa-project/src/doc/manual/jpa_overview_em.xml |    4 +-
 .../src/doc/manual/jpa_overview_meta.xml           |    2 +-
 .../src/doc/manual/jpa_overview_query.xml          |   10 +-
 .../src/doc/manual/jpa_overview_sqlquery.xml       |    2 +-
 openjpa-project/src/doc/manual/jpa_resources.xml   |    2 +-
 openjpa-project/src/doc/manual/jpa_tutorials.xml   |    4 +-
 .../src/doc/manual/migration_considerations.xml    |    4 +-
 openjpa-project/src/doc/manual/properties_info.xml |    2 +-
 .../src/doc/manual/ref_guide_caching.xml           |   26 +-
 openjpa-project/src/doc/manual/ref_guide_conf.xml  |    8 +-
 .../src/doc/manual/ref_guide_dbsetup.xml           |   12 +-
 .../src/doc/manual/ref_guide_deploy.xml            |    2 +-
 .../src/doc/manual/ref_guide_logging.xml           |    2 +-
 .../src/doc/manual/ref_guide_mapping.xml           |    2 +-
 openjpa-project/src/doc/manual/ref_guide_pc.xml    |    4 +-
 .../src/doc/manual/ref_guide_remote.xml            |    8 +-
 .../src/doc/manual/ref_guide_runtime.xml           |   16 +-
 openjpa-project/src/doc/manual/ref_guide_slice.xml |    4 +-
 openjpa-slice/pom.xml                              |    8 +-
 .../java/org/apache/openjpa/slice/Address.java     |   10 +-
 .../test/java/org/apache/openjpa/slice/Car.java    |   10 +-
 .../java/org/apache/openjpa/slice/Country.java     |    6 +-
 .../org/apache/openjpa/slice/Manufacturer.java     |    4 +-
 .../java/org/apache/openjpa/slice/PObject.java     |    4 +-
 .../apache/openjpa/slice/PersistenceTestCase.java  |    6 +-
 .../test/java/org/apache/openjpa/slice/Person.java |   12 +-
 .../org/apache/openjpa/slice/ReplicatedChild.java  |    6 +-
 .../org/apache/openjpa/slice/ReplicatedParent.java |    8 +-
 .../org/apache/openjpa/slice/SliceTestCase.java    |    2 +-
 .../java/org/apache/openjpa/slice/TestBasic.java   |    4 +-
 .../org/apache/openjpa/slice/TestBulkDelete.java   |    2 +-
 .../java/org/apache/openjpa/slice/TestQuery.java   |    4 +-
 .../openjpa/slice/TestQueryMultiThreaded.java      |    6 +-
 .../openjpa/slice/TestQueryTargetPolicy.java       |    4 +-
 .../org/apache/openjpa/slice/TestReplication.java  |    2 +-
 .../org/apache/openjpa/slice/TestTransaction.java  |    4 +-
 .../test/java/org/apache/openjpa/slice/TestXA.java |    2 +-
 openjpa-tools/openjpa-fetch-statistics-was/pom.xml |    2 +-
 openjpa-tools/openjpa-fetch-statistics/pom.xml     |   11 +-
 .../org/apache/openjpa/enhance/stats/AEntity.java  |    6 +-
 .../org/apache/openjpa/enhance/stats/BEntity.java  |   14 +-
 .../apache/openjpa/enhance/stats/ChildEntity.java  |    4 +-
 .../org/apache/openjpa/enhance/stats/EEntity.java  |    2 +-
 .../openjpa/enhance/stats/TestFetchStatistics.java |    4 +-
 openjpa-tools/openjpa-maven-plugin/pom.xml         |   11 +-
 .../src/it/default_settings/pom.xml                |    9 +-
 .../openjpa/tools/maven/testentity/TestEntity.java |    8 +-
 .../tools/maven/test/ItDefaultSettingsTest.java    |    6 +-
 .../src/it/dependingArtifact/pom.xml               |   11 +-
 .../dependingartifact/entities/MyEntityImpl.java   |    6 +-
 .../src/it/enhanceIncludesExcludes/pom.xml         |    9 +-
 .../src/main/java/enhance/exclude/TestEntityA.java |    4 +-
 .../src/main/java/enhance/include/TestEntityB.java |    4 +-
 .../src/main/java/foo/TestEntityC.java             |    4 +-
 .../src/it/nonDefaultPersistenceXml/pom.xml        |    9 +-
 .../openjpa/tools/maven/testentity/TestEntity.java |    4 +-
 .../tools/maven/test/ItNonDefaultXmlTest.java      |    2 +-
 .../src/it/sqlActionDropSchema/pom.xml             |    9 +-
 .../maven/testentity/DropSchemaTestEntity.java     |    8 +-
 .../openjpa/tools/maven/testentity/TestEntity.java |    8 +-
 .../src/it/testDependencies/pom.xml                |   11 +-
 .../src/it/testDependencies/prjB/pom.xml           |    2 +-
 .../dependingartifact/entities/MyEntityImpl.java   |    6 +-
 .../maven/AbstractOpenJpaMappingToolMojo.java      |    2 +-
 .../openjpa/tools/maven/testentity/Person.java     |    2 +-
 .../tools/maven/testentity/SampleEntity.java       |    4 +-
 openjpa-tools/pom.xml                              |    2 +-
 openjpa-xmlstore/pom.xml                           |    2 +-
 .../openjpa/xmlstore/simple/AllFieldTypes.java     |    6 +-
 .../org/apache/openjpa/xmlstore/simple/Place.java  |    4 +-
 .../openjpa/xmlstore/simple/TestPersistence.java   |    4 +-
 openjpa/pom.xml                                    |   89 +-
 pom.xml                                            |   81 +-
 2701 files changed, 13217 insertions(+), 12684 deletions(-)
 create mode 100644 openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
 create mode 100644 openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassWriterTracker.java
 delete mode 100644 openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyConcurrentMaps.java
 create mode 100644 openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/AsmHelper.java
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedArrayListProxy.java (96%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedHashSetProxy.java (95%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedLinkedHashSetProxy.java (95%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedLinkedListProxy.java (97%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedPriorityQueueProxy.java (95%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedProxy.java (98%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedTreeSetProxy.java (96%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/DelayedVectorProxy.java (97%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyBean.java (93%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyCalendar.java (93%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyCollection.java (94%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyCollections.java (99%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyDate.java (93%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyMap.java (94%)
 rename openjpa-kernel/src/main/java/org/apache/openjpa/util/{ => proxy}/ProxyMaps.java (89%)
 copy openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/{persistence/simple/AllFieldTypes.java => jdbc/sql/DelimitedIdentifiersAllFieldTypesEntity.java} (85%)
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy1Entity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy2Entity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/BadVersionFieldEntity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/OracleGeneratedIdEntity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/FKColumnNamesInner1Entity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/FKColumnNamesInner2Entity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInner2Entity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInnerEntity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBNoPersistentFieldsNoPersistentFieldsPCEntity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/StaticInnerClassesContainer.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBNoPersistentFieldsNholderEntity.java
 create mode 100644 openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/MetamodelWithEnumEntity.java
 rename openjpa-persistence/src/main/resources/META-INF/services/{javax.persistence.spi.PersistenceProvider => jakarta.persistence.spi.PersistenceProvider} (100%)


[openjpa] 09/17: OPENJPA-2909 generate CalendarProxy via ASM

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 87458c708bc3971763f9dc79153b9ac8aee66c8c
Author: Mark Struberg <st...@apache.org>
AuthorDate: Tue May 2 14:47:16 2023 +0200

    OPENJPA-2909 generate CalendarProxy via ASM
---
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 301 ++++++++++++---------
 1 file changed, 175 insertions(+), 126 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 47f75f9bb..e1a6ce40b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -98,6 +98,7 @@ public class ProxyManagerImpl
 
     private static final Localizer _loc = Localizer.forPackage
         (ProxyManagerImpl.class);
+    public static final Type TYPE_OBJECT = Type.getType(Object.class);
 
     private static long _proxyId = 0L;
     private static final Map _stdCollections = new HashMap();
@@ -469,8 +470,7 @@ public class ProxyManagerImpl
                 ProxyCalendar.class);
             Class pcls = loadBuildTimeProxy(type, l);
             if (pcls == null)
-                pcls = GeneratedClasses.loadBCClass(
-                    generateProxyCalendarBytecode(type, true), l);
+                pcls = generateAndLoadProxyCalendar(type, true, l);
             proxy = (ProxyCalendar) instantiateProxy(pcls, null, null);
             _proxies.put(type, proxy);
         }
@@ -676,15 +676,20 @@ public class ProxyManagerImpl
         return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
     }
 
+    private Class generateAndLoadProxyCalendar(Class type, boolean runtime, ClassLoader l) {
+        final String proxyClassName = getProxyClassName(type, runtime);
+        final byte[] classBytes = generateProxyCalendarBytecode(type, runtime, proxyClassName);
+
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+    }
+
     /**
      * Generate the bytecode for a date proxy for the given type.
      */
     protected byte[] generateProxyDateBytecode(Class type, boolean runtime, String proxyClassName) {
         assertNotFinal(type);
         String proxyClassDef = proxyClassName.replace('.', '/');
-
-        String superClassFileNname = type.getName().replace('.', '/');
-
+        String superClassFileNname = Type.getInternalName(type);
         String[] interfaceNames = new String[]{Type.getInternalName(ProxyDate.class)};
 
         ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
@@ -704,6 +709,34 @@ public class ProxyManagerImpl
         return cw.toByteArray();
     }
 
+    /**
+     * Generate the bytecode for a calendar proxy for the given type.
+     */
+    protected byte[] generateProxyCalendarBytecode(Class type, boolean runtime, String proxyClassName) {
+        assertNotFinal(type);
+        String proxyClassDef = proxyClassName.replace('.', '/');
+        String superClassFileNname = Type.getInternalName(type);
+        String[] interfaceNames = new String[]{Type.getInternalName(ProxyCalendar.class)};
+
+        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
+                null, superClassFileNname, interfaceNames);
+
+        String classFileName = runtime ? type.getName() : proxyClassDef;
+        cw.visitSource(classFileName + ".java", null);
+
+        delegateConstructors(cw, type, superClassFileNname);
+        addInstanceVariables(cw);
+        addProxyMethods(cw, true, proxyClassDef, type);
+        addProxyCalendarMethods(cw, proxyClassDef, type);
+        proxySetters(cw, proxyClassDef, type);
+        addWriteReplaceMethod(cw, proxyClassDef, runtime);
+
+        return cw.toByteArray();
+
+    }
+
+
     /**
      * add the instance variables to the class to be generated
      */
@@ -808,13 +841,13 @@ public class ProxyManagerImpl
              * provide a detached proxy object (null out the StateManager).
              */
             MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "clone",
-                    Type.getMethodDescriptor(Type.getType(Object.class))
+                    Type.getMethodDescriptor(TYPE_OBJECT)
                     , null, null);
             mv.visitCode();
 
             mv.visitVarInsn(Opcodes.ALOAD, 0);
             mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(parentClass), "clone",
-                    Type.getMethodDescriptor(Type.getType(Object.class)), false);
+                    Type.getMethodDescriptor(TYPE_OBJECT), false);
             mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Proxy.class));
             mv.visitVarInsn(Opcodes.ASTORE, 1);
             mv.visitVarInsn(Opcodes.ALOAD, 1);
@@ -886,8 +919,9 @@ public class ProxyManagerImpl
             }
 
             MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "copy",
-                    Type.getMethodDescriptor(Type.getType(Object.class), Type.getType(Object.class))
+                    Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
                     , null, null);
+            mv.visitCode();
             mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
             mv.visitInsn(Opcodes.DUP);
 
@@ -939,6 +973,7 @@ public class ProxyManagerImpl
             MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "newInstance",
                     Type.getMethodDescriptor(Type.getType(ProxyDate.class))
                     , null, null);
+            mv.visitCode();
             mv.visitTypeInsn(Opcodes.NEW, proxyClassDef);
             mv.visitInsn(Opcodes.DUP);
             mv.visitMethodInsn(Opcodes.INVOKESPECIAL, proxyClassDef, "<init>",
@@ -950,6 +985,130 @@ public class ProxyManagerImpl
         }
     }
 
+    private void addProxyCalendarMethods(ClassWriter cw, String proxyClassDef, Class type) {
+        // calendar copy
+        {
+            Constructor cons = findCopyConstructor(type);
+            Class[] params = (cons == null) ? new Class[0] : cons.getParameterTypes();
+
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "copy",
+                    Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
+                    , null, null);
+            mv.visitCode();
+
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, getParamTypes(params)), false);
+
+            // timeInMillis
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Calendar.class));
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Calendar.class), "getTimeInMillis",
+                    Type.getMethodDescriptor(Type.LONG_TYPE), false);
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setTimeInMillis",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.LONG_TYPE), false);
+
+            // lenient
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Calendar.class));
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Calendar.class), "isLenient",
+                    Type.getMethodDescriptor(Type.BOOLEAN_TYPE), false);
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setLenient",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.BOOLEAN_TYPE), false);
+
+            // firstDayOfWeek
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Calendar.class));
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Calendar.class), "getFirstDayOfWeek",
+                    Type.getMethodDescriptor(Type.INT_TYPE), false);
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setFirstDayOfWeek",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.INT_TYPE), false);
+
+            // minimalDaysInFirstWeek
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Calendar.class));
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Calendar.class), "getMinimalDaysInFirstWeek",
+                    Type.getMethodDescriptor(Type.INT_TYPE), false);
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setMinimalDaysInFirstWeek",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.INT_TYPE), false);
+
+            // timeZone
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Calendar.class));
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Calendar.class), "getTimeZone",
+                    Type.getMethodDescriptor(Type.getType(TimeZone.class)), false);
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setTimeZone",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(TimeZone.class)), false);
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // newInstance factory
+        {
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "newInstance",
+                    Type.getMethodDescriptor(Type.getType(ProxyCalendar.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, proxyClassDef);
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, proxyClassDef, "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE), false);
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // proxy the protected computeFields method b/c it is called on
+        // mutate, and some setters are final and therefore not proxyable
+        {
+            MethodVisitor mv = cw.visitMethod(Modifier.PROTECTED, "computeFields",
+                    Type.getMethodDescriptor(Type.VOID_TYPE)
+                    , null, null);
+            mv.visitCode();
+
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitInsn(Opcodes.ICONST_1);
+            mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(Proxies.class), "dirty",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Proxy.class), Type.BOOLEAN_TYPE), false);
+
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "computeFields",
+                    Type.getMethodDescriptor(Type.VOID_TYPE), false);
+
+            mv.visitInsn(Opcodes.RETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+
+        /*
+
+        // proxy the protected computeFields method b/c it is called on
+        // mutate, and some setters are final and therefore not proxyable
+        m = bc.declareMethod("computeFields", void.class, null);
+        m.makeProtected();
+        code = m.getCode(true);
+        code.aload().setThis();
+        code.constant().setValue(true);
+        code.invokestatic().setMethod(Proxies.class, "dirty", void.class,
+            new Class[] { Proxy.class, boolean.class });
+        code.aload().setThis();
+        code.invokespecial().setMethod(type, "computeFields", void.class, null);
+        code.vreturn();
+        code.calculateMaxStack();
+        code.calculateMaxLocals();
+         */
+    }
+
     /**
      * Proxy setter methods of the given type.
      *
@@ -1006,13 +1165,13 @@ public class ProxyManagerImpl
      */
     private void addWriteReplaceMethod(ClassWriter cw, String proxyClassDef, boolean runtime) {
         MethodVisitor mv = cw.visitMethod(Modifier.PROTECTED, "writeReplace",
-                Type.getMethodDescriptor(Type.getType(Object.class))
+                Type.getMethodDescriptor(TYPE_OBJECT)
                 , null, new String[]{Type.getInternalName(ObjectStreamException.class)});
         mv.visitCode();
         mv.visitVarInsn(Opcodes.ALOAD, 0);
         mv.visitInsn(runtime ? Opcodes.ICONST_0 : Opcodes.ICONST_1); // !runtime
         mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(Proxies.class), "writeReplace",
-                Type.getMethodDescriptor(Type.getType(Object.class), Type.getType(Proxy.class), Type.BOOLEAN_TYPE), false);
+                Type.getMethodDescriptor(TYPE_OBJECT, Type.getType(Proxy.class), Type.BOOLEAN_TYPE), false);
 
         mv.visitInsn(Opcodes.ARETURN);
         mv.visitMaxs(-1, -1);
@@ -1120,25 +1279,6 @@ public class ProxyManagerImpl
 
     /* ASM end */
 
-    /**
-     * Generate the bytecode for a calendar proxy for the given type.
-     */
-    protected BCClass generateProxyCalendarBytecode(Class type,
-        boolean runtime) {
-        assertNotFinal(type);
-        Project project = new Project();
-        BCClass bc = AccessController.doPrivileged(J2DoPrivHelper
-            .loadProjectClassAction(project, getProxyClassName(type, runtime)));
-        bc.setSuperclass(type);
-        bc.declareInterface(ProxyCalendar.class);
-
-        delegateConstructors(bc, type);
-        addProxyMethods(bc, true);
-        addProxyCalendarMethods(bc, type);
-        proxySetters(bc, type);
-        addWriteReplaceMethod(bc, runtime);
-        return bc;
-    }
 
     /**
      * Generate the bytecode for a bean proxy for the given type.
@@ -1523,100 +1663,7 @@ public class ProxyManagerImpl
         code.calculateMaxStack();
         code.calculateMaxLocals();
     }
-
-    /**
-     * Implement the methods in the {@link ProxyCalendar} interface.
-     */
-    private void addProxyCalendarMethods(BCClass bc, Class type) {
-        // calendar copy
-        Constructor cons = findCopyConstructor(type);
-        Class[] params = (cons == null) ? new Class[0]
-            : cons.getParameterTypes();
-
-        BCMethod m = bc.declareMethod("copy", Object.class,
-            new Class[] {Object.class});
-        m.makePublic();
-        Code code = m.getCode(true);
-
-        code.anew().setType(type);
-        code.dup();
-        if (params.length == 1) {
-            code.aload().setParam(0);
-            code.checkcast().setType(params[0]);
-        }
-        code.invokespecial().setMethod(type, "<init>", void.class, params);
-        if (params.length == 0) {
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Calendar.class);
-            code.invokevirtual().setMethod(Calendar.class, "getTimeInMillis",
-                long.class, null);
-            code.invokevirtual().setMethod(type, "setTimeInMillis", void.class,
-                new Class[] { long.class });
-
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Calendar.class);
-            code.invokevirtual().setMethod(Calendar.class, "isLenient",
-                boolean.class, null);
-            code.invokevirtual().setMethod(type, "setLenient", void.class,
-                new Class[] { boolean.class });
-
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Calendar.class);
-            code.invokevirtual().setMethod(Calendar.class, "getFirstDayOfWeek",
-                int.class, null);
-            code.invokevirtual().setMethod(type, "setFirstDayOfWeek",
-                void.class, new Class[] { int.class });
-
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Calendar.class);
-            code.invokevirtual().setMethod(Calendar.class,
-                "getMinimalDaysInFirstWeek", int.class, null);
-            code.invokevirtual().setMethod(type, "setMinimalDaysInFirstWeek",
-                void.class, new Class[] { int.class });
-
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Calendar.class);
-            code.invokevirtual().setMethod(Calendar.class, "getTimeZone",
-                TimeZone.class, null);
-            code.invokevirtual().setMethod(type, "setTimeZone", void.class,
-                new Class[] { TimeZone.class });
-        }
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // new instance factory
-        m = bc.declareMethod("newInstance", ProxyCalendar.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.anew().setType(bc);
-        code.dup();
-        code.invokespecial().setMethod("<init>", void.class, null);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // proxy the protected computeFields method b/c it is called on
-        // mutate, and some setters are final and therefore not proxyable
-        m = bc.declareMethod("computeFields", void.class, null);
-        m.makeProtected();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.constant().setValue(true);
-        code.invokestatic().setMethod(Proxies.class, "dirty", void.class,
-            new Class[] { Proxy.class, boolean.class });
-        code.aload().setThis();
-        code.invokespecial().setMethod(type, "computeFields", void.class, null);
-        code.vreturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
+    
     /**
      * Implement the methods in the {@link ProxyBean} interface.
      */
@@ -2094,13 +2141,17 @@ public class ProxyManagerImpl
             }
 
             // ASM generated proxies
-            if (Date.class.isAssignableFrom(cls)) {
+            if (Date.class.isAssignableFrom(cls) ||
+                Calendar.class.isAssignableFrom(cls)) {
                 final String proxyClassName = getProxyClassName(cls, false);
 
                 byte[] bytes = null;
                 if (Date.class.isAssignableFrom(cls)) {
                     bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
                 }
+                else if (Calendar.class.isAssignableFrom(cls)) {
+                    bytes = mgr.generateProxyCalendarBytecode(cls, false, proxyClassName);
+                }
                 if (bytes != null) {
                     final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
                     java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
@@ -2112,8 +2163,6 @@ public class ProxyManagerImpl
                 bc = mgr.generateProxyCollectionBytecode(cls, false);
             else if (Map.class.isAssignableFrom(cls))
                 bc = mgr.generateProxyMapBytecode(cls, false);
-            else if (Calendar.class.isAssignableFrom(cls))
-                bc = mgr.generateProxyCalendarBytecode(cls, false);
             else {
                 final Class fCls = cls;
                 // TODO Move this to J2DOPrivHelper


[openjpa] 05/17: OPENJPA-2909 move proxy code to own package

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 4ec4598ad1549039022a919d9c2db46722c45641
Author: Mark Struberg <st...@apache.org>
AuthorDate: Sun Apr 30 14:21:58 2023 +0200

    OPENJPA-2909 move proxy code to own package
    
    No functional change yet.
---
 .../jdbc/kernel/InstanceResultObjectProvider.java  |  2 +-
 .../meta/strats/StoreCollectionFieldStrategy.java  |  2 +-
 .../apache/openjpa/kernel/ResultShapePacker.java   |  2 +-
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 29 ++++++++++++++++------
 .../util/{ => proxy}/DelayedArrayListProxy.java    |  7 +++++-
 .../util/{ => proxy}/DelayedHashSetProxy.java      |  7 +++++-
 .../{ => proxy}/DelayedLinkedHashSetProxy.java     |  7 +++++-
 .../util/{ => proxy}/DelayedLinkedListProxy.java   |  7 +++++-
 .../{ => proxy}/DelayedPriorityQueueProxy.java     |  7 +++++-
 .../openjpa/util/{ => proxy}/DelayedProxy.java     |  2 +-
 .../util/{ => proxy}/DelayedTreeSetProxy.java      |  7 +++++-
 .../util/{ => proxy}/DelayedVectorProxy.java       |  7 +++++-
 .../apache/openjpa/util/{ => proxy}/ProxyBean.java |  4 ++-
 .../openjpa/util/{ => proxy}/ProxyCalendar.java    |  4 ++-
 .../openjpa/util/{ => proxy}/ProxyCollection.java  |  4 ++-
 .../openjpa/util/{ => proxy}/ProxyCollections.java |  5 +++-
 .../util/{ => proxy}/ProxyConcurrentMaps.java      | 11 +++++---
 .../apache/openjpa/util/{ => proxy}/ProxyDate.java |  4 ++-
 .../apache/openjpa/util/{ => proxy}/ProxyMap.java  |  4 ++-
 .../apache/openjpa/util/{ => proxy}/ProxyMaps.java |  5 +++-
 .../openjpa/jdbc/meta/TestCalendarField.java       |  2 +-
 .../openjpa/persistence/datacache/CacheTest.java   |  2 +-
 .../persistence/proxy/TestProxyCollection.java     |  2 +-
 .../delayed/DelayedProxyCollectionsTestCase.java   |  4 +--
 .../alist/TestDelayedArrayListProxyDetachLite.java |  2 +-
 .../hset/TestDelayedHashSetProxyDetachLite.java    |  2 +-
 .../TestDelayedLinkedHashSetProxyDetachLite.java   |  2 +-
 .../TestDelayedLinkedListProxyDetachLite.java      |  2 +-
 .../TestDelayedPriorityQueueProxyDetachLite.java   |  2 +-
 .../tset/TestDelayedTreeSetProxyDetachLite.java    |  2 +-
 .../vec/TestDelayedVectorProxyDetachLite.java      |  2 +-
 openjpa-project/src/doc/manual/ref_guide_pc.xml    |  2 +-
 32 files changed, 111 insertions(+), 42 deletions(-)

diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/InstanceResultObjectProvider.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/InstanceResultObjectProvider.java
index 073bd36cf..7a304844b 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/InstanceResultObjectProvider.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/InstanceResultObjectProvider.java
@@ -24,7 +24,7 @@ import org.apache.openjpa.jdbc.meta.ClassMapping;
 import org.apache.openjpa.jdbc.sql.Result;
 import org.apache.openjpa.jdbc.sql.Select;
 import org.apache.openjpa.jdbc.sql.SelectExecutor;
-import org.apache.openjpa.util.ProxyCalendar;
+import org.apache.openjpa.util.proxy.ProxyCalendar;
 
 /**
  * Object provider implementation wrapped around a {@link Select}.
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
index a60a8a2a1..9e785fd90 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/StoreCollectionFieldStrategy.java
@@ -47,7 +47,7 @@ import org.apache.openjpa.meta.ClassMetaData;
 import org.apache.openjpa.meta.FieldMetaData;
 import org.apache.openjpa.meta.JavaTypes;
 import org.apache.openjpa.util.ChangeTracker;
-import org.apache.openjpa.util.DelayedProxy;
+import org.apache.openjpa.util.proxy.DelayedProxy;
 import org.apache.openjpa.util.Id;
 import org.apache.openjpa.util.OpenJPAId;
 import org.apache.openjpa.util.Proxy;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultShapePacker.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultShapePacker.java
index 8890ffe56..805138375 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultShapePacker.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ResultShapePacker.java
@@ -20,7 +20,7 @@ package org.apache.openjpa.kernel;
 
 import java.util.Calendar;
 
-import org.apache.openjpa.util.ProxyCalendar;
+import org.apache.openjpa.util.proxy.ProxyCalendar;
 
 
 /**
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index caaf82651..0737d1ef2 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -58,6 +58,21 @@ import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Options;
 import org.apache.openjpa.lib.util.StringUtil;
+import org.apache.openjpa.util.proxy.DelayedArrayListProxy;
+import org.apache.openjpa.util.proxy.DelayedHashSetProxy;
+import org.apache.openjpa.util.proxy.DelayedLinkedHashSetProxy;
+import org.apache.openjpa.util.proxy.DelayedLinkedListProxy;
+import org.apache.openjpa.util.proxy.DelayedPriorityQueueProxy;
+import org.apache.openjpa.util.proxy.DelayedTreeSetProxy;
+import org.apache.openjpa.util.proxy.DelayedVectorProxy;
+import org.apache.openjpa.util.proxy.ProxyBean;
+import org.apache.openjpa.util.proxy.ProxyCalendar;
+import org.apache.openjpa.util.proxy.ProxyCollection;
+import org.apache.openjpa.util.proxy.ProxyCollections;
+import org.apache.openjpa.util.proxy.ProxyConcurrentMaps;
+import org.apache.openjpa.util.proxy.ProxyDate;
+import org.apache.openjpa.util.proxy.ProxyMap;
+import org.apache.openjpa.util.proxy.ProxyMaps;
 
 import serp.bytecode.BCClass;
 import serp.bytecode.BCField;
@@ -526,25 +541,25 @@ public class ProxyManagerImpl
 
     protected Class<?> loadDelayedProxy(Class<?> type) {
         if (type.equals(java.util.ArrayList.class)) {
-            return org.apache.openjpa.util.DelayedArrayListProxy.class;
+            return DelayedArrayListProxy.class;
         }
         if (type.equals(java.util.HashSet.class)) {
-            return org.apache.openjpa.util.DelayedHashSetProxy.class;
+            return DelayedHashSetProxy.class;
         }
         if (type.equals(java.util.LinkedList.class)) {
-            return org.apache.openjpa.util.DelayedLinkedListProxy.class;
+            return DelayedLinkedListProxy.class;
         }
         if (type.equals(java.util.Vector.class)) {
-            return org.apache.openjpa.util.DelayedVectorProxy.class;
+            return DelayedVectorProxy.class;
         }
         if (type.equals(java.util.LinkedHashSet.class)) {
-            return org.apache.openjpa.util.DelayedLinkedHashSetProxy.class;
+            return DelayedLinkedHashSetProxy.class;
         }
         if (type.equals(java.util.SortedSet.class) || type.equals(java.util.TreeSet.class)) {
-            return org.apache.openjpa.util.DelayedTreeSetProxy.class;
+            return DelayedTreeSetProxy.class;
         }
         if (type.equals(java.util.PriorityQueue.class)) {
-            return org.apache.openjpa.util.DelayedPriorityQueueProxy.class;
+            return DelayedPriorityQueueProxy.class;
         }
         return null;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedArrayListProxy.java
similarity index 97%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedArrayListProxy.java
index 9a8bcc48e..84180c356 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedArrayListProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.ArrayList;
@@ -32,6 +32,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * ArrayList proxy with delay loading capability.  Allows non-indexed
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedHashSetProxy.java
similarity index 97%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedHashSetProxy.java
index cb142f56d..8d5a94f1f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedHashSetProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.Collection;
@@ -30,6 +30,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * HashSet proxy with delay loading capability. Allows non-indexed add and
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedLinkedHashSetProxy.java
similarity index 97%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedLinkedHashSetProxy.java
index a15618771..0eaf887d8 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedLinkedHashSetProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.Collection;
@@ -30,6 +30,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * LinkedHashSet proxy with delay loading capability.  Allows non-indexed
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedLinkedListProxy.java
similarity index 98%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedLinkedListProxy.java
index 77562c628..edf3e413b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedLinkedListProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.Collection;
@@ -32,6 +32,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * LinkedList proxy with delay loading capability.  Allows non-indexed
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedPriorityQueueProxy.java
similarity index 97%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedPriorityQueueProxy.java
index 54283b9ec..9256a5ec1 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedPriorityQueueProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.Collection;
@@ -31,6 +31,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * PriorityQueue proxy with delay loading capability.  Allows non-indexed
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedProxy.java
similarity index 98%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedProxy.java
index ebbb24eaa..53c38640f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedTreeSetProxy.java
similarity index 97%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedTreeSetProxy.java
index 0bdbb4b24..8890f6449 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedTreeSetProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.Collection;
@@ -32,6 +32,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * TreeSet proxy with delay loading capability.  Allows non-indexed
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedVectorProxy.java
similarity index 98%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedVectorProxy.java
index d71495030..d222d3018 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/DelayedVectorProxy.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.ObjectStreamException;
 import java.util.Collection;
@@ -33,6 +33,11 @@ import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.BrokerFactory;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.DelayedCollectionChangeTrackerImpl;
+import org.apache.openjpa.util.Proxies;
+import org.apache.openjpa.util.Proxy;
 
 /**
  * Vector proxy with delay loading capability.  Allows non-indexed
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyBean.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyBean.java
similarity index 93%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyBean.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyBean.java
index cad7c64ba..477fe1627 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyBean.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyBean.java
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
+
+import org.apache.openjpa.util.Proxy;
 
 /**
  * Interface implemented by all generated custom types, which use JavaBean
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCalendar.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCalendar.java
similarity index 93%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCalendar.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCalendar.java
index 068992484..6dbe6a700 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCalendar.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCalendar.java
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
+
+import org.apache.openjpa.util.Proxy;
 
 /**
  * Interface implemented by all generated proxies on {@link java.util.Calendar}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollection.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCollection.java
similarity index 94%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollection.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCollection.java
index b77c902a9..2fd8eaf9c 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollection.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCollection.java
@@ -16,11 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.util.Collection;
 import java.util.Comparator;
 
+import org.apache.openjpa.util.Proxy;
+
 /**
  * Interface implemented by all proxy collection types.
  *
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCollections.java
similarity index 99%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCollections.java
index 9f94c530d..31de8f5b8 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyCollections.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyCollections.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -31,6 +31,9 @@ import org.apache.openjpa.kernel.BrokerImpl;
 import org.apache.openjpa.kernel.DetachedValueStateManager;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
 import org.apache.openjpa.kernel.StateManagerImpl;
+import org.apache.openjpa.util.ChangeTracker;
+import org.apache.openjpa.util.CollectionChangeTracker;
+import org.apache.openjpa.util.Proxies;
 
 /**
  * Utility methods used by collection proxies.
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyConcurrentMaps.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyConcurrentMaps.java
similarity index 87%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyConcurrentMaps.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyConcurrentMaps.java
index ad3f5194f..f2d32ec7e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyConcurrentMaps.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyConcurrentMaps.java
@@ -16,10 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.util.Map;
 
+import org.apache.openjpa.util.MapChangeTracker;
+import org.apache.openjpa.util.Proxies;
+
 /**
  * Utility methods used by concurrent map proxies.
  *
@@ -29,7 +32,7 @@ public class ProxyConcurrentMaps extends ProxyMaps {
      * Call before invoking {@link Map#remove(key, value) } on super.
      */
     public static boolean beforeRemove(ProxyMap map, Object key, Object value) {
-        dirty(map, false);
+        Proxies.dirty(map, false);
         return map.containsKey(key);
     }
 
@@ -46,8 +49,8 @@ public class ProxyConcurrentMaps extends ProxyMaps {
             if (map.getChangeTracker() != null) {
                 ((MapChangeTracker) map.getChangeTracker()).removed(key, ret);
             }
-            removed(map, key, true);
-            removed(map, ret, false);
+            Proxies.removed(map, key, true);
+            Proxies.removed(map, ret, false);
         }
         return ret;
     }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyDate.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyDate.java
similarity index 93%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyDate.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyDate.java
index ae783fa9d..8fcf043f4 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyDate.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyDate.java
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
+
+import org.apache.openjpa.util.Proxy;
 
 /**
  * Interface implemented by all generated proxies on {@link java.util.Date}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMap.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMap.java
similarity index 94%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMap.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMap.java
index c6b2017cc..ea04f365f 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMap.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMap.java
@@ -16,11 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.util.Comparator;
 import java.util.Map;
 
+import org.apache.openjpa.util.Proxy;
+
 /**
  * Interface implemented by proxies on {@link Map} types.
  *
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java
similarity index 98%
rename from openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java
rename to openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java
index 3a73d2501..6d89c504b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyMaps.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openjpa.util;
+package org.apache.openjpa.util.proxy;
 
 import java.io.InputStream;
 import java.io.ObjectStreamException;
@@ -27,6 +27,9 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
+import org.apache.openjpa.util.MapChangeTracker;
+import org.apache.openjpa.util.Proxies;
+
 /**
  * Utility methods used by map proxies.
  *
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestCalendarField.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestCalendarField.java
index 90bf2d95f..83a462f1c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestCalendarField.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestCalendarField.java
@@ -26,7 +26,7 @@ import java.util.TimeZone;
 
 import org.apache.openjpa.persistence.simple.TemporalFieldTypes;
 import org.apache.openjpa.persistence.test.SingleEMTestCase;
-import org.apache.openjpa.util.ProxyCalendar;
+import org.apache.openjpa.util.proxy.ProxyCalendar;
 
 public class TestCalendarField extends SingleEMTestCase {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java
index 8680f029f..291aefa5c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/CacheTest.java
@@ -73,7 +73,7 @@ import org.apache.openjpa.util.CacheMap;
 import org.apache.openjpa.util.Id;
 import org.apache.openjpa.util.ImplHelper;
 import org.apache.openjpa.util.OpenJPAException;
-import org.apache.openjpa.util.ProxyDate;
+import org.apache.openjpa.util.proxy.ProxyDate;
 
 import junit.framework.AssertionFailedError;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestProxyCollection.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestProxyCollection.java
index 95769e9dc..045dbcfa5 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestProxyCollection.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/TestProxyCollection.java
@@ -24,7 +24,7 @@ import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 import org.apache.openjpa.util.ChangeTracker;
-import org.apache.openjpa.util.ProxyCollection;
+import org.apache.openjpa.util.proxy.ProxyCollection;
 
 /**
  * Tests proxying and change tracking of collection fields for modification in
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/DelayedProxyCollectionsTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/DelayedProxyCollectionsTestCase.java
index 849c7bf75..db03cf02a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/DelayedProxyCollectionsTestCase.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/DelayedProxyCollectionsTestCase.java
@@ -33,9 +33,9 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.kernel.DetachedStateManager;
 import org.apache.openjpa.persistence.test.SQLListenerTestCase;
-import org.apache.openjpa.util.DelayedProxy;
+import org.apache.openjpa.util.proxy.DelayedProxy;
 import org.apache.openjpa.util.Proxy;
-import org.apache.openjpa.util.ProxyCollection;
+import org.apache.openjpa.util.proxy.ProxyCollection;
 
 /**
  * Verifies generic delay-load capabilities for delay-load collection proxies.
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/alist/TestDelayedArrayListProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/alist/TestDelayedArrayListProxyDetachLite.java
index 5d61568e9..bb217efa0 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/alist/TestDelayedArrayListProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/alist/TestDelayedArrayListProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedArrayListProxy;
+import org.apache.openjpa.util.proxy.DelayedArrayListProxy;
 
 public class TestDelayedArrayListProxyDetachLite extends TestDelayedArrayListProxy {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/hset/TestDelayedHashSetProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/hset/TestDelayedHashSetProxyDetachLite.java
index 194215798..b13af1f83 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/hset/TestDelayedHashSetProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/hset/TestDelayedHashSetProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedHashSetProxy;
+import org.apache.openjpa.util.proxy.DelayedHashSetProxy;
 
 public class TestDelayedHashSetProxyDetachLite extends TestDelayedHashSetProxy {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/lhset/TestDelayedLinkedHashSetProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/lhset/TestDelayedLinkedHashSetProxyDetachLite.java
index dbd70f361..c232c3166 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/lhset/TestDelayedLinkedHashSetProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/lhset/TestDelayedLinkedHashSetProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedLinkedHashSetProxy;
+import org.apache.openjpa.util.proxy.DelayedLinkedHashSetProxy;
 
 public class TestDelayedLinkedHashSetProxyDetachLite extends TestDelayedLinkedHashSetProxy {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/llist/TestDelayedLinkedListProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/llist/TestDelayedLinkedListProxyDetachLite.java
index b56faf693..c491653e8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/llist/TestDelayedLinkedListProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/llist/TestDelayedLinkedListProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedLinkedListProxy;
+import org.apache.openjpa.util.proxy.DelayedLinkedListProxy;
 
 public class TestDelayedLinkedListProxyDetachLite extends TestDelayedLinkedListProxy {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/pqueue/TestDelayedPriorityQueueProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/pqueue/TestDelayedPriorityQueueProxyDetachLite.java
index 9026a0cc8..c4c32d77c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/pqueue/TestDelayedPriorityQueueProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/pqueue/TestDelayedPriorityQueueProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedPriorityQueueProxy;
+import org.apache.openjpa.util.proxy.DelayedPriorityQueueProxy;
 
 public class TestDelayedPriorityQueueProxyDetachLite extends TestDelayedPriorityQueueProxy {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/tset/TestDelayedTreeSetProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/tset/TestDelayedTreeSetProxyDetachLite.java
index 9ea4d3713..fd8b2e8c7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/tset/TestDelayedTreeSetProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/tset/TestDelayedTreeSetProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedTreeSetProxy;
+import org.apache.openjpa.util.proxy.DelayedTreeSetProxy;
 
 public class TestDelayedTreeSetProxyDetachLite extends TestDelayedTreeSetProxy {
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/vec/TestDelayedVectorProxyDetachLite.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/vec/TestDelayedVectorProxyDetachLite.java
index 7b17b6116..de5334da0 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/vec/TestDelayedVectorProxyDetachLite.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/proxy/delayed/vec/TestDelayedVectorProxyDetachLite.java
@@ -25,7 +25,7 @@ import jakarta.persistence.EntityManager;
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.persistence.proxy.delayed.IDepartment;
 import org.apache.openjpa.persistence.proxy.delayed.IEmployee;
-import org.apache.openjpa.util.DelayedVectorProxy;
+import org.apache.openjpa.util.proxy.DelayedVectorProxy;
 
 public class TestDelayedVectorProxyDetachLite extends TestDelayedVectorProxy {
 
diff --git a/openjpa-project/src/doc/manual/ref_guide_pc.xml b/openjpa-project/src/doc/manual/ref_guide_pc.xml
index 56dcfabbc..bd3049ddf 100644
--- a/openjpa-project/src/doc/manual/ref_guide_pc.xml
+++ b/openjpa-project/src/doc/manual/ref_guide_pc.xml
@@ -1495,7 +1495,7 @@ operations on collections without requiring them to be loaded. Delayed proxies a
 loaded when an operation is performed that requires loading, such
 as iteration, size, serialization, and indexOf.  They can also be loaded by casting the
 proxy to a <ulink url="../../apidocs/org/apache/openjpa/util/DelayedProxy.html"><classname>
-org.apache.openjpa.util.DelayedProxy</classname></ulink> and invoking the
+                            org.apache.openjpa.util.proxy.DelayedProxy</classname></ulink> and invoking the
 <methodname>load</methodname> method. If a broker factory is available after detaching the owning
 entity, a collection may be available for delayed loading after the persistence context has been
 cleared. In post-detachment, entities that are loaded are not associated with a persistence context.


[openjpa] 17/17: OPENJPA-2908 reflekt Jakarta API in our readme

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 14239329784a1b1ef2e05144457c13cc296867eb
Author: Mark Struberg <st...@apache.org>
AuthorDate: Sat May 6 09:11:58 2023 +0200

    OPENJPA-2908 reflekt Jakarta API in our readme
---
 README.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.adoc b/README.adoc
index 384c071b5..68643cda5 100644
--- a/README.adoc
+++ b/README.adoc
@@ -3,7 +3,7 @@
 == Preface
 Thank you for downloading this release of Apache OpenJPA.
 
-Apache OpenJPA is an implementation of the Java Persistence API specification.
+Apache OpenJPA is an implementation of the Jakarta Persistence API 3.0 specification.
 
 
 == License


[openjpa] 02/17: OPENJPA-2809 more test fixes

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 3a436b585da4e0f2acf3a2583834c0f12cae0bbb
Author: Mark Struberg <st...@apache.org>
AuthorDate: Mon Apr 24 12:25:23 2023 +0200

    OPENJPA-2809 more test fixes
---
 ...keCaseDDLEntity.java => SnakeCaseDDLMy1Entity.java} |  2 +-
 .../openjpa/jdbc/sql/TestDelimitIdentifiers.java       |  8 ++++----
 .../org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java  | 18 +++++++++---------
 ...BLobsInner2Entity.java => EJBLobsInner2Entity.java} |  2 +-
 ...EJBLobsInnerEntity.java => EJBLobsInnerEntity.java} |  8 ++++----
 .../apache/openjpa/persistence/kernel/TestEJBLobs.java | 14 +++++++-------
 .../kernel/common/apps/META-INF/persistence.xml        |  4 ++--
 ...der => jakarta.persistence.spi.PersistenceProvider} |  0
 8 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy1Entity.java
similarity index 97%
rename from openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLEntity.java
rename to openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy1Entity.java
index a55d3315f..8a065a715 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy1Entity.java
@@ -20,7 +20,7 @@ import jakarta.persistence.Entity;
 import jakarta.persistence.Id;
 
 @Entity
-public class SnakeCaseDDLEntity {
+public class SnakeCaseDDLMy1Entity {
     @Id
     private String fooBar;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java
index 187fefa11..fdd82e3a7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java
@@ -132,13 +132,13 @@ public class TestDelimitIdentifiers {
             {
                 final EntityManager em = entityManagerFactory.createEntityManager();
                 try {
-                    assertEquals(2, em.createQuery("select x from TestDelimitIdentifiers$AllFieldTypes x").
+                    assertEquals(2, em.createQuery("select x from DelimitedIdentifiersAllFieldTypesEntity x").
                             getResultList().size());
-                    assertEquals(1, em.createQuery("select x from TestDelimitIdentifiers$AllFieldTypes x where x.stringField = 'foo'").
+                    assertEquals(1, em.createQuery("select x from DelimitedIdentifiersAllFieldTypesEntity x where x.stringField = 'foo'").
                             getResultList().size());
-                    assertEquals(0, em.createQuery("select x from TestDelimitIdentifiers$AllFieldTypes x where x.stringField = 'bar'").
+                    assertEquals(0, em.createQuery("select x from DelimitedIdentifiersAllFieldTypesEntity x where x.stringField = 'bar'").
                             getResultList().size());
-                    assertEquals(1, em.createQuery("select x from TestDelimitIdentifiers$AllFieldTypes x where x.intField >= 10").
+                    assertEquals(1, em.createQuery("select x from DelimitedIdentifiersAllFieldTypesEntity x where x.intField >= 10").
                             getResultList().size());
                 } finally {
                     em.close();
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
index 35d7c8329..638947aa9 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
@@ -62,7 +62,7 @@ public class TestSnakeCaseDDL {
 
         final PersistenceUnitInfoImpl persistenceUnitInfo = new PersistenceUnitInfoImpl();
         persistenceUnitInfo.setExcludeUnlistedClasses(true);
-        persistenceUnitInfo.addManagedClassName(SnakeCaseDDLEntity.class.getName());
+        persistenceUnitInfo.addManagedClassName(SnakeCaseDDLMy1Entity.class.getName());
         persistenceUnitInfo.addManagedClassName(SnakeCaseDDLMy2Entity.class.getName());
         final BasicDataSource ds = new BasicDataSource();
         ds.setDriver(derbyDriver);
@@ -74,7 +74,7 @@ public class TestSnakeCaseDDL {
         final Map<String, Collection<String>> columns = new HashMap<>();
         try (final Connection connection = ds.getConnection()) {
             try (final ResultSet tables = connection.getMetaData()
-                    .getTables(null, null, "TestSnakeCaseDDL$MyEntity%", null)) {
+                    .getTables(null, null, "SnakeCaseDDLMy%", null)) {
                 while (tables.next()) {
                     final String table = tables.getString(3);
                     createdTables.add(table);
@@ -100,7 +100,7 @@ public class TestSnakeCaseDDL {
                 final EntityManager em = entityManagerFactory.createEntityManager();
                 em.getTransaction().begin();
                 try {
-                    final SnakeCaseDDLEntity entity = new SnakeCaseDDLEntity();
+                    final SnakeCaseDDLMy1Entity entity = new SnakeCaseDDLMy1Entity();
                     entity.setFooBar("1");
                     entity.setThisField(123);
                     em.persist(entity);
@@ -117,7 +117,7 @@ public class TestSnakeCaseDDL {
             {
                 final EntityManager em = entityManagerFactory.createEntityManager();
                 try {
-                    final SnakeCaseDDLEntity myEntity1 = em.find(SnakeCaseDDLEntity.class, "1");
+                    final SnakeCaseDDLMy1Entity myEntity1 = em.find(SnakeCaseDDLMy1Entity.class, "1");
                     assertNotNull(myEntity1);
                     assertEquals("1", myEntity1.getFooBar());
                     assertEquals(123, myEntity1.getThisField());
@@ -127,7 +127,7 @@ public class TestSnakeCaseDDL {
             }
             try (final Connection connection = ds.getConnection();
                  final Statement statement = connection.createStatement();
-                 final ResultSet rs = statement.executeQuery("select foo_bar, this_field from \"TestSnakeCaseDDL$MyEntity1\"")) {
+                 final ResultSet rs = statement.executeQuery("select foo_bar, this_field from \"SnakeCaseDDLMy1Entity\"")) {
                 assertTrue (rs.next());
                 assertEquals("1", rs.getString(1));
                 assertEquals(123, rs.getInt(2));
@@ -137,10 +137,10 @@ public class TestSnakeCaseDDL {
             entityManagerFactory.close();
         }
         ds.close();
-        assertEquals(2, columns.get("TestSnakeCaseDDL$MyEntity1").size());
-        assertTrue(columns.get("TestSnakeCaseDDL$MyEntity1").contains("FOO_BAR"));
-        assertTrue(columns.get("TestSnakeCaseDDL$MyEntity1").contains("THIS_FIELD"));
-        assertEquals(singleton("ANOTHER_FIELD"), columns.get("TestSnakeCaseDDL$MyEntity2"));
+        assertEquals(2, columns.get("SnakeCaseDDLMy1Entity").size());
+        assertTrue(columns.get("SnakeCaseDDLMy1Entity").contains("FOO_BAR"));
+        assertTrue(columns.get("SnakeCaseDDLMy1Entity").contains("THIS_FIELD"));
+        assertEquals(singleton("ANOTHER_FIELD"), columns.get("SnakeCaseDDLMy2Entity"));
     }
 
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobsInner2Entity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInner2Entity.java
similarity index 95%
rename from openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobsInner2Entity.java
rename to openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInner2Entity.java
index d26239e15..78a2659ee 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobsInner2Entity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInner2Entity.java
@@ -24,7 +24,7 @@ import jakarta.persistence.Table;
 
 @Entity
 @Table(name = "Inner2")
-public class TestEJBLobsInner2Entity implements Serializable {
+public class EJBLobsInner2Entity implements Serializable {
     private static final long serialVersionUID = 1L;
     @Id
     public String string = null;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobsInnerEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInnerEntity.java
similarity index 89%
rename from openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobsInnerEntity.java
rename to openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInnerEntity.java
index 70aa48646..2bf33bda3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobsInnerEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/EJBLobsInnerEntity.java
@@ -24,7 +24,7 @@ import jakarta.persistence.Table;
 
 @Entity
 @Table(name = "inntable")
-public class TestEJBLobsInnerEntity {
+public class EJBLobsInnerEntity {
 
     @Id
     private String string = null;
@@ -32,7 +32,7 @@ public class TestEJBLobsInnerEntity {
     private Object eblob = null;
 
     @OneToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
-    private TestEJBLobsInner2Entity blobField = null;
+    private EJBLobsInner2Entity blobField = null;
 
     public String getString() {
         return string;
@@ -58,11 +58,11 @@ public class TestEJBLobsInnerEntity {
         eblob = val;
     }
 
-    public TestEJBLobsInner2Entity getBlob() {
+    public EJBLobsInner2Entity getBlob() {
         return blobField;
     }
 
-    public void setBlob(TestEJBLobsInner2Entity val) {
+    public void setBlob(EJBLobsInner2Entity val) {
         blobField = val;
     }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobs.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobs.java
index 8057e8e92..4fd4b3f32 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobs.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestEJBLobs.java
@@ -25,7 +25,7 @@ import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
 public class TestEJBLobs extends AbstractTestCase {
 
     private EntityManager _pm = null;
-    private TestEJBLobsInnerEntity _inner = null;
+    private EJBLobsInnerEntity _inner = null;
 
     public TestEJBLobs(String name) {
         super(name, "kernelcactusapp");
@@ -33,7 +33,7 @@ public class TestEJBLobs extends AbstractTestCase {
 
     @Override
     public void setUp() throws Exception {
-        super.setUp(TestEJBLobsInnerEntity.class, TestEJBLobsInner2Entity.class);
+        super.setUp(EJBLobsInnerEntity.class, EJBLobsInner2Entity.class);
 
         EntityManager em = currentEntityManager();
         startTx(em);
@@ -41,12 +41,12 @@ public class TestEJBLobs extends AbstractTestCase {
         endTx(em);
         endEm(em);
 
-        TestEJBLobsInnerEntity inner = new TestEJBLobsInnerEntity();
+        EJBLobsInnerEntity inner = new EJBLobsInnerEntity();
         inner.setString("string");
         inner.setClob("clobField");
         inner.setEBlob("eblob");
 
-        TestEJBLobsInner2Entity inner2 = new TestEJBLobsInner2Entity();
+        EJBLobsInner2Entity inner2 = new EJBLobsInner2Entity();
         inner2.string = "inner2";
         inner.setBlob(inner2);
 
@@ -64,7 +64,7 @@ public class TestEJBLobs extends AbstractTestCase {
         endEm(_pm);
 
         _pm = currentEntityManager();
-        _inner = _pm.find(TestEJBLobsInnerEntity.class, "string");
+        _inner = _pm.find(EJBLobsInnerEntity.class, "string");
     }
 
     public void testOtherFields() {
@@ -91,13 +91,13 @@ public class TestEJBLobs extends AbstractTestCase {
     }
 
     public void testDelete() {
-        deleteAll(TestEJBLobsInnerEntity.class);
+        deleteAll(EJBLobsInnerEntity.class);
     }
 
     public void testUpdate() {
         startTx(_pm);
         _inner.setClob("newvalue");
-        TestEJBLobsInner2Entity inner2 = new TestEJBLobsInner2Entity();
+        EJBLobsInner2Entity inner2 = new EJBLobsInner2Entity();
         inner2.string = "newinner2";
         _inner.setBlob(inner2);
         endTx(_pm);
diff --git a/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/kernel/common/apps/META-INF/persistence.xml b/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/kernel/common/apps/META-INF/persistence.xml
index c391f39fe..c786290f9 100644
--- a/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/kernel/common/apps/META-INF/persistence.xml
+++ b/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/kernel/common/apps/META-INF/persistence.xml
@@ -113,8 +113,8 @@
 		<class>org.apache.openjpa.persistence.kernel.common.apps.SingleIdString</class>
 		<class>org.apache.openjpa.persistence.kernel.common.apps.SingleIdWrapper</class>
 		<class>org.apache.openjpa.persistence.kernel.common.apps.ValueStrategyPC</class>
-		<class>org.apache.openjpa.persistence.kernel.TestEJBLobsInnerEntity</class>
-		<class>org.apache.openjpa.persistence.kernel.TestEJBLobsInner2Entity</class>
+		<class>org.apache.openjpa.persistence.kernel.EJBLobsInnerEntity</class>
+		<class>org.apache.openjpa.persistence.kernel.EJBLobsInner2Entity</class>
 		<class>org.apache.openjpa.persistence.kernel.StaticInnerClassesContainer.Inner</class>
 		<class>org.apache.openjpa.persistence.kernel.TestEJBNoPersistentFieldsNholderEntity</class>
 		<class>org.apache.openjpa.persistence.kernel.EJBNoPersistentFieldsNoPersistentFieldsPCEntity</class>
diff --git a/openjpa-persistence/src/main/resources/META-INF/services/javax.persistence.spi.PersistenceProvider b/openjpa-persistence/src/main/resources/META-INF/services/jakarta.persistence.spi.PersistenceProvider
similarity index 100%
rename from openjpa-persistence/src/main/resources/META-INF/services/javax.persistence.spi.PersistenceProvider
rename to openjpa-persistence/src/main/resources/META-INF/services/jakarta.persistence.spi.PersistenceProvider


[openjpa] 15/17: OPENJPA-2909 fix ClassLoading if proxy cannot be loaded

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 2535a24d55ac9ef70837b151dc50c0682ba225eb
Author: Mark Struberg <st...@apache.org>
AuthorDate: Thu May 4 21:31:00 2023 +0200

    OPENJPA-2909 fix ClassLoading if proxy cannot be loaded
---
 openjpa-integration/tck/pom.xml                          |  4 ++--
 .../java/org/apache/openjpa/util/GeneratedClasses.java   |  7 ++++++-
 .../java/org/apache/openjpa/util/TestProxyManager.java   | 16 ++++++++++++++++
 .../openjpa-maven-plugin/src/it/default_settings/pom.xml |  9 ++++-----
 .../src/it/dependingArtifact/pom.xml                     | 11 +++++------
 .../src/it/enhanceIncludesExcludes/pom.xml               |  9 ++++-----
 .../src/it/nonDefaultPersistenceXml/pom.xml              |  9 ++++-----
 .../src/it/sqlActionDropSchema/pom.xml                   |  9 ++++-----
 .../openjpa-maven-plugin/src/it/testDependencies/pom.xml |  9 ++++-----
 9 files changed, 49 insertions(+), 34 deletions(-)

diff --git a/openjpa-integration/tck/pom.xml b/openjpa-integration/tck/pom.xml
index d50e4b447..5d9bcb98b 100644
--- a/openjpa-integration/tck/pom.xml
+++ b/openjpa-integration/tck/pom.xml
@@ -445,8 +445,8 @@ databaseName=${db.name}
 
         <dependencies>
           <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
             <scope>compile</scope>
           </dependency>
           <dependency>
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
index 47e5961d2..b6ddf2565 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
@@ -73,7 +73,12 @@ public class GeneratedClasses {
 
     public static Class loadAsmClass(String className, byte[] classBytes, Class<?> proxiedClass, ClassLoader loader) {
         ClassLoaderProxyService pcls = new ClassLoaderProxyService(null, loader);
-        return pcls.defineAndLoad(className, classBytes, proxiedClass);
+        try {
+            return pcls.defineAndLoad(className, classBytes, proxiedClass);
+        } catch (Throwable t) {
+            // this happens e.g when trying to create a proxy for a class with private access.
+            throw new GeneralException(className).setCause(t);
+        }
     }
 
     /**
diff --git a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
index 4ee67be86..f3c13e606 100644
--- a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
+++ b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
@@ -1017,6 +1017,8 @@ public class TestProxyManager {
     public static class CustomBean {
         private String _string;
         private int _number;
+        private double d1;
+        private double d2;
 
         public String getString() {
             return _string;
@@ -1033,6 +1035,20 @@ public class TestProxyManager {
         public void setNumber(int number) {
             _number = number;
         }
+
+        public void setLocation(double d1, double d2) {
+            this.d1 = d1;
+            this.d2 = d2;
+        }
+
+        public double getD1() {
+            return d1;
+        }
+
+        public double getD2() {
+            return d2;
+        }
+
     }
 
     /**
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml
index 7d12270dc..5aef44c9c 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/default_settings/pom.xml
@@ -36,15 +36,14 @@
     <dependencies>
 
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml
index 2970cdc0d..aa9c7e90c 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/dependingArtifact/pom.xml
@@ -42,14 +42,13 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
-        </dependency>
-    </dependencies>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
+        </dependency>    </dependencies>
 
     <build>
         <plugins>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml
index 04703a0d9..5e9028c76 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/enhanceIncludesExcludes/pom.xml
@@ -36,14 +36,13 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml
index 3d0aa0689..dc5381b97 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/nonDefaultPersistenceXml/pom.xml
@@ -35,14 +35,13 @@
     <version>1.0-SNAPSHOT</version>
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml
index f4ab5433e..43ec91b7d 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/sqlActionDropSchema/pom.xml
@@ -35,15 +35,14 @@
     <version>1.0-SNAPSHOT</version>
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-kernel</artifactId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
index 34f9d826e..4aacbdb1e 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
@@ -35,14 +35,13 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
-
     </dependencies>
 
     <build>


[openjpa] 12/17: OPENJPA-2909 more proxy generator fixes

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit ec946b6789184a3be7ffe7d18f59bcac4238e08e
Author: Mark Struberg <st...@apache.org>
AuthorDate: Thu May 4 12:13:08 2023 +0200

    OPENJPA-2909 more proxy generator fixes
---
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 153 ++++++++++++++++++++-
 1 file changed, 152 insertions(+), 1 deletion(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 32d541d68..1c4e4e498 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -747,7 +747,7 @@ public class ProxyManagerImpl
         delegateConstructors(ct, type, superClassFileNname);
         addInstanceVariables(ct);
         addProxyMethods(ct, false, proxyClassDef, type);
-        addProxyCollectionMethods(ct, proxyClassDef, type);
+        addProxyMapMethods(ct, proxyClassDef, type);
         proxyRecognizedMethods(ct, proxyClassDef, type, ProxyMaps.class, ProxyMap.class);
         proxySetters(ct, proxyClassDef, type);
         addWriteReplaceMethod(ct, proxyClassDef, runtime);
@@ -1028,6 +1028,157 @@ public class ProxyManagerImpl
         }
     }
 
+
+    private void addProxyMapMethods(ClassWriterTracker ct, String proxyClassDef, Class type) {
+        // change tracker
+        {
+            ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                    "changeTracker", Type.getDescriptor(MapChangeTracker.class), null, null).visitEnd();
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getChangeTracker",
+                    Type.getMethodDescriptor(Type.getType(ChangeTracker.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "changeTracker", Type.getDescriptor(MapChangeTracker.class));
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // Map copy
+        {
+            Constructor cons = findCopyConstructor(type);
+            if (cons == null && SortedMap.class.isAssignableFrom(type)) {
+                cons = findComparatorConstructor(type);
+            }
+            Class[] params = (cons == null) ? new Class[0]
+                    : cons.getParameterTypes();
+
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "copy",
+                    Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
+            mv.visitInsn(Opcodes.DUP);
+
+            if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                if (params[0] == Comparator.class) {
+                    mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(SortedMap.class));
+                    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, Type.getInternalName(SortedMap.class), "comparator",
+                            Type.getMethodDescriptor(Type.getType(Comparator.class)), true);
+                }
+                else {
+                    // otherwise just pass the parameter
+                    mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
+                }
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
+
+            if (params.length == 0 || params[0] == Comparator.class) {
+                mv.visitInsn(Opcodes.DUP);
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Collection.class));
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "putAll",
+                        Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Map.class)), false);
+                mv.visitInsn(Opcodes.POP);
+            }
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // key type
+        {
+            ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                    "keyType", Type.getDescriptor(Class.class), null, null).visitEnd();
+
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getKeyType",
+                    Type.getMethodDescriptor(Type.getType(Class.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "keyType", Type.getDescriptor(Class.class));
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // value type
+        {
+            ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                    "valueType", Type.getDescriptor(Class.class), null, null).visitEnd();
+
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getValueType",
+                    Type.getMethodDescriptor(Type.getType(Class.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "valueType", Type.getDescriptor(Class.class));
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // new instance factory
+        {
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "newInstance",
+                    Type.getMethodDescriptor(Type.getType(ProxyMap.class),
+                            Type.getType(Class.class), Type.getType(Class.class), Type.getType(Comparator.class),
+                            Type.BOOLEAN_TYPE, Type.BOOLEAN_TYPE)
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, proxyClassDef);
+            mv.visitInsn(Opcodes.DUP);
+
+            Constructor cons = findComparatorConstructor(type);
+            Class[] params = (cons == null) ? new Class[0] : cons.getParameterTypes();
+            if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 3);
+            }
+
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, proxyClassDef, "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
+
+            mv.visitVarInsn(Opcodes.ASTORE, 6);
+            mv.visitVarInsn(Opcodes.ALOAD, 6);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "keyType", Type.getDescriptor(Class.class));
+
+            mv.visitVarInsn(Opcodes.ALOAD, 6);
+            mv.visitVarInsn(Opcodes.ALOAD, 2);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "valueType", Type.getDescriptor(Class.class));
+
+            mv.visitVarInsn(Opcodes.ILOAD, 4);
+            Label lNotTrack = new Label();
+            mv.visitJumpInsn(Opcodes.IFEQ, lNotTrack);
+            mv.visitVarInsn(Opcodes.ALOAD, 6);
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(MapChangeTrackerImpl.class));
+
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 6);
+
+            mv.visitVarInsn(Opcodes.ILOAD, 5);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(MapChangeTrackerImpl.class), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Map.class), Type.BOOLEAN_TYPE),
+                    false);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "changeTracker", Type.getDescriptor(MapChangeTracker.class));
+
+            mv.visitLabel(lNotTrack);
+            mv.visitVarInsn(Opcodes.ALOAD, 6);
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+    }
+
+
     private void proxyRecognizedMethods(ClassWriterTracker ct, String proxyClassDef, Class<?> type,
                                         Class<?> helper, Class<?> proxyType) {
         Method[] meths = type.getMethods();


[openjpa] 13/17: OPENJPA-2909 more class generator fixes

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 7532498e7ac8eda4fa38c5757daf56414b56180e
Author: Mark Struberg <st...@apache.org>
AuthorDate: Thu May 4 18:14:43 2023 +0200

    OPENJPA-2909 more class generator fixes
---
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 28 ++++++++++++++++------
 .../org/apache/openjpa/util/TestProxyManager.java  |  6 ++---
 2 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 1c4e4e498..80e8dc33c 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -613,6 +613,9 @@ public class ProxyManagerImpl
     private Class generateAndLoadProxyDate(Class type, boolean runtime, ClassLoader l) {
         final String proxyClassName = getProxyClassName(type, runtime);
         final byte[] classBytes = generateProxyDateBytecode(type, runtime, proxyClassName);
+        if (classBytes == null) {
+            return null;
+        }
 
         return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
     }
@@ -620,6 +623,9 @@ public class ProxyManagerImpl
     private Class generateAndLoadProxyCalendar(Class type, boolean runtime, ClassLoader l) {
         final String proxyClassName = getProxyClassName(type, runtime);
         final byte[] classBytes = generateProxyCalendarBytecode(type, runtime, proxyClassName);
+        if (classBytes == null) {
+            return null;
+        }
 
         return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
     }
@@ -627,22 +633,31 @@ public class ProxyManagerImpl
     private Class generateAndLoadProxyCollection(Class type, boolean runtime, ClassLoader l) {
         final String proxyClassName = getProxyClassName(type, runtime);
         final byte[] classBytes = generateProxyCollectionBytecode(type, runtime, proxyClassName);
+        if (classBytes == null) {
+            return null;
+        }
 
-        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyCollection.class, l);
     }
 
     private Class generateAndLoadProxyMap(Class type, boolean runtime, ClassLoader l) {
         final String proxyClassName = getProxyClassName(type, runtime);
         final byte[] classBytes = generateProxyMapBytecode(type, runtime, proxyClassName);
+        if (classBytes == null) {
+            return null;
+        }
 
-        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyMap.class, l);
     }
 
     private Class generateAndLoadProxyBean(Class type, boolean runtime, ClassLoader l) {
         final String proxyClassName = getProxyClassName(type, runtime);
         final byte[] classBytes = generateProxyBeanBytecode(type, runtime, proxyClassName);
+        if (classBytes == null) {
+            return null;
+        }
 
-        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyBean.class, l);
     }
 
     /**
@@ -849,7 +864,7 @@ public class ProxyManagerImpl
                 mv.visitVarInsn(Opcodes.ALOAD, 1);
                 mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
             }
-            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, proxyClassDef, "<init>",
                     Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
             int beanVarPos = params.length+2; // params+DUP
 
@@ -1080,10 +1095,9 @@ public class ProxyManagerImpl
             if (params.length == 0 || params[0] == Comparator.class) {
                 mv.visitInsn(Opcodes.DUP);
                 mv.visitVarInsn(Opcodes.ALOAD, 1);
-                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Collection.class));
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Map.class));
                 mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "putAll",
-                        Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Map.class)), false);
-                mv.visitInsn(Opcodes.POP);
+                        Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Map.class)), false);
             }
 
             mv.visitInsn(Opcodes.ARETURN);
diff --git a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
index 543486513..4ee67be86 100644
--- a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
+++ b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
@@ -772,11 +772,11 @@ public class TestProxyManager {
     }
 
 
-    @Test
+    //X @Test
     public void testBeanClassProxy() throws Exception {
-        Class cls = CustomComparatorSortedSet.class;
+        Class cls = CustomBean.class;
         final String proxyClassName = ProxyManagerImpl.getProxyClassName(cls, false);
-        final byte[] bytes = _mgr.generateProxyCollectionBytecode(cls, true, proxyClassName);
+        final byte[] bytes = _mgr.generateProxyBeanBytecode(cls, false, proxyClassName);
         File dir = Files.getClassFile(TestProxyManager.class).getParentFile();
 
         final String fileName = cls.getName().replace('.', '$') + "$proxy" + ".class";


[openjpa] 03/17: OPENJPA-2908 fix derby snake case test

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 9a87badd3becc9898fb1048936420038bfc210d2
Author: Mark Struberg <st...@apache.org>
AuthorDate: Tue Apr 25 12:33:07 2023 +0200

    OPENJPA-2908 fix derby snake case test
---
 .../apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java  | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
index 638947aa9..8969c3896 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
@@ -35,8 +35,11 @@ import java.sql.Statement;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
 
 import static java.util.Collections.singleton;
 import static org.junit.Assert.assertEquals;
@@ -70,22 +73,24 @@ public class TestSnakeCaseDDL {
         persistenceUnitInfo.setJtaDataSource(ds);
         persistenceUnitInfo.setProperty("openjpa.jdbc.DBDictionary", "derby(javaToDbColumnNameProcessing=snake_case)");
         new PersistenceProviderImpl().generateSchema(persistenceUnitInfo, new HashMap<>());
-        final Collection<String> createdTables = new HashSet<>();
-        final Map<String, Collection<String>> columns = new HashMap<>();
+        final Map<String, String> createdTables = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+        final Map<String, Collection<String>> columns = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
         try (final Connection connection = ds.getConnection()) {
             try (final ResultSet tables = connection.getMetaData()
-                    .getTables(null, null, "SnakeCaseDDLMy%", null)) {
+                    .getTables(null, null, "%", null)) {
                 while (tables.next()) {
                     final String table = tables.getString(3);
-                    createdTables.add(table);
+                    if (table.toUpperCase(Locale.ROOT).startsWith("SNAKE")) {
+                        createdTables.put(table.toUpperCase(Locale.ROOT), table);
+                    }
                 }
             }
-            for (final String table : createdTables) {
+            for (final Map.Entry<String, String> table : createdTables.entrySet()) {
                 try (final Statement statement = connection.createStatement()) {
-                    try (final ResultSet rs = statement.executeQuery("select * from \"" + table + "\"")) {
+                    try (final ResultSet rs = statement.executeQuery("select * from \"" + table.getValue() + "\"")) {
                         final ResultSetMetaData metaData = rs.getMetaData();
                         final Set<String> columnNames = new HashSet<>();
-                        columns.put(table, columnNames);
+                        columns.put(table.getValue(), columnNames);
                         for (int i = 1; i <= metaData.getColumnCount(); i++) {
                             columnNames.add(metaData.getColumnName(i));
                         }
@@ -125,9 +130,10 @@ public class TestSnakeCaseDDL {
                     em.close();
                 }
             }
+            final String tableName = createdTables.get("SnakeCaseDDLMy1Entity".toUpperCase(Locale.ROOT));
             try (final Connection connection = ds.getConnection();
                  final Statement statement = connection.createStatement();
-                 final ResultSet rs = statement.executeQuery("select foo_bar, this_field from \"SnakeCaseDDLMy1Entity\"")) {
+                 final ResultSet rs = statement.executeQuery("select foo_bar, this_field from \"" + tableName + "\"")) {
                 assertTrue (rs.next());
                 assertEquals("1", rs.getString(1));
                 assertEquals(123, rs.getInt(2));


[openjpa] 08/17: OPENJPA-2909 finish Date proxy via ASM

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 94a2bf97be80bfc8607472d6b94d8b7ee22250c4
Author: Mark Struberg <st...@apache.org>
AuthorDate: Tue May 2 13:39:25 2023 +0200

    OPENJPA-2909 finish Date proxy via ASM
---
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 212 +++++++++++----------
 1 file changed, 108 insertions(+), 104 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 6c43b9dec..47f75f9bb 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -698,11 +698,9 @@ public class ProxyManagerImpl
         addInstanceVariables(cw);
         addProxyMethods(cw, true, proxyClassDef, type);
         addProxyDateMethods(cw, proxyClassDef, type);
+        proxySetters(cw, proxyClassDef, type);
+        addWriteReplaceMethod(cw, proxyClassDef, runtime);
 
-/* TODO
-        proxySetters(bc, type);
-        addWriteReplaceMethod(bc, runtime);
-*/
         return cw.toByteArray();
     }
 
@@ -782,7 +780,7 @@ public class ProxyManagerImpl
             mv.visitVarInsn(Opcodes.ALOAD, 0);
             mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "sm", Type.getDescriptor(OpenJPAStateManager.class));
 
-            mv.visitInsn(Opcodes.IRETURN);
+            mv.visitInsn(Opcodes.ARETURN);
             mv.visitMaxs(-1, -1);
             mv.visitEnd();
         }
@@ -952,7 +950,74 @@ public class ProxyManagerImpl
         }
     }
 
+    /**
+     * Proxy setter methods of the given type.
+     *
+     * @return true if we generated any setters, false otherwise
+     */
+    private boolean proxySetters(ClassWriter cw, String proxyClassDef, Class type) {
+        Method[] meths = type.getMethods();
+
+        int setters = 0;
+        for (Method meth : meths) {
+            if (isSetter(meth) && !Modifier.isFinal(meth.getModifiers())) {
+
+                setters++;
+                proxySetter(cw, proxyClassDef, type, meth);
+            }
+        }
+        return setters > 0;
+    }
+
+    private void proxySetter(ClassWriter cw, String proxyClassDef, Class type, Method meth) {
+        Class[] params = meth.getParameterTypes();
+        Class ret = meth.getReturnType();
+
+        final String methodDescriptor = Type.getMethodDescriptor(Type.getType(ret), getParamTypes(params));
+        MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, meth.getName(),
+                methodDescriptor
+                , null, null);
+        mv.visitCode();
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitInsn(Opcodes.ICONST_1);
+        mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(Proxies.class), "dirty",
+                Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Proxy.class), Type.BOOLEAN_TYPE), false);
+
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+
+        // push all the method params to the stack
+        for (int i = 1; i <= params.length; i++)
+        {
+            mv.visitVarInsn(getVarInsn(params[i-1]), i);
+        }
+
+        mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), meth.getName(),
+                methodDescriptor, false);
+
+        mv.visitInsn(getReturnInsn(ret));
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+    }
+
+
+    /**
+     * Add a writeReplace implementation that serializes to a non-proxy type
+     * unless detached and this is a build-time generated class.
+     */
+    private void addWriteReplaceMethod(ClassWriter cw, String proxyClassDef, boolean runtime) {
+        MethodVisitor mv = cw.visitMethod(Modifier.PROTECTED, "writeReplace",
+                Type.getMethodDescriptor(Type.getType(Object.class))
+                , null, new String[]{Type.getInternalName(ObjectStreamException.class)});
+        mv.visitCode();
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitInsn(runtime ? Opcodes.ICONST_0 : Opcodes.ICONST_1); // !runtime
+        mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(Proxies.class), "writeReplace",
+                Type.getMethodDescriptor(Type.getType(Object.class), Type.getType(Proxy.class), Type.BOOLEAN_TYPE), false);
 
+        mv.visitInsn(Opcodes.ARETURN);
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+    }
 
     /* a few utility methods to make life with ASM easier */
 
@@ -1030,6 +1095,29 @@ public class ProxyManagerImpl
         return Opcodes.ALOAD;
     }
 
+    /**
+     * calclates the proper Return instruction opcode for the given class
+     */
+    private int getReturnInsn(Class ret) {
+        if (ret.equals(Void.TYPE)) {
+            return Opcodes.RETURN;
+        }
+        if (ret.equals(Integer.TYPE)) {
+            return Opcodes.IRETURN;
+        }
+        if (ret.equals(Long.TYPE)) {
+            return Opcodes.LRETURN;
+        }
+        if (ret.equals(Float.TYPE)) {
+            return Opcodes.FRETURN;
+        }
+        if (ret.equals(Double.TYPE)) {
+            return Opcodes.DRETURN;
+        }
+        return Opcodes.ARETURN;
+    }
+
+
     /* ASM end */
 
     /**
@@ -1436,97 +1524,6 @@ public class ProxyManagerImpl
         code.calculateMaxLocals();
     }
 
-    /**
-     * Implement the methods in the {@link ProxyDate} interface.
-     */
-    private void addProxyDateMethods(BCClass bc, Class type) {
-        boolean hasDefaultCons = bc.getDeclaredMethod("<init>",
-            (Class[]) null) != null;
-        boolean hasMillisCons = bc.getDeclaredMethod("<init>",
-            new Class[] { long.class }) != null;
-        if (!hasDefaultCons && !hasMillisCons)
-            throw new UnsupportedException(_loc.get("no-date-cons", type));
-
-        // add a default constructor that delegates to the millis constructor
-        BCMethod m;
-        Code code;
-        if (!hasDefaultCons) {
-            m = bc.declareMethod("<init>", void.class, null);
-            m.makePublic();
-            code = m.getCode(true);
-            code.aload().setThis();
-            code.invokestatic().setMethod(System.class, "currentTimeMillis",
-                long.class, null);
-            code.invokespecial().setMethod(type, "<init>", void.class,
-                new Class[] { long.class });
-            code.vreturn();
-            code.calculateMaxStack();
-            code.calculateMaxLocals();
-        }
-
-        // date copy
-        Constructor cons = findCopyConstructor(type);
-        Class[] params;
-        if (cons != null)
-            params = cons.getParameterTypes();
-        else if (hasMillisCons)
-            params = new Class[] { long.class };
-        else
-            params = new Class[0];
-
-        m = bc.declareMethod("copy", Object.class, new Class[] {Object.class});
-        m.makePublic();
-        code = m.getCode(true);
-
-        code.anew().setType(type);
-        code.dup();
-        if (params.length == 1) {
-            if (params[0] == long.class) {
-                code.aload().setParam(0);
-                code.checkcast().setType(Date.class);
-                code.invokevirtual().setMethod(Date.class, "getTime",
-                    long.class, null);
-            } else {
-                code.aload().setParam(0);
-                code.checkcast().setType(params[0]);
-            }
-        }
-        code.invokespecial().setMethod(type, "<init>", void.class, params);
-        if (params.length == 0) {
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Date.class);
-            code.invokevirtual().setMethod(Date.class, "getTime", long.class,
-                null);
-            code.invokevirtual().setMethod(type, "setTime", void.class,
-                new Class[] { long.class });
-        }
-        if ((params.length == 0 || params[0] == long.class)
-            && Timestamp.class.isAssignableFrom(type)) {
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Timestamp.class);
-            code.invokevirtual().setMethod(Timestamp.class, "getNanos",
-                int.class, null);
-            code.invokevirtual().setMethod(type, "setNanos", void.class,
-                new Class[] { int.class });
-        }
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // new instance factory
-        m = bc.declareMethod("newInstance", ProxyDate.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.anew().setType(bc);
-        code.dup();
-        code.invokespecial().setMethod("<init>", void.class, null);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
     /**
      * Implement the methods in the {@link ProxyCalendar} interface.
      */
@@ -2096,18 +2093,25 @@ public class ProxyManagerImpl
                 // expected if the class hasn't been generated
             }
 
-            if (Collection.class.isAssignableFrom(cls))
-                bc = mgr.generateProxyCollectionBytecode(cls, false);
-            else if (Map.class.isAssignableFrom(cls))
-                bc = mgr.generateProxyMapBytecode(cls, false);
-            else if (Date.class.isAssignableFrom(cls)) {
+            // ASM generated proxies
+            if (Date.class.isAssignableFrom(cls)) {
                 final String proxyClassName = getProxyClassName(cls, false);
-                byte[] bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
 
-                final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
-                java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
+                byte[] bytes = null;
+                if (Date.class.isAssignableFrom(cls)) {
+                    bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
+                }
+                if (bytes != null) {
+                    final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
+                    java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
+                }
                 continue;
             }
+
+            if (Collection.class.isAssignableFrom(cls))
+                bc = mgr.generateProxyCollectionBytecode(cls, false);
+            else if (Map.class.isAssignableFrom(cls))
+                bc = mgr.generateProxyMapBytecode(cls, false);
             else if (Calendar.class.isAssignableFrom(cls))
                 bc = mgr.generateProxyCalendarBytecode(cls, false);
             else {


[openjpa] 11/17: OPENJPA-2909 rough implementation with ASM is ready

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 8f9547b643421dcd88975e2ac4a283b11cace51b
Author: Mark Struberg <st...@apache.org>
AuthorDate: Wed May 3 23:16:59 2023 +0200

    OPENJPA-2909 rough implementation with ASM is ready
    
    Still needs a few tweaks to iron out failures.
---
 openjpa-kernel/pom.xml                             |   2 -
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 956 +++++----------------
 .../openjpa/util/proxy/ProxyConcurrentMaps.java    |  57 --
 .../org/apache/openjpa/util/proxy/ProxyMaps.java   |  29 +
 .../org/apache/openjpa/util/TestProxyManager.java  |  16 +
 5 files changed, 252 insertions(+), 808 deletions(-)

diff --git a/openjpa-kernel/pom.xml b/openjpa-kernel/pom.xml
index c9e5538b0..71b7fe094 100644
--- a/openjpa-kernel/pom.xml
+++ b/openjpa-kernel/pom.xml
@@ -109,7 +109,6 @@
                             <goal>run</goal>
                         </goals>
                     </execution>
-<!--
                     <execution>
                         <id>generate-standard-sco-proxies</id>
                         <phase>process-classes</phase>
@@ -124,7 +123,6 @@
                             <goal>run</goal>
                         </goals>
                     </execution>
--->
                 </executions>
             </plugin>
             <plugin>
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 8b4455180..32d541d68 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -26,7 +26,6 @@ import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.security.PrivilegedActionException;
 import java.sql.Timestamp;
 import java.util.ArrayList;
@@ -50,7 +49,6 @@ import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.openjpa.enhance.AsmAdaptor;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
 import org.apache.openjpa.lib.util.ClassUtil;
 import org.apache.openjpa.lib.util.Files;
@@ -70,7 +68,6 @@ import org.apache.openjpa.util.proxy.ProxyBean;
 import org.apache.openjpa.util.proxy.ProxyCalendar;
 import org.apache.openjpa.util.proxy.ProxyCollection;
 import org.apache.openjpa.util.proxy.ProxyCollections;
-import org.apache.openjpa.util.proxy.ProxyConcurrentMaps;
 import org.apache.openjpa.util.proxy.ProxyDate;
 import org.apache.openjpa.util.proxy.ProxyMap;
 import org.apache.openjpa.util.proxy.ProxyMaps;
@@ -80,12 +77,6 @@ import org.apache.xbean.asm9.MethodVisitor;
 import org.apache.xbean.asm9.Opcodes;
 import org.apache.xbean.asm9.Type;
 
-import serp.bytecode.BCClass;
-import serp.bytecode.BCField;
-import serp.bytecode.BCMethod;
-import serp.bytecode.Code;
-import serp.bytecode.JumpInstruction;
-import serp.bytecode.Project;
 
 /**
  * Default implementation of the {@link ProxyManager} interface.
@@ -416,8 +407,7 @@ public class ProxyManagerImpl
                 ProxyMap.class);
             Class pcls = loadBuildTimeProxy(type, l);
             if (pcls == null)
-                pcls = GeneratedClasses.loadBCClass(
-                    generateProxyMapBytecode(type, true), l);
+                pcls = generateAndLoadProxyMap(type, true, l);
             proxy = (ProxyMap) instantiateProxy(pcls, null, null);
             _proxies.put(type, proxy);
         }
@@ -493,15 +483,7 @@ public class ProxyManagerImpl
             ClassLoader l = GeneratedClasses.getMostDerivedLoader(type, ProxyBean.class);
             Class<?> pcls = loadBuildTimeProxy(type, l);
             if (pcls == null) {
-                // TODO Move this to J2DOPrivHelper?
-                BCClass bc = AccessController.doPrivileged(new PrivilegedAction<BCClass>() {
-                    @Override
-                    public BCClass run() {
-                        return generateProxyBeanBytecode(type, true);
-                    }
-                });
-                if (bc != null)
-                    pcls = GeneratedClasses.loadBCClass(bc, l);
+                pcls = generateAndLoadProxyBean(type, true, l);
             }
             if (pcls != null)
                 proxy = (ProxyBean) instantiateProxy(pcls, findCopyConstructor(type), new Object[] { orig });
@@ -595,32 +577,10 @@ public class ProxyManagerImpl
         }
     }
 
-    /**
-     * Generate the bytecode for a collection proxy for the given type.
-     */
-    protected BCClass generateProxyCollectionBytecode(Class type,
-        boolean runtime) {
-        assertNotFinal(type);
-        Project project = new Project();
-        BCClass bc = AccessController.doPrivileged(J2DoPrivHelper
-            .loadProjectClassAction(project, getProxyClassName(type, runtime)));
-        bc.setSuperclass(type);
-        bc.declareInterface(ProxyCollection.class);
-
-        delegateConstructors(bc, type);
-        addProxyMethods(bc, false);
-        addProxyCollectionMethods(bc, type);
-        proxyRecognizedMethods(bc, type, ProxyCollections.class,
-            ProxyCollection.class);
-        proxySetters(bc, type);
-        addWriteReplaceMethod(bc, runtime);
-        return bc;
-    }
-
     /**
      * Return the name of the proxy class to generate for the given type.
      */
-    private static String getProxyClassName(Class type, boolean runtime) {
+    protected static String getProxyClassName(Class type, boolean runtime) {
         String id = (runtime) ? "$" + nextProxyId() : "";
         return ClassUtil.getPackageName(ProxyManagerImpl.class) + "."
             + type.getName().replace('.', '$') + id + PROXY_SUFFIX;
@@ -649,27 +609,6 @@ public class ProxyManagerImpl
 
     }
 
-    /**
-     * Generate the bytecode for a map proxy for the given type.
-     */
-    protected BCClass generateProxyMapBytecode(Class type, boolean runtime) {
-        assertNotFinal(type);
-        Project project = new Project();
-        BCClass bc = AccessController.doPrivileged(J2DoPrivHelper
-            .loadProjectClassAction(project, getProxyClassName(type, runtime)));
-        bc.setSuperclass(type);
-        bc.declareInterface(ProxyMap.class);
-
-        delegateConstructors(bc, type);
-        addProxyMethods(bc, false);
-        addProxyMapMethods(bc, type);
-        Class<? extends ProxyMaps> mapProxyClassType = ProxyConcurrentMaps.class;
-        proxyRecognizedMethods(bc, type, mapProxyClassType, ProxyMap.class);
-        proxySetters(bc, type);
-        addWriteReplaceMethod(bc, runtime);
-        return bc;
-    }
-
 
     private Class generateAndLoadProxyDate(Class type, boolean runtime, ClassLoader l) {
         final String proxyClassName = getProxyClassName(type, runtime);
@@ -692,6 +631,20 @@ public class ProxyManagerImpl
         return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
     }
 
+    private Class generateAndLoadProxyMap(Class type, boolean runtime, ClassLoader l) {
+        final String proxyClassName = getProxyClassName(type, runtime);
+        final byte[] classBytes = generateProxyMapBytecode(type, runtime, proxyClassName);
+
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+    }
+
+    private Class generateAndLoadProxyBean(Class type, boolean runtime, ClassLoader l) {
+        final String proxyClassName = getProxyClassName(type, runtime);
+        final byte[] classBytes = generateProxyBeanBytecode(type, runtime, proxyClassName);
+
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+    }
+
     /**
      * Generate the bytecode for a date proxy for the given type.
      */
@@ -767,13 +720,182 @@ public class ProxyManagerImpl
         addInstanceVariables(ct);
         addProxyMethods(ct, false, proxyClassDef, type);
         addProxyCollectionMethods(ct, proxyClassDef, type);
-        proxyRecognizedMethods(ct, proxyClassDef, type,ProxyCollections.class, ProxyCollection.class);
+        proxyRecognizedMethods(ct, proxyClassDef, type, ProxyCollections.class, ProxyCollection.class);
         proxySetters(ct, proxyClassDef, type);
         addWriteReplaceMethod(ct, proxyClassDef, runtime);
 
         return cw.toByteArray();
     }
 
+    /**
+     * Generate the bytecode for a map proxy for the given type.
+     */
+    protected byte[] generateProxyMapBytecode(Class type, boolean runtime, String proxyClassName) {
+        assertNotFinal(type);
+        String proxyClassDef = proxyClassName.replace('.', '/');
+        String superClassFileNname = Type.getInternalName(type);
+        String[] interfaceNames = new String[]{Type.getInternalName(ProxyMap.class)};
+
+        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
+                null, superClassFileNname, interfaceNames);
+
+        ClassWriterTracker ct = new ClassWriterTracker(cw);
+        String classFileName = runtime ? type.getName() : proxyClassDef;
+        cw.visitSource(classFileName + ".java", null);
+
+        delegateConstructors(ct, type, superClassFileNname);
+        addInstanceVariables(ct);
+        addProxyMethods(ct, false, proxyClassDef, type);
+        addProxyCollectionMethods(ct, proxyClassDef, type);
+        proxyRecognizedMethods(ct, proxyClassDef, type, ProxyMaps.class, ProxyMap.class);
+        proxySetters(ct, proxyClassDef, type);
+        addWriteReplaceMethod(ct, proxyClassDef, runtime);
+
+        return cw.toByteArray();
+    }
+
+    /**
+     * Generate the bytecode for a bean proxy for the given type.
+     */
+    protected byte[] generateProxyBeanBytecode(Class type, boolean runtime, String proxyClassName) {
+        if (Modifier.isFinal(type.getModifiers())) {
+            return null;
+        }
+        if (ImplHelper.isManagedType(null, type)) {
+            return null;
+        }
+
+        // we can only generate a valid proxy if there is a copy constructor
+        // or a default constructor
+        Constructor cons = findCopyConstructor(type);
+        if (cons == null) {
+            Constructor[] cs = type.getConstructors();
+            for (int i = 0; cons == null && i < cs.length; i++) {
+                if (cs[i].getParameterTypes().length == 0) {
+                    cons = cs[i];
+                }
+            }
+            if (cons == null)
+                return null;
+        }
+
+        String proxyClassDef = proxyClassName.replace('.', '/');
+        String superClassFileNname = Type.getInternalName(type);
+        String[] interfaceNames = new String[]{Type.getInternalName(ProxyBean.class)};
+
+        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
+                null, superClassFileNname, interfaceNames);
+
+        ClassWriterTracker ct = new ClassWriterTracker(cw);
+        String classFileName = runtime ? type.getName() : proxyClassDef;
+        cw.visitSource(classFileName + ".java", null);
+
+        delegateConstructors(ct, type, superClassFileNname);
+        addInstanceVariables(ct);
+        addProxyMethods(ct, true, proxyClassDef, type);
+        addProxyBeanMethods(ct, proxyClassDef, type, cons);
+        if (!proxySetters(ct, proxyClassDef, type)) {
+            return null;
+        }
+        addWriteReplaceMethod(ct, proxyClassDef, runtime);
+
+        return cw.toByteArray();
+    }
+
+    private void addProxyBeanMethods(ClassWriterTracker ct, String proxyClassDef, Class type, Constructor cons) {
+        // bean copy
+        {
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "copy",
+                    Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
+            mv.visitInsn(Opcodes.DUP);
+
+            Class[] params = cons.getParameterTypes();
+            if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
+            int beanVarPos = params.length+2; // params+DUP
+
+            if (params.length == 0) {
+                mv.visitVarInsn(Opcodes.ASTORE, beanVarPos);
+                copyBeanProperties(mv, type, beanVarPos);
+                mv.visitVarInsn(Opcodes.ALOAD, beanVarPos);
+            }
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // new instance factory
+        {
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "newInstance",
+                    Type.getMethodDescriptor(Type.getType(ProxyBean.class), Type.getType(Object.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, proxyClassDef);
+            mv.visitInsn(Opcodes.DUP);
+
+
+            Class[] params = cons.getParameterTypes();
+            if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
+            int beanVarPos = params.length+2; // params+DUP
+
+            if (params.length == 0) {
+                mv.visitVarInsn(Opcodes.ASTORE, beanVarPos);
+                copyBeanProperties(mv, type, beanVarPos);
+                mv.visitVarInsn(Opcodes.ALOAD, beanVarPos);
+            }
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+
+        }
+    }
+
+    private void copyBeanProperties(MethodVisitor mv, Class type, int copyVarPos) {
+        Method[] meths = type.getMethods();
+        Method getter;
+        int mods;
+        for (Method meth : meths) {
+            mods = meth.getModifiers();
+            if (!Modifier.isPublic(mods) || Modifier.isStatic(mods)) {
+                continue;
+            }
+
+            if (!startsWith(meth.getName(), "set")
+                    || meth.getParameterTypes().length != 1) {
+                continue;
+            }
+
+            getter = findGetter(type, meth);
+            if (getter == null) {
+                continue;
+            }
+
+            // copy.setXXX(orig.getXXX());
+            mv.visitVarInsn(Opcodes.ALOAD, copyVarPos);
+            mv.visitVarInsn(Opcodes.ALOAD, copyVarPos-1);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(type));
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), getter.getName(),
+                    Type.getMethodDescriptor(getter), false);
+            mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), meth.getName(),
+                    Type.getMethodDescriptor(meth), false);
+        }
+    }
 
     private void addProxyCollectionMethods(ClassWriterTracker ct, String proxyClassDef, Class type) {
         // change tracker
@@ -828,7 +950,7 @@ public class ProxyManagerImpl
                 mv.visitVarInsn(Opcodes.ALOAD, 1);
                 mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Collection.class));
                 mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "addAll",
-                        Type.getMethodDescriptor(Type.BOOLEAN_TYPE, TYPE_OBJECT), true);
+                        Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Collection.class)), false);
                 mv.visitInsn(Opcodes.POP);
             }
 
@@ -1490,10 +1612,6 @@ public class ProxyManagerImpl
         mv.visitEnd();
     }
 
-    /* a few utility methods to make life with ASM easier */
-
-
-
     private boolean hasConstructor(Class type, Class<?>... paramTypes) {
         try {
             return type.getDeclaredConstructor(paramTypes) != null;
@@ -1503,258 +1621,6 @@ public class ProxyManagerImpl
         }
     }
 
-    /* ASM end */
-
-
-    /**
-     * Generate the bytecode for a bean proxy for the given type.
-     */
-    protected BCClass generateProxyBeanBytecode(Class type, boolean runtime) {
-        if (Modifier.isFinal(type.getModifiers()))
-            return null;
-        if (ImplHelper.isManagedType(null, type))
-            return null;
-
-        // we can only generate a valid proxy if there is a copy constructor
-        // or a default constructor
-        Constructor cons = findCopyConstructor(type);
-        if (cons == null) {
-            Constructor[] cs = type.getConstructors();
-            for (int i = 0; cons == null && i < cs.length; i++)
-               if (cs[i].getParameterTypes().length == 0)
-                    cons = cs[i];
-            if (cons == null)
-                return null;
-        }
-
-        Project project = new Project();
-        BCClass bc = AccessController.doPrivileged(J2DoPrivHelper
-            .loadProjectClassAction(project, getProxyClassName(type, runtime)));
-        bc.setSuperclass(type);
-        bc.declareInterface(ProxyBean.class);
-
-        delegateConstructors(bc, type);
-        addProxyMethods(bc, true);
-        addProxyBeanMethods(bc, type, cons);
-        if (!proxySetters(bc, type))
-            return null;
-        addWriteReplaceMethod(bc, runtime);
-        return bc;
-    }
-
-    /**
-     * Create pass-through constructors to base type.
-     */
-    private void delegateConstructors(BCClass bc, Class type) {
-        Constructor[] cons = type.getConstructors();
-        Class[] params;
-        BCMethod m;
-        Code code;
-        for (Constructor con : cons) {
-            params = con.getParameterTypes();
-            m = bc.declareMethod("<init>", void.class, params);
-            m.makePublic();
-
-            code = m.getCode(true);
-            code.aload().setThis();
-            for (int j = 0; j < params.length; j++)
-                code.xload().setParam(j).setType(params[j]);
-            code.invokespecial().setMethod(con);
-            code.vreturn();
-            code.calculateMaxStack();
-            code.calculateMaxLocals();
-        }
-    }
-
-    /**
-     * Implement the methods in the {@link Proxy} interface, with the exception
-     * of {@link Proxy#copy}.
-     *
-     * @param changeTracker whether to implement a null change tracker; if false
-     * the change tracker method is left unimplemented
-     */
-    private void addProxyMethods(BCClass bc, boolean changeTracker) {
-        BCField sm = bc.declareField("sm", OpenJPAStateManager.class);
-        sm.setTransient(true);
-        BCField field = bc.declareField("field", int.class);
-        field.setTransient(true);
-
-        BCMethod m = bc.declareMethod("setOwner", void.class, new Class[] {
-            OpenJPAStateManager.class, int.class });
-        m.makePublic();
-        Code code = m.getCode(true);
-        code.aload().setThis();
-        code.aload().setParam(0);
-        code.putfield().setField(sm);
-        code.aload().setThis();
-        code.iload().setParam(1);
-        code.putfield().setField(field);
-        code.vreturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        m = bc.declareMethod("getOwner", OpenJPAStateManager.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(sm);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        m = bc.declareMethod("getOwnerField", int.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(field);
-        code.ireturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        /*
-         * clone (return detached proxy object)
-         * Note:  This method is only being provided to satisfy a quirk with
-         * the IBM JDK -- while comparing Calendar objects, the clone() method
-         * was invoked.  So, we are now overriding the clone() method so as to
-         * provide a detached proxy object (null out the StateManager).
-         */
-        m = bc.declareMethod("clone", Object.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.invokespecial().setMethod(bc.getSuperclassType(), "clone",
-                Object.class, null);
-        code.checkcast().setType(Proxy.class);
-        int other = code.getNextLocalsIndex();
-        code.astore().setLocal(other);
-        code.aload().setLocal(other);
-        code.constant().setNull();
-        code.constant().setValue(0);
-        code.invokeinterface().setMethod(Proxy.class, "setOwner", void.class,
-                new Class[] { OpenJPAStateManager.class, int.class });
-        code.aload().setLocal(other);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        if (changeTracker) {
-            m = bc.declareMethod("getChangeTracker", ChangeTracker.class, null);
-            m.makePublic();
-            code = m.getCode(true);
-            code.constant().setNull();
-            code.areturn();
-            code.calculateMaxStack();
-            code.calculateMaxLocals();
-        }
-    }
-
-    /**
-     * Implement the methods in the {@link ProxyCollection} interface.
-     */
-    private void addProxyCollectionMethods(BCClass bc, Class type) {
-        // change tracker
-        BCField changeTracker = bc.declareField("changeTracker",
-            CollectionChangeTracker.class);
-        changeTracker.setTransient(true);
-        BCMethod m = bc.declareMethod("getChangeTracker", ChangeTracker.class,
-            null);
-        m.makePublic();
-        Code code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(changeTracker);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // collection copy
-        Constructor cons = findCopyConstructor(type);
-        if (cons == null && SortedSet.class.isAssignableFrom(type))
-            cons = findComparatorConstructor(type);
-        Class[] params = (cons == null) ? new Class[0]
-            : cons.getParameterTypes();
-
-        m = bc.declareMethod("copy", Object.class, new Class[] {Object.class});
-        m.makePublic();
-        code = m.getCode(true);
-
-        code.anew().setType(type);
-        code.dup();
-        if (params.length == 1) {
-            code.aload().setParam(0);
-            if (params[0] == Comparator.class) {
-                code.checkcast().setType(SortedSet.class);
-                code.invokeinterface().setMethod(SortedSet.class, "comparator",
-                    Comparator.class, null);
-            } else
-                code.checkcast().setType(params[0]);
-        }
-        code.invokespecial().setMethod(type, "<init>", void.class, params);
-        if (params.length == 0 || params[0] == Comparator.class) {
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Collection.class);
-            code.invokevirtual().setMethod(type, "addAll", boolean.class,
-                new Class[] { Collection.class });
-            code.pop();
-        }
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // element type
-        BCField elementType = bc.declareField("elementType", Class.class);
-        elementType.setTransient(true);
-        m = bc.declareMethod("getElementType", Class.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(elementType);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // new instance factory
-        m = bc.declareMethod("newInstance", ProxyCollection.class,
-            new Class[] { Class.class, Comparator.class, boolean.class, boolean.class });
-        m.makePublic();
-        code = m.getCode(true);
-
-        code.anew().setType(bc);
-        code.dup();
-        cons = findComparatorConstructor(type);
-        params = (cons == null) ? new Class[0] : cons.getParameterTypes();
-        if (params.length == 1)
-            code.aload().setParam(1);
-        code.invokespecial().setMethod("<init>", void.class, params);
-        int ret = code.getNextLocalsIndex();
-        code.astore().setLocal(ret);
-
-        // set element type
-        code.aload().setLocal(ret);
-        code.aload().setParam(0);
-        code.putfield().setField(elementType);
-
-        // create change tracker and set it
-        code.iload().setParam(2);
-        JumpInstruction ifins = code.ifeq();
-        code.aload().setLocal(ret);
-        code.anew().setType(CollectionChangeTrackerImpl.class);
-        code.dup();
-        code.aload().setLocal(ret);
-        code.constant().setValue(allowsDuplicates(type));
-        code.constant().setValue(isOrdered(type));
-        code.aload().setParam(3);
-        code.invokespecial().setMethod(CollectionChangeTrackerImpl.class,
-            "<init>", void.class, new Class[] { Collection.class,
-            boolean.class, boolean.class, boolean.class });
-        code.putfield().setField(changeTracker);
-
-        ifins.setTarget(code.aload().setLocal(ret));
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
     /**
      * Return whether the given collection type allows duplicates.
      */
@@ -1771,261 +1637,6 @@ public class ProxyManagerImpl
             || "java.util.LinkedHashSet".equals(type.getName());
     }
 
-    /**
-     * Implement the methods in the {@link ProxyMap} interface.
-     */
-    private void addProxyMapMethods(BCClass bc, Class type) {
-        // change tracker
-        BCField changeTracker = bc.declareField("changeTracker",
-            MapChangeTracker.class);
-        changeTracker.setTransient(true);
-        BCMethod m = bc.declareMethod("getChangeTracker", ChangeTracker.class,
-            null);
-        m.makePublic();
-        Code code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(changeTracker);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // map copy
-        Constructor cons = findCopyConstructor(type);
-        if (cons == null && SortedMap.class.isAssignableFrom(type))
-            cons = findComparatorConstructor(type);
-        Class[] params = (cons == null) ? new Class[0]
-            : cons.getParameterTypes();
-
-        m = bc.declareMethod("copy", Object.class, new Class[] {Object.class});
-        m.makePublic();
-        code = m.getCode(true);
-
-        code.anew().setType(type);
-        code.dup();
-        if (params.length == 1) {
-            code.aload().setParam(0);
-            if (params[0] == Comparator.class) {
-                code.checkcast().setType(SortedMap.class);
-                code.invokeinterface().setMethod(SortedMap.class, "comparator",
-                    Comparator.class, null);
-            } else
-                code.checkcast().setType(params[0]);
-        }
-        code.invokespecial().setMethod(type, "<init>", void.class, params);
-        if (params.length == 0 || params[0] == Comparator.class) {
-            code.dup();
-            code.aload().setParam(0);
-            code.checkcast().setType(Map.class);
-            code.invokevirtual().setMethod(type, "putAll", void.class,
-                new Class[] { Map.class });
-        }
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // key type
-        BCField keyType = bc.declareField("keyType", Class.class);
-        keyType.setTransient(true);
-        m = bc.declareMethod("getKeyType", Class.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(keyType);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // value type
-        BCField valueType = bc.declareField("valueType", Class.class);
-        valueType.setTransient(true);
-        m = bc.declareMethod("getValueType", Class.class, null);
-        m.makePublic();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.getfield().setField(valueType);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // new instance factory
-        m = bc.declareMethod("newInstance", ProxyMap.class,
-            new Class[] { Class.class, Class.class, Comparator.class,
-            boolean.class,boolean.class });
-        m.makePublic();
-        code = m.getCode(true);
-
-        code.anew().setType(bc);
-        code.dup();
-        cons = findComparatorConstructor(type);
-        params = (cons == null) ? new Class[0] : cons.getParameterTypes();
-        if (params.length == 1)
-            code.aload().setParam(2);
-        code.invokespecial().setMethod("<init>", void.class, params);
-        int ret = code.getNextLocalsIndex();
-        code.astore().setLocal(ret);
-
-        // set key and value types
-        code.aload().setLocal(ret);
-        code.aload().setParam(0);
-        code.putfield().setField(keyType);
-        code.aload().setLocal(ret);
-        code.aload().setParam(1);
-        code.putfield().setField(valueType);
-
-        // create change tracker and set it
-        code.iload().setParam(3);
-        JumpInstruction ifins = code.ifeq();
-        code.aload().setLocal(ret);
-        code.anew().setType(MapChangeTrackerImpl.class);
-        code.dup();
-        code.aload().setLocal(ret);
-        code.aload().setParam(4);
-        code.invokespecial().setMethod(MapChangeTrackerImpl.class,
-            "<init>", void.class, new Class[] { Map.class, boolean.class });
-        code.putfield().setField(changeTracker);
-
-        ifins.setTarget(code.aload().setLocal(ret));
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
-    /**
-     * Implement the methods in the {@link ProxyBean} interface.
-     */
-    private void addProxyBeanMethods(BCClass bc, Class type, Constructor cons) {
-        // bean copy
-        BCMethod m = bc.declareMethod("copy", Object.class,
-            new Class[] { Object.class });
-        m.makePublic();
-        Code code = m.getCode(true);
-
-        code.anew().setType(type);
-        code.dup();
-        Class[] params = cons.getParameterTypes();
-        if (params.length == 1) {
-            code.aload().setParam(0);
-            code.checkcast().setType(params[0]);
-        }
-        code.invokespecial().setMethod(cons);
-        if (params.length == 0)
-            copyProperties(type, code);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-
-        // new instance factory
-        m = bc.declareMethod("newInstance", ProxyBean.class,
-            new Class[] { Object.class });
-        m.makePublic();
-        code = m.getCode(true);
-        code.anew().setType(bc);
-        code.dup();
-        if (params.length == 1) {
-            code.aload().setParam(0);
-            code.checkcast().setType(params[0]);
-        }
-        code.invokespecial().setMethod("<init>", void.class, params);
-        if (params.length == 0)
-            copyProperties(type, code);
-        code.areturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
-    /**
-     * Copy bean properties.  Called with the copy object on the stack.  Must
-     * return with the copy object on the stack.
-     */
-    private void copyProperties(Class type, Code code) {
-        int copy = code.getNextLocalsIndex();
-        code.astore().setLocal(copy);
-
-        Method[] meths = type.getMethods();
-        Method getter;
-        int mods;
-        for (Method meth : meths) {
-            mods = meth.getModifiers();
-            if (!Modifier.isPublic(mods) || Modifier.isStatic(mods))
-                continue;
-            if (!startsWith(meth.getName(), "set")
-                    || meth.getParameterTypes().length != 1)
-                continue;
-            getter = findGetter(type, meth);
-            if (getter == null)
-                continue;
-
-            // copy.setXXX(orig.getXXX());
-            code.aload().setLocal(copy);
-            code.aload().setParam(0);
-            code.checkcast().setType(type);
-            code.invokevirtual().setMethod(getter);
-            code.invokevirtual().setMethod(meth);
-        }
-        code.aload().setLocal(copy);
-    }
-
-    /**
-     * Proxy recognized methods to invoke helpers in given helper class.
-     */
-    private void proxyRecognizedMethods(BCClass bc, Class type, Class helper,
-        Class proxyType) {
-        Method[] meths = type.getMethods();
-        Class[] params;
-        Class[] afterParams;
-        Method match;
-        Method after;
-        for (Method meth : meths) {
-            // Java 8 methods with a return type of KeySetView do not need to be proxied
-            if (meth.getReturnType().getName().contains("KeySetView")) continue;
-
-            params = toHelperParameters(meth.getParameterTypes(),
-                    proxyType);
-
-            // first check for overriding method
-            try {
-                match = helper.getMethod(meth.getName(), params);
-                proxyOverrideMethod(bc, meth, match, params);
-                continue;
-            }
-            catch (NoSuchMethodException nsme) {
-            }
-            catch (Exception e) {
-                throw new GeneralException(e);
-            }
-
-            // check for before and after methods, either of which may not
-            // exist
-            match = null;
-            try {
-                match = helper.getMethod("before"
-                        + StringUtil.capitalize(meth.getName()), params);
-            }
-            catch (NoSuchMethodException nsme) {
-            }
-            catch (Exception e) {
-                throw new GeneralException(e);
-            }
-            after = null;
-            afterParams = null;
-            try {
-                afterParams = toHelperAfterParameters(params,
-                        meth.getReturnType(), (match == null)
-                                ? void.class : match.getReturnType());
-                after = helper.getMethod("after"
-                        + StringUtil.capitalize(meth.getName()), afterParams);
-            }
-            catch (NoSuchMethodException nsme) {
-            }
-            catch (Exception e) {
-                throw new GeneralException(e);
-            }
-            if (match != null || after != null)
-                proxyBeforeAfterMethod(bc, type, meth, match, params, after,
-                        afterParams);
-        }
-    }
-
     /**
      * Return the parameter types to the corresponding helper class method.
      */
@@ -2059,101 +1670,6 @@ public class ProxyManagerImpl
         return params;
     }
 
-    /**
-     * Proxy setter methods of the given type.
-     *
-     * @return true if we find any setters, false otherwise
-     */
-    private boolean proxySetters(BCClass bc, Class type) {
-        Method[] meths = type.getMethods();
-        int setters = 0;
-        for (Method meth : meths) {
-            if (isSetter(meth) && !Modifier.isFinal(meth.getModifiers())
-                    && bc.getDeclaredMethod(meth.getName(),
-                    meth.getParameterTypes()) == null) {
-                setters++;
-                proxySetter(bc, type, meth);
-            }
-        }
-        return setters > 0;
-    }
-
-    /**
-     * Proxy the given method with one that overrides it by calling into the
-     * given helper.
-     */
-    private void proxyOverrideMethod(BCClass bc, Method meth,
-        Method helper, Class[] params) {
-        BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
-            meth.getParameterTypes());
-        m.makePublic();
-        Code code = m.getCode(true);
-
-        code.aload().setThis();
-        for (int i = 1; i < params.length; i++)
-            code.xload().setParam(i - 1).setType(params[i]);
-        code.invokestatic().setMethod(helper);
-        code.xreturn().setType(meth.getReturnType());
-
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
-    /**
-     * Proxy the given method with one that overrides it by calling into the
-     * given helper.
-     */
-    private void proxyBeforeAfterMethod(BCClass bc, Class type, Method meth,
-        Method before, Class[] params, Method after, Class[] afterParams) {
-        BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
-            meth.getParameterTypes());
-        m.makePublic();
-        Code code = m.getCode(true);
-
-        // invoke before
-        int beforeRet = -1;
-        if (before != null) {
-            code.aload().setThis();
-            for (int i = 1; i < params.length; i++)
-                code.xload().setParam(i - 1).setType(params[i]);
-            code.invokestatic().setMethod(before);
-            if (after != null && before.getReturnType() != void.class) {
-                beforeRet = code.getNextLocalsIndex();
-                code.xstore().setLocal(beforeRet).
-                    setType(before.getReturnType());
-            }
-        }
-
-        // invoke super
-        code.aload().setThis();
-        for (int i = 1; i < params.length; i++)
-            code.xload().setParam(i - 1).setType(params[i]);
-        code.invokespecial().setMethod(type, meth.getName(),
-            meth.getReturnType(), meth.getParameterTypes());
-
-        // invoke after
-        if (after != null) {
-            int ret = -1;
-            if (meth.getReturnType() != void.class) {
-                ret = code.getNextLocalsIndex();
-                code.xstore().setLocal(ret).setType(meth.getReturnType());
-            }
-            code.aload().setThis();
-            for (int i = 1; i < params.length; i++)
-                code.xload().setParam(i - 1).setType(params[i]);
-            if (ret != -1)
-                code.xload().setLocal(ret).setType(meth.getReturnType());
-            if (beforeRet != -1)
-                code.xload().setLocal(beforeRet).
-                    setType(before.getReturnType());
-            code.invokestatic().setMethod(after);
-        }
-        code.xreturn().setType(meth.getReturnType());
-
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
     /**
      * Return whether the given method is a setter.
      */
@@ -2206,46 +1722,6 @@ public class ProxyManagerImpl
             || Character.isUpperCase(str.charAt(token.length())));
     }
 
-    /**
-     * Proxy the given setter method to dirty the proxy owner.
-     */
-    private void proxySetter(BCClass bc, Class type, Method meth) {
-        Class[] params = meth.getParameterTypes();
-        Class ret = meth.getReturnType();
-        BCMethod m = bc.declareMethod(meth.getName(), ret, params);
-        m.makePublic();
-        Code code = m.getCode(true);
-        code.aload().setThis();
-        code.constant().setValue(true);
-        code.invokestatic().setMethod(Proxies.class, "dirty", void.class,
-            new Class[] { Proxy.class, boolean.class });
-        code.aload().setThis();
-        for (int i = 0; i < params.length; i++)
-            code.xload().setParam(i).setType(params[i]);
-        code.invokespecial().setMethod(type, meth.getName(), ret, params);
-        code.xreturn().setType(ret);
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-    }
-
-    /**
-     * Add a writeReplace implementation that serializes to a non-proxy type
-     * unless detached and this is a build-time generated class.
-     */
-    private void addWriteReplaceMethod(BCClass bc, boolean runtime) {
-        BCMethod m = bc.declareMethod("writeReplace", Object.class, null);
-        m.makeProtected();
-        m.getExceptions(true).addException(ObjectStreamException.class);
-        Code code = m.getCode(true);
-        code.aload().setThis();
-        code.constant().setValue(!runtime);
-        code.invokestatic().setMethod(Proxies.class, "writeReplace",
-            Object.class, new Class[] { Proxy.class, boolean.class });
-        code.areturn();
-        code.calculateMaxLocals();
-        code.calculateMaxStack();
-    }
-
     /**
      * Create a unique id to avoid proxy class name conflicts.
      */
@@ -2353,7 +1829,6 @@ public class ProxyManagerImpl
 
         final ProxyManagerImpl mgr = new ProxyManagerImpl();
         Class cls;
-        BCClass bc;
         for (Object type : types) {
             cls = Class.forName((String) type);
             try {
@@ -2366,48 +1841,31 @@ public class ProxyManagerImpl
                 // expected if the class hasn't been generated
             }
 
-            // ASM generated proxies
-            if (Date.class.isAssignableFrom(cls) ||
-                Calendar.class.isAssignableFrom(cls) ||
-                Collection.class.isAssignableFrom(cls)) {
-                final String proxyClassName = getProxyClassName(cls, false);
 
-                byte[] bytes = null;
+            final String proxyClassName = getProxyClassName(cls, false);
 
-                if (Date.class.isAssignableFrom(cls)) {
-                    bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
-                }
-                else if (Calendar.class.isAssignableFrom(cls)) {
-                    bytes = mgr.generateProxyCalendarBytecode(cls, false, proxyClassName);
-                }
-                else if (Collection.class.isAssignableFrom(cls)) {
-                    bytes = mgr.generateProxyCollectionBytecode(cls, false, proxyClassName);
-                }
+            byte[] bytes = null;
 
-                if (bytes != null) {
-                    final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
-                    java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
-                }
-                continue;
+            if (Date.class.isAssignableFrom(cls)) {
+                bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
+            }
+            else if (Calendar.class.isAssignableFrom(cls)) {
+                bytes = mgr.generateProxyCalendarBytecode(cls, false, proxyClassName);
+            }
+            else if (Collection.class.isAssignableFrom(cls)) {
+                bytes = mgr.generateProxyCollectionBytecode(cls, false, proxyClassName);
+            }
+            else if (Map.class.isAssignableFrom(cls)) {
+                bytes = mgr.generateProxyMapBytecode(cls, false, proxyClassName);
             }
-
-            else if (Map.class.isAssignableFrom(cls))
-                bc = mgr.generateProxyMapBytecode(cls, false);
             else {
-                final Class fCls = cls;
-                // TODO Move this to J2DOPrivHelper
-                bc = AccessController
-                        .doPrivileged(new PrivilegedAction<BCClass>() {
-                            @Override
-                            public BCClass run() {
-                                return mgr.generateProxyBeanBytecode(fCls, false);
-                            }
-                        });
+                bytes = mgr.generateProxyBeanBytecode(cls, false, proxyClassName);
+            }
+
+            if (bytes != null) {
+                final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
+                java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
             }
-            // START - ALLOW PRINT STATEMENTS
-            System.out.println(bc.getName());
-            // STOP - ALLOW PRINT STATEMENTS
-            AsmAdaptor.write(bc, new File(dir, bc.getClassName() + ".class"));
         }
     }
 }
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyConcurrentMaps.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyConcurrentMaps.java
deleted file mode 100644
index f2d32ec7e..000000000
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyConcurrentMaps.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openjpa.util.proxy;
-
-import java.util.Map;
-
-import org.apache.openjpa.util.MapChangeTracker;
-import org.apache.openjpa.util.Proxies;
-
-/**
- * Utility methods used by concurrent map proxies.
- *
- */
-public class ProxyConcurrentMaps extends ProxyMaps {
-	/**
-     * Call before invoking {@link Map#remove(key, value) } on super.
-     */
-    public static boolean beforeRemove(ProxyMap map, Object key, Object value) {
-        Proxies.dirty(map, false);
-        return map.containsKey(key);
-    }
-
-    /**
-     * Call after invoking {@link Map#remove(key, value) } on super.
-     *
-     * @param ret the return value from the super's method
-     * @param before the return value from {@link #beforeRemove}
-     * @return the value to return from {@link Map#remove}
-     */
-    public static boolean afterRemove(ProxyMap map, Object key, Object value, boolean ret,
-        boolean before) {
-        if (before) {
-            if (map.getChangeTracker() != null) {
-                ((MapChangeTracker) map.getChangeTracker()).removed(key, ret);
-            }
-            Proxies.removed(map, key, true);
-            Proxies.removed(map, ret, false);
-        }
-        return ret;
-    }
-}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java
index 6d89c504b..b112a383b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/proxy/ProxyMaps.java
@@ -206,6 +206,35 @@ public class ProxyMaps
         return ret;
     }
 
+    /**
+     * See OPENJPA-2442.
+     * Call before invoking {@link Map#remove(key, value) } on super.
+     */
+    public static boolean beforeRemove(ProxyMap map, Object key, Object value) {
+        Proxies.dirty(map, false);
+        return map.containsKey(key);
+    }
+
+    /**
+     * See OPENJPA-2442.
+     * Call after invoking {@link Map#remove(key, value) } on super.
+     *
+     * @param ret the return value from the super's method
+     * @param before the return value from {@link #beforeRemove}
+     * @return the value to return from {@link Map#remove}
+     */
+    public static boolean afterRemove(ProxyMap map, Object key, Object value, boolean ret,
+                                      boolean before) {
+        if (before) {
+            if (map.getChangeTracker() != null) {
+                ((MapChangeTracker) map.getChangeTracker()).removed(key, ret);
+            }
+            Proxies.removed(map, key, true);
+            Proxies.removed(map, ret, false);
+        }
+        return ret;
+    }
+
     /**
      * Marker interface for a proxy entry set.
      */
diff --git a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
index b2a4950c9..543486513 100644
--- a/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
+++ b/openjpa-kernel/src/test/java/org/apache/openjpa/util/TestProxyManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openjpa.util;
 
+import java.io.File;
 import java.io.InputStream;
 import java.lang.reflect.Method;
 import java.sql.Time;
@@ -47,6 +48,7 @@ import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.Vector;
 
+import org.apache.openjpa.lib.util.Files;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -769,6 +771,20 @@ public class TestProxyManager {
         assertBeansEqual(orig, (CustomBean) _mgr.copyCustom(orig));
     }
 
+
+    @Test
+    public void testBeanClassProxy() throws Exception {
+        Class cls = CustomComparatorSortedSet.class;
+        final String proxyClassName = ProxyManagerImpl.getProxyClassName(cls, false);
+        final byte[] bytes = _mgr.generateProxyCollectionBytecode(cls, true, proxyClassName);
+        File dir = Files.getClassFile(TestProxyManager.class).getParentFile();
+
+        final String fileName = cls.getName().replace('.', '$') + "$proxy" + ".class";
+        java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
+
+        _mgr.loadBuildTimeProxy(cls, this.getClass().getClassLoader());
+    }
+
     /**
      * Populate the given bean with arbitrary data.
      */


[openjpa] 04/17: OPENJPA-2908 fix delayed collection proxies

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 6fc05e14d00c23e3684256e5e6e63d1f71c32ecf
Author: Mark Struberg <st...@apache.org>
AuthorDate: Tue Apr 25 16:16:46 2023 +0200

    OPENJPA-2908 fix delayed collection proxies
    
    some new methods in base interfaces did not get handled correctly
---
 .../java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java |  8 +++++---
 .../java/org/apache/openjpa/util/DelayedArrayListProxy.java    |  9 +++++++++
 .../main/java/org/apache/openjpa/util/DelayedHashSetProxy.java | 10 ++++++++++
 .../org/apache/openjpa/util/DelayedLinkedHashSetProxy.java     |  9 +++++++++
 .../java/org/apache/openjpa/util/DelayedLinkedListProxy.java   |  9 +++++++++
 .../org/apache/openjpa/util/DelayedPriorityQueueProxy.java     |  9 +++++++++
 .../main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java |  9 +++++++++
 .../main/java/org/apache/openjpa/util/DelayedVectorProxy.java  |  9 +++++++++
 .../java/org/apache/openjpa/lib/conf/ConfigurationImpl.java    |  2 +-
 .../org/apache/openjpa/lib/meta/ClassMetaDataIterator.java     |  1 +
 .../java/org/apache/openjpa/lib/util/TemporaryClassLoader.java |  3 ++-
 11 files changed, 73 insertions(+), 5 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
index 8c8f89ca5..6108d7daa 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
@@ -350,9 +350,11 @@ public abstract class AbstractMetaDataDefaults
      * user-defined.
      */
     protected static boolean isUserDefined(Class<?> cls) {
-        return cls != null && !cls.getName().startsWith("java.")
-            && !cls.getName().startsWith ("javax.");
-	}
+        return cls != null
+                && !cls.getName().startsWith("java.")
+                && !cls.getName().startsWith ("javax.")
+                && !cls.getName().startsWith ("jakarta.");
+    }
 
     /**
      * Affirms if the given method matches the following signature
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
index bef35b699..9a8bcc48e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java
@@ -25,6 +25,7 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -406,6 +407,14 @@ public class DelayedArrayListProxy extends ArrayList implements ProxyCollection,
         return super.toArray(array);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public boolean equals(Object paramObject) {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
index d15fedfbf..cb142f56d 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -276,6 +277,14 @@ public class DelayedHashSetProxy extends HashSet implements DelayedProxy, ProxyC
         return super.toArray(a);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public boolean containsAll(Collection c) {
         if (!_directAccess && isDelayLoad()) {
@@ -284,6 +293,7 @@ public class DelayedHashSetProxy extends HashSet implements DelayedProxy, ProxyC
         return super.containsAll(c);
     }
 
+
     @Override
     public String toString() {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
index 15e6b1dac..a15618771 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -275,6 +276,14 @@ public class DelayedLinkedHashSetProxy extends LinkedHashSet implements DelayedP
         return super.toArray(a);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public boolean containsAll(Collection c) {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
index 8df82db6b..77562c628 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java
@@ -25,6 +25,7 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -568,6 +569,14 @@ public class DelayedLinkedListProxy extends LinkedList implements ProxyCollectio
         return super.toArray(array);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public boolean contains(Object object) {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
index 10f07da33..54283b9ec 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java
@@ -24,6 +24,7 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.PriorityQueue;
 import java.util.SortedSet;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -330,6 +331,14 @@ public class DelayedPriorityQueueProxy extends PriorityQueue implements ProxyCol
         return super.toArray(array);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public boolean containsAll(Collection c) {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
index 281bf9aa8..0bdbb4b24 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java
@@ -25,6 +25,7 @@ import java.util.Iterator;
 import java.util.NavigableSet;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -315,6 +316,14 @@ public class DelayedTreeSetProxy extends TreeSet implements ProxyCollection, Del
         return super.toArray(array);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public Comparator comparator() {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
index ee2ea87ea..d71495030 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Vector;
+import java.util.function.IntFunction;
 
 import org.apache.openjpa.kernel.AutoDetach;
 import org.apache.openjpa.kernel.Broker;
@@ -525,6 +526,14 @@ public class DelayedVectorProxy extends Vector implements ProxyCollection, Delay
         return super.toArray(array);
     }
 
+    @Override
+    public Object[] toArray(IntFunction generator) {
+        if (!_directAccess && isDelayLoad()) {
+            load();
+        }
+        return super.toArray(generator);
+    }
+
     @Override
     public synchronized boolean equals(Object paramObject) {
         if (!_directAccess && isDelayLoad()) {
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
index b0acd1399..8c97b3978 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
@@ -769,7 +769,7 @@ public class ConfigurationImpl
     /**
      * Adds a prefix <code>"openjpa."</code> to the given key, if necessary. A key is
      * considered without prefix if it starts neither of <code>"openjpa."</code>,
-     * <code>"java."</code> and <code>"javax."</code>.
+     * <code>"java."</code>, <code>"javax."</code> and {@code "jakarta."}.
      */
     String fixPrefix(String key) {
         return (key == null || hasKnownPrefix(key)) ? key : "openjpa."+key;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
index 246ea3b49..1b104dc75 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java
@@ -66,6 +66,7 @@ public class ClassMetaDataIterator implements MetaDataIterator {
             ClassLoader loader, boolean topDown) {
         // skip classes that can't have metadata
         if (cls != null && (cls.isPrimitive()
+            || cls.getName().startsWith("jakarta.")
             || cls.getName().startsWith("java.")
             || cls.getName().startsWith("javax."))) {
             _loader = null;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
index f56f2fc46..1c3881790 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java
@@ -55,7 +55,8 @@ public class TemporaryClassLoader extends ClassLoader {
         // "sun." is required for JDK 1.4, which has an access check for
         // sun.reflect.GeneratedSerializationConstructorAccessor1
         if (name.startsWith("java.") || name.startsWith("javax.")
-            || name.startsWith("sun.") || name.startsWith("jdk.")) {
+            || name.startsWith("sun.") || name.startsWith("jdk.")
+            || name.startsWith("jakarta.") ) {
             return Class.forName(name, resolve, getClass().getClassLoader());
         }
 


[openjpa] 16/17: OPENJPA-2908 finish jakarta migration

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 0ddc38512d690bd18ea37103c6b78f5fa48127a3
Author: Mark Struberg <st...@apache.org>
AuthorDate: Fri May 5 17:31:20 2023 +0200

    OPENJPA-2908 finish jakarta migration
---
 openjpa-all/pom.xml                                |  6 +-
 .../src/test/resources/META-INF/persistence.xml    |  2 +-
 openjpa-integration/validation/pom.xml             | 22 +-----
 .../openjpa/integration/validation/constraints.xml |  4 +-
 .../openjpa/integration/validation/persistence.xml |  2 +-
 .../org/apache/openjpa/ant/MetaDataToolTask.java   |  2 +-
 openjpa-persistence/pom.xml                        |  1 -
 .../src/it/testDependencies/pom.xml                |  2 +
 .../src/it/testDependencies/prjB/pom.xml           |  2 +-
 openjpa/pom.xml                                    | 81 ++--------------------
 10 files changed, 20 insertions(+), 104 deletions(-)

diff --git a/openjpa-all/pom.xml b/openjpa-all/pom.xml
index 1e384aa09..49dc289d6 100644
--- a/openjpa-all/pom.xml
+++ b/openjpa-all/pom.xml
@@ -104,9 +104,9 @@
                                         <Can-Redefine-Classes>true</Can-Redefine-Classes>
                                         <Can-Retransform-Classes>true</Can-Retransform-Classes>
                                         <Implementation-Title>Apache OpenJPA Aggregate JAR with dependencies</Implementation-Title>
-                                        <Specification-Title>JSR-338 Java Persistence</Specification-Title>
-                                        <Specification-Vendor>ORACLE, Inc.</Specification-Vendor>
-                                        <Specification-Version>2.2</Specification-Version>
+                                        <Specification-Title>Jakarta Persistence</Specification-Title>
+                                        <Specification-Vendor>Eclipse Foundation</Specification-Vendor>
+                                        <Specification-Version>3.0</Specification-Version>
                                     </manifestEntries>
                                 </transformer>
                             </transformers>
diff --git a/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml b/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml
index 8fc025517..6a8db6983 100644
--- a/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml
+++ b/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml
@@ -52,7 +52,7 @@
           <property name="jakarta.persistence.validation.group.pre-update"
               value="org.apache.openjpa.example.gallery.constraint.SequencedImageGroup"/>
           <property name="jakarta.persistence.validation.group.pre-remove"
-              value="javax.validation.groups.Default"/>
+              value="jakarta.validation.groups.Default"/>
         </properties>
     </persistence-unit>
 </persistence>
diff --git a/openjpa-integration/validation/pom.xml b/openjpa-integration/validation/pom.xml
index 1ddfa27a1..5bc45c0da 100644
--- a/openjpa-integration/validation/pom.xml
+++ b/openjpa-integration/validation/pom.xml
@@ -81,30 +81,14 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
-                <dependency>
-                    <groupId>javax.validation</groupId>
-                    <artifactId>validation-api</artifactId>
-                    <version>1.0.0.GA</version>
-                    <scope>test</scope>
-                </dependency>
+
                 <!-- Hibernate that implements 1.0.0.GA -->
                 <dependency>
                     <groupId>org.hibernate</groupId>
                     <artifactId>hibernate-validator</artifactId>
-                    <version>4.0.2.GA</version>
+                    <version>8.0.0.Final</version>
                     <scope>test</scope>
-                    <exclusions>
-                        <!-- force usage of the geronimo-jpa_2.1_spec -->
-                        <exclusion>
-                            <groupId>org.hibernate.java-persistence</groupId>
-                            <artifactId>jpa-api</artifactId>
-                        </exclusion>
-                        <!-- force usage of the RI API level above -->
-                        <exclusion>
-                            <groupId>javax.validation</groupId>
-                            <artifactId>validation-api</artifactId>
-                        </exclusion>
-                    </exclusions>
+
                 </dependency>
                 <dependency>
                     <groupId>org.slf4j</groupId>
diff --git a/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/constraints.xml b/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/constraints.xml
index 1c01c6894..1b952b572 100644
--- a/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/constraints.xml
+++ b/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/constraints.xml
@@ -26,13 +26,13 @@
     <bean class="XMLSuper" ignore-annotations="false">
         <getter name="superStrValue">
         <valid/>
-            <constraint annotation="javax.validation.constraints.NotNull"/>
+            <constraint annotation="jakarta.validation.constraints.NotNull"/>
         </getter>
     </bean>
     <bean class="XMLBase" ignore-annotations="false">
         <getter name="strValue">
         <valid/>
-            <constraint annotation="javax.validation.constraints.NotNull"/>
+            <constraint annotation="jakarta.validation.constraints.NotNull"/>
         </getter>
     </bean>
 </constraint-mappings>
\ No newline at end of file
diff --git a/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml b/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml
index dd760f8f0..6bb0f55d2 100644
--- a/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml
+++ b/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml
@@ -96,7 +96,7 @@
             <property name="openjpa.jdbc.SynchronizeMappings"
                 value="buildSchema"/>
             <property name="jakarta.persistence.validation.group.pre-remove"
-                value="javax.validation.groups.Default"/>
+                value="jakarta.validation.groups.Default"/>
         </properties>
     </persistence-unit>
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ant/MetaDataToolTask.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ant/MetaDataToolTask.java
index 07ece1188..b64c71c60 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ant/MetaDataToolTask.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ant/MetaDataToolTask.java
@@ -89,5 +89,5 @@ public class MetaDataToolTask
         public String[] getValues() {
             return MetaDataTool.ACTIONS;
         }
-	}
+    }
 }
diff --git a/openjpa-persistence/pom.xml b/openjpa-persistence/pom.xml
index 253edf5a7..e2e4e81f2 100644
--- a/openjpa-persistence/pom.xml
+++ b/openjpa-persistence/pom.xml
@@ -44,7 +44,6 @@
         <dependency>
             <groupId>jakarta.persistence</groupId>
             <artifactId>jakarta.persistence-api</artifactId>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>jakarta.validation</groupId>
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
index 4aacbdb1e..2915c20d8 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/pom.xml
@@ -37,10 +37,12 @@
         <dependency>
             <groupId>jakarta.persistence</groupId>
             <artifactId>jakarta.persistence-api</artifactId>
+            <version>${jakarta.persistence-api.version}</version>
         </dependency>
         <dependency>
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>
+            <version>${jakarta.validation-api.version}</version>
         </dependency>
     </dependencies>
 
diff --git a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/prjB/pom.xml b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/prjB/pom.xml
index fb4fb50a4..c1b29e049 100644
--- a/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/prjB/pom.xml
+++ b/openjpa-tools/openjpa-maven-plugin/src/it/testDependencies/prjB/pom.xml
@@ -52,7 +52,7 @@
         <dependency>
             <groupId>org.hsqldb</groupId>
             <artifactId>hsqldb</artifactId>
-            <version>${hsqldb.version}</version>
+            <version>@hsqldb.version@</version>
         </dependency>
     </dependencies>
     <build>
diff --git a/openjpa/pom.xml b/openjpa/pom.xml
index 57ec31f9b..4f167e102 100644
--- a/openjpa/pom.xml
+++ b/openjpa/pom.xml
@@ -96,75 +96,6 @@
                             </transformers>
                         </configuration>
                     </execution>
-                    <execution>
-                        <id>shade-jakarta</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <shadedArtifactAttached>true</shadedArtifactAttached>
-                            <shadedClassifierName>jakarta</shadedClassifierName>
-                            <createDependencyReducedPom>false</createDependencyReducedPom>
-                            <createSourcesJar>${createSources}</createSourcesJar>
-                            <transformers>
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
-                                <!-- Need to add some MANIFEST.MF metadata -->
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                                    <manifestEntries>
-                                        <Automatic-Module-Name>org.apache.openjpa</Automatic-Module-Name>
-                                    </manifestEntries>
-                                </transformer>
-                            </transformers>
-                            <artifactSet>
-                                <includes>
-                                    <include>org.apache.openjpa:openjpa-lib</include>
-                                    <include>org.apache.openjpa:openjpa-kernel</include>
-                                    <include>org.apache.openjpa:openjpa-jdbc</include>
-                                    <include>org.apache.openjpa:openjpa-persistence</include>
-                                    <include>org.apache.openjpa:openjpa-persistence-jdbc</include>
-                                    <include>org.apache.openjpa:openjpa-xmlstore</include>
-                                    <include>org.apache.openjpa:openjpa-slice</include>
-                                </includes>
-                            </artifactSet>
-                            <relocations>
-                                <relocation>
-                                    <pattern>jakarta.annotation</pattern>
-                                    <shadedPattern>jakarta.annotation</shadedPattern>
-                                    <excludes>
-                                        <exclude>javax.annotation.processing.**</exclude>
-                                    </excludes>
-                                </relocation>
-                                <relocation>
-                                    <pattern>jakarta.jms</pattern>
-                                    <shadedPattern>jakarta.jms</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>jakarta.persistence</pattern>
-                                    <shadedPattern>jakarta.persistence</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.servlet</pattern>
-                                    <shadedPattern>jakarta.servlet</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.transaction</pattern>
-                                    <shadedPattern>jakarta.transaction</shadedPattern>
-                                    <excludes>
-                                        <exclude>javax.transaction.xa.**</exclude>
-                                    </excludes>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.validation</pattern>
-                                    <shadedPattern>jakarta.validation</shadedPattern>
-                                </relocation>
-                                <relocation>
-                                    <pattern>javax.xml.bind</pattern>
-                                    <shadedPattern>jakarta.xml.bind</shadedPattern>
-                                </relocation>
-                            </relocations>
-                        </configuration>
-                    </execution>
                 </executions>
             </plugin>
 
@@ -181,9 +112,9 @@
                         <Agent-Class>org.apache.openjpa.enhance.InstrumentationFactory</Agent-Class>
                         <Can-Redefine-Classes>true</Can-Redefine-Classes>
                         <Can-Retransform-Classes>true</Can-Retransform-Classes>
-                        <Specification-Title>JSR-338 Java Persistence</Specification-Title>
-                        <Specification-Vendor>ORACLE, Inc.</Specification-Vendor>
-                        <Specification-Version>2.2</Specification-Version>
+                        <Specification-Title>Jakarta Persistence</Specification-Title>
+                        <Specification-Vendor>Eclipse Foundation</Specification-Vendor>
+                        <Specification-Version>3.0</Specification-Version>
                         <Automatic-Module-Name>org.apache.openjpa</Automatic-Module-Name>
                         <!-- OSGi Bundle Metadata -->
                         <Bundle-DocURL>${project.url}</Bundle-DocURL>
@@ -202,9 +133,9 @@
                             org.apache.commons.logging.*;resolution:=optional,
                             javax.activation.xa*;resolution:=optional,
                             jakarta.jms.*;version="[1.1.0,1.2)";resolution:=optional,
-                            javax.transaction.*;version="[1.1,1.3)";resolution:=optional,
-                            javax.validation.*;version="[1.0.0,1.1)";resolution:=optional,
-                            javax.xml.bind.*;resolution:=optional,
+                            jakarta.transaction.*;version="[1.1,1.3)";resolution:=optional,
+                            jakarta.validation.*;version="[1.0.0,1.1)";resolution:=optional,
+                            jakarta.xml.bind.*;resolution:=optional,
                             serp.*;resolution:=optional,
                             org.apache.commons.dbcp2.*;resolution:=optional,
                             org.apache.commons.pool2.*;resolution:=optional,


[openjpa] 01/17: OPENJPA-2908 Jakarta-3.0 API - WIP!

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit d9ceb44526dc60d8be91b39c92d9d606a9c07c54
Author: Mark Struberg <st...@apache.org>
AuthorDate: Mon Apr 24 09:16:57 2023 +0200

    OPENJPA-2908 Jakarta-3.0 API - WIP!
    
    This is not yet finished!
    Have to commit in parts as to create decently reviewable steps
---
 openjpa-all/pom.xml                                |   8 +-
 openjpa-examples/image-gallery/pom.xml             |   3 +-
 .../openjpa/example/gallery/TestJPAValidation.java |  10 +-
 .../gallery/constraint/ImageConstraint.java        |   4 +-
 .../example/gallery/constraint/ImageContent.java   |   4 +-
 .../gallery/constraint/ImageContentValidator.java  |   4 +-
 .../example/gallery/constraint/ImageValidator.java |   4 +-
 .../gallery/constraint/SequencedImageGroup.java    |   4 +-
 .../openjpa/example/gallery/model/Album.java       |  12 +-
 .../openjpa/example/gallery/model/Creator.java     |  14 +-
 .../openjpa/example/gallery/model/Image.java       |  18 +-
 .../openjpa/example/gallery/model/Location.java    |  10 +-
 .../src/test/resources/META-INF/persistence.xml    |   6 +-
 .../jest/src/main/java/demo/Actor.java             |   8 +-
 .../jest/src/main/java/demo/DataLoader.java        |   2 +-
 .../jest/src/main/java/demo/Movie.java             |   8 +-
 .../jest/src/main/java/demo/SimpleApp.java         |   6 +-
 .../src/main/resources/META-INF/persistence.xml    |   8 +-
 openjpa-examples/openbooks/index.html              |   4 +-
 openjpa-examples/openbooks/pom.xml                 |   2 +-
 .../java/jpa/tools/swing/AttributeLegendView.java  |   2 +-
 .../main/java/jpa/tools/swing/AttributeView.java   |   2 +-
 .../main/java/jpa/tools/swing/EntityDataModel.java |  10 +-
 .../src/main/java/jpa/tools/swing/EntityTable.java |   6 +-
 .../main/java/jpa/tools/swing/EntityTableView.java |   8 +-
 .../main/java/jpa/tools/swing/EntityTypeView.java  |   4 +-
 .../java/jpa/tools/swing/InstanceDataModel.java    |   4 +-
 .../main/java/jpa/tools/swing/InstanceView.java    |   2 +-
 .../main/java/jpa/tools/swing/MetamodelHelper.java |  12 +-
 .../main/java/jpa/tools/swing/MetamodelView.java   |   8 +-
 .../main/java/jpa/tools/swing/QueryDecorator.java  |   2 +-
 .../src/main/java/openbook/domain/Author.java      |  10 +-
 .../src/main/java/openbook/domain/Book.java        |  14 +-
 .../src/main/java/openbook/domain/Customer.java    |   8 +-
 .../src/main/java/openbook/domain/Inventory.java   |  10 +-
 .../src/main/java/openbook/domain/LineItem.java    |  14 +-
 .../main/java/openbook/domain/PurchaseOrder.java   |  18 +-
 .../main/java/openbook/server/OpenBookService.java |   2 +-
 .../java/openbook/server/OpenBookServiceImpl.java  |  22 +-
 .../java/openbook/server/PersistenceService.java   |   6 +-
 .../main/java/openbook/server/QueryDecorator.java  |   2 +-
 .../java/openbook/server/QueryParameterBinder.java |   2 +-
 .../main/java/openbook/server/ServiceFactory.java  |   6 +-
 .../src/main/resources/META-INF/persistence.xml    |  16 +-
 .../trader/client/TradingServiceAdapter.java       |   4 +-
 .../java/org/apache/openjpa/trader/domain/Ask.java |   6 +-
 .../java/org/apache/openjpa/trader/domain/Bid.java |   6 +-
 .../org/apache/openjpa/trader/domain/Stock.java    |   6 +-
 .../org/apache/openjpa/trader/domain/Tradable.java |  18 +-
 .../org/apache/openjpa/trader/domain/Trade.java    |  12 +-
 .../org/apache/openjpa/trader/domain/Trader.java   |  10 +-
 .../apache/openjpa/trader/service/Exchange.java    |   6 +-
 .../apache/openjpa/trader/service/MarketFeed.java  |   2 +-
 .../openjpa/trader/service/PersistenceService.java |   8 +-
 openjpa-examples/pom.xml                           |   2 +-
 openjpa-examples/simple/pom.xml                    |   2 +-
 .../simple/src/main/java/embeddables/Address.java  |   8 +-
 .../src/main/java/embeddables/ContactInfo.java     |   4 +-
 .../src/main/java/embeddables/Coordinates.java     |  10 +-
 .../simple/src/main/java/embeddables/Main.java     |   8 +-
 .../simple/src/main/java/embeddables/Phone.java    |   4 +-
 .../simple/src/main/java/embeddables/User.java     |  18 +-
 .../simple/src/main/java/hellojpa/Main.java        |   8 +-
 .../simple/src/main/java/hellojpa/Message.java     |   6 +-
 .../src/main/java/mapping/BuildSchemaPC.java       |  12 +-
 .../src/main/java/mapping/BuildUTF8SchemaPC.java   |  12 +-
 .../simple/src/main/java/relations/Deity.java      |  20 +-
 .../simple/src/main/java/relations/Main.java       |   8 +-
 .../simple/src/main/java/reversemapping/Main.java  |   2 +-
 openjpa-features/pom.xml                           |   2 +-
 openjpa-features/src/main/feature/feature.xml      |   4 +-
 openjpa-integration/daytrader/pom.xml              |   2 +-
 .../integration/daytrader/AccountDataBean.java     |  32 +-
 .../daytrader/AccountProfileDataBean.java          |  16 +-
 .../integration/daytrader/HoldingDataBean.java     |  30 +-
 .../integration/daytrader/OrderDataBean.java       |  32 +-
 .../integration/daytrader/QuoteDataBean.java       |  16 +-
 .../integration/daytrader/TestDaytrader.java       |   6 +-
 .../openjpa/integration/daytrader/TradeAction.java |   2 +-
 .../integration/daytrader/TradeJPADirect.java      |   8 +-
 openjpa-integration/examples/pom.xml               |   2 +-
 openjpa-integration/jmx/pom.xml                    |   2 +-
 .../openjpa/integration/jmx/CachedEntity.java      |   8 +-
 .../integration/jmx/TestJMXPlatformMBeans.java     |   2 +-
 openjpa-integration/pom.xml                        |   2 +-
 openjpa-integration/slf4j/pom.xml                  |   2 +-
 .../openjpa/integration/slf4j/TestLogFactory.java  |   2 +-
 openjpa-integration/tck/pom.xml                    |   4 +-
 openjpa-integration/tck/tck2-20091209.xml          |   2 +-
 openjpa-integration/tck/tck2-20101205.xml          |   2 +-
 openjpa-integration/tck/tck2-20110815.xml          |  10 +-
 openjpa-integration/validation/pom.xml             |   2 +-
 .../provider/DummyPersistenceProviderResolver.java |   4 +-
 .../persistence/provider/DummyProvider1.java       |   8 +-
 .../persistence/provider/DummyProvider2.java       |   8 +-
 .../provider/TestPersistenceProviderResolver.java  |  10 +-
 .../openjpa/integration/validation/Address.java    |  18 +-
 .../openjpa/integration/validation/Book.java       |  14 +-
 .../integration/validation/ConstraintBoolean.java  |  16 +-
 .../integration/validation/ConstraintDates.java    |  16 +-
 .../integration/validation/ConstraintDecimal.java  |  16 +-
 .../integration/validation/ConstraintDigits.java   |  14 +-
 .../integration/validation/ConstraintNull.java     |  16 +-
 .../integration/validation/ConstraintNumber.java   |  16 +-
 .../integration/validation/ConstraintPattern.java  |  14 +-
 .../integration/validation/ConstraintSize.java     |  14 +-
 .../openjpa/integration/validation/Customer.java   |   8 +-
 .../integration/validation/DefGrpEntity.java       |   8 +-
 .../openjpa/integration/validation/IAddress.java   |   2 +-
 .../openjpa/integration/validation/IPerson.java    |   2 +-
 .../openjpa/integration/validation/Image.java      |  10 +-
 .../openjpa/integration/validation/Location.java   |  10 +-
 .../integration/validation/MixedGrpEntity.java     |   8 +-
 .../integration/validation/NonDefGrpEntity.java    |   8 +-
 .../openjpa/integration/validation/Person.java     |  22 +-
 .../openjpa/integration/validation/Publisher.java  |   6 +-
 .../integration/validation/SimpleEntity.java       |  26 +-
 .../validation/TestConstraintViolation.java        |  10 +-
 .../integration/validation/TestConstraints.java    |   6 +-
 .../integration/validation/TestMappedSuper.java    |   4 +-
 .../openjpa/integration/validation/TestMerge.java  |   4 +-
 .../validation/TestTraversableResolver.java        |   6 +-
 .../integration/validation/TestValidatingLEM.java  |  14 +-
 .../validation/TestValidationGroups.java           |  16 +-
 .../openjpa/integration/validation/persistence.xml |  18 +-
 openjpa-jdbc/pom.xml                               |   2 +-
 .../apache/openjpa/jdbc/kernel/TableJDBCSeq.java   |   2 +-
 .../openjpa/jdbc/meta/ReverseMappingTool.java      |   2 +-
 .../openjpa/jdbc/schema/DataSourceFactory.java     |   2 +-
 .../apache/openjpa/jdbc/sql/OracleDictionary.java  |   2 +-
 .../openjpa/jdbc/schema/localizer.properties       |   2 +-
 openjpa-jest/pom.xml                               |   7 +-
 .../openjpa/persistence/jest/JESTServlet.java      |   2 +-
 .../persistence/jest/JSONObjectFormatter.java      |   4 +-
 .../openjpa/persistence/jest/MetamodelHelper.java  |  12 +-
 .../openjpa/persistence/jest/ObjectFormatter.java  |   2 +-
 .../openjpa/persistence/jest/QueryCommand.java     |   2 +-
 .../openjpa/persistence/jest/XMLFormatter.java     |  10 +-
 .../openjpa/persistence/jest/jest-instance.xsd     |   2 +-
 openjpa-jest/src/test/java/demo/Actor.java         |   8 +-
 openjpa-jest/src/test/java/demo/DataLoader.java    |   2 +-
 openjpa-jest/src/test/java/demo/Movie.java         |   8 +-
 openjpa-junit5/pom.xml                             |   6 +-
 .../internal/OpenJPADirectoriesEnhancer.java       |   6 +-
 .../java/org/apache/openjpa/junit5/MyEntity.java   |   4 +-
 openjpa-kernel/pom.xml                             |  10 +-
 .../apache/openjpa/conf/OpenJPAConfiguration.java  |   2 +-
 .../openjpa/conf/OpenJPAConfigurationImpl.java     |  30 +-
 .../openjpa/datacache/CacheDistributionPolicy.java |   4 +-
 .../apache/openjpa/ee/AbstractManagedRuntime.java  |   8 +-
 .../apache/openjpa/ee/AutomaticManagedRuntime.java |  10 +-
 .../openjpa/ee/InvocationManagedRuntime.java       |   2 +-
 .../org/apache/openjpa/ee/JNDIManagedRuntime.java  |   2 +-
 .../java/org/apache/openjpa/ee/ManagedRuntime.java |   6 +-
 .../org/apache/openjpa/ee/OSGiManagedRuntime.java  |  12 +-
 .../apache/openjpa/ee/RegistryManagedRuntime.java  |  20 +-
 .../apache/openjpa/ee/SunOneManagedRuntime.java    |   2 +-
 .../org/apache/openjpa/ee/WASManagedRuntime.java   |  30 +-
 .../org/apache/openjpa/ee/WLSManagedRuntime.java   |   4 +-
 .../openjpa/event/JMSRemoteCommitProvider.java     |  26 +-
 .../openjpa/kernel/AbstractBrokerFactory.java      |   8 +-
 .../java/org/apache/openjpa/kernel/Broker.java     |   2 +-
 .../java/org/apache/openjpa/kernel/BrokerImpl.java |  14 +-
 .../openjpa/kernel/FetchConfigurationImpl.java     |   6 +-
 .../apache/openjpa/kernel/LocalManagedRuntime.java |  12 +-
 .../org/apache/openjpa/kernel/jpql/JPQLParser.java |   2 +-
 .../apache/openjpa/datacache/localizer.properties  |   2 +-
 .../apache/openjpa/ee/TestOSGiManagedRuntime.java  |  22 +-
 openjpa-kubernetes/pom.xml                         |   2 +-
 openjpa-lib/pom.xml                                |   6 +-
 .../apache/openjpa/lib/conf/ConfigurationImpl.java |   2 +-
 .../apache/openjpa/lib/util/J2DoPrivHelper.java    |  16 +-
 openjpa-persistence-jdbc/pom.xml                   |   6 +-
 openjpa-persistence-jdbc/src/main/ant/enhancer.xml |   1 +
 .../jdbc/AnnotationPersistenceMappingParser.java   |  88 ++---
 .../AnnotationPersistenceMappingSerializer.java    |  46 +--
 .../apache/openjpa/persistence/jdbc/Columns.java   |   2 +-
 .../openjpa/persistence/jdbc/JDBCFetchPlan.java    |   2 +-
 .../persistence/jdbc/JDBCFetchPlanImpl.java        |   2 +-
 .../jdbc/JDBCPersistenceProductDerivation.java     |   4 +-
 .../openjpa/persistence/jdbc/MappingOverride.java  |   2 +-
 .../jdbc/XMLPersistenceMappingParser.java          |   8 +-
 .../jdbc/XMLPersistenceMappingSerializer.java      |   4 +-
 .../openjpa/persistence/jdbc/XMappingOverride.java |   2 +-
 .../openjpa/persistence/jdbc/XSecondaryTable.java  |   2 +-
 .../org/apache/openjpa/audit/AuditedEntry.java     |  20 +-
 .../java/org/apache/openjpa/audit/TestAudit.java   |   4 +-
 .../audit/TestBeginEventOnTransactionListener.java |   4 +-
 .../src/test/java/org/apache/openjpa/audit/X.java  |   4 +-
 .../openjpa/conf/TestAutoDetachProperty.java       |   6 +-
 .../openjpa/conf/TestBadAutoDetachProperty.java    |   6 +-
 .../org/apache/openjpa/conf/TestBadJdbcUrl.java    |   8 +-
 .../openjpa/conf/TestCacheMarshallerEndToEnd.java  |   4 +-
 .../openjpa/conf/TestDynamicConfiguration.java     |   2 +-
 .../org/apache/openjpa/conf/TestGetProperty.java   |   6 +-
 .../org/apache/openjpa/conf/TestQueryHints.java    |  14 +-
 .../apache/openjpa/conf/TestQueryProperties.java   |  38 +-
 .../conf/TestSpecificationConfiguration.java       |   2 +-
 .../apache/openjpa/enhance/EnhancedSubClass.java   |   2 +-
 .../apache/openjpa/enhance/EnhancedSuperClass.java |   6 +-
 ...TestDataCachingAndUnenhancedPropertyAccess.java |   2 +-
 .../openjpa/enhance/TestSimpleUnenhancedQuery.java |   2 +-
 .../enhance/UnenhancedBootstrapInstance.java       |   4 +-
 .../enhance/UnenhancedBootstrapInstance2.java      |   4 +-
 .../enhance/UnenhancedCompoundPKFieldAccess.java   |   6 +-
 .../UnenhancedCompoundPKFieldAccessSubclass.java   |   4 +-
 .../UnenhancedCompoundPKFieldAccessSuperclass.java |   6 +-
 .../UnenhancedCompoundPKPropertyAccess.java        |   6 +-
 .../openjpa/enhance/UnenhancedFieldAccess.java     |  18 +-
 .../UnenhancedFieldAccessPrimitiveWrapper.java     |  18 +-
 ...nhancedFieldAccessPrimitiveWrapperSubclass.java |   6 +-
 .../enhance/UnenhancedFieldAccessSubclass.java     |   6 +-
 .../UnenhancedIdentityIdPropertyAccess.java        |   8 +-
 .../org/apache/openjpa/enhance/UnenhancedMany.java |   6 +-
 .../org/apache/openjpa/enhance/UnenhancedOne.java  |   6 +-
 .../apache/openjpa/enhance/UnenhancedPObject.java  |   2 +-
 .../openjpa/enhance/UnenhancedPropertyAccess.java  |  18 +-
 .../enhance/UnenhancedPropertyAccessSubclass.java  |   6 +-
 .../openjpa/enhance/UnenhancedUnlistedClass.java   |   4 +-
 .../openjpa/enhance/UnenhancedUnlistedReferer.java |   6 +-
 .../org/apache/openjpa/enhance/ids/Device.java     |  10 +-
 .../org/apache/openjpa/enhance/ids/Hardware.java   |   8 +-
 .../org/apache/openjpa/enhance/ids/Software.java   |   8 +-
 .../openjpa/enhance/ids/TestOptimizeIdCopy.java    |   4 +-
 .../openjpa/event/TestLifecycleListener.java       |   2 +-
 .../event/TestSJVMRemoteCommitProvider.java        |   2 +-
 .../openjpa/instrumentation/CacheableEntity.java   |   8 +-
 .../TestInstrumentationProvider.java               |   2 +-
 .../java/org/apache/openjpa/jdbc/kernel/A.java     |   8 +-
 .../org/apache/openjpa/jdbc/kernel/Employee.java   |  12 +-
 .../org/apache/openjpa/jdbc/kernel/EntityA.java    |  18 +-
 .../org/apache/openjpa/jdbc/kernel/EntityB.java    |  18 +-
 .../org/apache/openjpa/jdbc/kernel/EntityC.java    |  18 +-
 .../org/apache/openjpa/jdbc/kernel/EntityD.java    |  16 +-
 .../org/apache/openjpa/jdbc/kernel/EntityE.java    |  16 +-
 .../org/apache/openjpa/jdbc/kernel/EntityF.java    |   8 +-
 .../org/apache/openjpa/jdbc/kernel/EntityG.java    |   8 +-
 .../openjpa/jdbc/kernel/M21UniDepartment.java      |   6 +-
 .../apache/openjpa/jdbc/kernel/M21UniEmployee.java |   8 +-
 .../openjpa/jdbc/kernel/M2MBiDepartment.java       |  10 +-
 .../apache/openjpa/jdbc/kernel/M2MBiEmployee.java  |  10 +-
 .../openjpa/jdbc/kernel/OptSelectEntity.java       |  14 +-
 .../java/org/apache/openjpa/jdbc/kernel/Story.java |  12 +-
 .../java/org/apache/openjpa/jdbc/kernel/Task.java  |  14 +-
 .../jdbc/kernel/TestCollectionTracking.java        |   4 +-
 .../jdbc/kernel/TestForeignKeyCountViolation.java  |   2 +-
 .../openjpa/jdbc/kernel/TestInsertOrder.java       |   2 +-
 .../openjpa/jdbc/kernel/TestM21UniVersion.java     |   2 +-
 .../openjpa/jdbc/kernel/TestM2MBiVersion.java      |   2 +-
 .../jdbc/kernel/TestNoForeignKeyViolation.java     |   2 +-
 .../org/apache/openjpa/jdbc/meta/EntityBool.java   |   6 +-
 .../apache/openjpa/jdbc/meta/EntityBoolChar.java   |   6 +-
 .../apache/openjpa/jdbc/meta/TestBooleanValue.java |   4 +-
 .../jdbc/meta/TestMappingToolAutoDelete.java       |   4 +-
 .../openjpa/jdbc/meta/strats/AbstractLobTest.java  |   4 +-
 .../jdbc/meta/strats/InputStreamLobEntity.java     |   4 +-
 .../openjpa/jdbc/meta/strats/ReaderLobEntity.java  |   4 +-
 .../openjpa/jdbc/oracle/TestOracleXmlColumn.java   |   4 +-
 .../apache/openjpa/jdbc/oracle/XmlColEntity.java   |  12 +-
 .../jdbc/persistence/classcriteria/Artist.java     |  14 +-
 .../jdbc/persistence/classcriteria/Book.java       |  12 +-
 .../jdbc/persistence/classcriteria/Item.java       |  20 +-
 .../jdbc/persistence/classcriteria/Movie.java      |  12 +-
 .../jdbc/procedure/TestStoredProcedure.java        |   6 +-
 .../entity/EntityWithStoredProcedure.java          |  22 +-
 .../DelimitedIdentifiersAllFieldTypesEntity.java}  |  57 ++-
 .../openjpa/jdbc/sql/SnakeCaseDDLEntity.java       |  44 +++
 .../openjpa/jdbc/sql/SnakeCaseDDLMy2Entity.java    |  26 ++
 .../openjpa/jdbc/sql/TestDelimitIdentifiers.java   | 405 +--------------------
 .../apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java  |  44 +--
 .../openjpa/jira1100/BadVersionFieldEntity.java    |  47 +++
 .../openjpa/jira1100/TestBadVersionField.java      |  34 +-
 .../org/apache/openjpa/jira1794/AggEntity.java     |   8 +-
 .../org/apache/openjpa/jira1794/AggEntity_.java    |   4 +-
 .../openjpa/jira1794/TestAggregateFunctions.java   |  20 +-
 .../jira2780/TestJira2780ReverseCustomizer.java    |   4 +-
 .../openjpa/jira_2883/OracleGeneratedIdEntity.java |  47 +++
 .../openjpa/jira_2883/TestOracleGeneratedId.java   |  33 +-
 .../java/org/apache/openjpa/jta/ContainerTest.java |   2 +-
 .../org/apache/openjpa/jta/JTAManagedRuntime.java  |   6 +-
 .../org/apache/openjpa/jta/SimpleTransaction.java  |  14 +-
 .../openjpa/jta/SimpleTransactionManager.java      |  18 +-
 .../kernel/AbstractBrokerSerializationTest.java    |   2 +-
 .../kernel/TestBrokerFactoryEventManager.java      |   2 +-
 .../kernel/TestBrokerFactoryListenerRegistry.java  |   2 +-
 .../kernel/TestDynamicClassRegistration.java       |   6 +-
 .../kernel/TestEntityManagerFactoryPool.java       |   4 +-
 .../openjpa/kernel/TestQueryCompilationCache.java  |   2 +-
 .../lib/conf/TestEquivalentConfiguration.java      |  10 +-
 .../src/test/java/org/apache/openjpa/meta/A.java   |   4 +-
 .../org/apache/openjpa/meta/AbstractThing.java     |   8 +-
 .../test/java/org/apache/openjpa/meta/Artist.java  |   2 +-
 .../src/test/java/org/apache/openjpa/meta/B.java   |   6 +-
 .../src/test/java/org/apache/openjpa/meta/C.java   |  12 +-
 .../test/java/org/apache/openjpa/meta/Item.java    |  12 +-
 .../test/java/org/apache/openjpa/meta/PChild.java  |  10 +-
 .../java/org/apache/openjpa/meta/PChildBi.java     |  12 +-
 .../test/java/org/apache/openjpa/meta/Painter.java |   2 +-
 .../test/java/org/apache/openjpa/meta/Parent.java  |  16 +-
 .../test/java/org/apache/openjpa/meta/Person.java  |   6 +-
 .../openjpa/openjpa2018/OpenJPA2018Test.java       |  10 +-
 .../org/apache/openjpa/openjpa2018/User2018.java   |   6 +-
 .../org/apache/openjpa/persistence/Country.java    |   8 +-
 .../java/org/apache/openjpa/persistence/Embed.java |   2 +-
 .../apache/openjpa/persistence/Issue428Entity.java |   4 +-
 .../org/apache/openjpa/persistence/Security.java   |  16 +-
 .../openjpa/persistence/TestOpenJPA2330.java       |   4 +-
 .../org/apache/openjpa/persistence/TestUnwrap.java |   6 +-
 .../TestXMLPersistenceMetaDataParser.java          |   2 +-
 .../access/AbstractMappedSuperField.java           |  12 +-
 .../access/AbstractMappedSuperProperty.java        |  14 +-
 .../access/DefFieldMixedPropAccess.java            |  20 +-
 .../access/DefPropMixedFieldAccess.java            |  20 +-
 .../persistence/access/EmbedFieldAccess.java       |   6 +-
 .../apache/openjpa/persistence/access/EmbedId.java |   6 +-
 .../openjpa/persistence/access/EmbedInnerProp.java |   8 +-
 .../persistence/access/EmbedMixedAccess.java       |   8 +-
 .../persistence/access/EmbedOuterField.java        |   6 +-
 .../persistence/access/EmbedPropAccess.java        |   6 +-
 .../openjpa/persistence/access/FieldAccess.java    |  16 +-
 .../access/FieldAccessPropStratsEntity.java        |  28 +-
 .../persistence/access/FieldEmbedEntity.java       |  18 +-
 .../openjpa/persistence/access/FieldSub.java       |  14 +-
 .../openjpa/persistence/access/FieldSub2.java      |  10 +-
 .../openjpa/persistence/access/FieldSub3.java      |  14 +-
 .../openjpa/persistence/access/Ingredient.java     |  10 +-
 .../persistence/access/MappedCallbackSup.java      |   4 +-
 .../persistence/access/MappedSuperField.java       |  14 +-
 .../persistence/access/MappedSuperProperty.java    |  12 +-
 .../openjpa/persistence/access/MenuItem.java       |  18 +-
 .../openjpa/persistence/access/MixedFieldSub.java  |  16 +-
 .../persistence/access/MixedMappedSuper.java       |  14 +-
 .../persistence/access/MixedMultEmbedEntity.java   |  18 +-
 .../persistence/access/MixedNestedEmbedEntity.java |  18 +-
 .../openjpa/persistence/access/PropAccess.java     |  14 +-
 .../access/PropAccessFieldStratsEntity.java        |  28 +-
 .../persistence/access/PropEmbedEntity.java        |  18 +-
 .../openjpa/persistence/access/PropEntity.java     |   6 +-
 .../persistence/access/PropMixedEntity.java        |  18 +-
 .../access/PropertyAccessCapitalization.java       |   6 +-
 .../PropertyAccessCapitalizationOldBehavior.java   |  10 +-
 .../openjpa/persistence/access/PropertySub.java    |  14 +-
 .../openjpa/persistence/access/PropertySub2.java   |  14 +-
 .../openjpa/persistence/access/PropertySub3.java   |  14 +-
 .../openjpa/persistence/access/Quantity.java       |  10 +-
 .../persistence/access/SuperFieldEntity.java       |  18 +-
 .../persistence/access/SuperPropertyEntity.java    |  18 +-
 .../persistence/access/TestDefaultAccess.java      |   4 +-
 .../persistence/access/TestExplicitAccess.java     |   2 +-
 .../access/TestPropertyAccessCapitalization.java   |   2 +-
 .../access/xml/TestXMLExplicitAccess.java          |   2 +-
 .../persistence/annotations/PColl_EmbedB.java      |   6 +-
 .../persistence/annotations/PColl_EntityA.java     |  10 +-
 .../persistence/annotations/PColl_EntityA1.java    |  10 +-
 .../persistence/annotations/PColl_EntityB.java     |   6 +-
 .../persistence/annotations/PColl_EntityC.java     |  10 +-
 .../annotations/PColl_EntityStringEager.java       |   6 +-
 .../annotations/PColl_EntityStringLazy.java        |   6 +-
 .../persistence/annotations/TestEmbeddedId.java    |   2 +-
 .../persistence/annotations/TestEnumerated.java    |   2 +-
 .../persistence/annotations/TestGenerators.java    |   2 +-
 .../persistence/annotations/TestMapKey.java        |   2 +-
 .../annotations/TestPersistentCollection.java      |   4 +-
 .../persistence/annotations/TestVersion.java       |   2 +-
 .../common/apps/annotApp/annotype/AnnoTest1.java   |  50 +--
 .../common/apps/annotApp/annotype/AnnoTest2.java   |  34 +-
 .../common/apps/annotApp/annotype/AnnoTest3.java   |  18 +-
 .../apps/annotApp/annotype/ContractEmployee.java   |   8 +-
 .../apps/annotApp/annotype/DateValidator.java      |   4 +-
 .../annotApp/annotype/DefaultCallbackListener.java |  14 +-
 .../common/apps/annotApp/annotype/EmbedOwner.java  |  24 +-
 .../common/apps/annotApp/annotype/EmbedValue.java  |  12 +-
 .../common/apps/annotApp/annotype/EmbedValue2.java |   6 +-
 .../apps/annotApp/annotype/EmbeddableSuper.java    |  14 +-
 .../apps/annotApp/annotype/EmbeddableSuperSub.java |  12 +-
 .../apps/annotApp/annotype/EmbeddedIdClass.java    |   6 +-
 .../apps/annotApp/annotype/EmbeddedIdEntity.java   |  20 +-
 .../common/apps/annotApp/annotype/Employee.java    |  24 +-
 .../common/apps/annotApp/annotype/Entity1.java     |  24 +-
 .../common/apps/annotApp/annotype/Entity2.java     |  12 +-
 .../common/apps/annotApp/annotype/Flat1.java       |  16 +-
 .../common/apps/annotApp/annotype/Flat2.java       |   4 +-
 .../apps/annotApp/annotype/FlightSchedule.java     |  14 +-
 .../common/apps/annotApp/annotype/Generator.java   |  14 +-
 .../apps/annotApp/annotype/LongNameValidator.java  |   4 +-
 .../apps/annotApp/annotype/NameValidator.java      |   8 +-
 .../apps/annotApp/annotype/OrderByEntity.java      |  12 +-
 .../common/apps/annotApp/annotype/Party.java       |   4 +-
 .../common/apps/annotApp/annotype/Party1.java      |  10 +-
 .../apps/annotApp/annotype/PropertyAccess1.java    |   4 +-
 .../common/apps/annotApp/annotype/Schedule.java    |  22 +-
 .../common/apps/annotApp/annotype/Site.java        |  10 +-
 .../common/apps/annotApp/annotype/Site1.java       |  10 +-
 .../common/apps/annotApp/annotype/Store.java       |  12 +-
 .../common/apps/annotApp/annotype/Store1.java      |  10 +-
 .../apps/annotApp/annotype/StringValidator.java    |   4 +-
 .../apps/annotApp/annotype/TablePerClass1.java     |  18 +-
 .../apps/annotApp/annotype/TablePerClass2.java     |   4 +-
 .../apps/annotApp/annotype/TxRollbackEntity.java   |  16 +-
 .../apps/annotApp/ddtype/ContractEmployee.java     |   8 +-
 .../common/apps/annotApp/ddtype/DateValidator.java |   4 +-
 .../common/apps/annotApp/ddtype/Employee.java      |  24 +-
 .../common/apps/annotApp/ddtype/Entity1.java       |  24 +-
 .../common/apps/annotApp/ddtype/Entity2.java       |  12 +-
 .../apps/annotApp/ddtype/FlightSchedule.java       |  10 +-
 .../apps/annotApp/ddtype/LifeCycleDDEntity.java    |  10 +-
 .../apps/annotApp/ddtype/LifeCycleDDEntity2.java   |  16 +-
 .../apps/annotApp/ddtype/LifeCycleDDEntitySub.java |   4 +-
 .../apps/annotApp/ddtype/LongNameValidator.java    |   4 +-
 .../common/apps/annotApp/ddtype/NameValidator.java |   8 +-
 .../common/apps/annotApp/ddtype/Schedule.java      |  20 +-
 .../apps/annotApp/ddtype/StringValidator.java      |   4 +-
 .../apps/annotApp/ddtype/TxRollbackEntity.java     |  16 +-
 .../persistence/annotations/xml/DerivedA.java      |   4 +-
 .../persistence/annotations/xml/DerivedB.java      |   6 +-
 .../persistence/annotations/xml/EntityA.java       |  14 +-
 .../persistence/annotations/xml/EntityB.java       |  16 +-
 .../arrays/TestAnnoExceptionEntity.java            |   2 +-
 .../persistence/arrays/TestXMLExceptionEntity.java |   2 +-
 .../arrays/model/AnnoExceptionEntity.java          |  10 +-
 .../openjpa/persistence/batch/exception/Ent1.java  |   4 +-
 .../batch/exception/TestBatchLimitException.java   |   4 +-
 .../openjpa/persistence/blob/BlobEntity.java       |   8 +-
 .../apache/openjpa/persistence/blob/TestBlobs.java |   6 +-
 .../persistence/blob/mysql/BlobColumnEntity.java   |   8 +-
 .../persistence/blob/mysql/ClobColumnEntity.java   |   8 +-
 .../cache/jpa/AbstractCacheModeTestCase.java       |   8 +-
 .../cache/jpa/AbstractCacheTestCase.java           |   6 +-
 .../persistence/cache/jpa/TestCacheModeAll.java    |   2 +-
 .../cache/jpa/TestCacheModeDisableSelective.java   |   2 +-
 .../TestCacheModeDisableSelectiveInheritance.java  |   4 +-
 .../persistence/cache/jpa/TestCacheModeEmpty.java  |   2 +-
 .../cache/jpa/TestCacheModeEnableSelective.java    |   2 +-
 .../persistence/cache/jpa/TestCacheModeNone.java   |   2 +-
 .../cache/jpa/TestCacheModeUnspecified.java        |   2 +-
 .../jpa/TestCacheModeUnspecifiedDataCacheTrue.java |   2 +-
 .../cache/jpa/TestMultiEMFCacheModes.java          |  20 +-
 .../cache/jpa/TestPropertyCacheModeAll.java        |   4 +-
 .../jpa/TestPropertyCacheModeDisableSelective.java |   4 +-
 .../jpa/TestPropertyCacheModeEnableSelective.java  |   4 +-
 .../cache/jpa/TestPropertyCacheModeInvalid.java    |   4 +-
 .../cache/jpa/TestPropertyCacheModeNone.java       |   4 +-
 .../jpa/TestPropertyCacheModeUnspecified.java      |   4 +-
 .../cache/jpa/model/CacheableEntity.java           |  10 +-
 .../cache/jpa/model/ChildUncacheable.java          |   6 +-
 .../cache/jpa/model/NegatedCachableEntity.java     |   8 +-
 .../cache/jpa/model/NegatedUncacheableEntity.java  |   8 +-
 .../cache/jpa/model/ParentUnspecifiedEntity.java   |   8 +-
 .../cache/jpa/model/UncacheableEntity.java         |  10 +-
 .../cache/jpa/model/UnspecifiedEntity.java         |   8 +-
 .../cache/jpa/model/XmlCacheableEntity.java        |   8 +-
 .../cache/jpa/model/XmlUncacheableEntity.java      |   8 +-
 .../persistence/callbacks/AddListenerEntity.java   |   6 +-
 .../callbacks/DuplicateListenerEntity.java         |   8 +-
 .../callbacks/EntityListenerEntity.java            |   8 +-
 .../callbacks/EntityListenerMappedSuperClass.java  |   4 +-
 .../callbacks/ExceptionsFromCallbacksEntity.java   |  24 +-
 .../callbacks/GlobalListenerEntity.java            |   6 +-
 .../persistence/callbacks/ListenerImpl.java        |  14 +-
 .../persistence/callbacks/ListenerInEntity.java    |  20 +-
 .../persistence/callbacks/MSCListenerEntity.java   |   6 +-
 .../openjpa/persistence/callbacks/Message.java     |  12 +-
 .../persistence/callbacks/MessageListenerImpl.java |  14 +-
 .../callbacks/PostLoadListenerEntity.java          |   8 +-
 .../callbacks/PostLoadListenerImpl.java            |   2 +-
 .../persistence/callbacks/PostPersistEntity.java   |   8 +-
 .../callbacks/TestExceptionsFromCallbacks.java     |   4 +-
 .../callbacks/TestMessageListeners.java            |   2 +-
 .../callbacks/TestPostPersistCallback.java         |   2 +-
 .../persistence/cascade/CascadePersistEntity.java  |  10 +-
 .../apache/openjpa/persistence/cascade/Edge.java   |  14 +-
 .../persistence/cascade/TestCascadePersist.java    |   4 +-
 .../cascade/TestMultiCascadePersist.java           |   8 +-
 .../apache/openjpa/persistence/cascade/Vertex.java |  20 +-
 .../openjpa/persistence/cascade/VertexType.java    |  16 +-
 .../cascade/pudefault/AnEmbeddable.java            |   4 +-
 .../pudefault/EmbeddableWithRelationships.java     |  10 +-
 .../cascade/pudefault/PUDEntityA01.java            |  18 +-
 .../cascade/pudefault/PUDEntityA02.java            |  12 +-
 .../cascade/pudefault/PUDEntityAE01.java           |  20 +-
 .../persistence/cascade/pudefault/PUDEntityB.java  |  10 +-
 .../pudefault/TestNoPUDefaultCascadePersist.java   |   2 +-
 .../pudefault/TestPUDefaultCascadePersist.java     |   2 +-
 .../openjpa/persistence/common/apps/Address.java   |  14 +-
 .../openjpa/persistence/common/apps/ArtCourse.java |   4 +-
 .../openjpa/persistence/common/apps/CompUser.java  |  26 +-
 .../persistence/common/apps/ComplexEmbeddedPC.java |   8 +-
 .../openjpa/persistence/common/apps/Course.java    |  14 +-
 .../persistence/common/apps/Department.java        |  10 +-
 .../persistence/common/apps/EmbeddedOwnerPC.java   |  14 +-
 .../persistence/common/apps/EmbeddedPC.java        |   6 +-
 .../openjpa/persistence/common/apps/Entity1.java   |  24 +-
 .../openjpa/persistence/common/apps/Entity2.java   |   8 +-
 .../persistence/common/apps/FemaleUser.java        |   4 +-
 .../openjpa/persistence/common/apps/MaleUser.java  |   4 +-
 .../openjpa/persistence/common/apps/Part.java      |  12 +-
 .../openjpa/persistence/common/apps/PartPK.java    |   4 +-
 .../persistence/common/apps/RuntimeTest1.java      |  20 +-
 .../persistence/common/apps/RuntimeTest2.java      |   4 +-
 .../persistence/common/apps/ScienceCourse.java     |   4 +-
 .../openjpa/persistence/common/apps/Shirt.java     |  12 +-
 .../openjpa/persistence/common/apps/Student.java   |  16 +-
 .../openjpa/persistence/common/apps/Textile.java   |  16 +-
 .../openjpa/persistence/common/apps/TextilePK.java |   8 +-
 .../openjpa/persistence/common/apps/Trousers.java  |   6 +-
 .../persistence/common/utils/AbstractTestCase.java |   6 +-
 .../openjpa/persistence/compat/Bi_1To1_JT.java     |  12 +-
 .../openjpa/persistence/compat/Bi_1ToM_FK.java     |  10 +-
 .../openjpa/persistence/compat/Bi_1ToM_JT.java     |  10 +-
 .../openjpa/persistence/compat/Bi_1ToM_Map_JT.java |  10 +-
 .../persistence/compat/Bi_1ToM_Map_RelKey_JT.java  |  10 +-
 .../openjpa/persistence/compat/Department.java     |  12 +-
 .../persistence/compat/EmbeddableSuper.java        |  14 +-
 .../persistence/compat/EmbeddableSuperSub.java     |  12 +-
 .../openjpa/persistence/compat/Employee.java       |  16 +-
 .../apache/openjpa/persistence/compat/EntityA.java |  10 +-
 .../apache/openjpa/persistence/compat/EntityB.java |  14 +-
 .../apache/openjpa/persistence/compat/EntityC.java |   8 +-
 .../openjpa/persistence/compat/EntityC_B11JT.java  |   8 +-
 .../openjpa/persistence/compat/EntityC_B1MFK.java  |  10 +-
 .../openjpa/persistence/compat/EntityC_B1MJT.java  |  12 +-
 .../persistence/compat/EntityC_B1M_Map_JT.java     |  14 +-
 .../compat/EntityC_B1M_Map_RelKey_JT.java          |  14 +-
 .../openjpa/persistence/compat/EntityC_U11JT.java  |   6 +-
 .../openjpa/persistence/compat/EntityC_U1MFK.java  |   8 +-
 .../persistence/compat/EntityC_U1M_Map_FK.java     |   8 +-
 .../compat/EntityC_U1M_Map_RelKey_FK.java          |   8 +-
 .../persistence/compat/FullTimeEmployee.java       |   6 +-
 .../apache/openjpa/persistence/compat/Invoice.java |  10 +-
 .../openjpa/persistence/compat/LineItem.java       |   6 +-
 .../openjpa/persistence/compat/MappedSuper.java    |  12 +-
 .../persistence/compat/PartTimeEmployee.java       |   6 +-
 .../openjpa/persistence/compat/SimpleEntity.java   |  26 +-
 .../openjpa/persistence/compat/SimpleEntity2.java  |  16 +-
 .../TestContainerSpecCompatibilityOptions.java     |   4 +-
 .../persistence/compat/TestDupNamedQuery.java      |   2 +-
 .../persistence/compat/TestMessageListener.java    |   2 +-
 .../compat/TestNonPrimaryKeyQueryParameters.java   |   6 +-
 .../persistence/compat/TestQuerySQLCache.java      |   6 +-
 .../compat/TestSpecCompatibilityOptions.java       |   4 +-
 .../openjpa/persistence/compat/Uni_1To1_JT.java    |  12 +-
 .../openjpa/persistence/compat/Uni_1ToM_FK.java    |  12 +-
 .../openjpa/persistence/compat/Uni_1ToM_JT.java    |  14 +-
 .../persistence/compat/Uni_1ToM_Map_FK.java        |  14 +-
 .../persistence/compat/Uni_1ToM_Map_RelKey_FK.java |  14 +-
 .../openjpa/persistence/compat/Uni_MTo1_JT.java    |  12 +-
 .../apache/openjpa/persistence/conf/Person.java    |  10 +-
 .../persistence/conf/TestOpenJPAConfiguration.java |   2 +-
 .../conf/TestOverrideNonJtaDataSource.java         |  14 +-
 .../persistence/conf/TestSwitchConnection.java     |  14 +-
 .../org/apache/openjpa/persistence/criteria/A.java |   8 +-
 .../apache/openjpa/persistence/criteria/A_.java    |   4 +-
 .../criteria/AbstractCriteriaTestCase.java         |   8 +-
 .../openjpa/persistence/criteria/Account.java      |  14 +-
 .../openjpa/persistence/criteria/Account_.java     |   4 +-
 .../openjpa/persistence/criteria/Address.java      |  12 +-
 .../openjpa/persistence/criteria/Address_.java     |   4 +-
 .../org/apache/openjpa/persistence/criteria/B.java |   4 +-
 .../apache/openjpa/persistence/criteria/B_.java    |   4 +-
 .../openjpa/persistence/criteria/BlogUser.java     |   8 +-
 .../openjpa/persistence/criteria/BlogUser_.java    |   6 +-
 .../org/apache/openjpa/persistence/criteria/C.java |   8 +-
 .../apache/openjpa/persistence/criteria/C_.java    |  12 +-
 .../openjpa/persistence/criteria/CompUser.java     |  26 +-
 .../openjpa/persistence/criteria/CompUser_.java    |   6 +-
 .../openjpa/persistence/criteria/Contact.java      |   6 +-
 .../openjpa/persistence/criteria/Contact_.java     |   6 +-
 .../openjpa/persistence/criteria/Contractor.java   |   2 +-
 .../openjpa/persistence/criteria/Contractor_.java  |   2 +-
 .../openjpa/persistence/criteria/Course.java       |  12 +-
 .../openjpa/persistence/criteria/Course_.java      |   6 +-
 .../openjpa/persistence/criteria/CreditCard.java   |  14 +-
 .../openjpa/persistence/criteria/CreditCard_.java  |   6 +-
 .../openjpa/persistence/criteria/CriteriaTest.java |   2 +-
 .../openjpa/persistence/criteria/Customer.java     |  16 +-
 .../openjpa/persistence/criteria/Customer_.java    |   8 +-
 .../org/apache/openjpa/persistence/criteria/D.java |   6 +-
 .../apache/openjpa/persistence/criteria/D_.java    |   4 +-
 .../openjpa/persistence/criteria/Department.java   |  10 +-
 .../openjpa/persistence/criteria/Department_.java  |   6 +-
 .../openjpa/persistence/criteria/Dependent.java    |  12 +-
 .../openjpa/persistence/criteria/DependentId.java  |   2 +-
 .../openjpa/persistence/criteria/DependentId_.java |   4 +-
 .../openjpa/persistence/criteria/Dependent_.java   |   4 +-
 .../criteria/EmbeddableDomainTestCase.java         |   4 +-
 .../openjpa/persistence/criteria/Employee.java     |  20 +-
 .../openjpa/persistence/criteria/Employee_.java    |   4 +-
 .../persistence/criteria/EntityWithIdClass.java    |   6 +-
 .../openjpa/persistence/criteria/Exempt.java       |   4 +-
 .../openjpa/persistence/criteria/Exempt_.java      |   4 +-
 .../openjpa/persistence/criteria/FemaleUser.java   |   4 +-
 .../openjpa/persistence/criteria/FemaleUser_.java  |   2 +-
 .../persistence/criteria/FrequentFlierPlan.java    |   6 +-
 .../persistence/criteria/FrequentFlierPlan_.java   |   4 +-
 .../apache/openjpa/persistence/criteria/Item.java  |  10 +-
 .../apache/openjpa/persistence/criteria/Item_.java |   6 +-
 .../persistence/criteria/JoinDomainTestCase.java   |   4 +-
 .../openjpa/persistence/criteria/LineItem.java     |  12 +-
 .../openjpa/persistence/criteria/LineItem_.java    |   4 +-
 .../openjpa/persistence/criteria/Magazine.java     |  18 +-
 .../openjpa/persistence/criteria/Magazine_.java    |   4 +-
 .../openjpa/persistence/criteria/MaleUser.java     |   4 +-
 .../openjpa/persistence/criteria/MaleUser_.java    |   2 +-
 .../openjpa/persistence/criteria/Manager.java      |  10 +-
 .../openjpa/persistence/criteria/Manager_.java     |   4 +-
 .../apache/openjpa/persistence/criteria/Movie.java |   8 +-
 .../openjpa/persistence/criteria/Movie_.java       |   4 +-
 .../apache/openjpa/persistence/criteria/Order.java |  14 +-
 .../openjpa/persistence/criteria/Order_.java       |   6 +-
 .../openjpa/persistence/criteria/Person.java       |  12 +-
 .../openjpa/persistence/criteria/Person_.java      |   6 +-
 .../apache/openjpa/persistence/criteria/Phone.java |  10 +-
 .../openjpa/persistence/criteria/Phone_.java       |   6 +-
 .../apache/openjpa/persistence/criteria/Photo.java |   8 +-
 .../openjpa/persistence/criteria/Photo_.java       |   4 +-
 .../openjpa/persistence/criteria/Product.java      |  12 +-
 .../openjpa/persistence/criteria/Product_.java     |   4 +-
 .../openjpa/persistence/criteria/Publisher.java    |  16 +-
 .../openjpa/persistence/criteria/Publisher_.java   |   6 +-
 .../openjpa/persistence/criteria/Request.java      |   8 +-
 .../openjpa/persistence/criteria/Request_.java     |   4 +-
 .../openjpa/persistence/criteria/Semester.java     |   8 +-
 .../openjpa/persistence/criteria/Semester_.java    |   4 +-
 .../openjpa/persistence/criteria/Student.java      |  16 +-
 .../openjpa/persistence/criteria/Student_.java     |   6 +-
 .../persistence/criteria/TestByteArray.java        |  10 +-
 .../openjpa/persistence/criteria/TestCQL.java      |   4 +-
 .../openjpa/persistence/criteria/TestCriteria.java |  12 +-
 .../criteria/TestDateStringConversion.java         |   6 +-
 .../persistence/criteria/TestDistinctCriteria.java |  10 +-
 .../openjpa/persistence/criteria/TestEdit.java     |  18 +-
 .../criteria/TestEmbeddableCriteria.java           |  26 +-
 .../persistence/criteria/TestFetchJoin.java        |   4 +-
 .../persistence/criteria/TestJPQLSubquery.java     |  22 +-
 .../persistence/criteria/TestJoinCondition.java    |  18 +-
 .../criteria/TestMetaModelTypesafeCriteria.java    |  44 +--
 .../persistence/criteria/TestQueryByExample.java   |   4 +-
 .../TestRemoteQueryCacheCriteriaQuery.java         |  10 +-
 .../persistence/criteria/TestStringCriteria.java   |  26 +-
 .../persistence/criteria/TestSubqueries.java       |   6 +-
 .../criteria/TestTypeSafeCondExpression.java       |  16 +-
 .../persistence/criteria/TestTypesafeCriteria.java |  36 +-
 .../openjpa/persistence/criteria/Transaction.java  |   4 +-
 .../persistence/criteria/TransactionHistory.java   |   8 +-
 .../persistence/criteria/TransactionHistory_.java  |   4 +-
 .../openjpa/persistence/criteria/Transaction_.java |   2 +-
 .../openjpa/persistence/criteria/VideoStore.java   |  20 +-
 .../openjpa/persistence/criteria/VideoStore_.java  |   6 +-
 .../persistence/criteria/init/AddressEntity.java   |  10 +-
 .../persistence/criteria/init/AddressPk.java       |   4 +-
 .../persistence/criteria/init/MyUserEntity.java    |  14 +-
 .../criteria/init/TestCriteriaInitialization.java  |  10 +-
 .../persistence/criteria/multiselect/DimDay.java   |   8 +-
 .../persistence/criteria/multiselect/DimDay_.java  |   6 +-
 .../criteria/multiselect/FactWorkAssignment.java   |   8 +-
 .../criteria/multiselect/FactWorkAssignment_.java  |   6 +-
 .../TestCriteriaMultiselectAliasing.java           |  18 +-
 .../openjpa/persistence/criteria/results/Bar.java  |   4 +-
 .../openjpa/persistence/criteria/results/Bar_.java |   4 +-
 .../openjpa/persistence/criteria/results/Foo.java  |   6 +-
 .../openjpa/persistence/criteria/results/Foo_.java |   4 +-
 .../openjpa/persistence/criteria/results/Item.java |  14 +-
 .../persistence/criteria/results/Item_.java        |   4 +-
 .../persistence/criteria/results/Order.java        |  14 +-
 .../persistence/criteria/results/Order_.java       |   6 +-
 .../persistence/criteria/results/Producer.java     |   8 +-
 .../persistence/criteria/results/Producer_.java    |   4 +-
 .../persistence/criteria/results/ShipRate.java     |  12 +-
 .../openjpa/persistence/criteria/results/Shop.java |  10 +-
 .../persistence/criteria/results/Shop_.java        |   6 +-
 .../criteria/results/TestMultiselect.java          |  10 +-
 .../criteria/results/TestTypedResults.java         |  16 +-
 .../persistence/datacache/CacheLoadTest.java       |   4 +-
 .../openjpa/persistence/datacache/CacheTest.java   |   2 +-
 .../persistence/datacache/CachedEmployee.java      |   4 +-
 .../datacache/CachedEntityStatistics.java          |  16 +-
 .../persistence/datacache/CachedManager.java       |   4 +-
 .../persistence/datacache/CachedPerson.java        |  10 +-
 .../persistence/datacache/CascadeChild.java        |   6 +-
 .../persistence/datacache/CascadeParent.java       |  10 +-
 .../persistence/datacache/IdentityIdClass.java     |   8 +-
 .../apache/openjpa/persistence/datacache/Item.java |   8 +-
 .../persistence/datacache/MapEmbeddable.java       |   2 +-
 .../openjpa/persistence/datacache/MapHolder.java   |   8 +-
 .../datacache/OptimisticLockInstance.java          |  10 +-
 .../openjpa/persistence/datacache/Order.java       |  14 +-
 .../persistence/datacache/OrderedOneManyChild.java |   6 +-
 .../datacache/OrderedOneManyParent.java            |  10 +-
 .../openjpa/persistence/datacache/Purchase.java    |  14 +-
 .../datacache/TestArrayFieldsInDataCache.java      |   2 +-
 .../datacache/TestAutoIncrementAndDataCaching.java |   2 +-
 .../datacache/TestBulkJPQLAndDataCache.java        |   2 +-
 .../datacache/TestBulkUpdatesAndVersionColumn.java |   8 +-
 .../TestBulkUpdatesDataCacheEviction.java          |   4 +-
 .../persistence/datacache/TestCacheExclusions.java |   6 +-
 .../datacache/TestDataCacheBehavesIdentical.java   |   4 +-
 .../TestDataCacheOptimisticLockRecovery.java       |   6 +-
 .../datacache/TestDataCacheStoreManager.java       |   2 +-
 .../datacache/TestEmbeddedCollection.java          |   2 +-
 .../persistence/datacache/TestEntitiesAsKeys.java  |   2 +-
 .../persistence/datacache/TestFlushDataCache.java  |   4 +-
 .../persistence/datacache/TestJPACache.java        |   6 +-
 .../datacache/TestJPAEmbeddableDataCache.java      |   4 +-
 .../persistence/datacache/TestJPQL2Queries.java    |   2 +-
 .../TestJPQL2ResultsAndResultClasses.java          |   2 +-
 .../datacache/TestJPQLRelationProjections.java     |   2 +-
 .../persistence/datacache/TestM2MInDataCache.java  |   2 +-
 .../datacache/TestMutableParameters.java           |   2 +-
 .../datacache/TestOrderbyInDataCache.java          |   2 +-
 .../datacache/TestPCParametersInQueries.java       |   2 +-
 .../persistence/datacache/TestQueryResultSize.java |   4 +-
 .../persistence/datacache/TestResultShapes.java    |   2 +-
 .../persistence/datacache/TestStatistics.java      |   2 +-
 .../datacache/TestUniteratedQueryResult.java       |   2 +-
 .../datacache/common/apps/AppIdCacheObject.java    |   2 +-
 .../persistence/datacache/common/apps/AttachA.java |   4 +-
 .../persistence/datacache/common/apps/AttachB.java |   2 +-
 .../persistence/datacache/common/apps/AttachC.java |   2 +-
 .../persistence/datacache/common/apps/AttachD.java |   2 +-
 .../persistence/datacache/common/apps/AttachE.java |   4 +-
 .../persistence/datacache/common/apps/AttachF.java |   2 +-
 .../datacache/common/apps/CacheObjectA.java        |  28 +-
 .../datacache/common/apps/CacheObjectAChild1.java  |   4 +-
 .../datacache/common/apps/CacheObjectAChild2.java  |   4 +-
 .../datacache/common/apps/CacheObjectB.java        |   8 +-
 .../datacache/common/apps/CacheObjectBChild1.java  |   2 +-
 .../datacache/common/apps/CacheObjectC.java        |   8 +-
 .../datacache/common/apps/CacheObjectD.java        |   8 +-
 .../datacache/common/apps/CacheObjectE.java        |   8 +-
 .../datacache/common/apps/CacheObjectF.java        |   2 +-
 .../datacache/common/apps/CacheObjectG.java        |   2 +-
 .../datacache/common/apps/CacheObjectH.java        |   2 +-
 .../datacache/common/apps/CacheObjectJ.java        |  12 +-
 .../apps/CacheObjectWithExternalizedFields.java    |   2 +-
 .../datacache/common/apps/EmbeddedEntity.java      |   4 +-
 .../common/apps/EmbeddingOwnerEntity.java          |   8 +-
 .../common/apps/FlushDataCacheObject.java          |   2 +-
 .../datacache/common/apps/M2MEntityE.java          |   8 +-
 .../datacache/common/apps/M2MEntityF.java          |   8 +-
 .../persistence/datacache/common/apps/PObject.java |  10 +-
 .../datacache/common/apps/RuntimeTest1.java        |  18 +-
 .../datacache/common/apps/RuntimeTest2.java        |   4 +-
 .../apps/SelfReferencingCacheTestObject.java       |   6 +-
 .../common/apps/TransactionalClassPC.java          |   2 +-
 .../datacache/entities/ContactInfo.java            |   6 +-
 .../persistence/datacache/entities/Person.java     |  16 +-
 .../persistence/datacache/entities/Phone.java      |  16 +-
 .../datacache/stats/TestStatistics.java            |   4 +-
 .../persistence/delimited/identifiers/Animal.java  |  12 +-
 .../persistence/delimited/identifiers/Animal2.java |  18 +-
 .../persistence/delimited/identifiers/Car.java     |  12 +-
 .../persistence/delimited/identifiers/Car2.java    |  18 +-
 .../persistence/delimited/identifiers/Cat.java     |   4 +-
 .../persistence/delimited/identifiers/Cat2.java    |   4 +-
 .../delimited/identifiers/Chevrolet.java           |   4 +-
 .../delimited/identifiers/Chevrolet2.java          |   4 +-
 .../persistence/delimited/identifiers/Dog.java     |   4 +-
 .../persistence/delimited/identifiers/Dog2.java    |   4 +-
 .../persistence/delimited/identifiers/EntityA.java |  26 +-
 .../persistence/delimited/identifiers/EntityB.java |  14 +-
 .../persistence/delimited/identifiers/EntityC.java |  22 +-
 .../persistence/delimited/identifiers/EntityD.java |   8 +-
 .../delimited/identifiers/EntityD2.java            |  12 +-
 .../delimited/identifiers/EntityD3.java            |   8 +-
 .../delimited/identifiers/EntityD4.java            |   8 +-
 .../persistence/delimited/identifiers/EntityE.java |  14 +-
 .../persistence/delimited/identifiers/EntityF.java |  24 +-
 .../persistence/delimited/identifiers/EntityG.java |   6 +-
 .../persistence/delimited/identifiers/EntityH.java |  22 +-
 .../persistence/delimited/identifiers/EntityI.java |   8 +-
 .../delimited/identifiers/EntityI2.java            |  12 +-
 .../delimited/identifiers/EntityI3.java            |   8 +-
 .../delimited/identifiers/EntityI4.java            |   8 +-
 .../persistence/delimited/identifiers/Pontiac.java |   4 +-
 .../delimited/identifiers/Pontiac2.java            |   4 +-
 .../TestDelimIdResultSetAnnotations.java           |   2 +-
 .../identifiers/TestDelimInheritance.java          |   2 +-
 .../identifiers/TestDelimitedJoinAnnotation.java   |   2 +-
 .../delimited/identifiers/TestManualDelimId.java   |   2 +-
 .../TestManualDelimIdResultSetAnnotations.java     |   2 +-
 .../identifiers/TestManualDelimInheritance.java    |   2 +-
 .../TestManualDelimitedJoinAnnotations.java        |   2 +-
 .../delimited/identifiers/noschema/EntityC.java    |  22 +-
 .../delimited/identifiers/noschema/EntityD.java    |   8 +-
 .../delimited/identifiers/noschema/EntityD2.java   |  12 +-
 .../delimited/identifiers/noschema/EntityD3.java   |   8 +-
 .../delimited/identifiers/noschema/EntityD4.java   |   8 +-
 .../delimited/identifiers/noschema/EntityE.java    |  14 +-
 .../delimited/identifiers/noschema/EntityF.java    |  24 +-
 .../delimited/identifiers/noschema/EntityG.java    |   6 +-
 .../noschema/TestNoSchemaManualDelimId.java        |   2 +-
 ...TestNoSchemaManualDelimitedJoinAnnotations.java |   2 +-
 .../identifiers/xml/TestXmlDelimIdResultSets.java  |   2 +-
 .../identifiers/xml/TestXmlDelimInheritance.java   |   2 +-
 .../xml/TestXmlDelimitedJoinAnnotation.java        |   2 +-
 .../persistence/derivedid/EBigDecimalID.java       |   6 +-
 .../persistence/derivedid/EBigIntegerID.java       |   4 +-
 .../persistence/derivedid/EDBigDecimalID.java      |   6 +-
 .../persistence/derivedid/EDBigIntegerID.java      |   6 +-
 .../openjpa/persistence/derivedid/EDDateID.java    |   6 +-
 .../openjpa/persistence/derivedid/EDSQLDateID.java |   6 +-
 .../openjpa/persistence/derivedid/EDateID.java     |   4 +-
 .../openjpa/persistence/derivedid/ESQLDateID.java  |   4 +-
 .../persistence/derivedid/TestDerivedIdentity.java |   4 +-
 .../apache/openjpa/persistence/detach/Entity1.java |  10 +-
 .../openjpa/persistence/detach/Entity10.java       |  10 +-
 .../openjpa/persistence/detach/Entity11.java       |   4 +-
 .../openjpa/persistence/detach/Entity12.java       |   4 +-
 .../openjpa/persistence/detach/Entity13.java       |  10 +-
 .../openjpa/persistence/detach/Entity14.java       |   4 +-
 .../openjpa/persistence/detach/Entity20.java       |  12 +-
 .../apache/openjpa/persistence/detach/Entity3.java |   8 +-
 .../apache/openjpa/persistence/detach/Entity4.java |   8 +-
 .../apache/openjpa/persistence/detach/Entity5.java |   6 +-
 .../apache/openjpa/persistence/detach/Entity6.java |   8 +-
 .../apache/openjpa/persistence/detach/Entity7.java |   4 +-
 .../apache/openjpa/persistence/detach/Entity8.java |   8 +-
 .../apache/openjpa/persistence/detach/Entity9.java |   4 +-
 .../apache/openjpa/persistence/detach/EntityA.java |  14 +-
 .../apache/openjpa/persistence/detach/EntityB.java |   6 +-
 .../apache/openjpa/persistence/detach/EntityC.java |   6 +-
 .../apache/openjpa/persistence/detach/EntityD.java |   6 +-
 .../apache/openjpa/persistence/detach/EntityE.java |   6 +-
 .../persistence/detach/IntVersionEntity.java       |  12 +-
 .../persistence/detach/IntegerVersionEntity.java   |   6 +-
 .../persistence/detach/NoVersionEntity.java        |   4 +-
 .../persistence/detach/TimestampVersionEntity.java |   6 +-
 .../SerializableDetachedStateManager.java          |  14 +-
 .../openjpa/persistence/detach/xml/Driver.java     |   4 +-
 .../openjpa/persistence/detach/xml/Owner.java      |   4 +-
 .../openjpa/persistence/detach/xml/Passenger.java  |   4 +-
 .../persistence/detach/xml/TestDetachXML.java      |   4 +-
 .../detachment/DetachmentOneManyChild.java         |  12 +-
 .../detachment/DetachmentOneManyParent.java        |  16 +-
 .../openjpa/persistence/detachment/Record.java     |   6 +-
 .../detachment/TestAttachConstructedCopy.java      |   2 +-
 .../detachment/TestAttachWithNoChanges.java        |   4 +-
 .../persistence/detachment/TestCascadeMerge.java   |   2 +-
 .../persistence/detachment/TestDetachLite.java     |   4 +-
 .../TestDetachedEntityCascadePersist.java          |   2 +-
 .../persistence/detachment/TestDetachment.java     |   2 +-
 .../detachment/TestDetachmentOneMany.java          |   2 +-
 .../TestGetReferenceAndImplicitDetachment.java     |   4 +-
 .../detachment/TestNoCascadeOneToManyMerge.java    |   2 +-
 .../detachment/TestNoCascadeOneToOneMerge.java     |   2 +-
 .../persistence/detachment/model/DMCustomer.java   |  16 +-
 .../detachment/model/DMCustomerInventory.java      |  16 +-
 .../persistence/detachment/model/DMItem.java       |   6 +-
 .../model/NoDetachedStateEntityFieldAccess.java    |  16 +-
 .../model/NoDetachedStateEntityPropertyAccess.java |  14 +-
 .../persistence/detachment/model/SimpleA.java      |  14 +-
 .../persistence/detachment/model/SimpleB.java      |  16 +-
 .../persistence/detachment/model/SimpleC.java      |  14 +-
 .../persistence/detachment/model/SimpleRef.java    |   8 +-
 .../discriminator/CharAbstractEntity.java          |  16 +-
 .../persistence/discriminator/CharLeafEntity.java  |   2 +-
 .../persistence/discriminator/CharRootEntity.java  |   4 +-
 .../discriminator/IntegerAbstractEntity.java       |  16 +-
 .../discriminator/IntegerLeafEntity.java           |   2 +-
 .../discriminator/IntegerRootEntity.java           |   4 +-
 .../discriminator/StringAbstractEntity.java        |  16 +-
 .../discriminator/StringLeafEntity.java            |   2 +-
 .../discriminator/StringRootEntity.java            |   4 +-
 .../discriminator/TestDiscriminatorTypes.java      |   4 +-
 .../persistence/discriminator/fetch/Employee.java  |  10 +-
 .../persistence/discriminator/fetch/Manager.java   |  10 +-
 .../persistence/discriminator/fetch/Person.java    |  12 +-
 .../discriminator/fetch/TestLazyFetch.java         |   6 +-
 .../openjpa/persistence/distinctjoin/Course.java   |  28 +-
 .../openjpa/persistence/distinctjoin/Lecturer.java |  10 +-
 .../persistence/distinctjoin/LocalizedText.java    |   4 +-
 .../persistence/distinctjoin/TestDistinctJoin.java |   6 +-
 .../dynamicschema/EntityReservedWords.java         |   4 +-
 .../dynamicschema/EntityVeryLongNames.java         |   8 +-
 .../persistence/dynamicschema/ResWordEntity.java   |   8 +-
 .../dynamicschema/TestResWordEntity.java           |   2 +-
 .../org/apache/openjpa/persistence/embed/A.java    |  22 +-
 .../apache/openjpa/persistence/embed/Address.java  |   6 +-
 .../openjpa/persistence/embed/BaseEntity.java      |   6 +-
 .../org/apache/openjpa/persistence/embed/Book.java |  14 +-
 .../apache/openjpa/persistence/embed/Company1.java |  10 +-
 .../openjpa/persistence/embed/Company1_.java       |   6 +-
 .../apache/openjpa/persistence/embed/Company2.java |   8 +-
 .../openjpa/persistence/embed/Company2_.java       |   6 +-
 .../openjpa/persistence/embed/ContactInfo.java     |   8 +-
 .../openjpa/persistence/embed/Department1.java     |  10 +-
 .../openjpa/persistence/embed/Department1_.java    |   6 +-
 .../openjpa/persistence/embed/Department2.java     |   8 +-
 .../openjpa/persistence/embed/Department2_.java    |   6 +-
 .../openjpa/persistence/embed/Department3.java     |  10 +-
 .../openjpa/persistence/embed/Department3_.java    |   6 +-
 .../apache/openjpa/persistence/embed/Division.java |   6 +-
 .../openjpa/persistence/embed/Division_.java       |   4 +-
 .../apache/openjpa/persistence/embed/EChild.java   |   6 +-
 .../apache/openjpa/persistence/embed/EGeneric.java |  10 +-
 .../apache/openjpa/persistence/embed/EParent.java  |   8 +-
 .../apache/openjpa/persistence/embed/Embed.java    |   2 +-
 .../apache/openjpa/persistence/embed/EmbedXml.java |   4 +-
 .../apache/openjpa/persistence/embed/Embed_.java   |   4 +-
 .../persistence/embed/Embed_Coll_Embed.java        |  10 +-
 .../persistence/embed/Embed_Coll_Embed_.java       |   6 +-
 .../persistence/embed/Embed_Coll_Integer.java      |   4 +-
 .../persistence/embed/Embed_Coll_Integer_.java     |   6 +-
 .../openjpa/persistence/embed/Embed_Coll_Map.java  |   4 +-
 .../openjpa/persistence/embed/Embed_Embed.java     |  10 +-
 .../openjpa/persistence/embed/Embed_Embed_.java    |   4 +-
 .../persistence/embed/Embed_Embed_ToMany.java      |   4 +-
 .../persistence/embed/Embed_Embed_ToMany_.java     |   4 +-
 .../persistence/embed/Embed_MappedToOne.java       |   4 +-
 .../embed/Embed_MappedToOneCascadeDelete.java      |   8 +-
 .../persistence/embed/Embed_MappedToOne_.java      |   4 +-
 .../persistence/embed/Embed_Single_Coll.java       |   6 +-
 .../openjpa/persistence/embed/Embed_ToMany.java    |   6 +-
 .../openjpa/persistence/embed/Embed_ToMany_.java   |   6 +-
 .../openjpa/persistence/embed/Embed_ToOne.java     |   6 +-
 .../openjpa/persistence/embed/Embed_ToOne_.java    |   4 +-
 .../apache/openjpa/persistence/embed/Employee.java |  12 +-
 .../openjpa/persistence/embed/Employee1.java       |   8 +-
 .../openjpa/persistence/embed/Employee1_.java      |   4 +-
 .../openjpa/persistence/embed/Employee2.java       |   8 +-
 .../openjpa/persistence/embed/Employee2_.java      |   4 +-
 .../openjpa/persistence/embed/Employee3.java       |  10 +-
 .../openjpa/persistence/embed/Employee3_.java      |   4 +-
 .../openjpa/persistence/embed/EmployeeName3.java   |   2 +-
 .../openjpa/persistence/embed/EmployeeName3_.java  |   4 +-
 .../openjpa/persistence/embed/EmployeePK2.java     |   2 +-
 .../openjpa/persistence/embed/EmployeePK2_.java    |   4 +-
 .../embed/EntityA_Coll_Embed_Embed.java            |  14 +-
 .../embed/EntityA_Coll_Embed_Embed_.java           |   6 +-
 .../embed/EntityA_Coll_Embed_ToOne.java            |  20 +-
 .../embed/EntityA_Coll_Embed_ToOne_.java           |   6 +-
 .../persistence/embed/EntityA_Coll_String.java     |  26 +-
 .../persistence/embed/EntityA_Coll_String_.java    |   6 +-
 .../openjpa/persistence/embed/EntityA_Embed.java   |  14 +-
 .../embed/EntityA_Embed_Coll_Embed.java            |  18 +-
 .../embed/EntityA_Embed_Coll_Embed_.java           |   4 +-
 .../embed/EntityA_Embed_Coll_Integer.java          |  12 +-
 .../embed/EntityA_Embed_Coll_Integer_.java         |   4 +-
 .../persistence/embed/EntityA_Embed_Coll_Map.java  |  14 +-
 .../persistence/embed/EntityA_Embed_Complex.java   |  32 +-
 .../persistence/embed/EntityA_Embed_Embed.java     |  14 +-
 .../persistence/embed/EntityA_Embed_Embed_.java    |   4 +-
 .../embed/EntityA_Embed_Embed_ToMany.java          |  14 +-
 .../embed/EntityA_Embed_Embed_ToMany_.java         |   4 +-
 .../embed/EntityA_Embed_MappedToOne.java           |  14 +-
 .../EntityA_Embed_MappedToOneCascadeDelete.java    |  14 +-
 .../embed/EntityA_Embed_MappedToOne_.java          |   4 +-
 .../embed/EntityA_Embed_Single_Coll.java           |   6 +-
 .../persistence/embed/EntityA_Embed_ToMany.java    |  14 +-
 .../persistence/embed/EntityA_Embed_ToMany_.java   |   4 +-
 .../persistence/embed/EntityA_Embed_ToOne.java     |  14 +-
 .../persistence/embed/EntityA_Embed_ToOne_.java    |   4 +-
 .../apache/openjpa/persistence/embed/EntityB1.java |   8 +-
 .../openjpa/persistence/embed/EntityB1_.java       |   4 +-
 .../apache/openjpa/persistence/embed/EntityB2.java |  12 +-
 .../openjpa/persistence/embed/FileName4.java       |   2 +-
 .../apache/openjpa/persistence/embed/Geocode.java  |   2 +-
 .../apache/openjpa/persistence/embed/Item1.java    |  10 +-
 .../apache/openjpa/persistence/embed/Item1_.java   |   6 +-
 .../apache/openjpa/persistence/embed/Item2.java    |   8 +-
 .../apache/openjpa/persistence/embed/Item2_.java   |   6 +-
 .../apache/openjpa/persistence/embed/Item3.java    |  12 +-
 .../apache/openjpa/persistence/embed/Item3_.java   |   6 +-
 .../apache/openjpa/persistence/embed/Item4.java    |  10 +-
 .../apache/openjpa/persistence/embed/Item5.java    |  10 +-
 .../apache/openjpa/persistence/embed/JobInfo.java  |   4 +-
 .../apache/openjpa/persistence/embed/Listing.java  |   6 +-
 .../openjpa/persistence/embed/LocationDetails.java |   4 +-
 .../openjpa/persistence/embed/ParkingSpot.java     |   8 +-
 .../openjpa/persistence/embed/PhoneNumber.java     |   8 +-
 .../openjpa/persistence/embed/ProgramManager.java  |   8 +-
 .../apache/openjpa/persistence/embed/Seller.java   |  10 +-
 .../openjpa/persistence/embed/TestEmbeddable.java  |  10 +-
 .../persistence/embed/TestEmbeddableXml.java       |   6 +-
 .../openjpa/persistence/embed/TestEmbedded.java    |   4 +-
 .../persistence/embed/TestEmbeddedWithQuery.java   |   4 +-
 .../embed/TestUpdateEmbeddedQueryResult.java       |   4 +-
 .../openjpa/persistence/embed/VicePresident.java   |   8 +-
 .../openjpa/persistence/embed/VicePresident_.java  |   4 +-
 .../embed/attrOverrides/AbstractEmployee.java      |  10 +-
 .../persistence/embed/attrOverrides/Address.java   |  10 +-
 .../embed/attrOverrides/AnnoOverEmbed.java         |   4 +-
 .../embed/attrOverrides/ContactInfo.java           |   8 +-
 .../persistence/embed/attrOverrides/Customer.java  |  14 +-
 .../embed/attrOverrides/EmergencyContactInfo.java  |   8 +-
 .../persistence/embed/attrOverrides/Employee.java  |  28 +-
 .../persistence/embed/attrOverrides/JobInfo.java   |   4 +-
 .../embed/attrOverrides/PartTimeEmployee.java      |  14 +-
 .../persistence/embed/attrOverrides/Person.java    |  12 +-
 .../embed/attrOverrides/PhoneNumber.java           |   8 +-
 .../embed/attrOverrides/ProgramManager.java        |   8 +-
 .../persistence/embed/attrOverrides/Project.java   |   6 +-
 .../embed/attrOverrides/PropertyInfo.java          |   2 +-
 .../embed/attrOverrides/PropertyOwner.java         |   6 +-
 .../embed/attrOverrides/PropertyRecord.java        |  16 +-
 .../embed/attrOverrides/TestAssocOverrides.java    |   6 +-
 .../embed/attrOverrides/TestAssocOverridesXML.java |   2 +-
 .../embed/attrOverrides/TestAttrOverrides.java     |   6 +-
 .../embed/attrOverrides/TestAttrOverridesXml.java  |   6 +-
 .../persistence/embed/attrOverrides/Zipcode.java   |   4 +-
 .../persistence/embed/compositepk/Subject.java     |   6 +-
 .../persistence/embed/compositepk/SubjectKey.java  |   4 +-
 .../persistence/embed/compositepk/SubjectKey_.java |   6 +-
 .../embed/compositepk/SubjectWithIdClass.java      |  10 +-
 .../embed/compositepk/SubjectWithIdClass_.java     |   6 +-
 .../persistence/embed/compositepk/Subject_.java    |   6 +-
 .../compositepk/TestCompositePrimaryKeys.java      |  18 +-
 .../persistence/embed/compositepk/Topic.java       |  16 +-
 .../persistence/embed/compositepk/Topic_.java      |   6 +-
 .../persistence/embed/lazy/BeverageHolder.java     |   8 +-
 .../apache/openjpa/persistence/embed/lazy/Guy.java |   8 +-
 .../openjpa/persistence/embed/lazy/Recliner.java   |  16 +-
 .../openjpa/persistence/embed/lazy/ReclinerId.java |   4 +-
 .../persistence/embed/lazy/TestLazyEmbeddable.java |   2 +-
 .../enhance/DynamicEnhancementSuite.java           |   2 +-
 .../persistence/enhance/EntityWithEnum.java        |   6 +-
 .../TestEmbeddableEntityWithIDAnnotation.java      |   2 +-
 .../enhance/TestEmbeddedEnumSqlGeneration.java     |   2 +-
 .../enhance/TestSubclassedBehavior.java            |   4 +-
 .../apps/BackingFieldNameMismatchInstance.java     |  10 +-
 .../enhance/common/apps/BaseEntity.java            |  12 +-
 .../enhance/common/apps/BasicSubclassInstance.java |   8 +-
 .../enhance/common/apps/DerivedEntity.java         |   8 +-
 .../enhance/common/apps/DetachablePC.java          |   2 +-
 .../enhance/common/apps/DetachableVersionedPC.java |   2 +-
 .../apps/EmbeddableEntityWithIDAnnotation.java     |   6 +-
 .../persistence/enhance/common/apps/Entity1.java   |  24 +-
 .../persistence/enhance/common/apps/Entity2.java   |   8 +-
 .../common/apps/IDOwningClassTestEntity.java       |   4 +-
 .../common/apps/ManagedInverseTestInstance.java    |  14 +-
 .../common/apps/ManagedInverseTestInstance2.java   |  14 +-
 .../persistence/enhance/common/apps/No2NoArgs.java |   2 +-
 .../persistence/enhance/common/apps/No3NoArgs.java |   2 +-
 .../persistence/enhance/common/apps/NoClone.java   |   2 +-
 .../persistence/enhance/common/apps/NoNoArgs.java  |   2 +-
 .../enhance/common/apps/NonPCClone.java            |   2 +-
 .../persistence/enhance/common/apps/PCClone.java   |   2 +-
 .../enhance/common/apps/SubclassClone.java         |   2 +-
 .../persistence/enhance/identity/BeneContact.java  |  22 +-
 .../enhance/identity/BeneContactId.java            |   8 +-
 .../persistence/enhance/identity/Beneficiary.java  |  12 +-
 .../openjpa/persistence/enhance/identity/Book.java |  14 +-
 .../persistence/enhance/identity/Book1.java        |  22 +-
 .../persistence/enhance/identity/BookId1.java      |   2 +-
 .../persistence/enhance/identity/Dependent1.java   |  10 +-
 .../persistence/enhance/identity/Dependent2.java   |  10 +-
 .../persistence/enhance/identity/Dependent3.java   |  12 +-
 .../persistence/enhance/identity/Dependent4.java   |  12 +-
 .../persistence/enhance/identity/Dependent5.java   |  12 +-
 .../persistence/enhance/identity/Dependent5a.java  |  12 +-
 .../persistence/enhance/identity/DependentId1.java |   2 +-
 .../persistence/enhance/identity/DependentId2.java |   2 +-
 .../persistence/enhance/identity/DependentId3.java |   2 +-
 .../persistence/enhance/identity/EmpId.java        |   4 +-
 .../persistence/enhance/identity/Employee.java     |  12 +-
 .../persistence/enhance/identity/Employee1.java    |   8 +-
 .../persistence/enhance/identity/Employee2.java    |   8 +-
 .../persistence/enhance/identity/Employee3.java    |  12 +-
 .../persistence/enhance/identity/Employee4.java    |  14 +-
 .../persistence/enhance/identity/Employee5.java    |   4 +-
 .../persistence/enhance/identity/EmployeeId2.java  |   2 +-
 .../persistence/enhance/identity/EmployeeId5.java  |   2 +-
 .../persistence/enhance/identity/Library.java      |  10 +-
 .../persistence/enhance/identity/Library1.java     |  16 +-
 .../persistence/enhance/identity/Line1.java        |  18 +-
 .../persistence/enhance/identity/LineId1.java      |   8 +-
 .../enhance/identity/MedicalHistory1.java          |  10 +-
 .../enhance/identity/MedicalHistory2.java          |  10 +-
 .../enhance/identity/MedicalHistory3.java          |  10 +-
 .../enhance/identity/MedicalHistory4.java          |  10 +-
 .../openjpa/persistence/enhance/identity/Page.java |  14 +-
 .../persistence/enhance/identity/Page1.java        |  22 +-
 .../persistence/enhance/identity/PageId1.java      |  10 +-
 .../persistence/enhance/identity/Parent3.java      |  12 +-
 .../persistence/enhance/identity/Person1.java      |   8 +-
 .../persistence/enhance/identity/Person2.java      |  12 +-
 .../persistence/enhance/identity/Person3.java      |  10 +-
 .../persistence/enhance/identity/Person4.java      |   8 +-
 .../persistence/enhance/identity/PersonId1.java    |   2 +-
 .../persistence/enhance/identity/PersonId4.java    |   2 +-
 .../persistence/enhance/identity/PhoneNumber.java  |  10 +-
 .../enhance/identity/TestDerivedIdentity.java      |   2 +-
 .../enhance/identity/TestMappedById.java           |   6 +-
 .../enhance/identity/TestMapsIdXml.java            |   6 +-
 .../identity/TestMultipleLevelDerivedIdentity.java |   2 +-
 .../TestMultipleLevelDerivedIdentity1.java         |   2 +-
 .../apache/openjpa/persistence/entity/EntityA.java |  16 +-
 .../apache/openjpa/persistence/entity/EntityB.java |  18 +-
 .../apache/openjpa/persistence/entity/EntityC.java |  14 +-
 .../persistence/entity/MixedMappingLocation.java   |   2 +-
 .../entity/MixedMappingLocationEmbeddedId.java     |   4 +-
 .../TestEntityManagerConfiguration.java            |   2 +-
 .../common/apps/CascadesEntity.java                |  16 +-
 .../apache/openjpa/persistence/event/AnEntity.java |   6 +-
 .../persistence/event/JMSRemoteEventsTest.java     |  20 +-
 .../event/PostRemoveCallbackEntity.java            |   8 +-
 .../persistence/event/TestBeforeCommit.java        |   6 +-
 .../openjpa/persistence/event/TestPostRemove.java  |   2 +-
 .../event/TestTCPRemoteClassChanges.java           |   2 +-
 .../event/TestTCPRemoteEventsDuration.java         |   2 +-
 .../persistence/event/TestTCPRemoteRecovery.java   |   2 +-
 .../event/TestTCPRemoteRecoveryTransmitAdds.java   |   2 +-
 .../persistence/event/common/apps/Duration.java    |   2 +-
 .../event/common/apps/RuntimeTest1.java            |   8 +-
 .../event/common/apps/RuntimeTest2.java            |   2 +-
 .../event/common/apps/RuntimeTest4.java            |   2 +-
 .../event/common/apps/TransactionalClassPC.java    |   2 +-
 .../openjpa/persistence/exception/PObject.java     |   8 +-
 .../persistence/exception/TestException.java       |  12 +-
 .../exception/TestParameterLogging.java            |   8 +-
 .../openjpa/persistence/external/EntityA.java      |  10 +-
 .../persistence/external/TestExternalValues.java   |   4 +-
 .../openjpa/persistence/fetchgroups/FGAddress.java |   6 +-
 .../persistence/fetchgroups/FGDepartment.java      |   4 +-
 .../persistence/fetchgroups/FGEmployee.java        |  22 +-
 .../openjpa/persistence/fetchgroups/FGManager.java |  10 +-
 .../persistence/fields/ByteArrayHolder.java        |  10 +-
 .../openjpa/persistence/fields/EnumFieldType.java  |   6 +-
 .../openjpa/persistence/fields/EnumSetOwner.java   |   6 +-
 .../openjpa/persistence/fields/TestByteArray.java  |   4 +-
 .../fields/TestEnumQueryConstructor.java           |   4 +-
 .../persistence/fields/TestEnumsInJPQL.java        |   2 +-
 .../openjpa/persistence/flush/Assignment.java      |  22 +-
 .../openjpa/persistence/flush/ClassPeriod.java     |  24 +-
 .../apache/openjpa/persistence/flush/Course.java   |  20 +-
 .../apache/openjpa/persistence/flush/SubTopic.java |  22 +-
 .../persistence/flush/TestCascadingFlush.java      |   2 +-
 .../apache/openjpa/persistence/flush/Topic.java    |  24 +-
 .../foreign/keys/ContainsMultSimpleEntity.java     |   8 +-
 .../persistence/foreign/keys/SimpleEntity.java     |   6 +-
 .../foreign/keys/TestMultForeignKeys.java          |   2 +-
 .../openjpa/persistence/foreign/keys/TopLevel.java |   6 +-
 .../openjpa/persistence/generationtype/Dog.java    |  10 +-
 .../openjpa/persistence/generationtype/Dog1.java   |  10 +-
 .../openjpa/persistence/generationtype/Dog2.java   |  10 +-
 .../openjpa/persistence/generationtype/Dog3.java   |  10 +-
 .../openjpa/persistence/generationtype/Dog4.java   |  10 +-
 .../persistence/generationtype/DogTable.java       |  12 +-
 .../persistence/generationtype/DogTable2.java      |  12 +-
 .../persistence/generationtype/DogTable3.java      |  12 +-
 .../persistence/generationtype/DogTable4.java      |  12 +-
 .../persistence/generationtype/EntityE2.java       |  14 +-
 .../EntityWithGeneratedValueAndPostPersist.java    |  12 +-
 .../generationtype/GeneratedValues.java            |  10 +-
 ...TestEntityWithGeneratedValueAndPostPersist.java |   2 +-
 .../generationtype/TestGeneratedValues.java        |   4 +-
 .../generationtype/TestMultipleSchemaNames.java    |   6 +-
 .../generationtype/TestTableGenerator.java         |   2 +-
 ...tTableGeneratorMultithreadedInitialization.java |   4 +-
 .../TestTableGeneratorUseSchemaNameProp.java       |   2 +-
 .../org/apache/openjpa/persistence/graph/City.java |   4 +-
 .../apache/openjpa/persistence/graph/People.java   |   4 +-
 .../openjpa/persistence/graph/PersistentGraph.java |   6 +-
 .../persistence/graph/PersistentRelation.java      |  14 +-
 .../openjpa/persistence/graph/RelationGraph.java   |   6 +-
 .../persistence/graph/TestPersistentGraph.java     |   4 +-
 .../HungarianNotationFieldDuplicates.java          |   2 +-
 .../hugariannotation/HungarianNotationFields.java  |   8 +-
 .../persistence/hugariannotation/OtherClass.java   |   4 +-
 .../persistence/identity/BooleanIdEntity.java      |   4 +-
 .../identity/ComplexCompoundIdTestEntity.java      |  18 +-
 .../identity/CompoundBooleanIdEntity.java          |   6 +-
 .../persistence/identity/DoubleObjIdEntity.java    |   4 +-
 .../persistence/identity/FloatIdEntity.java        |   4 +-
 .../identity/IdentityGenerationType.java           |   8 +-
 .../identity/SQLBigDecimalIdEntity.java            |   6 +-
 .../identity/SQLBigIntegerIdEntity.java            |   4 +-
 .../persistence/identity/SQLDateIdEntity.java      |   4 +-
 .../identity/SimpleCompoundIdTestEntity.java       |  10 +-
 .../persistence/identity/StringIdEntity.java       |   6 +-
 .../persistence/identity/TestBooleanId.java        |   2 +-
 .../identity/TestCompundIdWithNull.java            |   2 +-
 .../persistence/identity/TestFloatingPointIds.java |   2 +-
 .../persistence/identity/TestGenerationType.java   |   8 +-
 .../persistence/identity/TestSQLBigDecimalId.java  |   2 +-
 .../persistence/identity/TestSQLBigIntegerId.java  |   2 +-
 .../persistence/identity/TestSQLDateId.java        |   2 +-
 .../openjpa/persistence/identity/TestStringId.java |   4 +-
 .../openjpa/persistence/identity/TypeEntity.java   |   6 +-
 .../identity/entityasidentity/Account.java         |  16 +-
 .../identity/entityasidentity/AccountGroup.java    |  12 +-
 .../identity/entityasidentity/Person.java          |   6 +-
 .../TestEntityAsIdentityFields.java                |   4 +-
 .../identity/entityasidentity2/Attendance.java     |  10 +-
 .../identity/entityasidentity2/Course.java         |   8 +-
 .../identity/entityasidentity2/Person.java         |   6 +-
 .../identity/entityasidentity2/Student.java        |  10 +-
 .../TestEntityAsIdentityFields2.java               |   4 +-
 .../persistence/inheritance/AbstractBase.java      |   8 +-
 .../persistence/inheritance/ConcreteSubclass.java  |   2 +-
 .../openjpa/persistence/inheritance/EntityL3.java  |   2 +-
 .../persistence/inheritance/EntityL3Sibling.java   |   2 +-
 .../inheritance/MappedSuperclassBase.java          |   8 +-
 .../inheritance/MappedSuperclassL2.java            |   2 +-
 .../persistence/inheritance/NoGenEntityL3.java     |   2 +-
 .../inheritance/NoGenEntityL3Sibling.java          |   2 +-
 .../inheritance/NoGenMappedSuperclassBase.java     |   4 +-
 .../inheritance/NoGenMappedSuperclassL2.java       |   2 +-
 .../inheritance/TestCallbackEntity.java            |   2 +-
 .../TestDefaultInheritanceStrategy.java            |   4 +-
 .../inheritance/TestFindAbstractClass.java         |   2 +-
 .../TestIdentityWithSingleTableStrategy.java       |   2 +-
 .../inheritance/TestInheritanceWithMSCID.java      |   2 +-
 .../inheritance/TestJoinTableStrategy.java         |   2 +-
 .../inheritance/TestMappedSuperclass.java          |   2 +-
 .../TestMultipleMappedSuperclassHierarchy.java     |   2 +-
 .../TestSharedMappedSuperclassIdValue.java         |   2 +-
 .../abstractjoinedappid/RelationOwner.java         |  14 +-
 .../inheritance/abstractjoinedappid/Subclass.java  |   8 +-
 .../abstractjoinedappid/Superclass.java            |  14 +-
 .../TestAbstractJoinedAppId.java                   |   2 +-
 .../datacache/TestInheritanceWithDataCache.java    |   2 +-
 .../inheritance/embeddable/SharedName2.java        |   2 +-
 .../idmsc/PrimitiveIDMappedSuperclass.java         |   4 +-
 .../chardiscriminator/PIdJTCDMSCEntityB.java       |   4 +-
 .../chardiscriminator/PIdJTCDMSCEntityD.java       |   4 +-
 .../chardiscriminator/PIdJTCDMSCLeafA.java         |   4 +-
 .../chardiscriminator/PIdJTCDMSCLeafB1.java        |   4 +-
 .../chardiscriminator/PIdJTCDMSCLeafB2.java        |   4 +-
 .../chardiscriminator/PIdJTCDMSCLeafC.java         |   4 +-
 .../chardiscriminator/PIdJTCDMSCLeafD1.java        |   4 +-
 .../chardiscriminator/PIdJTCDMSCLeafD2.java        |   4 +-
 .../PIdJTCDMSCMappedSuperclass.java                |   2 +-
 .../chardiscriminator/PIdJTCDMSCRootEntity.java    |  12 +-
 .../intdiscriminator/PIdJTIDMSCEntityB.java        |   4 +-
 .../intdiscriminator/PIdJTIDMSCEntityD.java        |   4 +-
 .../intdiscriminator/PIdJTIDMSCLeafA.java          |   4 +-
 .../intdiscriminator/PIdJTIDMSCLeafB1.java         |   4 +-
 .../intdiscriminator/PIdJTIDMSCLeafB2.java         |   4 +-
 .../intdiscriminator/PIdJTIDMSCLeafC.java          |   4 +-
 .../intdiscriminator/PIdJTIDMSCLeafD1.java         |   4 +-
 .../intdiscriminator/PIdJTIDMSCLeafD2.java         |   4 +-
 .../PIdJTIDMSCMappedSuperclass.java                |   2 +-
 .../intdiscriminator/PIdJTIDMSCRootEntity.java     |  12 +-
 .../stringdiscriminator/PIdJTSDMSCEntityB.java     |   4 +-
 .../stringdiscriminator/PIdJTSDMSCEntityD.java     |   4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafA.java       |   4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafB1.java      |   4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafB2.java      |   4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafC.java       |   4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafD1.java      |   4 +-
 .../stringdiscriminator/PIdJTSDMSCLeafD2.java      |   4 +-
 .../PIdJTSDMSCMappedSuperclass.java                |   2 +-
 .../stringdiscriminator/PIdJTSDMSCRootEntity.java  |  12 +-
 .../chardiscriminator/PIdSTCDMSCEntityB.java       |   4 +-
 .../chardiscriminator/PIdSTCDMSCEntityD.java       |   4 +-
 .../chardiscriminator/PIdSTCDMSCLeafA.java         |   4 +-
 .../chardiscriminator/PIdSTCDMSCLeafB1.java        |   4 +-
 .../chardiscriminator/PIdSTCDMSCLeafB2.java        |   4 +-
 .../chardiscriminator/PIdSTCDMSCLeafC.java         |   4 +-
 .../chardiscriminator/PIdSTCDMSCLeafD1.java        |   4 +-
 .../chardiscriminator/PIdSTCDMSCLeafD2.java        |   4 +-
 .../PIdSTCDMSCMappedSuperclass.java                |   2 +-
 .../chardiscriminator/PIdSTCDMSCRootEntity.java    |  12 +-
 .../intdiscriminator/PIdSTIDMSCEntityB.java        |   4 +-
 .../intdiscriminator/PIdSTIDMSCEntityD.java        |   4 +-
 .../intdiscriminator/PIdSTIDMSCLeafA.java          |   4 +-
 .../intdiscriminator/PIdSTIDMSCLeafB1.java         |   4 +-
 .../intdiscriminator/PIdSTIDMSCLeafB2.java         |   4 +-
 .../intdiscriminator/PIdSTIDMSCLeafC.java          |   4 +-
 .../intdiscriminator/PIdSTIDMSCLeafD1.java         |   4 +-
 .../intdiscriminator/PIdSTIDMSCLeafD2.java         |   4 +-
 .../PIdSTIDMSCMappedSuperclass.java                |   2 +-
 .../intdiscriminator/PIdSTIDMSCRootEntity.java     |  12 +-
 .../stringdiscriminator/PIdSTSDMSCEntityB.java     |   4 +-
 .../stringdiscriminator/PIdSTSDMSCEntityD.java     |   4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafA.java       |   4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafB1.java      |   4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafB2.java      |   4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafC.java       |   4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafD1.java      |   4 +-
 .../stringdiscriminator/PIdSTSDMSCLeafD2.java      |   4 +-
 .../PIdSTSDMSCMappedSuperclass.java                |   2 +-
 .../stringdiscriminator/PIdSTSDMSCRootEntity.java  |  12 +-
 .../inheritance/entity/AbstractClass.java          |   6 +-
 .../persistence/inheritance/entity/Admin.java      |   6 +-
 .../inheritance/entity/BaseCallback.java           |   8 +-
 .../persistence/inheritance/entity/BaseClass.java  |   8 +-
 .../persistence/inheritance/entity/BaseClass2.java |   8 +-
 .../persistence/inheritance/entity/BaseClass3.java |  10 +-
 .../persistence/inheritance/entity/BaseClass4.java |   8 +-
 .../persistence/inheritance/entity/BaseClass5.java |  10 +-
 .../persistence/inheritance/entity/BaseClass6.java |   6 +-
 .../inheritance/entity/ComputerUser.java           |  12 +-
 .../persistence/inheritance/entity/Department.java |  10 +-
 .../persistence/inheritance/entity/Employee.java   |  18 +-
 .../persistence/inheritance/entity/FTEmployee.java |   4 +-
 .../persistence/inheritance/entity/ImplClassA.java |   8 +-
 .../inheritance/entity/ManagedIface.java           |   6 +-
 .../inheritance/entity/ManagedIface2.java          |   6 +-
 .../persistence/inheritance/entity/Manager.java    |   6 +-
 .../inheritance/entity/MappedSuper.java            |   6 +-
 .../persistence/inheritance/entity/MidClass.java   |   4 +-
 .../persistence/inheritance/entity/MidClass2.java  |   4 +-
 .../persistence/inheritance/entity/PTEmployee.java |   4 +-
 .../inheritance/entity/RegularUser.java            |   8 +-
 .../inheritance/entity/SharedName1.java            |   4 +-
 .../inheritance/entity/SharedName2.java            |   4 +-
 .../persistence/inheritance/entity/SubclassA.java  |   4 +-
 .../persistence/inheritance/entity/SubclassB.java  |   4 +-
 .../persistence/inheritance/entity/SubclassC.java  |   4 +-
 .../persistence/inheritance/entity/SubclassD.java  |   4 +-
 .../persistence/inheritance/entity/SubclassE.java  |   4 +-
 .../persistence/inheritance/entity/SubclassF.java  |   4 +-
 .../persistence/inheritance/entity/SubclassG.java  |   6 +-
 .../persistence/inheritance/entity/SubclassH.java  |   6 +-
 .../persistence/inheritance/entity/SubclassI.java  |   6 +-
 .../persistence/inheritance/entity/SubclassJ.java  |   6 +-
 .../persistence/inheritance/entity/SubclassK.java  |   4 +-
 .../inheritance/jointable/Contractor.java          |  20 +-
 .../inheritance/jointable/Department.java          |  24 +-
 .../inheritance/jointable/Employee.java            |  10 +-
 .../inheritance/jointable/FulltimeEmployee.java    |  20 +-
 .../inheritance/jointable/ParttimeEmployee.java    |  20 +-
 .../persistence/inheritance/jointable/Person.java  |  18 +-
 .../jointable/TestInheritanceTypeJoinedQuery.java  |   4 +-
 .../onetomany/TestJointableOneToMany.java          |   4 +-
 .../onetomany/TestMapsIdWithAutoGeneratedKey.java  |   4 +-
 .../inheritance/jointable/onetomany/UMLClass.java  |   2 +-
 .../inheritance/jointable/onetomany/UMLNamed.java  |   8 +-
 .../jointable/onetomany/UMLPackage.java            |   6 +-
 .../jointable/onetomany/UMLPrimitiveType.java      |   2 +-
 .../inheritance/jointable/onetomany/UMLType.java   |   4 +-
 .../mappedsuperclass/CashBaseEntity.java           |   6 +-
 .../DerivedEntityFromMappedSuperWithoutId.java     |   6 +-
 .../mappedsuperclass/MappedSuperWithoutId.java     |   2 +-
 .../inheritance/mappedsuperclass/SharedName1.java  |   2 +-
 .../inheritance/mappedsuperclass/SituationDA.java  |  10 +-
 .../mappedsuperclass/TestMappedSuperClass.java     |   2 +-
 .../mappedsuperclass/ValuableItemDA.java           |   8 +-
 .../mappedsuperclass/idclass/IdClassEntity.java    |   6 +-
 .../mappedsuperclass/idclass/IdClassTestMSC.java   |   6 +-
 .../mappedsuperclass/idclass/TestIdClass.java      |   4 +-
 .../inheritance/polymorphic/BaseEntity.java        |   8 +-
 .../inheritance/polymorphic/EnglishParagraph.java  |   2 +-
 .../inheritance/polymorphic/FrenchParagraph.java   |   2 +-
 .../inheritance/polymorphic/GermanParagraph.java   |   2 +-
 .../inheritance/polymorphic/Translatable.java      |  10 +-
 .../inheritance/polymorphic/Translation.java       |   8 +-
 .../inheritance/serializable/Employee.java         |   2 +-
 .../inheritance/serializable/Person.java           |  10 +-
 .../serializable/TestSerialization.java            |   2 +-
 .../jdbc/FKColumnNamesInner1Entity.java            |  48 +++
 .../jdbc/FKColumnNamesInner2Entity.java            |  48 +++
 .../persistence/jdbc/TestFKColumnNames.java        |  61 +---
 .../persistence/jdbc/TestIsolationFecthHint.java   |   2 +-
 .../jdbc/TestIsolationLevelOverride.java           |   2 +-
 .../apache/openjpa/persistence/jdbc/TestLobs.java  |   6 +-
 .../persistence/jdbc/TestOptimizeForClause.java    |   2 +-
 .../jdbc/TestSelectForUpdateOverride.java          |   2 +-
 .../persistence/jdbc/TestTimestampPKDeletion.java  |   6 +-
 .../persistence/jdbc/annotations/AnnoTest1.java    |  50 +--
 .../persistence/jdbc/annotations/AnnoTest2.java    |  34 +-
 .../persistence/jdbc/annotations/AnnoTest3.java    |  18 +-
 .../persistence/jdbc/annotations/EmbedOwner.java   |  26 +-
 .../persistence/jdbc/annotations/EmbedValue.java   |  14 +-
 .../persistence/jdbc/annotations/EmbedValue2.java  |   6 +-
 .../persistence/jdbc/annotations/EmbedValue3.java  |   6 +-
 .../jdbc/annotations/EmbeddableSuper.java          |  14 +-
 .../jdbc/annotations/EmbeddableSuperSub.java       |  12 +-
 .../jdbc/annotations/EmbeddedIdClass.java          |   6 +-
 .../jdbc/annotations/EmbeddedIdEntity.java         |  20 +-
 .../jdbc/annotations/EntityWithIndices.java        |  10 +-
 .../jdbc/annotations/ExtensionsEntity.java         |  18 +-
 .../persistence/jdbc/annotations/Flat1.java        |  18 +-
 .../persistence/jdbc/annotations/Flat2.java        |   4 +-
 .../persistence/jdbc/annotations/Generator.java    |  14 +-
 .../annotations/MultiColumnSecondaryVersionPC.java |  16 +-
 .../jdbc/annotations/MultiColumnVersionPC.java     |   8 +-
 .../jdbc/annotations/NativeSequenceEntity.java     |  16 +-
 .../jdbc/annotations/NonstandardMappingEntity.java |  12 +-
 .../annotations/NonstandardMappingEntity3.java     |  14 +-
 .../annotations/NonstandardMappingEntity4.java     |   6 +-
 .../annotations/NonstandardMappingMappedSuper.java |   4 +-
 .../NonstandardMappingMappedSuper4.java            |   4 +-
 .../jdbc/annotations/PropertyAccess1.java          |   4 +-
 .../jdbc/annotations/TablePerClass1.java           |  18 +-
 .../jdbc/annotations/TablePerClass2.java           |   4 +-
 .../jdbc/annotations/TestEJBEmbedded.java          |   2 +-
 .../jdbc/annotations/TestEmbeddedId.java           |   2 +-
 .../jdbc/annotations/TestEnumerated.java           |   2 +-
 .../jdbc/annotations/TestFlatInheritance.java      |   2 +-
 .../jdbc/annotations/TestGenerators.java           |   4 +-
 .../jdbc/annotations/TestJoinedInheritance.java    |   2 +-
 .../jdbc/annotations/TestManyToMany.java           |   2 +-
 .../persistence/jdbc/annotations/TestMapKey.java   |   2 +-
 .../jdbc/annotations/TestMixedAccess.java          |   2 +-
 .../TestNonstandardMappingAnnotations.java         |   2 +-
 .../persistence/jdbc/annotations/TestOneToOne.java |   2 +-
 .../jdbc/annotations/TestPropertyAccess.java       |   2 +-
 .../jdbc/annotations/TestSerializedLobs.java       |   2 +-
 .../persistence/jdbc/annotations/TestVersion.java  |   2 +-
 .../UnenhancedInappropriateTransient.java          |   8 +-
 .../jdbc/annotations/UnenhancedMixedAccess.java    |   6 +-
 .../persistence/jdbc/auto/AutoIncrementEntity.java |  12 +-
 .../persistence/jdbc/common/apps/AttachA.java      |   4 +-
 .../persistence/jdbc/common/apps/AttachB.java      |   2 +-
 .../persistence/jdbc/common/apps/AttachC.java      |   2 +-
 .../persistence/jdbc/common/apps/AttachD.java      |   2 +-
 .../persistence/jdbc/common/apps/AttachE.java      |   4 +-
 .../persistence/jdbc/common/apps/AttachF.java      |   2 +-
 .../jdbc/common/apps/AutoIncrementOpOrderPC.java   |   4 +-
 .../common/apps/AutoIncrementOpOrderPCSub.java     |   4 +-
 .../jdbc/common/apps/AutoIncrementPC1.java         |  16 +-
 .../jdbc/common/apps/AutoIncrementPC2.java         |   4 +-
 .../jdbc/common/apps/AutoIncrementPC3.java         |  14 +-
 .../openjpa/persistence/jdbc/common/apps/Base.java |   2 +-
 .../persistence/jdbc/common/apps/BaseSub1.java     |   2 +-
 .../persistence/jdbc/common/apps/BaseSub1Sub1.java |   2 +-
 .../persistence/jdbc/common/apps/BaseSub1Sub2.java |   2 +-
 .../persistence/jdbc/common/apps/BaseSub2.java     |   2 +-
 .../jdbc/common/apps/BuildSchemaPC.java            |   2 +-
 .../jdbc/common/apps/ByteArrayPKPC.java            |   2 +-
 .../jdbc/common/apps/ByteArrayPKPC2.java           |   2 +-
 .../persistence/jdbc/common/apps/CircularFKPC.java |   4 +-
 .../jdbc/common/apps/CircularFKPC2.java            |   4 +-
 .../jdbc/common/apps/ComplexEmbeddedPC.java        |   2 +-
 .../jdbc/common/apps/ConstantJoinPC.java           |   2 +-
 .../jdbc/common/apps/ConstantJoinPC2.java          |   2 +-
 .../jdbc/common/apps/ConstantJoinPC3.java          |   2 +-
 .../jdbc/common/apps/ConstantJoinPC4.java          |  14 +-
 .../jdbc/common/apps/ConstantJoinPC5.java          |   8 +-
 .../jdbc/common/apps/CustomMappingPC.java          |   8 +-
 .../persistence/jdbc/common/apps/DFGTest.java      |   4 +-
 .../jdbc/common/apps/DataStoreTripsPC.java         |   2 +-
 .../jdbc/common/apps/EagerOuterJoinPC.java         |   4 +-
 .../jdbc/common/apps/EagerOuterJoinPC2.java        |   2 +-
 .../persistence/jdbc/common/apps/EagerPC.java      |  18 +-
 .../persistence/jdbc/common/apps/EagerPCSub.java   |  10 +-
 .../jdbc/common/apps/EmbeddedOwnerPC.java          |   2 +-
 .../persistence/jdbc/common/apps/EmbeddedPC.java   |   2 +-
 .../common/apps/EntityWithFailedExternalizer.java  |   6 +-
 .../persistence/jdbc/common/apps/HelperPC.java     |  12 +-
 .../persistence/jdbc/common/apps/HelperPC2.java    |  14 +-
 .../persistence/jdbc/common/apps/HelperPC3.java    |  12 +-
 .../persistence/jdbc/common/apps/HelperPC4.java    |   4 +-
 .../persistence/jdbc/common/apps/HorizA.java       |   2 +-
 .../jdbc/common/apps/HorizAppInterVerticalA.java   |   2 +-
 .../jdbc/common/apps/HorizAppInterVerticalB.java   |   2 +-
 .../jdbc/common/apps/HorizAppInterVerticalC.java   |   2 +-
 .../jdbc/common/apps/HorizAppInterVerticalD.java   |   2 +-
 .../jdbc/common/apps/HorizAppMultiA.java           |   2 +-
 .../jdbc/common/apps/HorizAppMultiB.java           |   2 +-
 .../jdbc/common/apps/HorizAppMultiC.java           |   2 +-
 .../jdbc/common/apps/HorizAppMultiD.java           |   2 +-
 .../jdbc/common/apps/HorizAppSingleA.java          |   2 +-
 .../jdbc/common/apps/HorizAppSingleB.java          |   2 +-
 .../jdbc/common/apps/HorizAppSingleC.java          |   2 +-
 .../jdbc/common/apps/HorizAppSingleD.java          |   2 +-
 .../persistence/jdbc/common/apps/HorizB.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizC.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizD.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizE.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizF.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizG.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizH.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizI.java       |   2 +-
 .../jdbc/common/apps/HorizInterFlatA.java          |   2 +-
 .../jdbc/common/apps/HorizInterFlatB.java          |   2 +-
 .../jdbc/common/apps/HorizInterFlatC.java          |   2 +-
 .../jdbc/common/apps/HorizInterFlatD.java          |   2 +-
 .../jdbc/common/apps/HorizInterVerticalA.java      |   2 +-
 .../jdbc/common/apps/HorizInterVerticalB.java      |   2 +-
 .../jdbc/common/apps/HorizInterVerticalC.java      |   2 +-
 .../jdbc/common/apps/HorizInterVerticalD.java      |   2 +-
 .../persistence/jdbc/common/apps/HorizJ.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizK.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizL.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizM.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizN.java       |   2 +-
 .../persistence/jdbc/common/apps/HorizO.java       |   2 +-
 .../jdbc/common/apps/HorizRelation.java            |   2 +-
 .../jdbc/common/apps/InverseKeyMapPC.java          |   2 +-
 .../persistence/jdbc/common/apps/InvertA.java      |  12 +-
 .../persistence/jdbc/common/apps/InvertB.java      |  12 +-
 .../jdbc/common/apps/JoinSubclassBase.java         |   2 +-
 .../jdbc/common/apps/JoinSubclassBaseSubFlat.java  |   2 +-
 .../jdbc/common/apps/JoinSubclassBaseSubVert.java  |   2 +-
 .../jdbc/common/apps/JoinTableMapPC.java           |   2 +-
 .../jdbc/common/apps/LRSCompoundPC.java            |   2 +-
 .../persistence/jdbc/common/apps/LRSPC.java        |   2 +-
 .../jdbc/common/apps/LocatorTestObject.java        |   2 +-
 .../jdbc/common/apps/LockGroupSubclass.java        |   2 +-
 .../persistence/jdbc/common/apps/MappingTest1.java |   2 +-
 .../persistence/jdbc/common/apps/MappingTest2.java |   2 +-
 .../persistence/jdbc/common/apps/MappingTest3.java |   2 +-
 .../persistence/jdbc/common/apps/MappingTest4.java |   2 +-
 .../persistence/jdbc/common/apps/MappingTest5.java |   2 +-
 .../persistence/jdbc/common/apps/OpOrderPC.java    |   4 +-
 .../persistence/jdbc/common/apps/OpOrderPCSub.java |   4 +-
 .../jdbc/common/apps/PagingAppIdPC.java            |   2 +-
 .../jdbc/common/apps/PagingHelperPC.java           |   2 +-
 .../persistence/jdbc/common/apps/PagingPC.java     |   2 +-
 .../persistence/jdbc/common/apps/RawSQL.java       |   4 +-
 .../jdbc/common/apps/RecursivelyEmbeddedPC.java    |   2 +-
 .../persistence/jdbc/common/apps/RuntimeTest1.java |  20 +-
 .../persistence/jdbc/common/apps/RuntimeTest2.java |   2 +-
 .../persistence/jdbc/common/apps/RuntimeTest3.java |   2 +-
 .../jdbc/common/apps/TransactionalClassPC.java     |   4 +-
 .../common/apps/UnidirectionalOneToOneOwned.java   |   8 +-
 .../common/apps/UnidirectionalOneToOneOwner.java   |  12 +-
 .../jdbc/common/apps/mappingApp/Entity1.java       |  28 +-
 .../jdbc/common/apps/mappingApp/Entity2.java       |   8 +-
 .../apps/mappingApp/EntityWithCompositeId.java     |  10 +-
 .../mappingApp/OwnerOfEntityWithCompositeId.java   |  24 +-
 .../mappingApp/RecursiveEntityWithCompositeId.java |  26 +-
 .../jdbc/common/apps/mappingApp/SQLMapAddress.java |  20 +-
 .../jdbc/common/apps/mappingApp/SQLMapItem.java    |  16 +-
 .../jdbc/common/apps/mappingApp/SQLMapOrder.java   |  16 +-
 .../jdbc/common/apps/mappingApp/SQLMapPerson.java  |  16 +-
 .../persistence/jdbc/dbcs/MyDBCSEntity.java        |   2 +-
 .../TestBatchFlushWithMetadataException.java       |   4 +-
 .../jdbc/kernel/TestByteArrayAppId.java            |   2 +-
 .../jdbc/kernel/TestDataStoreTrips.java            |   2 +-
 .../jdbc/kernel/TestEJBAutoIncrement.java          |   2 +-
 .../jdbc/kernel/TestEfficientAttach.java           |   2 +-
 .../jdbc/kernel/TestIncrementalJDBCFlushes.java    |   4 +-
 .../kernel/TestOperationOrderUpdateManager.java    |   4 +-
 .../kernel/TestPagingResultObjectProvider.java     |   2 +-
 .../persistence/jdbc/kernel/TestRawSQL.java        |   2 +-
 .../jdbc/kernel/TestUnknownSubclass.java           |   2 +-
 .../jdbc/kernel/TestUpdateWithSubSelect.java       |   2 +-
 .../persistence/jdbc/mapping/Authority.java        |  20 +-
 .../jdbc/mapping/PrecisionTestEntity.java          |  10 +-
 .../TestCompositeIdTraversalInSQLMapping.java      |   4 +-
 .../jdbc/mapping/TestNativeQueries.java            |   4 +-
 .../persistence/jdbc/mapping/bidi/Address.java     |  10 +-
 .../persistence/jdbc/mapping/bidi/Child.java       |   8 +-
 .../jdbc/mapping/bidi/ParentWithAppIdentity.java   |  10 +-
 .../jdbc/mapping/bidi/ParentWithAutoIdentity.java  |  18 +-
 .../mapping/bidi/ParentWithSequenceIdentity.java   |  18 +-
 .../persistence/jdbc/mapping/bidi/Person.java      |  14 +-
 .../mapping/bidi/TestBiDirectionalJoinTable.java   |   4 +-
 ...tOneSidedParentChildWithImplicitForeignKey.java |   2 +-
 .../persistence/jdbc/maps/m2mmapex0/Division.java  |   6 +-
 .../persistence/jdbc/maps/m2mmapex0/Employee.java  |   8 +-
 .../jdbc/maps/m2mmapex0/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex0/TestMany2ManyMap.java      |   6 +-
 .../jdbc/maps/m2mmapex1/Department.java            |   6 +-
 .../persistence/jdbc/maps/m2mmapex1/Division.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex1/Employee.java  |   8 +-
 .../jdbc/maps/m2mmapex1/PhoneNumber.java           |  10 +-
 .../jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java   |   8 +-
 .../persistence/jdbc/maps/m2mmapex10/Employee.java |   8 +-
 .../jdbc/maps/m2mmapex10/EmployeePK.java           |   2 +-
 .../jdbc/maps/m2mmapex10/PhoneNumber.java          |   8 +-
 .../persistence/jdbc/maps/m2mmapex10/PhonePK.java  |   2 +-
 .../jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java |   6 +-
 .../jdbc/maps/m2mmapex2/Department.java            |   6 +-
 .../persistence/jdbc/maps/m2mmapex2/Employee.java  |   8 +-
 .../jdbc/maps/m2mmapex2/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex2/TestMany2ManyMapEx2.java   |   6 +-
 .../jdbc/maps/m2mmapex3/Department.java            |   6 +-
 .../persistence/jdbc/maps/m2mmapex3/Employee.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex3/FullName.java  |   2 +-
 .../jdbc/maps/m2mmapex3/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java   |   6 +-
 .../persistence/jdbc/maps/m2mmapex4/Address.java   |   2 +-
 .../persistence/jdbc/maps/m2mmapex4/Division.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex4/Employee.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex4/Office.java    |  10 +-
 .../jdbc/maps/m2mmapex4/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex4/TestMany2ManyMapEx4.java   |   6 +-
 .../persistence/jdbc/maps/m2mmapex5/Employee.java  |   8 +-
 .../jdbc/maps/m2mmapex5/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex5/TestMany2ManyMapEx5.java   |   6 +-
 .../persistence/jdbc/maps/m2mmapex6/Employee.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex6/FullName.java  |   6 +-
 .../jdbc/maps/m2mmapex6/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex6/TestMany2ManyMapEx6.java   |   6 +-
 .../persistence/jdbc/maps/m2mmapex7/Division.java  |   6 +-
 .../persistence/jdbc/maps/m2mmapex7/Employee.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex7/FullName.java  |   2 +-
 .../jdbc/maps/m2mmapex7/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex7/TestMany2ManyMapEx7.java   |   6 +-
 .../persistence/jdbc/maps/m2mmapex8/Employee.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex8/FullName.java  |   2 +-
 .../jdbc/maps/m2mmapex8/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex8/TestMany2ManyMapEx8.java   |   6 +-
 .../persistence/jdbc/maps/m2mmapex9/Employee.java  |   8 +-
 .../persistence/jdbc/maps/m2mmapex9/FullName.java  |   2 +-
 .../jdbc/maps/m2mmapex9/FullPhoneName.java         |   2 +-
 .../jdbc/maps/m2mmapex9/PhoneNumber.java           |   8 +-
 .../jdbc/maps/m2mmapex9/TestMany2ManyMapEx9.java   |   6 +-
 .../jdbc/maps/qualified/path/Division.java         |   8 +-
 .../jdbc/maps/qualified/path/Employee.java         |   8 +-
 .../jdbc/maps/qualified/path/PersonalInfo.java     |   4 +-
 .../jdbc/maps/qualified/path/Phone.java            |   6 +-
 .../maps/qualified/path/TestQualifiedPath.java     |   2 +-
 .../jdbc/maps/spec_10_1_26_ex0/Department1.java    |  12 +-
 .../jdbc/maps/spec_10_1_26_ex0/Department2.java    |  10 +-
 .../jdbc/maps/spec_10_1_26_ex0/Department3.java    |  12 +-
 .../jdbc/maps/spec_10_1_26_ex0/Employee1.java      |  10 +-
 .../jdbc/maps/spec_10_1_26_ex0/Employee2.java      |  10 +-
 .../jdbc/maps/spec_10_1_26_ex0/Employee3.java      |  12 +-
 .../jdbc/maps/spec_10_1_26_ex0/EmployeeName3.java  |   2 +-
 .../jdbc/maps/spec_10_1_26_ex0/EmployeePK2.java    |   2 +-
 .../maps/spec_10_1_26_ex0/TestSpec10_1_26.java     |   8 +-
 .../jdbc/maps/spec_10_1_26_ex1/Department.java     |  14 +-
 .../jdbc/maps/spec_10_1_26_ex1/Employee.java       |  10 +-
 .../maps/spec_10_1_26_ex1/TestSpec10_1_26_Ex1.java |   6 +-
 .../jdbc/maps/spec_10_1_26_ex2/Department.java     |  12 +-
 .../jdbc/maps/spec_10_1_26_ex2/Employee.java       |  10 +-
 .../jdbc/maps/spec_10_1_26_ex2/EmployeePK.java     |   2 +-
 .../maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java |   8 +-
 .../jdbc/maps/spec_10_1_26_ex3/Department.java     |  12 +-
 .../jdbc/maps/spec_10_1_26_ex3/Employee.java       |  12 +-
 .../jdbc/maps/spec_10_1_26_ex3/EmployeeName.java   |   2 +-
 .../maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex0/Compny1.java        |  10 +-
 .../jdbc/maps/spec_10_1_27_ex0/Compny2.java        |   6 +-
 .../jdbc/maps/spec_10_1_27_ex0/Division.java       |   8 +-
 .../jdbc/maps/spec_10_1_27_ex0/Item1.java          |  10 +-
 .../jdbc/maps/spec_10_1_27_ex0/Item2.java          |   8 +-
 .../maps/spec_10_1_27_ex0/TestSpec10_1_27.java     |   8 +-
 .../jdbc/maps/spec_10_1_27_ex0/VicePresident.java  |  10 +-
 .../jdbc/maps/spec_10_1_27_ex3/Company.java        |  10 +-
 .../jdbc/maps/spec_10_1_27_ex3/Division.java       |   6 +-
 .../maps/spec_10_1_27_ex3/TestSpec10_1_27_Ex3.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex3/VicePresident.java  |   8 +-
 .../jdbc/maps/spec_10_1_27_ex4/Company.java        |   8 +-
 .../jdbc/maps/spec_10_1_27_ex4/Division.java       |   8 +-
 .../maps/spec_10_1_27_ex4/TestSpec10_1_27_Ex4.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex4/VicePresident.java  |  10 +-
 .../jdbc/maps/spec_10_1_27_ex5/Company.java        |   8 +-
 .../jdbc/maps/spec_10_1_27_ex5/Division.java       |   6 +-
 .../maps/spec_10_1_27_ex5/TestSpec10_1_27_Ex5.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex5/VicePresident.java  |   8 +-
 .../jdbc/maps/spec_10_1_27_ex6/Company.java        |  10 +-
 .../jdbc/maps/spec_10_1_27_ex6/Division.java       |   6 +-
 .../maps/spec_10_1_27_ex6/TestSpec10_1_27_Ex6.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex6/VicePresident.java  |  10 +-
 .../jdbc/maps/spec_10_1_27_ex7/Company.java        |  10 +-
 .../jdbc/maps/spec_10_1_27_ex7/Division.java       |   8 +-
 .../maps/spec_10_1_27_ex7/TestSpec10_1_27_Ex7.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex7/VicePresident.java  |  10 +-
 .../jdbc/maps/spec_10_1_27_ex8/Company.java        |   8 +-
 .../jdbc/maps/spec_10_1_27_ex8/FileName.java       |   2 +-
 .../maps/spec_10_1_27_ex8/TestSpec10_1_27_Ex8.java |   8 +-
 .../jdbc/maps/spec_10_1_27_ex8/VicePresident.java  |   8 +-
 .../jdbc/maps/spec_10_1_29_ex1/Company.java        |  14 +-
 .../jdbc/maps/spec_10_1_29_ex1/Division.java       |  12 +-
 .../maps/spec_10_1_29_ex1/TestSpec10_1_29_Ex1.java |   8 +-
 .../jdbc/maps/spec_10_1_29_ex1/VicePresident.java  |   6 +-
 .../jdbc/maps/spec_10_1_29_ex3/Course.java         |   6 +-
 .../jdbc/maps/spec_10_1_29_ex3/Semester.java       |   6 +-
 .../jdbc/maps/spec_10_1_29_ex3/Student.java        |  14 +-
 .../maps/spec_10_1_29_ex3/TestSpec10_1_29_Ex3.java |   8 +-
 .../jdbc/maps/update/LocalizedString.java          |   2 +-
 .../jdbc/maps/update/MultilingualString.java       |  22 +-
 .../jdbc/maps/update/TestMapUpdate.java            |   6 +-
 .../openjpa/persistence/jdbc/meta/TestDFG.java     |   2 +-
 .../persistence/jdbc/meta/TestEJBByteArray.java    |   2 +-
 .../jdbc/meta/TestEJBColumnIOMappings.java         |   2 +-
 .../meta/TestEJBConstantJoinOnSameRefTable.java    |   2 +-
 .../jdbc/meta/TestEJBCustomMapping.java            |   2 +-
 .../persistence/jdbc/meta/TestEJBDateVersion.java  |   2 +-
 .../persistence/jdbc/meta/TestEJBEager.java        |   2 +-
 .../jdbc/meta/TestEJBInverseOneToOne.java          |   4 +-
 .../jdbc/meta/TestEJBOuterJoinValues.java          |   2 +-
 .../persistence/jdbc/meta/TestMultiDFG.java        |   2 +-
 .../jdbc/meta/TestMultiTableMappings.java          |   2 +-
 .../jdbc/meta/TestUseSchemaElement.java            |   4 +-
 .../openjpa/persistence/jdbc/oracle/PObject.java   |  10 +-
 .../persistence/jdbc/oracle/PObjectNative.java     |   8 +-
 .../persistence/jdbc/oracle/TestAutoIncrement.java |   6 +-
 .../persistence/jdbc/order/BattingOrder.java       |  16 +-
 .../persistence/jdbc/order/BiOrderEntity.java      |   6 +-
 .../jdbc/order/BiOrderMappedByEntity.java          |   8 +-
 .../openjpa/persistence/jdbc/order/Bicycle.java    |   4 +-
 .../apache/openjpa/persistence/jdbc/order/Car.java |  12 +-
 .../persistence/jdbc/order/ColDefTestElement.java  |   8 +-
 .../persistence/jdbc/order/ColDefTestEntity.java   |  16 +-
 .../openjpa/persistence/jdbc/order/Course.java     |  18 +-
 .../openjpa/persistence/jdbc/order/Game.java       |  14 +-
 .../openjpa/persistence/jdbc/order/Home.java       |   8 +-
 .../openjpa/persistence/jdbc/order/Inning.java     |   2 +-
 .../openjpa/persistence/jdbc/order/ObOcEntity.java |  12 +-
 .../openjpa/persistence/jdbc/order/Owner.java      |  22 +-
 .../openjpa/persistence/jdbc/order/Person.java     |   6 +-
 .../openjpa/persistence/jdbc/order/Player.java     |   6 +-
 .../openjpa/persistence/jdbc/order/Student.java    |  14 +-
 .../persistence/jdbc/order/TestOrderColumn.java    |   2 +-
 .../openjpa/persistence/jdbc/order/Trainer.java    |   6 +-
 .../openjpa/persistence/jdbc/order/Widget.java     |  10 +-
 .../jdbc/query/TestAggregateQueryWithNoResult.java |   2 +-
 .../jdbc/query/TestEJBQLSelectNPlusOne.java        |   2 +-
 .../persistence/jdbc/query/TestGroupByQuery.java   |   2 +-
 .../persistence/jdbc/query/TestHintedQuery.java    |   4 +-
 .../persistence/jdbc/query/TestJDBCGrouping.java   |   2 +-
 .../jdbc/query/TestMultipleEntityProjection.java   |   4 +-
 .../query/TestNativeQueryParameterBinding.java     |   4 +-
 .../jdbc/query/TestNativeQueryProcedures.java      |   4 +-
 .../jdbc/query/TestNewJavaObjectQuery.java         |   2 +-
 .../persistence/jdbc/query/TestOrderByQuery.java   |   2 +-
 .../jdbc/query/TestQueryParameterBinding.java      |   4 +-
 .../TestTemporalTypeQueryParameterBinding.java     |   6 +-
 .../query/TestUpdateSingleValuedAssociation.java   |   6 +-
 .../jdbc/query/cache/AbstractQueryCacheTest.java   |   4 +-
 .../persistence/jdbc/query/cache/Department.java   |  12 +-
 .../persistence/jdbc/query/cache/Employee.java     |  16 +-
 .../jdbc/query/cache/FullTimeEmployee.java         |   6 +-
 .../persistence/jdbc/query/cache/Invoice.java      |  10 +-
 .../persistence/jdbc/query/cache/LineItem.java     |   6 +-
 .../openjpa/persistence/jdbc/query/cache/Part.java |  18 +-
 .../persistence/jdbc/query/cache/PartBase.java     |   4 +-
 .../jdbc/query/cache/PartComposite.java            |   6 +-
 .../jdbc/query/cache/PartTimeEmployee.java         |   6 +-
 .../persistence/jdbc/query/cache/Supplier.java     |  10 +-
 .../cache/TestNonPrimaryKeyQueryParameters.java    |   6 +-
 .../query/cache/TestQueryTimestampEviction.java    |   2 +-
 .../persistence/jdbc/query/cache/Usage.java        |  14 +-
 .../persistence/jdbc/query/domain/Applicant.java   |   6 +-
 .../persistence/jdbc/query/domain/Application.java |  10 +-
 .../persistence/jdbc/query/domain/Binder.java      |  10 +-
 .../persistence/jdbc/query/domain/Chess.java       |   2 +-
 .../persistence/jdbc/query/domain/Customer.java    |  10 +-
 .../persistence/jdbc/query/domain/DtaSrc.java      |  12 +-
 .../persistence/jdbc/query/domain/DtaSrcField.java |  16 +-
 .../persistence/jdbc/query/domain/Game.java        |  10 +-
 .../persistence/jdbc/query/domain/IndoorGame.java  |   2 +-
 .../persistence/jdbc/query/domain/Magazine.java    |  10 +-
 .../persistence/jdbc/query/domain/Order.java       |  10 +-
 .../persistence/jdbc/query/domain/Publisher.java   |   8 +-
 .../persistence/jdbc/query/domain/Scrabble.java    |   2 +-
 .../persistence/jdbc/query/domain/TimeEntity.java  |  10 +-
 .../persistence/jdbc/query/domain/TimeKeeper.java  |   8 +-
 .../persistence/jdbc/query/sub/MaxQueryEntity.java |   6 +-
 .../jdbc/query/sub/MaxQueryMapEntity.java          |  10 +-
 .../persistence/jdbc/query/sub/TestSubQuery.java   |   6 +-
 .../jdbc/query/xml/TableNameInXmlEntity.java       |   6 +-
 .../jdbc/query/xml/TestTableNameInXml.java         |   4 +-
 .../schema/TestSchemaGenerationProperties.java     |  64 ++--
 .../openjpa/persistence/jdbc/sqlcache/Address.java |   8 +-
 .../openjpa/persistence/jdbc/sqlcache/Author.java  |   8 +-
 .../openjpa/persistence/jdbc/sqlcache/Book.java    |   8 +-
 .../openjpa/persistence/jdbc/sqlcache/CD.java      |   6 +-
 .../openjpa/persistence/jdbc/sqlcache/Child.java   |  12 +-
 .../jdbc/sqlcache/CombinedPKEmbeddedEntity.java    |   4 +-
 .../jdbc/sqlcache/CombinedPKListEntity.java        |  12 +-
 .../jdbc/sqlcache/CombinedPKTestEntity.java        |   4 +-
 .../openjpa/persistence/jdbc/sqlcache/Company.java |  16 +-
 .../persistence/jdbc/sqlcache/Department.java      |  12 +-
 .../persistence/jdbc/sqlcache/Employee.java        |  16 +-
 .../persistence/jdbc/sqlcache/Merchandise.java     |  10 +-
 .../persistence/jdbc/sqlcache/OrderJPA.java        |   4 +-
 .../openjpa/persistence/jdbc/sqlcache/Parent.java  |  16 +-
 .../openjpa/persistence/jdbc/sqlcache/Person.java  |  22 +-
 .../openjpa/persistence/jdbc/sqlcache/Singer.java  |   6 +-
 .../jdbc/sqlcache/TestExternalizedParameter.java   |   4 +-
 .../persistence/jdbc/sqlcache/TestFinderCache.java |   2 +-
 .../sqlcache/TestInExpressionParameterBinding.java |   2 +-
 .../TestMultithreadedReparameterization.java       |   6 +-
 .../jdbc/sqlcache/TestPreparedQueryCache.java      |   8 +-
 .../jdbc/sqlcache/discrim/AbstractExtValue.java    |   8 +-
 .../jdbc/sqlcache/discrim/ComposedPK.java          |   2 +-
 .../jdbc/sqlcache/discrim/ExtValue1.java           |   4 +-
 .../sqlcache/discrim/TestFinderCacheWithNulls.java |   2 +-
 .../jdbc/sqlcache/discrim/UserData.java            |  10 +-
 .../openjpa/persistence/jdbc/strategy/Address.java |  14 +-
 .../persistence/jdbc/strategy/MappedEntity.java    |   8 +-
 .../persistence/jdbc/strategy/MapperEntity.java    |  14 +-
 .../openjpa/persistence/jdbc/strategy/Person.java  |  20 +-
 .../jdbc/strategy/TestHandlerStrategy.java         |   2 +-
 .../jdbc/strategy/TestStrategyAnnotaion.java       |   6 +-
 .../persistence/jdbc/unique/NamedUniqueA.java      |  18 +-
 .../persistence/jdbc/unique/NamedUniqueB.java      |  20 +-
 .../jdbc/unique/TestNamedUniqueConstraint.java     |   2 +-
 ...TestNamedUniqueConstraintWithXMLDescriptor.java |   2 +-
 .../jdbc/unique/TestUniqueConstraint.java          |   2 +-
 .../TestUniqueConstraintWithXMLDescriptor.java     |   2 +-
 .../openjpa/persistence/jdbc/unique/UniqueA.java   |  18 +-
 .../openjpa/persistence/jdbc/unique/UniqueB.java   |  16 +-
 .../jdbc/update/BaseTimestampedEntity.java         |   8 +-
 .../openjpa/persistence/jdbc/update/Child.java     |  10 +-
 .../jdbc/update/NumericVersionedEntity.java        |   8 +-
 .../openjpa/persistence/jdbc/update/Parent.java    |  10 +-
 .../persistence/jdbc/update/TestParentChild.java   |   2 +-
 .../jdbc/update/TestTimestampVersion.java          |   4 +-
 .../persistence/jdbc/update/TimestampedEntity.java |   4 +-
 .../jdbc/version/TestVersionColumn.java            |   4 +-
 .../persistence/jdbc/version/model/IntVersion.java |  10 +-
 .../jdbc/version/model/ShortVersion.java           |  10 +-
 .../jdbc/version/model/TimestampVersion.java       |  10 +-
 .../persistence/jpql/TestOneToManySubQuery.java    |   2 +-
 .../persistence/jpql/clauses/TestBulkUpdate.java   |   4 +-
 .../persistence/jpql/clauses/TestEJBClauses.java   |   2 +-
 .../jpql/clauses/TestEJBDeleteUpdateImpl.java      |   4 +-
 .../jpql/clauses/TestEJBPolymorphicQuery.java      |   2 +-
 .../jpql/clauses/TestEJBQueryInterface.java        |   4 +-
 .../jpql/entities/OrderedElementEntity.java        |   8 +-
 .../jpql/entities/OrderedManyToManyEntity.java     |   8 +-
 .../jpql/entities/OrderedNameEntity.java           |   8 +-
 .../jpql/entities/OrderedOneToManyEntity.java      |   8 +-
 .../jpql/entities/UnorderedNameEntity.java         |   4 +-
 .../jpql/entities/XMLOrderedNameEntity.java        |   4 +-
 .../jpql/expressions/TestEJBQLCondExpression.java  |   2 +-
 .../jpql/expressions/TestEntityTypeExpression.java |   2 +-
 .../expressions/TestInMemoryScalarExpressions.java |   2 +-
 .../persistence/jpql/expressions/TestIndex.java    |   4 +-
 .../expressions/TestJPQLScalarExpressions.java     |   4 +-
 .../jpql/functions/TestEJBQLFunction.java          |   2 +-
 .../jpql/functions/TestSetParameter.java           |   2 +-
 .../openjpa/persistence/jpql/joins/Department.java |  12 +-
 .../persistence/jpql/joins/Department_.java        |   8 +-
 .../openjpa/persistence/jpql/joins/Employee.java   |  14 +-
 .../openjpa/persistence/jpql/joins/Employee_.java  |   6 +-
 .../persistence/jpql/joins/TestEJBJoins.java       |   2 +-
 .../joins/TestJoinFetchWithQueryDataCache.java     |  12 +-
 .../jpql/joins/leftfetch/DepartmentTest.java       |   8 +-
 .../jpql/joins/leftfetch/PersonTest.java           |   6 +-
 .../jpql/joins/leftfetch/TestJoinLeftFetch.java    |   4 +-
 .../jpql/literals/TestLiteralInSQL.java            |   4 +-
 .../openjpa/persistence/jpql/version/Author.java   |   6 +-
 .../openjpa/persistence/jpql/version/Document.java |   6 +-
 .../jpql/version/TestJoinVersionField.java         |   6 +-
 .../persistence/jpql/version/type/BaseEntity.java  |   4 +-
 .../jpql/version/type/ChildVersionEntity.java      |   4 +-
 .../jpql/version/type/LongVersionEntity.java       |   6 +-
 .../version/type/PrimativeLongVersionEntity.java   |   6 +-
 .../version/type/PrimativeShortVersionEntity.java  |   6 +-
 .../jpql/version/type/ShortVersionEntity.java      |   6 +-
 .../jpql/version/type/TestVersionFieldType.java    |   4 +-
 .../jpql/version/type/TimestampVersionEntity.java  |   6 +-
 ...PersistentFieldsNoPersistentFieldsPCEntity.java |  30 ++
 .../persistence/kernel/PessimisticLockEntity.java  |   4 +-
 .../kernel/StaticInnerClassesContainer.java        |  54 +++
 .../persistence/kernel/Test2EJBConcurrency.java    |   2 +-
 .../openjpa/persistence/kernel/TestBulkDelete.java |   4 +-
 .../persistence/kernel/TestEJBEmbedded.java        |   2 +-
 .../persistence/kernel/TestEJBEntityManager.java   |   2 +-
 .../kernel/TestEJBGetObjectByIdValue.java          |   2 +-
 .../kernel/TestEJBIncrementalFlushes.java          |   2 +-
 .../persistence/kernel/TestEJBInterfaces.java      |   2 +-
 .../openjpa/persistence/kernel/TestEJBLobs.java    |  83 +----
 .../kernel/TestEJBLobsInner2Entity.java            |  39 ++
 .../persistence/kernel/TestEJBLobsInnerEntity.java |  68 ++++
 .../openjpa/persistence/kernel/TestEJBLocales.java |   2 +-
 .../persistence/kernel/TestEJBManagedInverses.java |   2 +-
 .../kernel/TestEJBNoPersistentFields.java          |  62 +---
 .../TestEJBNoPersistentFieldsNholderEntity.java    |  61 ++++
 .../persistence/kernel/TestEJBNullValues.java      |   2 +-
 .../kernel/TestEJBObjectCollections.java           |   2 +-
 .../persistence/kernel/TestEJBRetainValues.java    |   2 +-
 .../openjpa/persistence/kernel/TestEJBState.java   |   2 +-
 .../kernel/TestEJBTransactionalClass.java          |   2 +-
 .../persistence/kernel/TestEJBTransactions.java    |   4 +-
 .../persistence/kernel/TestIndirectRecursion.java  |   4 +-
 .../kernel/TestMultipleInsertDeleteSameId.java     |   2 +-
 .../persistence/kernel/TestPersistenceManager.java |   4 +-
 .../kernel/TestPessimisticLockException.java       |   4 +-
 ...estPojoWithoutAnnotationsCannotBePersisted.java |   2 +-
 .../persistence/kernel/TestSecurityContext.java    |  82 +----
 .../persistence/kernel/TestStaticInnerClasses.java |  36 +-
 .../persistence/kernel/TestSuppressBatchOLE.java   |   2 +-
 .../persistence/kernel/common/apps/AImplB.java     |   8 +-
 .../common/apps/AbstractMappedAppIdSuper.java      |   4 +-
 .../kernel/common/apps/AllFieldTypesTest.java      |  16 +-
 .../kernel/common/apps/AllFieldsTypeTest.java      |   8 +-
 .../kernel/common/apps/AppIdClassString.java       |   8 +-
 .../kernel/common/apps/AppIdHolder.java            |   2 +-
 .../persistence/kernel/common/apps/AppIdSubB.java  |   2 +-
 .../persistence/kernel/common/apps/AppIdSubC.java  |   2 +-
 .../persistence/kernel/common/apps/AppIdSubD.java  |   2 +-
 .../persistence/kernel/common/apps/AppIdSubE.java  |   2 +-
 .../persistence/kernel/common/apps/AppIdSubF.java  |   2 +-
 .../persistence/kernel/common/apps/ArraysTest.java |   8 +-
 .../persistence/kernel/common/apps/AttachA.java    |  16 +-
 .../persistence/kernel/common/apps/AttachB.java    |   8 +-
 .../persistence/kernel/common/apps/AttachC.java    |   8 +-
 .../persistence/kernel/common/apps/AttachD.java    |  22 +-
 .../persistence/kernel/common/apps/AttachE.java    |  28 +-
 .../persistence/kernel/common/apps/AttachF.java    |  16 +-
 .../kernel/common/apps/AttachVersionA.java         |   2 +-
 .../kernel/common/apps/AttachVersionB.java         |   2 +-
 .../kernel/common/apps/AttachVersionC.java         |   2 +-
 .../persistence/kernel/common/apps/BlobTest.java   |  14 +-
 .../persistence/kernel/common/apps/Blobs.java      |  10 +-
 .../persistence/kernel/common/apps/ByteArray.java  |   8 +-
 .../kernel/common/apps/CalendarFields.java         |  10 +-
 .../persistence/kernel/common/apps/ColumnIOPC.java |  12 +-
 .../kernel/common/apps/ComplexEmbeddedPC.java      |   8 +-
 .../kernel/common/apps/ConcreteMappedAppIdSub.java |   2 +-
 .../kernel/common/apps/DateVersion.java            |   8 +-
 .../kernel/common/apps/DependentFieldsPC.java      |  22 +-
 .../persistence/kernel/common/apps/DetachSMPC.java |   2 +-
 .../kernel/common/apps/EmbeddedOwnerPC.java        |  12 +-
 .../persistence/kernel/common/apps/EmbeddedPC.java |   6 +-
 .../persistence/kernel/common/apps/Entity1.java    |  24 +-
 .../persistence/kernel/common/apps/Entity2.java    |  12 +-
 .../kernel/common/apps/ExternalValues.java         |   8 +-
 .../persistence/kernel/common/apps/FetchA.java     |   8 +-
 .../persistence/kernel/common/apps/FetchB.java     |   6 +-
 .../persistence/kernel/common/apps/FetchBase.java  |   6 +-
 .../kernel/common/apps/FetchGroupTestObject.java   |  22 +-
 .../common/apps/FetchGroupTestObjectChild.java     |   8 +-
 .../persistence/kernel/common/apps/Inner.java      |  14 +-
 .../kernel/common/apps/InstanceCallbacksTest.java  |  20 +-
 .../kernel/common/apps/InterfaceHolder.java        |  16 +-
 .../kernel/common/apps/InterfaceTestImpl1.java     |   4 +-
 .../kernel/common/apps/InterfaceTestImpl2.java     |   4 +-
 .../kernel/common/apps/InterfaceTestImpl3.java     |   2 +-
 .../kernel/common/apps/InterfaceTestImpl4.java     |   2 +-
 .../persistence/kernel/common/apps/InverseA.java   |  12 +-
 .../persistence/kernel/common/apps/InverseB.java   |   4 +-
 .../persistence/kernel/common/apps/Lobs.java       |  10 +-
 .../kernel/common/apps/LockGroupPC.java            |   4 +-
 .../kernel/common/apps/LockGroupPC2.java           |   2 +-
 .../common/apps/LockGroupPCKnownSubclass.java      |   2 +-
 .../kernel/common/apps/ManagedInterfaceOwner.java  |   2 +-
 .../common/apps/ManagedInterfaceOwnerAppId.java    |   2 +-
 .../kernel/common/apps/MapElementPC.java           |   2 +-
 .../kernel/common/apps/MapElementPCChild.java      |   2 +-
 .../kernel/common/apps/MixedInterfaceImpl.java     |   2 +-
 .../common/apps/ModInstanceCallbackTests.java      |  20 +-
 .../kernel/common/apps/ModRuntimeTest1.java        |  24 +-
 .../kernel/common/apps/ModRuntimeTest2.java        |   4 +-
 .../kernel/common/apps/NonMappedInterfaceImpl.java |   2 +-
 .../kernel/common/apps/ObjectCollectionHolder.java |   6 +-
 .../kernel/common/apps/OuterJoinValuePC.java       |   8 +-
 .../persistence/kernel/common/apps/PCAddress.java  |   8 +-
 .../persistence/kernel/common/apps/PCClassPC.java  |   2 +-
 .../persistence/kernel/common/apps/PCCompany.java  |  16 +-
 .../persistence/kernel/common/apps/PCCountry.java  |   2 +-
 .../kernel/common/apps/PCDepartment.java           |  10 +-
 .../kernel/common/apps/PCDirectory.java            |  18 +-
 .../persistence/kernel/common/apps/PCEmployee.java |   8 +-
 .../persistence/kernel/common/apps/PCFile.java     |  10 +-
 .../persistence/kernel/common/apps/PCPerson.java   |  10 +-
 .../kernel/common/apps/PersistenceAware.java       |   2 +-
 .../kernel/common/apps/PersistentMapHolder.java    |   4 +-
 .../persistence/kernel/common/apps/ProxiesPC.java  |  20 +-
 .../kernel/common/apps/RecursivelyEmbeddedPC.java  |   8 +-
 .../kernel/common/apps/RuntimeTest1.java           |  28 +-
 .../kernel/common/apps/RuntimeTest2.java           |   4 +-
 .../kernel/common/apps/RuntimeTest3.java           |   4 +-
 .../kernel/common/apps/RuntimeTest4.java           |   8 +-
 .../kernel/common/apps/RuntimeTest5.java           |   4 +-
 .../persistence/kernel/common/apps/SCOTest.java    |   8 +-
 .../kernel/common/apps/SecondaryTab.java           |  14 +-
 .../kernel/common/apps/SequenceAssigned.java       |  16 +-
 .../kernel/common/apps/SequenceAssigned2.java      |   4 +-
 .../kernel/common/apps/SequenceAssigned3.java      |   8 +-
 .../kernel/common/apps/SingleIdByte.java           |   2 +-
 .../kernel/common/apps/SingleIdChar.java           |   2 +-
 .../kernel/common/apps/SingleIdInt.java            |   2 +-
 .../kernel/common/apps/SingleIdLong.java           |   2 +-
 .../kernel/common/apps/SingleIdShort.java          |   2 +-
 .../kernel/common/apps/SingleIdString.java         |   2 +-
 .../kernel/common/apps/SingleIdWrapper.java        |   2 +-
 .../persistence/kernel/common/apps/State.java      |  14 +-
 .../persistence/kernel/common/apps/Transition.java |  16 +-
 .../kernel/common/apps/ValueStrategyPC.java        |   8 +-
 .../TestMergeAndPersistWithManagedRelation.java    |   2 +-
 .../TestPessimisticPNonTransToPDirty.java          |   2 +-
 .../log/TestConnectionRetainModeWarning.java       |   2 +-
 .../persistence/managedinterface/ManagedIface.java |  10 +-
 .../managedinterface/ManagedInterfaceEmbed.java    |   2 +-
 .../managedinterface/ManagedInterfaceOwner.java    |  10 +-
 .../managedinterface/ManagedInterfaceSup.java      |   6 +-
 .../managedinterface/MixedInterface.java           |   6 +-
 .../managedinterface/MixedInterfaceImpl.java       |   6 +-
 .../managedinterface/NonMappedInterfaceImpl.java   |   2 +-
 .../managedinterface/SimpleManagedInterface.java   |   4 +-
 .../managedinterface/TestManagedInterfaces.java    |   4 +-
 .../TestSimpleManagedInterface.java                |   2 +-
 .../apache/openjpa/persistence/merge/Child.java    |  22 +-
 .../openjpa/persistence/merge/GrandChild.java      |  16 +-
 .../apache/openjpa/persistence/merge/LineItem.java |  10 +-
 .../openjpa/persistence/merge/LineItemPK.java      |   4 +-
 .../apache/openjpa/persistence/merge/Order.java    |  20 +-
 .../apache/openjpa/persistence/merge/Parent.java   |  16 +-
 .../merge/TestCascadeOneToManyMerge.java           |   2 +-
 .../openjpa/persistence/merge/TestLazyFields.java  |   2 +-
 .../openjpa/persistence/merge/TestMerge.java       |   2 +-
 .../merge/TestMergeDetachStateField.java           |   2 +-
 .../openjpa/persistence/merge/TestMergeNew.java    |   2 +-
 .../persistence/merge/TestMultipleMerge.java       |   2 +-
 .../openjpa/persistence/merge/model/Car.java       |  16 +-
 .../openjpa/persistence/merge/model/Inner.java     |  16 +-
 .../openjpa/persistence/merge/model/Label.java     |  22 +-
 .../openjpa/persistence/merge/model/Label2.java    |  20 +-
 .../openjpa/persistence/merge/model/Make.java      |  16 +-
 .../openjpa/persistence/merge/model/Model.java     |  20 +-
 .../openjpa/persistence/merge/model/Outer.java     |  16 +-
 .../persistence/merge/model/ShipPackage.java       |  20 +-
 .../persistence/merge/model/ShipPackage2.java      |  22 +-
 .../openjpa/persistence/merge/model/Toy.java       |  10 +-
 .../openjpa/persistence/merge/model/ToyBox.java    |  12 +-
 .../openjpa/persistence/meta/ArrayMember.java      |   4 +-
 .../openjpa/persistence/meta/ArrayMember_.java     |   4 +-
 .../apache/openjpa/persistence/meta/Embed0.java    |   8 +-
 .../apache/openjpa/persistence/meta/Embed0_.java   |   4 +-
 .../apache/openjpa/persistence/meta/Embed1.java    |   8 +-
 .../apache/openjpa/persistence/meta/Embed1_.java   |   4 +-
 .../persistence/meta/ExplicitFieldAccess.java      |  10 +-
 .../persistence/meta/ExplicitFieldAccessMixed.java |  10 +-
 .../meta/ExplicitFieldAccessMixed_.java            |   4 +-
 .../persistence/meta/ExplicitFieldAccess_.java     |   4 +-
 .../persistence/meta/ExplicitPropertyAccess.java   |  10 +-
 .../meta/ExplicitPropertyAccessMixed.java          |  10 +-
 .../meta/ExplicitPropertyAccessMixed_.java         |   4 +-
 .../persistence/meta/ExplicitPropertyAccess_.java  |   4 +-
 .../persistence/meta/ImplicitFieldAccessBase.java  |  10 +-
 .../persistence/meta/ImplicitFieldAccessBase_.java |  12 +-
 .../meta/ImplicitFieldAccessMappedSuperclass.java  |   6 +-
 .../meta/ImplicitFieldAccessMappedSuperclass_.java |   4 +-
 .../meta/ImplicitFieldAccessSubclass.java          |   6 +-
 .../meta/ImplicitFieldAccessSubclass_.java         |   6 +-
 .../openjpa/persistence/meta/MdrTestEntity.java    |  14 +-
 .../persistence/meta/MetamodelWithEnumEntity.java  |  44 +++
 .../persistence/meta/TestClassMetaData.java        |   2 +-
 .../persistence/meta/TestExternalValues.java       |   4 +-
 .../persistence/meta/TestFactoryMethod.java        |   2 +-
 .../openjpa/persistence/meta/TestMetamodel.java    |  28 +-
 .../persistence/meta/TestMetamodelWithEnum.java    |  32 +-
 .../meta/TestQueryTypeAliasRegistration.java       |   2 +-
 .../persistence/meta/TestValueStrategies.java      |   2 +-
 .../meta/common/apps/ExternalValues.java           |   4 +-
 .../persistence/meta/common/apps/FieldOrderPC.java |   2 +-
 .../meta/common/apps/FieldOrderPCSubclass.java     |   2 +-
 .../persistence/meta/common/apps/MetaTest1.java    |   4 +-
 .../persistence/meta/common/apps/MetaTest2.java    |   6 +-
 .../persistence/meta/common/apps/MetaTest3.java    |   2 +-
 .../persistence/meta/common/apps/MetaTest4.java    |   2 +-
 .../persistence/meta/common/apps/MetaTest5.java    |   2 +-
 .../persistence/meta/common/apps/MetaTest6.java    |   2 +-
 .../persistence/meta/common/apps/MetaTest7.java    |   6 +-
 .../meta/common/apps/NonPersistentFieldsPC.java    |   2 +-
 .../persistence/meta/common/apps/OrderByPC.java    |   2 +-
 .../persistence/meta/common/apps/OrderByPCRel.java |   2 +-
 .../meta/common/apps/OrderByPCRelSub.java          |   2 +-
 .../persistence/meta/common/apps/RuntimeTest1.java |   2 +-
 .../persistence/meta/common/apps/RuntimeTest2.java |   2 +-
 .../persistence/meta/common/apps/RuntimeTest3.java |   2 +-
 .../meta/common/apps/SequenceAssigned.java         |   2 +-
 .../meta/common/apps/SequenceAssigned2.java        |   2 +-
 .../meta/common/apps/SequenceAssigned3.java        |   2 +-
 .../meta/common/apps/TransactionalClassPC.java     |   2 +-
 .../meta/common/apps/UuidAttributeConverter.java   |   4 +-
 .../meta/common/apps/ValueStrategyPC.java          |   2 +-
 .../persistence/models/company/basic/Address.java  |   6 +-
 .../persistence/models/company/basic/Company.java  |  12 +-
 .../persistence/models/company/basic/Customer.java |   6 +-
 .../persistence/models/company/basic/Employee.java |   6 +-
 .../models/company/basic/FullTimeEmployee.java     |   4 +-
 .../persistence/models/company/basic/LineItem.java |   8 +-
 .../models/company/basic/PartTimeEmployee.java     |   4 +-
 .../persistence/models/company/basic/Person.java   |  12 +-
 .../persistence/models/company/basic/Product.java  |   8 +-
 .../models/company/basic/ProductOrder.java         |  10 +-
 .../models/company/fetchlazy/Address.java          |   8 +-
 .../models/company/fetchlazy/Company.java          |  14 +-
 .../models/company/fetchlazy/Customer.java         |   8 +-
 .../models/company/fetchlazy/Employee.java         |   8 +-
 .../models/company/fetchlazy/FullTimeEmployee.java |   6 +-
 .../models/company/fetchlazy/LineItem.java         |  10 +-
 .../models/company/fetchlazy/PartTimeEmployee.java |   6 +-
 .../models/company/fetchlazy/Person.java           |  14 +-
 .../models/company/fetchlazy/Product.java          |  10 +-
 .../models/company/fetchlazy/ProductOrder.java     |  12 +-
 .../models/company/idclass/Address.java            |   6 +-
 .../models/company/idclass/Company.java            |  12 +-
 .../models/company/idclass/Customer.java           |   6 +-
 .../models/company/idclass/Employee.java           |   6 +-
 .../models/company/idclass/FullTimeEmployee.java   |   4 +-
 .../models/company/idclass/LineItem.java           |   8 +-
 .../models/company/idclass/PartTimeEmployee.java   |   4 +-
 .../persistence/models/company/idclass/Person.java |  12 +-
 .../models/company/idclass/Product.java            |   8 +-
 .../models/company/idclass/ProductOrder.java       |  10 +-
 .../persistence/models/company/joined/Address.java |   6 +-
 .../persistence/models/company/joined/Company.java |  12 +-
 .../models/company/joined/Customer.java            |  10 +-
 .../models/company/joined/Employee.java            |  10 +-
 .../models/company/joined/FullTimeEmployee.java    |   8 +-
 .../models/company/joined/LineItem.java            |   8 +-
 .../models/company/joined/PartTimeEmployee.java    |   8 +-
 .../persistence/models/company/joined/Person.java  |  12 +-
 .../persistence/models/company/joined/Product.java |   8 +-
 .../models/company/joined/ProductOrder.java        |  10 +-
 .../openjpa/persistence/models/library/Book.java   |  20 +-
 .../persistence/models/library/Borrower.java       |  18 +-
 .../persistence/models/library/Subject.java        |  12 +-
 .../persistence/models/library/Volunteer.java      |  12 +-
 .../nullity/AbstractNullityTestCase.java           |   2 +-
 .../openjpa/persistence/nullity/NullValues.java    |  16 +-
 .../persistence/nullity/TestBasicFieldNullity.java |   6 +-
 .../persistence/nullity/TestReadOnlyNullity.java   |   2 +-
 .../persistence/nullity/TimestampedEntity.java     |  10 +-
 .../timestamp/TestTimestampOptLockEx.java          |   4 +-
 .../optlockex/timestamp/VersionTSEntity.java       |   8 +-
 .../persistence/property/AccessModsEntity.java     |  12 +-
 .../persistence/property/EmbeddableAddress.java    |   2 +-
 .../persistence/property/EntityContact.java        |   8 +-
 .../persistence/property/PrivAccessModsEntity.java |  12 +-
 .../persistence/property/TestAccessMods.java       |   2 +-
 .../persistence/property/TestCompatAccessMods.java |   2 +-
 .../persistence/property/TestCompatible.java       |   2 +-
 .../persistence/property/TestEMProperties.java     |   8 +-
 .../openjpa/persistence/proxy/AbstractEntity.java  |  12 +-
 .../openjpa/persistence/proxy/ConcreteEntity.java  |   4 +-
 .../openjpa/persistence/proxy/TestDetachMerge.java |   2 +-
 .../persistence/proxy/TestEntitySerialize.java     |   2 +-
 .../persistence/proxy/TestProxyCollection.java     |   2 +-
 .../apache/openjpa/persistence/proxy/TreeNode.java |  14 +-
 .../openjpa/persistence/proxy/delayed/Award.java   |   2 +-
 .../persistence/proxy/delayed/Certification.java   |   8 +-
 .../delayed/DelayedProxyCollectionsTestCase.java   |   2 +-
 .../persistence/proxy/delayed/Location.java        |  10 +-
 .../openjpa/persistence/proxy/delayed/Product.java |   6 +-
 .../persistence/proxy/delayed/alist/Account.java   |  16 +-
 .../proxy/delayed/alist/Department.java            |  22 +-
 .../persistence/proxy/delayed/alist/Employee.java  |  12 +-
 .../persistence/proxy/delayed/alist/Member.java    |   6 +-
 .../delayed/alist/TestDelayedArrayListProxy.java   |   2 +-
 .../alist/TestDelayedArrayListProxyDetachLite.java |   2 +-
 .../proxy/delayed/alist/UserIdentity.java          |  12 +-
 .../persistence/proxy/delayed/hset/Account.java    |  16 +-
 .../persistence/proxy/delayed/hset/Department.java |  22 +-
 .../persistence/proxy/delayed/hset/Employee.java   |  12 +-
 .../persistence/proxy/delayed/hset/Member.java     |   6 +-
 .../delayed/hset/TestDelayedHashSetProxy.java      |   2 +-
 .../hset/TestDelayedHashSetProxyDetachLite.java    |   2 +-
 .../proxy/delayed/hset/UserIdentity.java           |  12 +-
 .../persistence/proxy/delayed/lhset/Account.java   |  16 +-
 .../proxy/delayed/lhset/Department.java            |  22 +-
 .../persistence/proxy/delayed/lhset/Employee.java  |  12 +-
 .../persistence/proxy/delayed/lhset/Member.java    |   6 +-
 .../lhset/TestDelayedLinkedHashSetProxy.java       |   2 +-
 .../TestDelayedLinkedHashSetProxyDetachLite.java   |   2 +-
 .../proxy/delayed/lhset/UserIdentity.java          |  12 +-
 .../persistence/proxy/delayed/llist/Account.java   |  16 +-
 .../proxy/delayed/llist/Department.java            |  22 +-
 .../persistence/proxy/delayed/llist/Employee.java  |  12 +-
 .../persistence/proxy/delayed/llist/Member.java    |   6 +-
 .../delayed/llist/TestDelayedLinkedListProxy.java  |   2 +-
 .../TestDelayedLinkedListProxyDetachLite.java      |   2 +-
 .../proxy/delayed/llist/UserIdentity.java          |  12 +-
 .../persistence/proxy/delayed/pqueue/Account.java  |  16 +-
 .../proxy/delayed/pqueue/Department.java           |  22 +-
 .../persistence/proxy/delayed/pqueue/Employee.java |  12 +-
 .../persistence/proxy/delayed/pqueue/Member.java   |   6 +-
 .../pqueue/TestDelayedPriorityQueueProxy.java      |   2 +-
 .../TestDelayedPriorityQueueProxyDetachLite.java   |   2 +-
 .../proxy/delayed/pqueue/UserIdentity.java         |  12 +-
 .../persistence/proxy/delayed/tset/Account.java    |  16 +-
 .../persistence/proxy/delayed/tset/Department.java |  22 +-
 .../persistence/proxy/delayed/tset/Employee.java   |  12 +-
 .../persistence/proxy/delayed/tset/Member.java     |   6 +-
 .../delayed/tset/TestDelayedTreeSetProxy.java      |   2 +-
 .../tset/TestDelayedTreeSetProxyDetachLite.java    |   2 +-
 .../proxy/delayed/tset/UserIdentity.java           |  12 +-
 .../persistence/proxy/delayed/vec/Account.java     |  16 +-
 .../persistence/proxy/delayed/vec/Department.java  |  22 +-
 .../persistence/proxy/delayed/vec/Employee.java    |  12 +-
 .../persistence/proxy/delayed/vec/Member.java      |   6 +-
 .../proxy/delayed/vec/TestDelayedVectorProxy.java  |   2 +-
 .../vec/TestDelayedVectorProxyDetachLite.java      |   2 +-
 .../proxy/delayed/vec/UserIdentity.java            |  12 +-
 .../persistence/proxy/entities/Address.java        |   8 +-
 .../persistence/proxy/entities/Annuity.java        |  36 +-
 .../persistence/proxy/entities/AnnuityHolder.java  |  14 +-
 .../proxy/entities/AnnuityPersistebleObject.java   |  12 +-
 .../persistence/proxy/entities/Contact.java        |  16 +-
 .../persistence/proxy/entities/EquityAnnuity.java  |   6 +-
 .../persistence/proxy/entities/FixedAnnuity.java   |   6 +-
 .../openjpa/persistence/proxy/entities/Payor.java  |   6 +-
 .../openjpa/persistence/proxy/entities/Payout.java |  12 +-
 .../openjpa/persistence/proxy/entities/Person.java |  24 +-
 .../openjpa/persistence/proxy/entities/Rider.java  |  12 +-
 .../puconf/TestPersistenceUnitConfig.java          |   2 +-
 .../pudefaults/PUDefaultSchemaEntity.java          |  12 +-
 .../PUSchemaInSequenceAnnotationEntity.java        |  12 +-
 .../PUSchemaInSequenceMappingEntity.java           |  12 +-
 .../PUSchemaInTableAnnotationEntity.java           |  14 +-
 .../pudefaults/PUSchemaInTableMappingEntity.java   |  14 +-
 .../pudefaults/TestOpenJPASchemaPUDefault.java     |   4 +-
 .../pudefaults/TestSchemaPUDefault.java            |   4 +-
 .../apache/openjpa/persistence/query/Account.java  |  10 +-
 .../org/apache/openjpa/persistence/query/Case.java |  18 +-
 .../apache/openjpa/persistence/query/Customer.java |  22 +-
 .../openjpa/persistence/query/Dependent.java       |  12 +-
 .../openjpa/persistence/query/DependentId.java     |   2 +-
 .../apache/openjpa/persistence/query/Employee.java |  14 +-
 .../persistence/query/GroupingTestCase.java        |   4 +-
 .../apache/openjpa/persistence/query/Hardware.java |  14 +-
 .../apache/openjpa/persistence/query/Lookup.java   |   8 +-
 .../apache/openjpa/persistence/query/Magazine.java |  16 +-
 .../openjpa/persistence/query/ManyOneEntity.java   |  16 +-
 .../persistence/query/ManyOneEntitySub.java        |   2 +-
 .../persistence/query/NamedQueryEntity.java        |   8 +-
 .../apache/openjpa/persistence/query/Order.java    |  18 +-
 .../openjpa/persistence/query/OrderItem.java       |  16 +-
 .../apache/openjpa/persistence/query/Person.java   |   8 +-
 .../openjpa/persistence/query/Publisher.java       |  14 +-
 .../org/apache/openjpa/persistence/query/Role.java |  16 +-
 .../openjpa/persistence/query/ScheduleDay.java     |  16 +-
 .../persistence/query/ScheduledAssignment.java     |  16 +-
 .../openjpa/persistence/query/SimpleEntity.java    |  26 +-
 .../openjpa/persistence/query/SimpleEntity2.java   |  16 +-
 .../query/Test1x1OrderByResultCollection.java      |   4 +-
 .../persistence/query/TestAbstractSchemaName.java  |   4 +-
 .../query/TestDoubleQuotedStringLiteralInJPQL.java |   4 +-
 .../persistence/query/TestDupNamedQuery.java       |   2 +-
 .../persistence/query/TestEJBDeleteUpdateImpl.java |   2 +-
 .../persistence/query/TestEJBPolymorphicQuery.java |   2 +-
 .../persistence/query/TestEJBQueryInterface.java   |   2 +-
 .../query/TestEscapedSingleQuotesInJPQL.java       |   2 +-
 .../query/TestInMemoryQueryMatchEscapes.java       |   4 +-
 .../persistence/query/TestJDBCEscapeDate.java      |   6 +-
 .../openjpa/persistence/query/TestLocate.java      |   2 +-
 .../persistence/query/TestNamedQueries.java        |   2 +-
 .../query/TestNewEntityAsQueryParameter.java       |   4 +-
 .../persistence/query/TestNewlinesInQueries.java   |   4 +-
 .../persistence/query/TestOutOfBoundsEx.java       |   4 +-
 .../TestProjectionQueryWithIdenticalResult.java    |   2 +-
 .../TestQueryConvertPositionalParameters.java      |   4 +-
 .../query/TestQueryEscapeCharacters.java           |   4 +-
 .../query/TestQueryExcludingSubclasses.java        |   4 +-
 .../query/TestQueryIdOfRelationDoesNotJoin.java    |   4 +-
 .../openjpa/persistence/query/TestQueryLock.java   |  14 +-
 .../persistence/query/TestQueryPagination.java     |   4 +-
 .../persistence/query/TestQueryParameters.java     |  22 +-
 .../persistence/query/TestQueryResultClassAPI.java |   4 +-
 .../persistence/query/TestQueryResults.java        |   2 +-
 .../persistence/query/TestQueryTimeout.java        | 104 +++---
 .../query/TestQuotedNumbersInFilters2.java         |   2 +-
 .../persistence/query/TestResultSetMapping.java    |   4 +-
 .../openjpa/persistence/query/TestSimple.java      |   4 +-
 .../openjpa/persistence/query/TestSubquery.java    |   4 +-
 .../openjpa/persistence/query/TestSubstring.java   |   2 +-
 .../persistence/query/TestTimeoutException.java    |  20 +-
 .../persistence/query/TestWildCardCount.java       |   2 +-
 .../openjpa/persistence/query/TupleQueryTest.java  |   6 +-
 .../query/common/apps/CircularFKPC.java            |   2 +-
 .../query/common/apps/CircularFKPC2.java           |   2 +-
 .../persistence/query/common/apps/ComplexA.java    |   6 +-
 .../persistence/query/common/apps/ComplexB.java    |  10 +-
 .../persistence/query/common/apps/ComplexC.java    |  10 +-
 .../persistence/query/common/apps/ComplexD.java    |  10 +-
 .../persistence/query/common/apps/ComplexE.java    |  10 +-
 .../persistence/query/common/apps/ComplexF.java    |  10 +-
 .../persistence/query/common/apps/ComplexG.java    |  10 +-
 .../query/common/apps/CompoundAppIdPC.java         |   6 +-
 .../persistence/query/common/apps/Entity1.java     |  26 +-
 .../persistence/query/common/apps/Entity2.java     |   8 +-
 .../query/common/apps/ModRuntimeTest1.java         |  20 +-
 .../query/common/apps/ModRuntimeTest2.java         |   4 +-
 .../persistence/query/common/apps/Osoba.java       |   8 +-
 .../persistence/query/common/apps/Projekt.java     |   6 +-
 .../persistence/query/common/apps/QTimeout.java    |  22 +-
 .../persistence/query/common/apps/QueryTest1.java  |  16 +-
 .../persistence/query/common/apps/QueryTest2.java  |  10 +-
 .../persistence/query/common/apps/QueryTest3.java  |   2 +-
 .../persistence/query/common/apps/QueryTest4.java  |   8 +-
 .../query/common/apps/RuntimeTest1.java            |   8 +-
 .../query/common/apps/RuntimeTest2.java            |   4 +-
 .../query/common/apps/RuntimeTest3.java            |   4 +-
 .../query/common/apps/RuntimeTest4.java            |   2 +-
 .../query/common/apps/RuntimeTest5.java            |   6 +-
 .../query/common/apps/SimpleAppIdPC.java           |   4 +-
 .../query/common/apps/TransactionalClassPC.java    |   2 +-
 .../results/TestJPQLMultiSelectTypedResults.java   |   4 +-
 .../query/results/TestResultSetMapping.java        |   6 +-
 .../query/sqlresultmapping/CrtOperacaoEntity.java  |   8 +-
 .../CrtRequisicaoChequePersEntity.java             |  16 +-
 .../sqlresultmapping/CrtRequisicaoEntity.java      |  12 +-
 .../sqlresultmapping/TestSQLResultSetMapping.java  |   4 +-
 .../openjpa/persistence/querycache/QCEntity.java   |  10 +-
 .../persistence/querycache/QCEntityM2O.java        |  10 +-
 .../persistence/querycache/TestQueryCache.java     |   4 +-
 .../querycache/TestQueryCacheWithDataCache.java    |   4 +-
 .../persistence/querycache/TestQuerySQLCache.java  |   4 +-
 .../common/apps/BidirectionalOne2OneOwned.java     |   8 +-
 .../common/apps/BidirectionalOne2OneOwner.java     |   8 +-
 .../querycache/common/apps/Entity1.java            |  24 +-
 .../querycache/common/apps/Entity2.java            |  12 +-
 .../common/apps/UnidirectionalOne2OneOwned.java    |   6 +-
 .../common/apps/UnidirectionalOne2OneOwner.java    |   8 +-
 .../apache/openjpa/persistence/recursive/Node.java |  10 +-
 .../recursive/TestRecursiveRelationships.java      |   2 +-
 .../openjpa/persistence/relations/ACase.java       |  14 +-
 .../openjpa/persistence/relations/AEvident.java    |  16 +-
 .../openjpa/persistence/relations/AText.java       |  20 +-
 .../openjpa/persistence/relations/BasicEntity.java |  10 +-
 .../openjpa/persistence/relations/BidiChild.java   |  12 +-
 .../openjpa/persistence/relations/BidiParent.java  |  14 +-
 .../apache/openjpa/persistence/relations/C.java    |  12 +-
 .../apache/openjpa/persistence/relations/CM.java   |  16 +-
 .../relations/CascadingOneManyChild.java           |  12 +-
 .../relations/CascadingOneManyParent.java          |  14 +-
 .../persistence/relations/ChainEntityA.java        |  14 +-
 .../persistence/relations/ChainEntityB.java        |  14 +-
 .../persistence/relations/ChainEntityC.java        |  16 +-
 .../openjpa/persistence/relations/Child.java       |  14 +-
 .../persistence/relations/ChildChildClass.java     |  10 +-
 .../openjpa/persistence/relations/ChildClass.java  |  10 +-
 .../relations/ConcurrentEntityLeft.java            |   8 +-
 .../relations/ConcurrentEntityRight.java           |  10 +-
 .../openjpa/persistence/relations/Customer.java    |  18 +-
 .../apache/openjpa/persistence/relations/D.java    |  10 +-
 .../relations/DataStoreBasicEntity.java            |   6 +-
 .../relations/DataStoreManyOneIdOwner.java         |   8 +-
 .../apache/openjpa/persistence/relations/E.java    |  10 +-
 .../relations/EmbeddableWithRelation.java          |   6 +-
 .../relations/EntityA1InverseEager.java            |   8 +-
 .../relations/EntityA2InverseEager.java            |   8 +-
 .../persistence/relations/EntityAInverseEager.java |  16 +-
 .../persistence/relations/EntityBInverseEager.java |  12 +-
 .../persistence/relations/EntityCInverseEager.java |  10 +-
 .../persistence/relations/EntityDInverseEager.java |  10 +-
 .../openjpa/persistence/relations/GrandChild.java  |  12 +-
 .../persistence/relations/GrandChildClass.java     |  10 +-
 .../relations/HandlerCollectionInstance.java       |   4 +-
 .../relations/HandlerToHandlerMapInstance.java     |   4 +-
 .../relations/HandlerToRelationMapInstance.java    |   6 +-
 .../relations/IdOrderedOneManyChild.java           |   8 +-
 .../relations/IdOrderedOneManyParent.java          |  12 +-
 .../relations/InheritanceHierarchyAbstract.java    |  24 +-
 .../relations/InheritanceHierarchyConcrete.java    |  10 +-
 .../openjpa/persistence/relations/LRSEntity.java   |  10 +-
 .../relations/ManyOneCompoundIdOwner.java          |  12 +-
 .../persistence/relations/ManyOneIdOwner.java      |   8 +-
 .../openjpa/persistence/relations/MapKeyChild.java |  14 +-
 .../persistence/relations/MapKeyParent.java        |  14 +-
 .../relations/MultipleSameTypedEmbedded.java       |  18 +-
 .../persistence/relations/OneManyEagerChild.java   |  14 +-
 .../persistence/relations/OneManyEagerParent.java  |  14 +-
 .../persistence/relations/OneManyLazyChild.java    |  14 +-
 .../openjpa/persistence/relations/OneOneChild.java |  10 +-
 .../persistence/relations/OneOneParent.java        |  10 +-
 .../openjpa/persistence/relations/Order.java       |  14 +-
 .../openjpa/persistence/relations/PPerson.java     |  12 +-
 .../openjpa/persistence/relations/PPhone.java      |  12 +-
 .../openjpa/persistence/relations/Parent.java      |  12 +-
 .../openjpa/persistence/relations/ParentClass.java |   8 +-
 .../relations/RelationToHandlerMapInstance.java    |   6 +-
 .../relations/RelationToRelationMapInstance.java   |   6 +-
 .../persistence/relations/SimpleEmbeddable.java    |   2 +-
 .../relations/TargetedIFaceRelationParent.java     |  12 +-
 .../openjpa/persistence/relations/TblChild.java    |  20 +-
 .../persistence/relations/TblGrandChild.java       |  18 +-
 .../openjpa/persistence/relations/TblParent.java   |  12 +-
 .../TestCascadingOneManyWithForeignKey.java        |   2 +-
 .../persistence/relations/TestChainEntities.java   |   2 +-
 .../persistence/relations/TestEagerBidiSQL.java    |   2 +-
 .../relations/TestIdOrderedOneMany.java            |   2 +-
 .../relations/TestIncompleteRelationship.java      |   2 +-
 .../persistence/relations/TestInverseEagerSQL.java |   4 +-
 .../persistence/relations/TestInverseManager.java  |   2 +-
 .../openjpa/persistence/relations/TestLRS.java     |   2 +-
 .../persistence/relations/TestLazyManyToOne.java   |   2 +-
 .../persistence/relations/TestManyEagerSQL.java    |   4 +-
 .../persistence/relations/TestManyOneAsId.java     |   4 +-
 ...ultipleSameTypedEmbeddedWithEagerRelations.java |   4 +-
 .../persistence/relations/TestO2ORefColumn.java    |   2 +-
 .../persistence/relations/TestOneOneNulls.java     |   2 +-
 .../relations/TestOneToManyWithEagerLazyFetch.java |   2 +-
 ...TestRelationFieldAsPrimaryKeyAndForeignKey.java |   2 +-
 .../relations/TestRelationOrphanRemoval.java       |   2 +-
 .../relations/TestTargetedIFaceRelations.java      |   2 +-
 .../relations/UnidirectionalManyToOne.java         |  12 +-
 .../openjpa/persistence/relations/Util1xmLf.java   |  10 +-
 .../openjpa/persistence/relations/Util1xmRt.java   |   6 +-
 .../apache/openjpa/persistence/relations/VC.java   |  16 +-
 .../apache/openjpa/persistence/relations/VCS.java  |  18 +-
 .../entity/IncompleteRelationshipChildEntity.java  |   8 +-
 .../entity/IncompleteRelationshipParentEntity.java |  20 +-
 .../entity/IncompleteRelationshipSubclass.java     |   2 +-
 .../persistence/relations/entity/LrsEntityA.java   |  20 +-
 .../persistence/relations/entity/LrsEntityB.java   |  14 +-
 .../results/cls/ResultClsAnnotation.java           |  18 +-
 .../results/cls/TestResultClsAnnotation.java       |   4 +-
 .../persistence/results/cls/TestResultClsXml.java  |   4 +-
 .../persistence/sequence/EntityEmployee.java       |  12 +-
 .../openjpa/persistence/sequence/EntityPerson.java |  12 +-
 .../persistence/sequence/GeneratedIdObject.java    |   6 +-
 .../persistence/sequence/SequencedEntity.java      |  14 +-
 .../openjpa/persistence/sequence/TestSequence.java |   2 +-
 .../sequence/TestSequenceGenerationOnMT.java       |   2 +-
 .../persistence/sequence/hsql/HSQLEmployee.java    |  10 +-
 .../persistence/sequence/hsql/HSQLEmployee2.java   |  10 +-
 .../sequence/hsql/TestHSQLSequence.java            |   2 +-
 .../persistence/simple/AbstractSuperclass.java     |   4 +-
 .../openjpa/persistence/simple/AllFieldTypes.java  |   6 +-
 .../persistence/simple/EntityWithTimestampPK.java  |   4 +-
 .../apache/openjpa/persistence/simple/Item.java    |  14 +-
 .../openjpa/persistence/simple/Java8TimeTypes.java |   4 +-
 .../openjpa/persistence/simple/NamedEntity.java    |   8 +-
 .../apache/openjpa/persistence/simple/Person.java  |   6 +-
 .../apache/openjpa/persistence/simple/Place.java   |   4 +-
 .../openjpa/persistence/simple/SubclassPerson.java |  10 +-
 .../persistence/simple/TemporalFieldTypes.java     |   6 +-
 .../persistence/simple/TestBasicAnnotation.java    |   2 +-
 .../simple/TestCaseInsensitiveKeywordsInJPQL.java  |   4 +-
 .../simple/TestEntityManagerFactory.java           |   4 +-
 .../persistence/simple/TestEntityManagerMerge.java |   2 +-
 .../TestEntityManagerMethodsThrowAfterClose.java   |   4 +-
 .../persistence/simple/TestFlushBeforeDetach.java  |   2 +-
 .../persistence/simple/TestJava8TimeTypes.java     |   4 +-
 .../persistence/simple/TestPersistence.java        |   4 +-
 .../persistence/simple/TestPropertiesMethods.java  |  22 +-
 .../openjpa/persistence/simple/TestRefresh.java    |   4 +-
 .../persistence/simple/TestSerializedFactory.java  |   4 +-
 .../simple/TestSubclassOfAbstractSuperclass.java   |   2 +-
 .../openjpa/persistence/spring/LibServiceImpl.java |   6 +-
 .../persistence/spring/LibTestingService.java      |   4 +-
 .../openjpa/persistence/spring/TestLibService.java |   2 +-
 .../spring/TransactionalEntityManagerFactory.java  |   2 +-
 .../value/ImplicitValueStrategyEntity.java         |   4 +-
 .../strategy/value/TestImplicitValueStrategy.java  |   2 +-
 .../strategy/value/TestValueStrategy.java          |   2 +-
 .../strategy/value/ValueStrategyEntity.java        |   4 +-
 .../persistence/temporal/TemporalEntity.java       |   8 +-
 .../temporal/TestTemporalTimestamp.java            |   6 +-
 .../test/AbstractCachedEMFTestCase.java            |   2 +-
 .../test/AbstractPersistenceTestCase.java          |   8 +-
 .../openjpa/persistence/test/ContainerEMFTest.java |   2 +-
 .../persistence/test/PersistenceTestCase.java      |   6 +-
 .../persistence/test/SingleEMFTestCase.java        |   2 +-
 .../openjpa/persistence/test/SingleEMTestCase.java |   2 +-
 .../TestPersistenceProviderFilteringTestCase.java  |  14 +-
 .../openjpa/persistence/util/EagerEmbed.java       |   6 +-
 .../openjpa/persistence/util/EagerEmbedRel.java    |  10 +-
 .../openjpa/persistence/util/EagerEntity.java      |  16 +-
 .../apache/openjpa/persistence/util/LazyEmbed.java |  10 +-
 .../openjpa/persistence/util/LazyEntity.java       |  20 +-
 .../apache/openjpa/persistence/util/MapEntity.java |  16 +-
 .../openjpa/persistence/util/MapKeyEmbed.java      |   2 +-
 .../openjpa/persistence/util/MapValEntity.java     |  14 +-
 .../openjpa/persistence/util/OneToEntity.java      |  12 +-
 .../apache/openjpa/persistence/util/RelEntity.java |   6 +-
 .../persistence/util/TestJPAFacadeHelper.java      |   2 +-
 .../persistence/util/TestPersistenceUnitUtil.java  |   4 +-
 .../persistence/util/TestPersistenceUtil.java      |   6 +-
 .../openjpa/persistence/util/TestProviderUtil.java |   8 +-
 .../openjpa/persistence/util/ToManyEager.java      |   6 +-
 .../openjpa/persistence/util/ToManyLazy.java       |   6 +-
 .../validation/TestValidationFactory.java          |  10 +-
 .../persistence/validation/TestValidationMode.java |   8 +-
 .../xml/TestPersistenceUnitWithoutXSD.java         |   2 +-
 .../persistence/xml/TestToOneLazyXmlOverride.java  |   2 +-
 .../persistence/xml/TestXmlOverrideEntity.java     |   2 +-
 .../openjpa/persistence/xml/XmlOverrideEntity.java |  12 +-
 .../persistence/xml/XmlOverrideToOneEntity.java    |  16 +-
 .../persistence/xmlmapping/entities/Customer.java  |  20 +-
 .../persistence/xmlmapping/entities/EAddress.java  |   4 +-
 .../persistence/xmlmapping/entities/Order.java     |  12 +-
 .../xmlmapping/query/TestXMLCustomerOrder.java     |   4 +-
 .../persistence/xs/AccountingHierarchy.java        |  16 +-
 .../persistence/xs/AccountingHierarchyRate.java    |  16 +-
 .../persistence/xs/TestMergeComplexKey.java        |   4 +-
 .../openjpa/reservedwords/ReservedWordsIT.java     |   4 +-
 .../src/test/resources/META-INF/persistence3.xml   |   8 +-
 .../lib/conf/META-INF/persistence-config.xml       |   8 +-
 .../kernel/common/apps/META-INF/persistence.xml    |  10 +-
 openjpa-persistence-locking/pom.xml                |   2 +-
 .../persistence/lock/extended/LSE1x1Lf.java        |  18 +-
 .../persistence/lock/extended/LSE1x1LfJT.java      |  20 +-
 .../persistence/lock/extended/LSE1x1LfJTLzy.java   |  22 +-
 .../persistence/lock/extended/LSE1x1LfLzy.java     |  20 +-
 .../persistence/lock/extended/LSE1x1Rt.java        |   6 +-
 .../persistence/lock/extended/LSE1xmLf.java        |  18 +-
 .../persistence/lock/extended/LSE1xmLfEgr.java     |  20 +-
 .../persistence/lock/extended/LSE1xmLfJT.java      |  20 +-
 .../persistence/lock/extended/LSE1xmLfJTEgr.java   |  20 +-
 .../persistence/lock/extended/LSE1xmRt.java        |   6 +-
 .../openjpa/persistence/lock/extended/LSEBase.java |  16 +-
 .../persistence/lock/extended/LSEEleCol.java       |  18 +-
 .../persistence/lock/extended/LSEEleColEgr.java    |  20 +-
 .../persistence/lock/extended/LSEJoinAbs.java      |  10 +-
 .../persistence/lock/extended/LSEJoinCon.java      |  12 +-
 .../persistence/lock/extended/LSESecTbl.java       |  20 +-
 .../persistence/lock/extended/LSESngTblAbs.java    |  20 +-
 .../persistence/lock/extended/LSESngTblCon.java    |  12 +-
 .../lock/extended/LockScopeTestCase.java           |  16 +-
 .../lock/extended/Test1x1LockScope.java            |   2 +-
 .../lock/extended/Test1xmLockScope.java            |   2 +-
 .../lock/extended/TestBasicLockScope.java          |   2 +-
 .../openjpa/persistence/lockmgr/Department.java    |   8 +-
 .../openjpa/persistence/lockmgr/Employee.java      |   8 +-
 .../openjpa/persistence/lockmgr/LockEmployee.java  |  12 +-
 .../lockmgr/LockEmployeeNonVersion.java            |   4 +-
 .../lockmgr/MixedLockManagerGenericTest.java       |   2 +-
 .../apache/openjpa/persistence/lockmgr/Person.java |   8 +-
 .../openjpa/persistence/lockmgr/PhoneNumber.java   |   6 +-
 .../persistence/lockmgr/SequencedActionsTest.java  |  16 +-
 .../persistence/lockmgr/TestEmLockMode.java        |   6 +-
 .../persistence/lockmgr/TestEmLockTimeout.java     |  10 +-
 .../persistence/lockmgr/TestFetchHints.java        |  22 +-
 .../openjpa/persistence/lockmgr/TestLocking.java   |   8 +-
 .../lockmgr/TestMixedLockManagerDeadlock.java      |   4 +-
 .../lockmgr/TestMixedLockManagerFindBasic.java     |   2 +-
 .../lockmgr/TestMixedLockManagerFindException.java |   8 +-
 .../TestMixedLockManagerFindPermutation.java       |   2 +-
 .../lockmgr/TestMixedLockManagerLockBasic.java     |   2 +-
 .../lockmgr/TestMixedLockManagerLockException.java |   6 +-
 .../TestMixedLockManagerLockPermutation.java       |   2 +-
 .../lockmgr/TestMixedLockManagerNonVersion.java    |   4 +-
 .../lockmgr/TestMixedLockManagerRefreshBasic.java  |   2 +-
 .../TestMixedLockManagerRefreshException.java      |   4 +-
 .../TestMixedLockManagerRefreshPermutation.java    |   2 +-
 .../lockmgr/TestNamedQueryLockMode.java            |   6 +-
 .../lockmgr/TestOptimisticNamedQueryLockMode.java  |   6 +-
 .../persistence/lockmgr/TestPessimisticLocks.java  |  46 +--
 .../openjpa/persistence/lockmgr/VersionEntity.java |   8 +-
 openjpa-persistence/pom.xml                        |  21 +-
 .../apache/openjpa/persistence/AbstractQuery.java  |   8 +-
 .../AnnotationPersistenceMetaDataParser.java       | 100 ++---
 .../AnnotationPersistenceMetaDataSerializer.java   |  46 +--
 .../apache/openjpa/persistence/DataStoreId.java    |   2 +-
 .../openjpa/persistence/EntityExistsException.java |   2 +-
 .../persistence/EntityManagerFactoryImpl.java      |  20 +-
 .../persistence/EntityManagerFactoryValue.java     |   2 +-
 .../openjpa/persistence/EntityManagerImpl.java     |  34 +-
 .../persistence/EntityNotFoundException.java       |   2 +-
 .../org/apache/openjpa/persistence/FetchPlan.java  |   4 +-
 .../apache/openjpa/persistence/FetchPlanImpl.java  |   8 +-
 .../apache/openjpa/persistence/HintHandler.java    |   2 +-
 .../openjpa/persistence/JPAFacadeHelper.java       |   4 +-
 .../apache/openjpa/persistence/JPAProperties.java  |  14 +-
 .../openjpa/persistence/LockScopesHelper.java      |   6 +-
 .../openjpa/persistence/LockTimeoutException.java  |   2 +-
 .../openjpa/persistence/ManagedInterface.java      |   6 +-
 .../openjpa/persistence/MixedLockLevelsHelper.java |   6 +-
 .../openjpa/persistence/NoResultException.java     |   2 +-
 .../persistence/NonUniqueResultException.java      |   2 +-
 .../openjpa/persistence/OpenJPAEntityManager.java  |   8 +-
 .../persistence/OpenJPAEntityManagerFactory.java   |   2 +-
 .../persistence/OpenJPAEntityTransaction.java      |  10 +-
 .../openjpa/persistence/OpenJPAPersistence.java    |  10 +-
 .../persistence/OpenJPAPersistenceUtil.java        |   2 +-
 .../apache/openjpa/persistence/OpenJPAQuery.java   |   8 +-
 .../persistence/OptimisticLockException.java       |   2 +-
 .../apache/openjpa/persistence/ParameterImpl.java  |   2 +-
 .../openjpa/persistence/PersistenceException.java  |   2 +-
 .../persistence/PersistenceMetaDataDefaults.java   |  46 +--
 .../persistence/PersistenceMetaDataFactory.java    |  24 +-
 .../persistence/PersistenceProductDerivation.java  |  16 +-
 .../persistence/PersistenceProviderImpl.java       |  37 +-
 .../persistence/PersistenceUnitInfoImpl.java       |  10 +-
 .../org/apache/openjpa/persistence/Persistent.java |   4 +-
 .../openjpa/persistence/PersistentCollection.java  |   4 +-
 .../apache/openjpa/persistence/PersistentMap.java  |   4 +-
 .../persistence/PessimisticLockException.java      |   2 +-
 .../org/apache/openjpa/persistence/QueryImpl.java  |  12 +-
 .../openjpa/persistence/QueryResultCache.java      |   2 +-
 .../openjpa/persistence/QueryResultCacheImpl.java  |   2 +-
 .../openjpa/persistence/QueryTimeoutException.java |   4 +-
 .../openjpa/persistence/RollbackException.java     |   2 +-
 .../org/apache/openjpa/persistence/StoreCache.java |   2 +-
 .../apache/openjpa/persistence/StoreCacheImpl.java |   2 +-
 .../persistence/StoredProcedureQueryImpl.java      |  26 +-
 .../persistence/TransactionRequiredException.java  |   2 +-
 .../apache/openjpa/persistence/TupleFactory.java   |   6 +-
 .../org/apache/openjpa/persistence/TupleImpl.java  |   4 +-
 .../persistence/XMLPersistenceMetaDataParser.java  |  16 +-
 .../openjpa/persistence/criteria/AliasContext.java |   4 +-
 .../persistence/criteria/CompareByExample.java     |  14 +-
 .../persistence/criteria/CompoundSelections.java   |  14 +-
 .../persistence/criteria/CriteriaBuilderImpl.java  |  47 +--
 .../criteria/CriteriaExpressionBuilder.java        |  22 +-
 .../persistence/criteria/CriteriaQueryImpl.java    |  26 +-
 .../persistence/criteria/ExpressionImpl.java       |   6 +-
 .../openjpa/persistence/criteria/Expressions.java  |  10 +-
 .../persistence/criteria/FetchPathImpl.java        |  14 +-
 .../openjpa/persistence/criteria/FromImpl.java     |  36 +-
 .../apache/openjpa/persistence/criteria/Joins.java |  36 +-
 .../criteria/OpenJPACriteriaBuilder.java           |  14 +-
 .../persistence/criteria/OpenJPACriteriaQuery.java |   2 +-
 .../openjpa/persistence/criteria/OrderImpl.java    |   4 +-
 .../criteria/ParameterExpressionImpl.java          |   2 +-
 .../openjpa/persistence/criteria/PathImpl.java     |  22 +-
 .../persistence/criteria/PredicateImpl.java        |   4 +-
 .../openjpa/persistence/criteria/RootImpl.java     |   4 +-
 .../persistence/criteria/SelectionImpl.java        |   4 +-
 .../openjpa/persistence/criteria/SubqueryImpl.java |  24 +-
 .../persistence/meta/AbstractManagedType.java      |  18 +-
 .../persistence/meta/AnnotationProcessor6.java     |  23 +-
 .../apache/openjpa/persistence/meta/Members.java   |  18 +-
 .../openjpa/persistence/meta/MetamodelImpl.java    |  28 +-
 .../persistence/meta/SourceAnnotationHandler.java  |  30 +-
 .../org/apache/openjpa/persistence/meta/Types.java |  12 +-
 .../persistence/osgi/PersistenceActivator.java     |   8 +-
 .../validation/TraversableResolverImpl.java        |  20 +-
 .../persistence/validation/ValidationUtils.java    |  18 +-
 .../persistence/validation/ValidatorImpl.java      |  18 +-
 .../openjpa/persistence/localizer.properties       |   2 +-
 .../openjpa/persistence/meta/localizer.properties  |   2 +-
 openjpa-project/CHANGES.txt                        |   2 +-
 openjpa-project/RELEASE-NOTES.html                 |   2 +-
 openjpa-project/pom.xml                            |  10 +-
 .../src/doc/manual/jpa_overview_arch.xml           |  12 +-
 .../src/doc/manual/jpa_overview_criteria.xml       |   6 +-
 openjpa-project/src/doc/manual/jpa_overview_em.xml |   4 +-
 .../src/doc/manual/jpa_overview_meta.xml           |   2 +-
 .../src/doc/manual/jpa_overview_query.xml          |  10 +-
 .../src/doc/manual/jpa_overview_sqlquery.xml       |   2 +-
 openjpa-project/src/doc/manual/jpa_resources.xml   |   2 +-
 openjpa-project/src/doc/manual/jpa_tutorials.xml   |   4 +-
 .../src/doc/manual/migration_considerations.xml    |   4 +-
 openjpa-project/src/doc/manual/properties_info.xml |   2 +-
 .../src/doc/manual/ref_guide_caching.xml           |  26 +-
 openjpa-project/src/doc/manual/ref_guide_conf.xml  |   8 +-
 .../src/doc/manual/ref_guide_dbsetup.xml           |  12 +-
 .../src/doc/manual/ref_guide_deploy.xml            |   2 +-
 .../src/doc/manual/ref_guide_logging.xml           |   2 +-
 .../src/doc/manual/ref_guide_mapping.xml           |   2 +-
 openjpa-project/src/doc/manual/ref_guide_pc.xml    |   2 +-
 .../src/doc/manual/ref_guide_remote.xml            |   8 +-
 .../src/doc/manual/ref_guide_runtime.xml           |  16 +-
 openjpa-project/src/doc/manual/ref_guide_slice.xml |   4 +-
 openjpa-slice/pom.xml                              |   8 +-
 .../java/org/apache/openjpa/slice/Address.java     |  10 +-
 .../test/java/org/apache/openjpa/slice/Car.java    |  10 +-
 .../java/org/apache/openjpa/slice/Country.java     |   6 +-
 .../org/apache/openjpa/slice/Manufacturer.java     |   4 +-
 .../java/org/apache/openjpa/slice/PObject.java     |   4 +-
 .../apache/openjpa/slice/PersistenceTestCase.java  |   6 +-
 .../test/java/org/apache/openjpa/slice/Person.java |  12 +-
 .../org/apache/openjpa/slice/ReplicatedChild.java  |   6 +-
 .../org/apache/openjpa/slice/ReplicatedParent.java |   8 +-
 .../org/apache/openjpa/slice/SliceTestCase.java    |   2 +-
 .../java/org/apache/openjpa/slice/TestBasic.java   |   4 +-
 .../org/apache/openjpa/slice/TestBulkDelete.java   |   2 +-
 .../java/org/apache/openjpa/slice/TestQuery.java   |   4 +-
 .../openjpa/slice/TestQueryMultiThreaded.java      |   6 +-
 .../openjpa/slice/TestQueryTargetPolicy.java       |   4 +-
 .../org/apache/openjpa/slice/TestReplication.java  |   2 +-
 .../org/apache/openjpa/slice/TestTransaction.java  |   4 +-
 .../test/java/org/apache/openjpa/slice/TestXA.java |   2 +-
 openjpa-tools/openjpa-fetch-statistics-was/pom.xml |   2 +-
 openjpa-tools/openjpa-fetch-statistics/pom.xml     |  11 +-
 .../org/apache/openjpa/enhance/stats/AEntity.java  |   6 +-
 .../org/apache/openjpa/enhance/stats/BEntity.java  |  14 +-
 .../apache/openjpa/enhance/stats/ChildEntity.java  |   4 +-
 .../org/apache/openjpa/enhance/stats/EEntity.java  |   2 +-
 .../openjpa/enhance/stats/TestFetchStatistics.java |   4 +-
 openjpa-tools/openjpa-maven-plugin/pom.xml         |  11 +-
 .../openjpa/tools/maven/testentity/TestEntity.java |   8 +-
 .../tools/maven/test/ItDefaultSettingsTest.java    |   6 +-
 .../dependingartifact/entities/MyEntityImpl.java   |   6 +-
 .../src/main/java/enhance/exclude/TestEntityA.java |   4 +-
 .../src/main/java/enhance/include/TestEntityB.java |   4 +-
 .../src/main/java/foo/TestEntityC.java             |   4 +-
 .../openjpa/tools/maven/testentity/TestEntity.java |   4 +-
 .../tools/maven/test/ItNonDefaultXmlTest.java      |   2 +-
 .../maven/testentity/DropSchemaTestEntity.java     |   8 +-
 .../openjpa/tools/maven/testentity/TestEntity.java |   8 +-
 .../dependingartifact/entities/MyEntityImpl.java   |   6 +-
 .../maven/AbstractOpenJpaMappingToolMojo.java      |   2 +-
 .../openjpa/tools/maven/testentity/Person.java     |   2 +-
 .../tools/maven/testentity/SampleEntity.java       |   4 +-
 openjpa-tools/pom.xml                              |   2 +-
 openjpa-xmlstore/pom.xml                           |   2 +-
 .../openjpa/xmlstore/simple/AllFieldTypes.java     |   6 +-
 .../org/apache/openjpa/xmlstore/simple/Place.java  |   4 +-
 .../openjpa/xmlstore/simple/TestPersistence.java   |   4 +-
 openjpa/pom.xml                                    |  14 +-
 pom.xml                                            |  81 +++--
 2661 files changed, 11361 insertions(+), 11558 deletions(-)

diff --git a/openjpa-all/pom.xml b/openjpa-all/pom.xml
index 845a334a3..1e384aa09 100644
--- a/openjpa-all/pom.xml
+++ b/openjpa-all/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-all</artifactId>
@@ -91,7 +91,7 @@
                             <transformers>
                                 <!-- Need to concatinate the services resources:
                                  org.apache.openjpa.lib.conf.ProductDerivation
-                                 javax.persistence.spi.PersistenceProvider
+                                 jakarta.persistence.spi.PersistenceProvider
                                  org.apache.openjpa.kernel.exps.ExpressionParser
                                 -->
                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
@@ -139,8 +139,8 @@
 
         <!-- bean validation includes -->
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.bval</groupId>
diff --git a/openjpa-examples/image-gallery/pom.xml b/openjpa-examples/image-gallery/pom.xml
index 02fd5c10d..624c23c0d 100644
--- a/openjpa-examples/image-gallery/pom.xml
+++ b/openjpa-examples/image-gallery/pom.xml
@@ -27,7 +27,7 @@
   <parent>
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa-examples</artifactId>
-      <version>3.2.3-SNAPSHOT</version>
+      <version>4.0.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.openjpa.openjpa-examples</groupId>
@@ -38,7 +38,6 @@
   <description>Apache OpenJPA Examples - image-gallery</description>
 
   <properties>
-    <test.jvm.maxpermsize>256m</test.jvm.maxpermsize>
     <test.jvm.maxheapsize>1024m</test.jvm.maxheapsize>
     <test.jvm.arguments>-Xmx${test.jvm.maxheapsize}</test.jvm.arguments>
     <surefire.jvm.args>${test.jvm.arguments}</surefire.jvm.args>
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/TestJPAValidation.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/TestJPAValidation.java
index 735f38e3f..4525843c6 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/TestJPAValidation.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/TestJPAValidation.java
@@ -21,11 +21,11 @@ package org.apache.openjpa.example.gallery;
 
 import java.util.Set;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
 
 import org.apache.openjpa.example.gallery.model.Image;
 import org.apache.openjpa.example.gallery.model.Location;
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
index 2605fda13..5893ce74a 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageConstraint.java
@@ -27,8 +27,8 @@ import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
 
 import org.apache.openjpa.example.gallery.ImageType;
 
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
index fb663a981..cc24b7804 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContent.java
@@ -28,8 +28,8 @@ import java.lang.annotation.Documented;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
 
 import org.apache.openjpa.example.gallery.ImageType;
 
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
index 16eabc558..85e92afbd 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageContentValidator.java
@@ -21,8 +21,8 @@ package org.apache.openjpa.example.gallery.constraint;
 import java.util.Arrays;
 import java.util.List;
 
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
 
 import org.apache.openjpa.example.gallery.ImageType;
 
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
index 7424dddd5..fa871ad8a 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/ImageValidator.java
@@ -21,8 +21,8 @@ package org.apache.openjpa.example.gallery.constraint;
 import java.util.Arrays;
 import java.util.List;
 
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
 
 import org.apache.openjpa.example.gallery.ImageType;
 import org.apache.openjpa.example.gallery.model.Image;
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
index bcd78be65..479e527ef 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/constraint/SequencedImageGroup.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.example.gallery.constraint;
 
-import javax.validation.GroupSequence;
-import javax.validation.groups.Default;
+import jakarta.validation.GroupSequence;
+import jakarta.validation.groups.Default;
 
 /**
  * Sequenced validation group definition.  When this validation group is
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
index 89e977e70..fe724873a 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Album.java
@@ -20,12 +20,12 @@ package org.apache.openjpa.example.gallery.model;
 
 import java.util.List;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.OneToMany;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OneToMany;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * Album entity.  Contains references to zero or more images and zero or more
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
index 414fb129c..25bdaac5c 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Creator.java
@@ -20,13 +20,13 @@ package org.apache.openjpa.example.gallery.model;
 
 import java.util.List;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.OneToMany;
-import javax.persistence.OrderBy;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OrderBy;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * Creator entity.  Contains a reference to one or more images authored by
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
index c62aebac9..8977f742d 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Image.java
@@ -18,15 +18,15 @@
  */
 package org.apache.openjpa.example.gallery.model;
 
-import javax.persistence.Embedded;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Embedded;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 
 import org.apache.openjpa.example.gallery.ImageType;
 import org.apache.openjpa.example.gallery.constraint.ImageConstraint;
diff --git a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
index f1984e79d..71ffb13b5 100644
--- a/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
+++ b/openjpa-examples/image-gallery/src/test/java/org/apache/openjpa/example/gallery/model/Location.java
@@ -19,11 +19,11 @@
 
 package org.apache.openjpa.example.gallery.model;
 
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
 
 /**
  * Location embeddable with several BV constraints applied.
diff --git a/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml b/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml
index b13b10bc7..8fc025517 100644
--- a/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml
+++ b/openjpa-examples/image-gallery/src/test/resources/META-INF/persistence.xml
@@ -47,11 +47,11 @@
           <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true,SchemaAction='add,deleteTableContents')"/>
           <property name="openjpa.DynamicEnhancementAgent" value="false"/>
 
-          <property name="javax.persistence.validation.group.pre-persist"
+          <property name="jakarta.persistence.validation.group.pre-persist"
               value="org.apache.openjpa.example.gallery.constraint.SequencedImageGroup"/>
-          <property name="javax.persistence.validation.group.pre-update"
+          <property name="jakarta.persistence.validation.group.pre-update"
               value="org.apache.openjpa.example.gallery.constraint.SequencedImageGroup"/>
-          <property name="javax.persistence.validation.group.pre-remove"
+          <property name="jakarta.persistence.validation.group.pre-remove"
               value="javax.validation.groups.Default"/>
         </properties>
     </persistence-unit>
diff --git a/openjpa-examples/jest/src/main/java/demo/Actor.java b/openjpa-examples/jest/src/main/java/demo/Actor.java
index 54a9966ba..a7cf18f9a 100644
--- a/openjpa-examples/jest/src/main/java/demo/Actor.java
+++ b/openjpa-examples/jest/src/main/java/demo/Actor.java
@@ -23,10 +23,10 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
 
 import org.apache.openjpa.persistence.FetchAttribute;
 import org.apache.openjpa.persistence.FetchGroup;
diff --git a/openjpa-examples/jest/src/main/java/demo/DataLoader.java b/openjpa-examples/jest/src/main/java/demo/DataLoader.java
index de30d81f4..e04ea1a7d 100644
--- a/openjpa-examples/jest/src/main/java/demo/DataLoader.java
+++ b/openjpa-examples/jest/src/main/java/demo/DataLoader.java
@@ -21,7 +21,7 @@ package demo;
 
 import java.util.Date;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 /**
  * Loads some example Actor-Movie data.
diff --git a/openjpa-examples/jest/src/main/java/demo/Movie.java b/openjpa-examples/jest/src/main/java/demo/Movie.java
index cc0584cbf..0923533f6 100644
--- a/openjpa-examples/jest/src/main/java/demo/Movie.java
+++ b/openjpa-examples/jest/src/main/java/demo/Movie.java
@@ -22,10 +22,10 @@ package demo;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
 
 import org.apache.openjpa.persistence.FetchAttribute;
 import org.apache.openjpa.persistence.FetchGroup;
diff --git a/openjpa-examples/jest/src/main/java/demo/SimpleApp.java b/openjpa-examples/jest/src/main/java/demo/SimpleApp.java
index 2d9f3de59..65511f87c 100644
--- a/openjpa-examples/jest/src/main/java/demo/SimpleApp.java
+++ b/openjpa-examples/jest/src/main/java/demo/SimpleApp.java
@@ -30,9 +30,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Random;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
diff --git a/openjpa-examples/jest/src/main/resources/META-INF/persistence.xml b/openjpa-examples/jest/src/main/resources/META-INF/persistence.xml
index a56118075..b45bc3372 100644
--- a/openjpa-examples/jest/src/main/resources/META-INF/persistence.xml
+++ b/openjpa-examples/jest/src/main/resources/META-INF/persistence.xml
@@ -27,10 +27,10 @@
         <class>demo.Actor</class>
 
         <properties>
-        <property name="javax.persistence.jdbc.driver"   value="com.mysql.jdbc.Driver"/>
-        <property name="javax.persistence.jdbc.url"      value="jdbc:mysql://localhost/jest"/>
-        <property name="javax.persistence.jdbc.user"     value="root"/>
-        <property name="javax.persistence.jdbc.password" value=""/>
+        <property name="jakarta.persistence.jdbc.driver"   value="com.mysql.jdbc.Driver"/>
+        <property name="jakarta.persistence.jdbc.url"      value="jdbc:mysql://localhost/jest"/>
+        <property name="jakarta.persistence.jdbc.user"     value="root"/>
+        <property name="jakarta.persistence.jdbc.password" value=""/>
         <property name="openjpa.ConnectionFactoryProperties" value="PrintParameters=true"/>
         <property name="openjpa.Log" value="Tool=Trace,SQL=TRACE,Remote=TRACE"/>
         <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
diff --git a/openjpa-examples/openbooks/index.html b/openjpa-examples/openbooks/index.html
index b85b600bf..11ee2ece7 100644
--- a/openjpa-examples/openbooks/index.html
+++ b/openjpa-examples/openbooks/index.html
@@ -119,8 +119,8 @@ font-size:16px;
     <OL>
       <LI>Edit <A HREF="resources/META-INF/persistence.xml"><code>persistence.xml</code></A> located in
       <code>resources/META-INF</code> directory.
-      Modify the <code>javax.persistence.jdbc.driver</code>
-      and <code>javax.persistence.jdbc.url</code> property to suit your local database and its driver.
+      Modify the <code>jakarta.persistence.jdbc.driver</code>
+      and <code>jakarta.persistencejdbc.url</code> property to suit your local database and its driver.
       <br>
       The example <code>persistence.xml</code> provided is primarily for a JSE environment.
       In JEE environment, you may already have a JTA data source configured and registered in JNDI.
diff --git a/openjpa-examples/openbooks/pom.xml b/openjpa-examples/openbooks/pom.xml
index bbd1a501e..770cf061d 100644
--- a/openjpa-examples/openbooks/pom.xml
+++ b/openjpa-examples/openbooks/pom.xml
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-examples</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.openjpa.openjpa-examples</groupId>
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeLegendView.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeLegendView.java
index 3fd5bf400..8eb9b4a93 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeLegendView.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeLegendView.java
@@ -17,7 +17,7 @@ import java.awt.Color;
 import java.awt.GridLayout;
 import java.awt.image.BufferedImage;
 
-import javax.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.Attribute;
 import javax.swing.BorderFactory;
 import javax.swing.ImageIcon;
 import javax.swing.JComponent;
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeView.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeView.java
index 8c131f7b9..bd22aa505 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeView.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/AttributeView.java
@@ -15,7 +15,7 @@ package jpa.tools.swing;
 
 import java.awt.Color;
 
-import javax.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.Attribute;
 import javax.swing.JLabel;
 
 /**
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityDataModel.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityDataModel.java
index 927b85cbb..0b2ba3ed9 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityDataModel.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityDataModel.java
@@ -20,11 +20,11 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EntityType;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.metamodel.PluralAttribute;
-import javax.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.PluralAttribute;
+import jakarta.persistence.metamodel.SingularAttribute;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.table.TableModel;
 
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTable.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTable.java
index 3434ce431..6723f3d14 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTable.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTable.java
@@ -18,9 +18,9 @@ import java.awt.Component;
 import java.awt.Dimension;
 import java.util.List;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceUnitUtil;
-import javax.persistence.metamodel.Attribute;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceUnitUtil;
+import jakarta.persistence.metamodel.Attribute;
 import javax.swing.DefaultCellEditor;
 import javax.swing.JComboBox;
 import javax.swing.JTable;
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTableView.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTableView.java
index 3f499ab90..580d3e802 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTableView.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTableView.java
@@ -18,10 +18,10 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EntityType;
-import javax.persistence.metamodel.ManagedType;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.ManagedType;
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.JPanel;
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTypeView.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTypeView.java
index 14ff81e7a..f8a6f34d3 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTypeView.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/EntityTypeView.java
@@ -19,8 +19,8 @@ import java.awt.GridLayout;
 import java.awt.Point;
 import java.util.List;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.EntityType;
 import javax.swing.BorderFactory;
 import javax.swing.JComponent;
 import javax.swing.JPanel;
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceDataModel.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceDataModel.java
index 62005bc11..c9e868168 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceDataModel.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceDataModel.java
@@ -15,8 +15,8 @@ package jpa.tools.swing;
 
 import java.util.List;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.EntityType;
 import javax.swing.table.AbstractTableModel;
 
 public class InstanceDataModel<T> extends AbstractTableModel {
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceView.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceView.java
index 906e4dd87..556204189 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceView.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/InstanceView.java
@@ -13,7 +13,7 @@
 */
 package jpa.tools.swing;
 
-import javax.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.EntityType;
 import javax.swing.JTable;
 
 public class InstanceView<T> extends JTable {
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelHelper.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelHelper.java
index 39b401665..254e3ddf3 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelHelper.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelHelper.java
@@ -25,12 +25,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EntityType;
-import javax.persistence.metamodel.MapAttribute;
-import javax.persistence.metamodel.PluralAttribute;
-import javax.persistence.metamodel.SingularAttribute;
-import javax.persistence.metamodel.Type;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.MapAttribute;
+import jakarta.persistence.metamodel.PluralAttribute;
+import jakarta.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.metamodel.Type;
 
 /**
  * Static utility for analyzing persistent metadata model using JPA 2.0.
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelView.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelView.java
index f29576b0b..14d47bbaf 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelView.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/MetamodelView.java
@@ -24,10 +24,10 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.EntityType;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.EntityType;
+import jakarta.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.SingularAttribute;
 import javax.swing.JPanel;
 
 
diff --git a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/QueryDecorator.java b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/QueryDecorator.java
index bf0165b8b..76004d576 100644
--- a/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/QueryDecorator.java
+++ b/openjpa-examples/openbooks/src/main/java/jpa/tools/swing/QueryDecorator.java
@@ -13,7 +13,7 @@
 */
 package jpa.tools.swing;
 
-import javax.persistence.Query;
+import jakarta.persistence.Query;
 
 /**
  * Decorates an executable query.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/domain/Author.java b/openjpa-examples/openbooks/src/main/java/openbook/domain/Author.java
index b685c07dd..769e30311 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/domain/Author.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/domain/Author.java
@@ -17,11 +17,11 @@ package openbook.domain;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.Version;
 
 /**
  * A persistent entity to represent an author of one or more Book.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/domain/Book.java b/openjpa-examples/openbooks/src/main/java/openbook/domain/Book.java
index 78c653140..6d2508f2c 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/domain/Book.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/domain/Book.java
@@ -18,13 +18,13 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 /**
  * <A name="class"/>
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/domain/Customer.java b/openjpa-examples/openbooks/src/main/java/openbook/domain/Customer.java
index 2e24083dd..1ee261301 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/domain/Customer.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/domain/Customer.java
@@ -16,10 +16,10 @@ package openbook.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Version;
 
 /**
  * A persistent entity represents a Customer.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/domain/Inventory.java b/openjpa-examples/openbooks/src/main/java/openbook/domain/Inventory.java
index f60149693..209856eac 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/domain/Inventory.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/domain/Inventory.java
@@ -16,11 +16,11 @@ package openbook.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 /**
  * A mutable persistent entity.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/domain/LineItem.java b/openjpa-examples/openbooks/src/main/java/openbook/domain/LineItem.java
index 7dd791c80..283c4ece7 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/domain/LineItem.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/domain/LineItem.java
@@ -16,13 +16,13 @@ package openbook.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToOne;
-import javax.persistence.OrderColumn;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.OrderColumn;
 
 /**
  * An immutable persistent entity with complex primary key.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/domain/PurchaseOrder.java b/openjpa-examples/openbooks/src/main/java/openbook/domain/PurchaseOrder.java
index 3c59f784c..5c1d9af34 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/domain/PurchaseOrder.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/domain/PurchaseOrder.java
@@ -21,15 +21,15 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
 
 /**
  * A persistent entity to demonstrate Master in a Master-Details or Composite pattern for
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookService.java b/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookService.java
index 06d9a8f5a..bc4cb4819 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookService.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookService.java
@@ -16,7 +16,7 @@ package openbook.server;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManagerFactory;
 
 import openbook.domain.Book;
 import openbook.domain.Customer;
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookServiceImpl.java b/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookServiceImpl.java
index 75c42656b..3549a867e 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookServiceImpl.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/server/OpenBookServiceImpl.java
@@ -19,17 +19,17 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceContextType;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.ParameterExpression;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.metamodel.EntityType;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceContextType;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Expression;
+import jakarta.persistence.criteria.ParameterExpression;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.metamodel.EntityType;
 
 import org.apache.openjpa.persistence.criteria.OpenJPACriteriaBuilder;
 
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/server/PersistenceService.java b/openjpa-examples/openbooks/src/main/java/openbook/server/PersistenceService.java
index 6317b099f..6b3a6a613 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/server/PersistenceService.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/server/PersistenceService.java
@@ -16,9 +16,9 @@ package openbook.server;
 import java.io.Serializable;
 import java.util.concurrent.locks.ReentrantLock;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceContextType;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceContextType;
 
 /**
  * An abstract utility for JPA based service.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/server/QueryDecorator.java b/openjpa-examples/openbooks/src/main/java/openbook/server/QueryDecorator.java
index 3f41af710..248a9eca3 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/server/QueryDecorator.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/server/QueryDecorator.java
@@ -13,7 +13,7 @@
 */
 package openbook.server;
 
-import javax.persistence.Query;
+import jakarta.persistence.Query;
 
 /**
  * Decorates an executable query.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/server/QueryParameterBinder.java b/openjpa-examples/openbooks/src/main/java/openbook/server/QueryParameterBinder.java
index 8baf188f1..8558d7a12 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/server/QueryParameterBinder.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/server/QueryParameterBinder.java
@@ -13,7 +13,7 @@
 */
 package openbook.server;
 
-import javax.persistence.Query;
+import jakarta.persistence.Query;
 
 /**
  * Decorates a query by binding parameters.
diff --git a/openjpa-examples/openbooks/src/main/java/openbook/server/ServiceFactory.java b/openjpa-examples/openbooks/src/main/java/openbook/server/ServiceFactory.java
index 6000b8260..21028a0df 100644
--- a/openjpa-examples/openbooks/src/main/java/openbook/server/ServiceFactory.java
+++ b/openjpa-examples/openbooks/src/main/java/openbook/server/ServiceFactory.java
@@ -16,9 +16,9 @@ package openbook.server;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.PersistenceContextType;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.PersistenceContextType;
 
 /**
  * A container of persistence units. Typically a JEE container will create, manage and inject
diff --git a/openjpa-examples/openbooks/src/main/resources/META-INF/persistence.xml b/openjpa-examples/openbooks/src/main/resources/META-INF/persistence.xml
index c7a6ddd3b..8df0b4779 100644
--- a/openjpa-examples/openbooks/src/main/resources/META-INF/persistence.xml
+++ b/openjpa-examples/openbooks/src/main/resources/META-INF/persistence.xml
@@ -36,17 +36,17 @@
 
         <properties>
         <!-- Use these for MySQL
-            <property name="javax.persistence.jdbc.driver"   value="com.mysql.jdbc.Driver"/>
-            <property name="javax.persistence.jdbc.url"      value="jdbc:mysql://localhost/OpenBooks"/>
-            <property name="javax.persistence.jdbc.user"     value="user"/>
-            <property name="javax.persistence.jdbc.password" value="password"/>
+            <property name="jakarta.persistence.jdbc.driver"   value="com.mysql.jdbc.Driver"/>
+            <property name="jakarta.persistence.jdbc.url"      value="jdbc:mysql://localhost/OpenBooks"/>
+            <property name="jakarta.persistence.jdbc.user"     value="user"/>
+            <property name="jakarta.persistence.jdbc.password" value="password"/>
         -->
 
         <!-- Use these for derby -->
-            <property name="javax.persistence.jdbc.driver"   value="org.apache.derby.jdbc.EmbeddedDriver"/>
-            <property name="javax.persistence.jdbc.url"      value="jdbc:derby:memory:OpenBooks;create=true"/>
-            <property name="javax.persistence.jdbc.user"     value=""/>
-            <property name="javax.persistence.jdbc.password" value=""/>
+            <property name="jakarta.persistence.jdbc.driver"   value="org.apache.derby.jdbc.EmbeddedDriver"/>
+            <property name="jakarta.persistence.jdbc.url"      value="jdbc:derby:memory:OpenBooks;create=true"/>
+            <property name="jakarta.persistence.jdbc.user"     value=""/>
+            <property name="jakarta.persistence.jdbc.password" value=""/>
 
 
             <property name="openjpa.DataCache"                value="true"/>
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/client/TradingServiceAdapter.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/client/TradingServiceAdapter.java
index 471a06ceb..c7b0a9d5e 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/client/TradingServiceAdapter.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/client/TradingServiceAdapter.java
@@ -41,7 +41,7 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
  * <LI> a) the delegator adds RuntimeException to each of the original service methods.
  * The original {@link TradingService} has not defined the exception in its method signature,
  * However, the actual implementation of {@link TradingService} is based on
- * JPA and hence will throw <code>javax.persistence.PersistenceException</code>. To propagate
+ * JPA and hence will throw <code>jakarta.persistence.PersistenceException</code>. To propagate
  * these exceptions to the client, these exceptions need to be translated for serialization by
  * GWT compiler and will bring in heavier dependency.
  * <br>
@@ -51,7 +51,7 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
  * <code>com.google.gwt.user.client.rpc.RemoteService</code>. But the discipline used for this
  * application dictates that the <em>service interface</em> be independent of either
  * how it is implemented or how it will be accessed. That is why original {@link TradingService}
- * definition neither depends on <code>javax.persistence.*</code> nor on <code>com.google.gwt.*</code>.
+ * definition neither depends on <code>jakarta.persistence.*</code> nor on <code>com.google.gwt.*</code>.
  * <p>
  * Because the interface is delegated, it is not necessary to have the same method name or
  * even signature. It may not have to declare all the original service interface methods either.
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Ask.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Ask.java
index eab8c6264..af2b3af60 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Ask.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Ask.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.trader.domain;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
 
 /**
  * An offer to sell a financial instrument.
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Bid.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Bid.java
index 752b85039..cc816c6fb 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Bid.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Bid.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.trader.domain;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
 /**
  * An offer to buy a financial instrument.
  * The only mutable state of an offer is its expiration.
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Stock.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Stock.java
index efe67d83d..157ad7475 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Stock.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Stock.java
@@ -20,9 +20,9 @@ package org.apache.openjpa.trader.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 /**
  * A stock is a typical financial instrument that is bought and sold by {@linkplain Trader}.
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Tradable.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Tradable.java
index b9c10692a..8dc53ac96 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Tradable.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Tradable.java
@@ -20,15 +20,15 @@ package org.apache.openjpa.trader.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 /**
  * An abstract root for domain objects in OpenTrader designates a {@link Stock financial instrument}
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trade.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trade.java
index 0a2e10a8e..9b83a4e27 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trade.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trade.java
@@ -20,12 +20,12 @@ package org.apache.openjpa.trader.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
 
 @Entity
 public class Trade implements Serializable {
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trader.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trader.java
index a2aad6b0c..4d12cf0ad 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trader.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/domain/Trader.java
@@ -20,11 +20,11 @@ package org.apache.openjpa.trader.domain;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.UniqueConstraint;
+import jakarta.persistence.Version;
 
 @Entity
 @Table(name="TRADER",
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/Exchange.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/Exchange.java
index 5ea3cde59..c496c8499 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/Exchange.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/Exchange.java
@@ -25,9 +25,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContextType;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContextType;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openjpa.lib.log.LogFactory;
 import org.apache.openjpa.trader.domain.Ask;
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/MarketFeed.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/MarketFeed.java
index 1f375b0eb..3d0bdc878 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/MarketFeed.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/MarketFeed.java
@@ -23,7 +23,7 @@ import java.util.Random;
 import java.util.Timer;
 import java.util.TimerTask;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.trader.domain.Stock;
 
diff --git a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/PersistenceService.java b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/PersistenceService.java
index 5f44e3447..7a2f0fa60 100644
--- a/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/PersistenceService.java
+++ b/openjpa-examples/opentrader/src/main/java/org/apache/openjpa/trader/service/PersistenceService.java
@@ -23,10 +23,10 @@ import java.util.Map;
 import java.util.Observable;
 import java.util.concurrent.locks.ReentrantLock;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.PersistenceContextType;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.PersistenceContextType;
 
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
diff --git a/openjpa-examples/pom.xml b/openjpa-examples/pom.xml
index 88c9a6c17..4ff524dda 100644
--- a/openjpa-examples/pom.xml
+++ b/openjpa-examples/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-examples</artifactId>
diff --git a/openjpa-examples/simple/pom.xml b/openjpa-examples/simple/pom.xml
index 03475dee1..db215c0ed 100644
--- a/openjpa-examples/simple/pom.xml
+++ b/openjpa-examples/simple/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-examples</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>org.apache.openjpa.openjpa-examples</groupId>
diff --git a/openjpa-examples/simple/src/main/java/embeddables/Address.java b/openjpa-examples/simple/src/main/java/embeddables/Address.java
index 230ce7b1b..670d85bdd 100644
--- a/openjpa-examples/simple/src/main/java/embeddables/Address.java
+++ b/openjpa-examples/simple/src/main/java/embeddables/Address.java
@@ -18,10 +18,10 @@
  */
 package embeddables;
 
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
-import javax.persistence.Embeddable;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Basic;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Embeddable;
+import jakarta.persistence.ManyToOne;
 
 @Embeddable
 public class Address {
diff --git a/openjpa-examples/simple/src/main/java/embeddables/ContactInfo.java b/openjpa-examples/simple/src/main/java/embeddables/ContactInfo.java
index f49f78ec7..9bf5a57aa 100644
--- a/openjpa-examples/simple/src/main/java/embeddables/ContactInfo.java
+++ b/openjpa-examples/simple/src/main/java/embeddables/ContactInfo.java
@@ -18,8 +18,8 @@
  */
 package embeddables;
 
-import javax.persistence.Embeddable;
-import javax.persistence.Embedded;
+import jakarta.persistence.Embeddable;
+import jakarta.persistence.Embedded;
 
 @Embeddable
 public class ContactInfo {
diff --git a/openjpa-examples/simple/src/main/java/embeddables/Coordinates.java b/openjpa-examples/simple/src/main/java/embeddables/Coordinates.java
index 526304a26..594853d29 100644
--- a/openjpa-examples/simple/src/main/java/embeddables/Coordinates.java
+++ b/openjpa-examples/simple/src/main/java/embeddables/Coordinates.java
@@ -18,11 +18,11 @@
  */
 package embeddables;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
 
 @Entity
 public class Coordinates {
diff --git a/openjpa-examples/simple/src/main/java/embeddables/Main.java b/openjpa-examples/simple/src/main/java/embeddables/Main.java
index 2901566c5..0e5ce6c2b 100644
--- a/openjpa-examples/simple/src/main/java/embeddables/Main.java
+++ b/openjpa-examples/simple/src/main/java/embeddables/Main.java
@@ -20,10 +20,10 @@ package embeddables;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.Query;
 
 public class Main {
 
diff --git a/openjpa-examples/simple/src/main/java/embeddables/Phone.java b/openjpa-examples/simple/src/main/java/embeddables/Phone.java
index b64a1b1b9..6c2b4210a 100644
--- a/openjpa-examples/simple/src/main/java/embeddables/Phone.java
+++ b/openjpa-examples/simple/src/main/java/embeddables/Phone.java
@@ -18,8 +18,8 @@
  */
 package embeddables;
 
-import javax.persistence.Basic;
-import javax.persistence.Embeddable;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Embeddable;
 
 @Embeddable
 public class Phone {
diff --git a/openjpa-examples/simple/src/main/java/embeddables/User.java b/openjpa-examples/simple/src/main/java/embeddables/User.java
index f752a75ec..7abf66e0a 100644
--- a/openjpa-examples/simple/src/main/java/embeddables/User.java
+++ b/openjpa-examples/simple/src/main/java/embeddables/User.java
@@ -21,15 +21,15 @@ package embeddables;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Basic;
-import javax.persistence.CollectionTable;
-import javax.persistence.ElementCollection;
-import javax.persistence.Embedded;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Basic;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Embedded;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
 
 @Entity
 // User is a reserved keyword for derby, so use a different table name.
diff --git a/openjpa-examples/simple/src/main/java/hellojpa/Main.java b/openjpa-examples/simple/src/main/java/hellojpa/Main.java
index 15161eb58..55a686d83 100644
--- a/openjpa-examples/simple/src/main/java/hellojpa/Main.java
+++ b/openjpa-examples/simple/src/main/java/hellojpa/Main.java
@@ -20,10 +20,10 @@ package hellojpa;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.Query;
 
 
 /**
diff --git a/openjpa-examples/simple/src/main/java/hellojpa/Message.java b/openjpa-examples/simple/src/main/java/hellojpa/Message.java
index bb3d4af79..c6e2d868e 100644
--- a/openjpa-examples/simple/src/main/java/hellojpa/Message.java
+++ b/openjpa-examples/simple/src/main/java/hellojpa/Message.java
@@ -20,9 +20,9 @@ package hellojpa;
 
 import java.util.Date;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 
 /**
diff --git a/openjpa-examples/simple/src/main/java/mapping/BuildSchemaPC.java b/openjpa-examples/simple/src/main/java/mapping/BuildSchemaPC.java
index b6763e97b..90de9cdcb 100644
--- a/openjpa-examples/simple/src/main/java/mapping/BuildSchemaPC.java
+++ b/openjpa-examples/simple/src/main/java/mapping/BuildSchemaPC.java
@@ -18,12 +18,12 @@
  */
 package mapping;
 
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
 
 /**
  * <p>Persistent type used in testing the mappingtool's buildSchema action
diff --git a/openjpa-examples/simple/src/main/java/mapping/BuildUTF8SchemaPC.java b/openjpa-examples/simple/src/main/java/mapping/BuildUTF8SchemaPC.java
index 42e3dddc0..97dc93f2b 100644
--- a/openjpa-examples/simple/src/main/java/mapping/BuildUTF8SchemaPC.java
+++ b/openjpa-examples/simple/src/main/java/mapping/BuildUTF8SchemaPC.java
@@ -18,12 +18,12 @@
  */
 package mapping;
 
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
 
 /**
  * <p>Persistent type used in testing the mappingtool's buildSchema action
diff --git a/openjpa-examples/simple/src/main/java/relations/Deity.java b/openjpa-examples/simple/src/main/java/relations/Deity.java
index 721243d09..f43fe3487 100644
--- a/openjpa-examples/simple/src/main/java/relations/Deity.java
+++ b/openjpa-examples/simple/src/main/java/relations/Deity.java
@@ -22,16 +22,16 @@ import java.io.Serializable;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
+import jakarta.persistence.Basic;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
 
 
 /**
diff --git a/openjpa-examples/simple/src/main/java/relations/Main.java b/openjpa-examples/simple/src/main/java/relations/Main.java
index fec2df094..a228785f3 100644
--- a/openjpa-examples/simple/src/main/java/relations/Main.java
+++ b/openjpa-examples/simple/src/main/java/relations/Main.java
@@ -24,10 +24,10 @@ import static relations.Deity.Gender.MALE;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.Query;
 
 
 /**
diff --git a/openjpa-examples/simple/src/main/java/reversemapping/Main.java b/openjpa-examples/simple/src/main/java/reversemapping/Main.java
index c6f5d98bf..23609a7eb 100644
--- a/openjpa-examples/simple/src/main/java/reversemapping/Main.java
+++ b/openjpa-examples/simple/src/main/java/reversemapping/Main.java
@@ -20,7 +20,7 @@ package reversemapping;
 
 import java.text.*;
 import java.util.*;
-import javax.persistence.*;
+import jakarta.persistence.*;
 
 
 /**
diff --git a/openjpa-features/pom.xml b/openjpa-features/pom.xml
index 2fff3f440..d11b45575 100644
--- a/openjpa-features/pom.xml
+++ b/openjpa-features/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-features</artifactId>
diff --git a/openjpa-features/src/main/feature/feature.xml b/openjpa-features/src/main/feature/feature.xml
index fa9834d82..24c73a2b0 100644
--- a/openjpa-features/src/main/feature/feature.xml
+++ b/openjpa-features/src/main/feature/feature.xml
@@ -21,7 +21,7 @@
     <feature name="openjpa" description="Apache OpenJPA 3 persistence engine support" version="${project.version}">
         <details>Apache OpenJPA persistence engine</details>
         <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
-        <bundle dependency="true">mvn:org.eclipse.persistence/javax.persistence/2.1.0</bundle>
+        <bundle dependency="true">mvn:org.eclipse.persistence/jakarta.persistence/2.1.0</bundle>
         <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/1.1.1</bundle>
         <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-el_1.0_spec/1.0.1</bundle>
 	<bundle dependency="true">mvn:org.apache.commons/commons-pool2/${pool2.version}</bundle>
@@ -30,7 +30,7 @@
         <bundle dependency="true">mvn:org.apache.xbean/xbean-asm9-shaded/${xbean.version}</bundle>
         <bundle>mvn:org.apache.openjpa/openjpa/${project.version}</bundle>
         <capability>
-            osgi.service;objectClass=javax.persistence.spi.PersistenceProvider;effective:=active;javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl
+            osgi.service;objectClass=jakarta.persistence.spi.PersistenceProvider;effective:=active;jakarta.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl
         </capability>
     </feature>
 
diff --git a/openjpa-integration/daytrader/pom.xml b/openjpa-integration/daytrader/pom.xml
index 730e98145..eb8a7c3b0 100644
--- a/openjpa-integration/daytrader/pom.xml
+++ b/openjpa-integration/daytrader/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-integration</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration-daytrader</artifactId>
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountDataBean.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountDataBean.java
index 35480b368..c368349ed 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountDataBean.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountDataBean.java
@@ -22,22 +22,22 @@ import java.sql.Timestamp;
 import java.util.Collection;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import jakarta.persistence.TableGenerator;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
+import jakarta.persistence.Transient;
 
 @Entity(name = "accountejb")
 @Table(name = "accountejb")
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountProfileDataBean.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountProfileDataBean.java
index 8b8c8ef48..ca979c160 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountProfileDataBean.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/AccountProfileDataBean.java
@@ -16,14 +16,14 @@
  */
 package org.apache.openjpa.integration.daytrader;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
 
 @Entity(name = "accountprofileejb")
 @Table(name = "accountprofileejb")
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/HoldingDataBean.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/HoldingDataBean.java
index f10d1ef0f..488f53ab3 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/HoldingDataBean.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/HoldingDataBean.java
@@ -20,21 +20,21 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.persistence.TableGenerator;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
+import jakarta.persistence.Transient;
 
 // import org.apache.geronimo.samples.daytrader.util.Log;
 // import org.apache.geronimo.samples.daytrader.util.TradeConfig;
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/OrderDataBean.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/OrderDataBean.java
index 4e98d34b7..161df2f0e 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/OrderDataBean.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/OrderDataBean.java
@@ -20,22 +20,22 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import jakarta.persistence.TableGenerator;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
+import jakarta.persistence.Transient;
 
 // import org.apache.geronimo.samples.daytrader.util.Log;
 // import org.apache.geronimo.samples.daytrader.util.TradeConfig;
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/QuoteDataBean.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/QuoteDataBean.java
index d2567d24b..d2fa9cdd2 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/QuoteDataBean.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/QuoteDataBean.java
@@ -19,14 +19,14 @@ package org.apache.openjpa.integration.daytrader;
 import java.io.Serializable;
 import java.math.BigDecimal;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.NamedNativeQueries;
-import javax.persistence.NamedNativeQuery;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedNativeQueries;
+import jakarta.persistence.NamedNativeQuery;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
 
 // import org.apache.geronimo.samples.daytrader.util.Log;
 // import org.apache.geronimo.samples.daytrader.util.TradeConfig;
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java
index 59aa821d9..2c0667d9c 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java
@@ -21,9 +21,9 @@ package org.apache.openjpa.integration.daytrader;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.log.LogFactoryImpl;
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java
index d0593660e..c2609bdbe 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java
@@ -22,7 +22,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManagerFactory;
 
 import org.apache.openjpa.lib.log.Log;
 
diff --git a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java
index 233e8ea54..7ce563e9c 100644
--- a/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java
+++ b/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java
@@ -22,10 +22,10 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceUnit;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceUnit;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.lib.log.Log;
 
diff --git a/openjpa-integration/examples/pom.xml b/openjpa-integration/examples/pom.xml
index 39ab6b5c6..d5e45d9de 100644
--- a/openjpa-integration/examples/pom.xml
+++ b/openjpa-integration/examples/pom.xml
@@ -37,7 +37,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-integration</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration-examples</artifactId>
diff --git a/openjpa-integration/jmx/pom.xml b/openjpa-integration/jmx/pom.xml
index 169aba817..b82bf9dd0 100644
--- a/openjpa-integration/jmx/pom.xml
+++ b/openjpa-integration/jmx/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-integration</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration-jmx</artifactId>
diff --git a/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/CachedEntity.java b/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/CachedEntity.java
index 5edb0036b..4baf3f613 100644
--- a/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/CachedEntity.java
+++ b/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/CachedEntity.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.integration.jmx;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="INT_CACHED_ENT")
diff --git a/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/TestJMXPlatformMBeans.java b/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/TestJMXPlatformMBeans.java
index 512120210..d885659e8 100644
--- a/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/TestJMXPlatformMBeans.java
+++ b/openjpa-integration/jmx/src/test/java/org/apache/openjpa/integration/jmx/TestJMXPlatformMBeans.java
@@ -31,7 +31,7 @@ import java.util.concurrent.Future;
 import javax.management.JMX;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
-import javax.persistence.Query;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.instrumentation.DataCacheInstrument;
 import org.apache.openjpa.instrumentation.InstrumentationManager;
diff --git a/openjpa-integration/pom.xml b/openjpa-integration/pom.xml
index 3a270bf9d..04ea6276e 100644
--- a/openjpa-integration/pom.xml
+++ b/openjpa-integration/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration</artifactId>
diff --git a/openjpa-integration/slf4j/pom.xml b/openjpa-integration/slf4j/pom.xml
index 50c3df043..00f4e747a 100644
--- a/openjpa-integration/slf4j/pom.xml
+++ b/openjpa-integration/slf4j/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-integration</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration-slf4j</artifactId>
diff --git a/openjpa-integration/slf4j/src/test/java/org/apache/openjpa/integration/slf4j/TestLogFactory.java b/openjpa-integration/slf4j/src/test/java/org/apache/openjpa/integration/slf4j/TestLogFactory.java
index fb817ceec..8796b4a43 100644
--- a/openjpa-integration/slf4j/src/test/java/org/apache/openjpa/integration/slf4j/TestLogFactory.java
+++ b/openjpa-integration/slf4j/src/test/java/org/apache/openjpa/integration/slf4j/TestLogFactory.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.integration.slf4j;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.log.SLF4JLogFactory;
diff --git a/openjpa-integration/tck/pom.xml b/openjpa-integration/tck/pom.xml
index cdcd268d6..d50e4b447 100644
--- a/openjpa-integration/tck/pom.xml
+++ b/openjpa-integration/tck/pom.xml
@@ -78,7 +78,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-integration</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration-tck</artifactId>
@@ -290,7 +290,7 @@
 
                         <!-- create the OpenJPA properties for the TCK run -->
                         <echo append="false" file="${openjpa.properties}">
-javax.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
+jakarta.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
 openjpa.ConnectionDriverName: ${db.driver}
 openjpa.ConnectionURL: ${db.url}
 openjpa.ConnectionUserName: ${db.username}
diff --git a/openjpa-integration/tck/tck2-20091209.xml b/openjpa-integration/tck/tck2-20091209.xml
index 73897036b..1b5d9fe01 100644
--- a/openjpa-integration/tck/tck2-20091209.xml
+++ b/openjpa-integration/tck/tck2-20091209.xml
@@ -103,7 +103,7 @@
         <property name="toplink.properties" value="${tck.dir}/bin/toplink-provider.properties" />
         <!-- create the OpenJPA properties for the TCK run -->
         <echo append="false" file="${openjpa.properties}">
-javax.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
+jakarta.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
 openjpa.ConnectionDriverName: ${db.driver}
 openjpa.ConnectionURL: ${db.url}
 openjpa.ConnectionUserName: ${db.username}
diff --git a/openjpa-integration/tck/tck2-20101205.xml b/openjpa-integration/tck/tck2-20101205.xml
index 912a30be3..5b1c45858 100644
--- a/openjpa-integration/tck/tck2-20101205.xml
+++ b/openjpa-integration/tck/tck2-20101205.xml
@@ -108,7 +108,7 @@
         <property name="toplink.properties" value="${tck.dir}/bin/toplink-provider.properties" />
         <!-- create the OpenJPA properties for the TCK run -->
         <echo append="false" file="${openjpa.properties}">
-javax.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
+jakarta.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
 openjpa.ConnectionDriverName: ${db.driver}
 openjpa.ConnectionURL: ${db.url}
 openjpa.ConnectionUserName: ${db.username}
diff --git a/openjpa-integration/tck/tck2-20110815.xml b/openjpa-integration/tck/tck2-20110815.xml
index 0763973d6..cc790a258 100644
--- a/openjpa-integration/tck/tck2-20110815.xml
+++ b/openjpa-integration/tck/tck2-20110815.xml
@@ -107,7 +107,7 @@
         <property name="toplink.properties" value="${tck.dir}/bin/toplink-provider.properties" />
         <!-- create the OpenJPA properties for the TCK run -->
         <echo append="false" file="${openjpa.properties}">
-javax.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
+jakarta.persistence.provider: org.apache.openjpa.persistence.PersistenceProviderImpl
 openjpa.ConnectionDriverName: ${db.driver}
 openjpa.ConnectionURL: ${db.url}
 openjpa.ConnectionUserName: ${db.username}
@@ -153,10 +153,10 @@ toplink.properties=${toplink.properties}
 # actually work for a given environment.
 sigTestClasspath=${javart.property}${path.separator}${cp.property}
 persistence.unit.properties.file.full.path=${provider.properties}
-javax.persistence.jdbc.driver: ${db.driver}
-javax.persistence.jdbc.url: ${db.url}
-javax.persistence.jdbc.user: ${db.username}
-javax.persistence.jdbc.password: ${db.password}
+jakarta.persistence.jdbc.driver: ${db.driver}
+jakarta.persistence.jdbc.url: ${db.url}
+jakarta.persistence.jdbc.user: ${db.username}
+jakarta.persistence.jdbc.password: ${db.password}
 database.driver=${db.driver}
 database.url=${db.url}
 database.user=${db.username}
diff --git a/openjpa-integration/validation/pom.xml b/openjpa-integration/validation/pom.xml
index 132d939e4..1ddfa27a1 100644
--- a/openjpa-integration/validation/pom.xml
+++ b/openjpa-integration/validation/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-integration</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-integration-validation</artifactId>
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyPersistenceProviderResolver.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyPersistenceProviderResolver.java
index 9c291a638..fb451f095 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyPersistenceProviderResolver.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyPersistenceProviderResolver.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.integration.persistence.provider;
 
 import java.util.List;
 
-import javax.persistence.spi.PersistenceProvider;
-import javax.persistence.spi.PersistenceProviderResolver;
+import jakarta.persistence.spi.PersistenceProvider;
+import jakarta.persistence.spi.PersistenceProviderResolver;
 
 public class DummyPersistenceProviderResolver implements
     PersistenceProviderResolver {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider1.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider1.java
index 03b073b59..952951009 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider1.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider1.java
@@ -20,10 +20,10 @@ package org.apache.openjpa.integration.persistence.provider;
 
 import java.util.Map;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.spi.PersistenceProvider;
-import javax.persistence.spi.PersistenceUnitInfo;
-import javax.persistence.spi.ProviderUtil;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.spi.PersistenceProvider;
+import jakarta.persistence.spi.PersistenceUnitInfo;
+import jakarta.persistence.spi.ProviderUtil;
 
 public class DummyProvider1 implements PersistenceProvider {
 
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider2.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider2.java
index 5a9bbde2b..3068683fe 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider2.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/DummyProvider2.java
@@ -20,10 +20,10 @@ package org.apache.openjpa.integration.persistence.provider;
 
 import java.util.Map;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.spi.PersistenceProvider;
-import javax.persistence.spi.PersistenceUnitInfo;
-import javax.persistence.spi.ProviderUtil;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.spi.PersistenceProvider;
+import jakarta.persistence.spi.PersistenceUnitInfo;
+import jakarta.persistence.spi.ProviderUtil;
 
 public class DummyProvider2 implements PersistenceProvider {
 
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/TestPersistenceProviderResolver.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/TestPersistenceProviderResolver.java
index b24251605..4db392852 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/TestPersistenceProviderResolver.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/persistence/provider/TestPersistenceProviderResolver.java
@@ -34,9 +34,9 @@ import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
 
-import javax.persistence.spi.PersistenceProvider;
-import javax.persistence.spi.PersistenceProviderResolver;
-import javax.persistence.spi.PersistenceProviderResolverHolder;
+import jakarta.persistence.spi.PersistenceProvider;
+import jakarta.persistence.spi.PersistenceProviderResolver;
+import jakarta.persistence.spi.PersistenceProviderResolverHolder;
 
 import org.apache.openjpa.lib.util.J2DoPrivHelper;
 
@@ -170,7 +170,7 @@ public class TestPersistenceProviderResolver extends TestCase {
             + "services");
         servicesDir.mkdirs();
         assertTrue(servicesDir.exists());
-        persistenceProviderFile = new File(servicesDir, "javax.persistence.spi.PersistenceProvider");
+        persistenceProviderFile = new File(servicesDir, "jakarta.persistence.spi.PersistenceProvider");
         if (persistenceProviderFile.exists()) {
             persistenceProviderFile.delete();
         }
@@ -201,7 +201,7 @@ public class TestPersistenceProviderResolver extends TestCase {
 
         out.putNextEntry(new JarEntry("META-INF/"));
         out.putNextEntry(new JarEntry("META-INF/services/"));
-        out.putNextEntry(new JarEntry("META-INF/services/javax.persistence.spi.PersistenceProvider"));
+        out.putNextEntry(new JarEntry("META-INF/services/jakarta.persistence.spi.PersistenceProvider"));
         //write the file to the jar
         byte[] buf = new byte[1024];
         int i;
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Address.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Address.java
index 05a824812..ac0bcb22a 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Address.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Address.java
@@ -20,15 +20,15 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Transient;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
 
 @Entity(name="VAddress")
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Book.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Book.java
index e9e7d5c60..59835449b 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Book.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Book.java
@@ -18,13 +18,13 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Basic;
-import javax.persistence.Embedded;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.validation.Valid;
-import javax.validation.constraints.Size;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Embedded;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.Size;
 
 @Entity(name="Vbook")
 public class Book {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintBoolean.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintBoolean.java
index b844b87bf..c81cca739 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintBoolean.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintBoolean.java
@@ -20,14 +20,14 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.AssertFalse;
-import javax.validation.constraints.AssertTrue;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.AssertFalse;
+import jakarta.validation.constraints.AssertTrue;
 
 
 @Entity(name = "VBOOLEAN")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDates.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDates.java
index c7e705168..cdbc34921 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDates.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDates.java
@@ -23,14 +23,14 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.Future;
-import javax.validation.constraints.Past;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.Future;
+import jakarta.validation.constraints.Past;
 
 
 @Entity(name = "VDATES")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDecimal.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDecimal.java
index 44233dbdb..6f0e4f521 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDecimal.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDecimal.java
@@ -21,14 +21,14 @@ package org.apache.openjpa.integration.validation;
 import java.io.Serializable;
 import java.math.BigDecimal;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.DecimalMax;
-import javax.validation.constraints.DecimalMin;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.DecimalMax;
+import jakarta.validation.constraints.DecimalMin;
 
 
 @Entity(name = "VDECIMAL")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDigits.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDigits.java
index 7e108e23d..239b5a8f1 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDigits.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintDigits.java
@@ -21,13 +21,13 @@ package org.apache.openjpa.integration.validation;
 import java.io.Serializable;
 import java.math.BigDecimal;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.Digits;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.Digits;
 
 
 @Entity(name = "VDIGITS")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNull.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNull.java
index 5cf483773..39bf74e85 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNull.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNull.java
@@ -20,14 +20,14 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Null;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Null;
 
 
 @Entity(name = "VNULL")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNumber.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNumber.java
index 0bddb87f2..60a5de1c7 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNumber.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintNumber.java
@@ -20,14 +20,14 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
 
 
 @Entity(name = "VNUMBER")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintPattern.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintPattern.java
index b4eb11ca1..51f59fb04 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintPattern.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintPattern.java
@@ -20,13 +20,13 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.Pattern;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.Pattern;
 
 
 @Entity(name = "VPATTERN")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintSize.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintSize.java
index bfc939673..1d006ff19 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintSize.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/ConstraintSize.java
@@ -22,13 +22,13 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import javax.validation.constraints.Size;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import jakarta.validation.constraints.Size;
 
 
 @Entity(name = "VSIZE")
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Customer.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Customer.java
index 4095486eb..b694c43db 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Customer.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Customer.java
@@ -20,10 +20,10 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.OneToOne;
-import javax.persistence.Transient;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Transient;
 
 @Entity(name="VCustomer")
 public class Customer extends Person implements ICustomer, Serializable {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/DefGrpEntity.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/DefGrpEntity.java
index d3f93aae1..c46226088 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/DefGrpEntity.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/DefGrpEntity.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.validation.constraints.NotNull;
 
 @Entity
 public class DefGrpEntity {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IAddress.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IAddress.java
index fbd8f44a5..12c48106a 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IAddress.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IAddress.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 public interface IAddress {
 
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IPerson.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IPerson.java
index 8ce3d137b..465ee713a 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IPerson.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/IPerson.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
 
 public interface IPerson {
 
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Image.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Image.java
index c5441ef44..3ad135b6e 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Image.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Image.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Embedded;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Embedded;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * Image entity which makes use of several BV constraints.
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Location.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Location.java
index db1c4dd6c..51ba78875 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Location.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Location.java
@@ -19,11 +19,11 @@
 
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
 
 /**
  * Location embeddable with several BV constraints applied.
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/MixedGrpEntity.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/MixedGrpEntity.java
index f6241f0a8..3aa480775 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/MixedGrpEntity.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/MixedGrpEntity.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.validation.constraints.NotNull;
 
 @Entity
 public class MixedGrpEntity {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/NonDefGrpEntity.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/NonDefGrpEntity.java
index 31d47f73c..4416f8326 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/NonDefGrpEntity.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/NonDefGrpEntity.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.validation.constraints.NotNull;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.validation.constraints.NotNull;
 
 @Entity
 public class NonDefGrpEntity {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Person.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Person.java
index f594127ef..dfd249990 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Person.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Person.java
@@ -20,17 +20,17 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.OneToOne;
-import javax.persistence.Transient;
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Transient;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
 
 @Entity(name="VPerson")
 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Publisher.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Publisher.java
index 4ea0afdb8..1fe22d24f 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Publisher.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/Publisher.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.Basic;
-import javax.persistence.Embeddable;
-import javax.validation.constraints.Size;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Embeddable;
+import jakarta.validation.constraints.Size;
 
 @Embeddable
 public class Publisher {
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/SimpleEntity.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/SimpleEntity.java
index 91a556b1b..68f5d9b77 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/SimpleEntity.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/SimpleEntity.java
@@ -20,19 +20,19 @@ package org.apache.openjpa.integration.validation;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EntityResult;
-import javax.persistence.FieldResult;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.NamedNativeQueries;
-import javax.persistence.NamedNativeQuery;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.SqlResultSetMapping;
-import javax.persistence.Table;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EntityResult;
+import jakarta.persistence.FieldResult;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedNativeQueries;
+import jakarta.persistence.NamedNativeQuery;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.SqlResultSetMapping;
+import jakarta.persistence.Table;
 
 @NamedQueries( {
     @NamedQuery(name="FindOne",
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraintViolation.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraintViolation.java
index 3542f719b..2425bef84 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraintViolation.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraintViolation.java
@@ -22,10 +22,10 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
 
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
@@ -40,7 +40,7 @@ public class TestConstraintViolation extends AbstractPersistenceTestCase {
     @Override
     public void setUp() {
         Map<String, String> props = new HashMap<>();
-        props.put("javax.persistence.validation.group.pre-remove", "javax.validation.groups.Default");
+        props.put("jakarta.persistence.validation.group.pre-remove", "jakarta.validation.groups.Default");
 
         // This test case uses a different persistence xml file because validation require 2.0 xsd.
         emf2 = OpenJPAPersistence.createEntityManagerFactory("ConstraintViolationTestPU",
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraints.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraints.java
index 0c5d541c2..2cb54b5f4 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraints.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestConstraints.java
@@ -20,9 +20,9 @@ package org.apache.openjpa.integration.validation;
 
 import java.util.Set;
 
-import javax.persistence.Query;
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
+import jakarta.persistence.Query;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.lib.log.Log;
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMappedSuper.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMappedSuper.java
index 1bfb50283..b72424922 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMappedSuper.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMappedSuper.java
@@ -21,8 +21,8 @@ package org.apache.openjpa.integration.validation;
 import java.util.Iterator;
 import java.util.Set;
 
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
 
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMerge.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMerge.java
index 81a493867..f83dbad3d 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMerge.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestMerge.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.integration.validation;
 
-import javax.persistence.EntityManager;
-import javax.validation.ConstraintViolationException;
+import jakarta.persistence.EntityManager;
+import jakarta.validation.ConstraintViolationException;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.lib.log.Log;
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestTraversableResolver.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestTraversableResolver.java
index c1b36cce1..6d34e0eeb 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestTraversableResolver.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestTraversableResolver.java
@@ -25,9 +25,9 @@ import java.security.AccessController;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.validation.ConstraintViolationException;
-import javax.validation.Path;
-import javax.validation.TraversableResolver;
+import jakarta.validation.ConstraintViolationException;
+import jakarta.validation.Path;
+import jakarta.validation.TraversableResolver;
 
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.lib.util.J2DoPrivHelper;
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidatingLEM.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidatingLEM.java
index d883499ca..1724f7442 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidatingLEM.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidatingLEM.java
@@ -21,10 +21,10 @@ package org.apache.openjpa.integration.validation;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.EntityManager;
-import javax.persistence.ValidationMode;
-import javax.validation.Validation;
-import javax.validation.ValidatorFactory;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.ValidationMode;
+import jakarta.validation.Validation;
+import jakarta.validation.ValidatorFactory;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
@@ -149,7 +149,7 @@ public class TestValidatingLEM extends SingleEMFTestCase {
         // create the Map to test overrides
         //   Just use current class object, as we have no provider to test with
         Map<String,Object> props = new HashMap<>();
-        props.put("javax.persistence.validation.mode",
+        props.put("jakarta.persistence.validation.mode",
             String.valueOf(ValidationMode.CALLBACK));
         // create our EMF w/ props
         OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
@@ -192,13 +192,13 @@ public class TestValidatingLEM extends SingleEMFTestCase {
         ValidatorFactory factory = null;
         try {
             factory = Validation.buildDefaultValidatorFactory();
-        } catch (javax.validation.ValidationException e) {
+        } catch (jakarta.validation.ValidationException e) {
             fail("testValidatingLEM4() - no validation providers found" + e);
         }
         assertNotNull(factory);
         // create the Map to test overrides
         Map<String,Object> props = new HashMap<>();
-        props.put("javax.persistence.validation.factory", factory);
+        props.put("jakarta.persistence.validation.factory", factory);
         // create our EMF w/ props
         OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
             OpenJPAPersistence.createEntityManagerFactory(
diff --git a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidationGroups.java b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidationGroups.java
index f4994418f..fd2ceacd2 100644
--- a/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidationGroups.java
+++ b/openjpa-integration/validation/src/test/java/org/apache/openjpa/integration/validation/TestValidationGroups.java
@@ -23,8 +23,8 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
-import javax.validation.ConstraintViolation;
-import javax.validation.ConstraintViolationException;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
 
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
@@ -324,14 +324,14 @@ public class TestValidationGroups extends AbstractPersistenceTestCase {
 
         // Configure persistence properties via map
         Map<String, Object> propMap = new HashMap<>();
-        propMap.put("javax.persistence.validation.group.pre-persist",
+        propMap.put("jakarta.persistence.validation.group.pre-persist",
             "org.apache.openjpa.integration.validation.ValGroup1," +
             "org.apache.openjpa.integration.validation.ValGroup2");
 
-        propMap.put("javax.persistence.validation.group.pre-update",
+        propMap.put("jakarta.persistence.validation.group.pre-update",
             "");
 
-        propMap.put("javax.persistence.validation.group.pre-remove",
+        propMap.put("jakarta.persistence.validation.group.pre-remove",
             "org.apache.openjpa.integration.validation.ValGroup2");
 
         OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
@@ -442,9 +442,9 @@ public class TestValidationGroups extends AbstractPersistenceTestCase {
 
         // Configure persistence properties via map
         Map<String, Object> propMap = new HashMap<>();
-        propMap.put("javax.persistence.validation.group.pre-persist","");
+        propMap.put("jakarta.persistence.validation.group.pre-persist","");
 
-        propMap.put("javax.persistence.validation.group.pre-update","");
+        propMap.put("jakarta.persistence.validation.group.pre-update","");
 
         OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
         OpenJPAPersistence.createEntityManagerFactory(
@@ -750,7 +750,7 @@ public class TestValidationGroups extends AbstractPersistenceTestCase {
     /**
      * verify validation occurs when the default validation group
      * is specified for the PreRemove lifecycle event via the
-     * "javax.persistence.validation.group.pre-remove" property.
+     * "jakarta.persistence.validation.group.pre-remove" property.
      */
     public void verifySpecifiedDefaultPreRemove(boolean flush) {
         OpenJPAEntityManagerFactorySPI emf = (OpenJPAEntityManagerFactorySPI)
diff --git a/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml b/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml
index b4ac51df1..dd760f8f0 100644
--- a/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml
+++ b/openjpa-integration/validation/src/test/resources/org/apache/openjpa/integration/validation/persistence.xml
@@ -95,7 +95,7 @@
         <properties>
             <property name="openjpa.jdbc.SynchronizeMappings"
                 value="buildSchema"/>
-            <property name="javax.persistence.validation.group.pre-remove"
+            <property name="jakarta.persistence.validation.group.pre-remove"
                 value="javax.validation.groups.Default"/>
         </properties>
     </persistence-unit>
@@ -106,7 +106,7 @@
         <properties>
             <property name="openjpa.jdbc.SynchronizeMappings"
                 value="buildSchema"/>
-            <property name="javax.persistence.validation.group.pre-persist"
+            <property name="jakarta.persistence.validation.group.pre-persist"
                 value=""/>
         </properties>
     </persistence-unit>
@@ -117,7 +117,7 @@
         <properties>
             <property name="openjpa.jdbc.SynchronizeMappings"
                 value="buildSchema"/>
-            <property name="javax.persistence.validation.group.pre-update"
+            <property name="jakarta.persistence.validation.group.pre-update"
                 value=""/>
         </properties>
     </persistence-unit>
@@ -128,11 +128,11 @@
         <properties>
             <property name="openjpa.jdbc.SynchronizeMappings"
                 value="buildSchema"/>
-            <property name="javax.persistence.validation.group.pre-persist"
+            <property name="jakarta.persistence.validation.group.pre-persist"
                 value="org.apache.openjpa.integration.validation.ValGroup1"/>
-            <property name="javax.persistence.validation.group.pre-update"
+            <property name="jakarta.persistence.validation.group.pre-update"
                 value="org.apache.openjpa.integration.validation.ValGroup1"/>
-            <property name="javax.persistence.validation.group.pre-remove"
+            <property name="jakarta.persistence.validation.group.pre-remove"
                 value="org.apache.openjpa.integration.validation.ValGroup1"/>
         </properties>
     </persistence-unit>
@@ -154,12 +154,12 @@
             <property name="openjpa.jdbc.SynchronizeMappings"
                 value="buildSchema"/>
             <!--  OPENJPA-1685 Filter whitespace from group list -->
-            <property name="javax.persistence.validation.group.pre-persist"
+            <property name="jakarta.persistence.validation.group.pre-persist"
                 value="org.apache.openjpa.integration.validation.ValGroup1,
                        org.apache.openjpa.integration.validation.ValGroup2"/>
-            <property name="javax.persistence.validation.group.pre-update"
+            <property name="jakarta.persistence.validation.group.pre-update"
                 value=""/>
-            <property name="javax.persistence.validation.group.pre-remove"
+            <property name="jakarta.persistence.validation.group.pre-remove"
                 value="org.apache.openjpa.integration.validation.ValGroup2  "/>
         </properties>
     </persistence-unit>
diff --git a/openjpa-jdbc/pom.xml b/openjpa-jdbc/pom.xml
index e7027ff3e..b4a17b1c8 100644
--- a/openjpa-jdbc/pom.xml
+++ b/openjpa-jdbc/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-jdbc</artifactId>
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
index 51ca96251..fa08accda 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
@@ -26,7 +26,7 @@ import java.sql.SQLException;
 import java.sql.Types;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.transaction.NotSupportedException;
+import jakarta.transaction.NotSupportedException;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
index e92907fcc..8776d3526 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ReverseMappingTool.java
@@ -2276,7 +2276,7 @@ public class ReverseMappingTool
         @Override
         public Set getImportPackages() {
             Set pkgs = super.getImportPackages();
-            pkgs.add("javax.persistence");
+            pkgs.add("jakarta.persistence");
             return pkgs;
         }
 
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
index d788add9e..3aa56176a 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DataSourceFactory.java
@@ -205,7 +205,7 @@ public class DataSourceFactory {
                 new ConfiguringConnectionDecorator();
             ccd.setTransactionIsolation(conf.getTransactionIsolationConstant());
 
-            //OPENJPA-2517: Allow a javax.persistence.query.timeout to apply to all
+            //OPENJPA-2517: Allow a jakarta.persistence.query.timeout to apply to all
             //EM operations (not just Query operations).  Convert from milliseconds
             //to seconds.  See DBDictionary.setQueryTimeout for similar conversions.
             //DBDictionary.setQueryTimeout will log warnings for invalid values,
diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
index 7deaea7c9..eb087b666 100644
--- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
+++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java
@@ -187,7 +187,7 @@ public class OracleDictionary
             log.warn("Both 'supportsAutoAssign' and 'useTriggersForAutoAssign' were specified, such configuration will never work,"
                     + " please use 'supportsAutoAssign'");
         }
-        // support auto increment columns javax.persistence.GenerationType#IDENTITY
+        // support auto increment columns jakarta.persistence.GenerationType#IDENTITY
         supportsAutoAssign = true;
         autoAssignClause = "GENERATED ALWAYS AS IDENTITY";
 
diff --git a/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties b/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
index c75794e0b..31a08151c 100644
--- a/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
+++ b/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
@@ -20,7 +20,7 @@ bad-join: The following error was detected when creating a foreign key: \
 no-driver: The persistence provider is attempting to use properties in the \
 	persistence.xml file to resolve the data source. A Java Database Connectivity \
 	(JDBC) driver or data source class name must be specified in the \
-	openjpa.ConnectionDriverName or javax.persistence.jdbc.driver property. \
+	openjpa.ConnectionDriverName or jakarta.persistence.jdbc.driver property. \
 	The following properties are available in the configuration: "{0}".
 bad-driver: The specified driver "{0}" is neither a java.sql.Driver \
 	nor a javax.sql.DataSource class name.
diff --git a/openjpa-jest/pom.xml b/openjpa-jest/pom.xml
index 5cc39e4fa..b2e3732fb 100644
--- a/openjpa-jest/pom.xml
+++ b/openjpa-jest/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-jest</artifactId>
@@ -42,8 +42,9 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JESTServlet.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JESTServlet.java
index e99adfaaf..58e626216 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JESTServlet.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JESTServlet.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.persistence.jest;
 
 import java.io.IOException;
 
-import javax.persistence.Persistence;
+import jakarta.persistence.Persistence;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java
index 9a0266173..5a50d0ade 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/JSONObjectFormatter.java
@@ -37,8 +37,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.Metamodel;
 
 import org.apache.openjpa.json.JSON;
 import org.apache.openjpa.json.JSONObject;
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/MetamodelHelper.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/MetamodelHelper.java
index b48b9649b..3db86e18e 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/MetamodelHelper.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/MetamodelHelper.java
@@ -24,12 +24,12 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.ManagedType;
-import javax.persistence.metamodel.MapAttribute;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.metamodel.PluralAttribute;
-import javax.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.ManagedType;
+import jakarta.persistence.metamodel.MapAttribute;
+import jakarta.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.PluralAttribute;
+import jakarta.persistence.metamodel.SingularAttribute;
 
 import org.apache.openjpa.meta.ClassMetaData;
 import org.apache.openjpa.meta.JavaTypes;
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/ObjectFormatter.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/ObjectFormatter.java
index f1209f8f4..891d4bef7 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/ObjectFormatter.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/ObjectFormatter.java
@@ -24,7 +24,7 @@ import java.io.OutputStream;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
 
-import javax.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.Metamodel;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.openjpa.kernel.OpenJPAStateManager;
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/QueryCommand.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/QueryCommand.java
index 64b3ddcd9..748b22790 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/QueryCommand.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/QueryCommand.java
@@ -29,7 +29,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.Query;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.persistence.ArgumentException;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
diff --git a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/XMLFormatter.java b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/XMLFormatter.java
index 21aa4a2c1..6cce9739f 100644
--- a/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/XMLFormatter.java
+++ b/openjpa-jest/src/main/java/org/apache/openjpa/persistence/jest/XMLFormatter.java
@@ -58,11 +58,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.metamodel.Attribute;
-import javax.persistence.metamodel.ManagedType;
-import javax.persistence.metamodel.MapAttribute;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.metamodel.PluralAttribute;
+import jakarta.persistence.metamodel.Attribute;
+import jakarta.persistence.metamodel.ManagedType;
+import jakarta.persistence.metamodel.MapAttribute;
+import jakarta.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.PluralAttribute;
 import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
diff --git a/openjpa-jest/src/main/resources/org/apache/openjpa/persistence/jest/jest-instance.xsd b/openjpa-jest/src/main/resources/org/apache/openjpa/persistence/jest/jest-instance.xsd
index 1e28443f4..323a764cc 100644
--- a/openjpa-jest/src/main/resources/org/apache/openjpa/persistence/jest/jest-instance.xsd
+++ b/openjpa-jest/src/main/resources/org/apache/openjpa/persistence/jest/jest-instance.xsd
@@ -43,7 +43,7 @@
 	<!-- The root element for a single instance. Children of this element are persistent attribute -->
 	<!-- Persistent Attributes occur in order. The order is determined by the attribute category.  -->
 	<!-- Attribute category is determined by the enumerated PersistentAttributeType defined in     -->
-	<!-- javax.persistence.metamodel and then further refined by id, version, lob and enum.        -->
+	<!-- jakarta.persistence.metamodel and then further refined by id, version, lob and enum.        -->
 	<!-- See org.apache.openjpa.persistence.jest.MetamodelHelper for further details.              -->
 	<xsd:complexType name="instance-type">
 		<xsd:sequence>
diff --git a/openjpa-jest/src/test/java/demo/Actor.java b/openjpa-jest/src/test/java/demo/Actor.java
index df6c8f2c9..6a7c3c33d 100644
--- a/openjpa-jest/src/test/java/demo/Actor.java
+++ b/openjpa-jest/src/test/java/demo/Actor.java
@@ -23,10 +23,10 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
 
 import org.apache.openjpa.persistence.FetchAttribute;
 import org.apache.openjpa.persistence.FetchGroup;
diff --git a/openjpa-jest/src/test/java/demo/DataLoader.java b/openjpa-jest/src/test/java/demo/DataLoader.java
index bc011aff6..b530a0949 100644
--- a/openjpa-jest/src/test/java/demo/DataLoader.java
+++ b/openjpa-jest/src/test/java/demo/DataLoader.java
@@ -21,7 +21,7 @@ package demo;
 
 import java.util.Date;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 /**
  * Loads some example Actor-Movie data.
diff --git a/openjpa-jest/src/test/java/demo/Movie.java b/openjpa-jest/src/test/java/demo/Movie.java
index be6f0ff53..e080a34a3 100644
--- a/openjpa-jest/src/test/java/demo/Movie.java
+++ b/openjpa-jest/src/test/java/demo/Movie.java
@@ -22,10 +22,10 @@ package demo;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
 
 import org.apache.openjpa.persistence.FetchAttribute;
 import org.apache.openjpa.persistence.FetchGroup;
diff --git a/openjpa-junit5/pom.xml b/openjpa-junit5/pom.xml
index 5e5dcdf80..13ab74fdf 100644
--- a/openjpa-junit5/pom.xml
+++ b/openjpa-junit5/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-junit5</artifactId>
@@ -34,8 +34,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jpa_2.2_spec</artifactId>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java b/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
index d86f2bd73..284212efe 100644
--- a/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
+++ b/openjpa-junit5/src/main/java/org/apache/openjpa/junit5/internal/OpenJPADirectoriesEnhancer.java
@@ -36,9 +36,9 @@ import org.apache.xbean.finder.ClassLoaders;
 import serp.bytecode.BCClass;
 import serp.bytecode.Project;
 
-import javax.persistence.Embeddable;
-import javax.persistence.Entity;
-import javax.persistence.MappedSuperclass;
+import jakarta.persistence.Embeddable;
+import jakarta.persistence.Entity;
+import jakarta.persistence.MappedSuperclass;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
diff --git a/openjpa-junit5/src/test/java/org/apache/openjpa/junit5/MyEntity.java b/openjpa-junit5/src/test/java/org/apache/openjpa/junit5/MyEntity.java
index 2db80ce91..da36d6969 100644
--- a/openjpa-junit5/src/test/java/org/apache/openjpa/junit5/MyEntity.java
+++ b/openjpa-junit5/src/test/java/org/apache/openjpa/junit5/MyEntity.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.junit5;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 @Entity
 public class MyEntity {
diff --git a/openjpa-kernel/pom.xml b/openjpa-kernel/pom.xml
index 6f5d14edc..71b7fe094 100644
--- a/openjpa-kernel/pom.xml
+++ b/openjpa-kernel/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-kernel</artifactId>
@@ -42,12 +42,12 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jms_1.1_spec</artifactId>
+            <groupId>jakarta.jms</groupId>
+            <artifactId>jakarta.jms-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-jta_1.1_spec</artifactId>
+            <groupId>jakarta.transaction</groupId>
+            <artifactId>jakarta.transaction-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
index 1f7cb2b37..d9496ecea 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
@@ -1986,7 +1986,7 @@ public interface OpenJPAConfiguration
 
     /**
      * database action from the persistence unit.
-     * See 'javax.persistence.schema-generation.database.action'
+     * See 'jakarta.persistence.schema-generation.database.action'
      * @return openjpa internal schemaAction which corresponds to the JPA action.
      * @since 3.0.0
      */
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
index a85d2dc52..38116b898 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
@@ -378,19 +378,19 @@ public class OpenJPAConfigurationImpl
 
 
         connectionUserName = addString("ConnectionUserName");
-        connectionUserName.addEquivalentKey("javax.persistence.jdbc.user");
+        connectionUserName.addEquivalentKey("jakarta.persistence.jdbc.user");
 
         connectionPassword = addString("ConnectionPassword");
-        connectionPassword.addEquivalentKey("javax.persistence.jdbc.password");
+        connectionPassword.addEquivalentKey("jakarta.persistence.jdbc.password");
         connectionPassword.hide();
 
         encryptionProvider = addPlugin("EncryptionProvider",true);
 
         connectionURL = addString("ConnectionURL");
-        connectionURL.addEquivalentKey("javax.persistence.jdbc.url");
+        connectionURL.addEquivalentKey("jakarta.persistence.jdbc.url");
 
         connectionDriverName = addString("ConnectionDriverName");
-        connectionDriverName.addEquivalentKey("javax.persistence.jdbc.driver");
+        connectionDriverName.addEquivalentKey("jakarta.persistence.jdbc.driver");
 
         connectionFactoryName = addString("ConnectionFactoryName");
         connectionProperties = addString("ConnectionProperties");
@@ -422,7 +422,7 @@ public class OpenJPAConfigurationImpl
         optimizeIdCopy.setDefault("false");
         optimizeIdCopy.set(false);
 
-        databaseAction = addInt("javax.persistence.schema-generation.database.action");
+        databaseAction = addInt("jakarta.persistence.schema-generation.database.action");
         aliases = new String[] {
                 "none", String.valueOf(SchemaGenerationAction.NONE),
                 "create", String.valueOf(SchemaGenerationAction.CREATE),
@@ -433,7 +433,7 @@ public class OpenJPAConfigurationImpl
         databaseAction.setDefault(aliases[0]);
         databaseAction.setAliasListComprehensive(true);
 
-        scriptsAction = addInt("javax.persistence.schema-generation.scripts.action");
+        scriptsAction = addInt("jakarta.persistence.schema-generation.scripts.action");
         aliases = new String[] {
                 "none", String.valueOf(SchemaGenerationAction.NONE),
                 "create", String.valueOf(SchemaGenerationAction.CREATE),
@@ -444,7 +444,7 @@ public class OpenJPAConfigurationImpl
         scriptsAction.setDefault(aliases[0]);
         scriptsAction.setAliasListComprehensive(true);
 
-        createSource = addInt("javax.persistence.schema-generation.create-source");
+        createSource = addInt("jakarta.persistence.schema-generation.create-source");
         aliases = new String[] {
                 "none", String.valueOf(SchemaGenerationSource.NONE),
                 "metadata", String.valueOf(SchemaGenerationSource.METADATA),
@@ -456,7 +456,7 @@ public class OpenJPAConfigurationImpl
         createSource.setDefault(aliases[0]);
         createSource.setAliasListComprehensive(true);
 
-        dropSource = addInt("javax.persistence.schema-generation.drop-source");
+        dropSource = addInt("jakarta.persistence.schema-generation.drop-source");
         aliases = new String[] {
                 "metadata", String.valueOf(SchemaGenerationSource.METADATA),
                 "script", String.valueOf(SchemaGenerationSource.SCRIPT),
@@ -467,11 +467,11 @@ public class OpenJPAConfigurationImpl
         dropSource.setDefault(aliases[0]);
         dropSource.setAliasListComprehensive(true);
 
-        createScriptSource = addString("javax.persistence.schema-generation.create-script-source");
-        dropScriptSource = addString("javax.persistence.schema-generation.drop-script-source");
-        createScriptTarget = addString("javax.persistence.schema-generation.scripts.create-target");
-        dropScriptTarget = addString("javax.persistence.schema-generation.scripts.drop-target");
-        loadScriptSource = addString("javax.persistence.sql-load-script-source");
+        createScriptSource = addString("jakarta.persistence.schema-generation.create-script-source");
+        dropScriptSource = addString("jakarta.persistence.schema-generation.drop-script-source");
+        createScriptTarget = addString("jakarta.persistence.schema-generation.scripts.create-target");
+        dropScriptTarget = addString("jakarta.persistence.schema-generation.scripts.drop-target");
+        loadScriptSource = addString("jakarta.persistence.sql-load-script-source");
 
         autoClear = addInt("AutoClear");
         aliases =
@@ -549,7 +549,7 @@ public class OpenJPAConfigurationImpl
         flushBeforeQueries.setAliasListComprehensive(true);
 
         lockTimeout = addInt("LockTimeout");
-        lockTimeout.addEquivalentKey("javax.persistence.lock.timeout");
+        lockTimeout.addEquivalentKey("jakarta.persistence.lock.timeout");
         lockTimeout.setDefault("-1");
         lockTimeout.setDynamic(true);
 
@@ -636,7 +636,7 @@ public class OpenJPAConfigurationImpl
         addValue(specification);
         specification.setInstantiatingGetter("getSpecificationInstance");
 
-        queryTimeout = addInt("javax.persistence.query.timeout");
+        queryTimeout = addInt("jakarta.persistence.query.timeout");
         queryTimeout.setDefault("-1");
         queryTimeout.setDynamic(true);
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/CacheDistributionPolicy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/CacheDistributionPolicy.java
index db1868550..366e6df30 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/CacheDistributionPolicy.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/CacheDistributionPolicy.java
@@ -28,9 +28,9 @@ import org.apache.openjpa.lib.conf.Configurable;
  * This policy is activated for each instance if and only if the cache settings specified in metadata
  * such as JPA specification defined {@link Cacheable @Cacheable} annotation or OpenJPA specific
  * {@link org.apache.openjpa.persistence.DataCache @DataCache} annotation or configuration property
- * such as <code>javax.persistence.sharedCache.mode</code> determined the type of the instance being cachable.
+ * such as <code>jakarta.persistence.sharedCache.mode</code> determined the type of the instance being cachable.
  * <br>
- * For example, a specific policy will never be active for when <code>javax.persistence.sharedCache.mode</code>
+ * For example, a specific policy will never be active for when <code>jakarta.persistence.sharedCache.mode</code>
  * is set to <code>NONE</code>.
  * <br>
  * Distribution Policies are configurable. So a specific policy can be configured as
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AbstractManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AbstractManagedRuntime.java
index 0c3fbf18c..e9e377fba 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AbstractManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AbstractManagedRuntime.java
@@ -17,10 +17,10 @@
 
 package org.apache.openjpa.ee;
 
-import javax.transaction.NotSupportedException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.util.GeneralException;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
index bd42c39f3..6c7d6393b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
@@ -21,9 +21,9 @@ package org.apache.openjpa.ee;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.transaction.NotSupportedException;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.lib.conf.Configurable;
 import org.apache.openjpa.lib.conf.Configuration;
@@ -56,14 +56,14 @@ public class AutomaticManagedRuntime extends AbstractManagedRuntime
     implements ManagedRuntime, Configurable {
 
     private static final String [] JNDI_LOCS = new String []{
-        "javax.transaction.TransactionManager", // weblogic
+        "jakarta.transaction.TransactionManager", // weblogic
         "java:/TransactionManager", // jboss, jrun, Geronimo
         "java:/DefaultDomain/TransactionManager", // jrun too
         "java:comp/pm/TransactionManager", // orion & oracle
         "java:comp/TransactionManager", // generic
         "java:appserver/TransactionManager", // GlassFish
         "java:pm/TransactionManager", // borland
-        "aries:services/javax.transaction.TransactionManager", // Apache Aries
+        "aries:services/jakarta.transaction.TransactionManager", // Apache Aries
     };
     private static final String [] METHODS = new String[]{
         "com.arjuna.jta.JTA_TransactionManager.transactionManager", // hp
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/InvocationManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/InvocationManagedRuntime.java
index 0cd3e9e5d..cb74d942b 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/InvocationManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/InvocationManagedRuntime.java
@@ -20,7 +20,7 @@ package org.apache.openjpa.ee;
 
 import java.lang.reflect.Method;
 
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.lib.conf.Configurable;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/JNDIManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/JNDIManagedRuntime.java
index a63a7d474..c28c8fb15 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/JNDIManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/JNDIManagedRuntime.java
@@ -20,7 +20,7 @@ package org.apache.openjpa.ee;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
 
 /**
  * Implementation of the {@link ManagedRuntime} interface that uses JNDI to
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/ManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/ManagedRuntime.java
index 3beeb75c0..9e938f630 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/ManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/ManagedRuntime.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.ee;
 
-import javax.transaction.NotSupportedException;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.TransactionManager;
 
 /**
  * This interface must be implemented by concrete plugins to application
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/OSGiManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/OSGiManagedRuntime.java
index cc2dff1dc..bff2e9714 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/OSGiManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/OSGiManagedRuntime.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.ee;
 
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.util.InternalException;
 import org.osgi.framework.BundleActivator;
@@ -31,7 +31,7 @@ import org.osgi.framework.ServiceReference;
 
 /**
  * <p>Implementation of the {@link ManagedRuntime} interface that listens
- * for an OSGi service with interface <code>javax.transaction.TransactionManager</code>
+ * for an OSGi service with interface <code>jakarta.transaction.TransactionManager</code>
  * to create a {@link TransactionManager} for controlling transactions.</p>
  *
  * <p>The support for a transaction manager is usually activated inside an OSGi
@@ -87,7 +87,7 @@ public class OSGiManagedRuntime extends AbstractManagedRuntime {
     /**
      * <p>Register a service listener to the given bundle context by
      * {@link BundleContext#addServiceListener(ServiceListener,String)} with a filter
-     *  expression of <code>(objectClass=javax.transaction.TransactionManager)</code>.</p>
+     *  expression of <code>(objectClass=jakarta.transaction.TransactionManager)</code>.</p>
      *
      *  <p>The caller is responsible for calling
      *  {@link #deregisterServiceListener(BundleContext)}, when
@@ -106,9 +106,9 @@ public class OSGiManagedRuntime extends AbstractManagedRuntime {
         listener = new Listener(bundleContext);
 
         bundleContext.addServiceListener(listener, "(" + Constants.OBJECTCLASS
-            + "=javax.transaction.TransactionManager)");
+            + "=jakarta.transaction.TransactionManager)");
 
-        serviceReference = bundleContext.getServiceReference("javax.transaction.TransactionManager");
+        serviceReference = bundleContext.getServiceReference("jakarta.transaction.TransactionManager");
 
         if (serviceReference != null) {
             transactionManager = (TransactionManager)bundleContext.getService(serviceReference);
@@ -147,7 +147,7 @@ public class OSGiManagedRuntime extends AbstractManagedRuntime {
         synchronized (OSGiManagedRuntime.class) {
 
             if (transactionManager == null) {
-                throw new InternalException("No javax.transaction.TransactionManager " +
+                throw new InternalException("No jakarta.transaction.TransactionManager " +
                 		"service is currently registered as an OSGi service.");
             }
 
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/RegistryManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/RegistryManagedRuntime.java
index dd3b92752..f24da63a5 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/RegistryManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/RegistryManagedRuntime.java
@@ -20,16 +20,16 @@ package org.apache.openjpa.ee;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.xa.XAResource;
 
 import org.apache.openjpa.lib.util.Localizer;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/SunOneManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/SunOneManagedRuntime.java
index ff33600d8..577ff4c48 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/SunOneManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/SunOneManagedRuntime.java
@@ -20,7 +20,7 @@ package org.apache.openjpa.ee;
 
 import java.lang.reflect.Method;
 
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
 
 /**
  * {@link ManagedRuntime} implementation for SunONE.
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
index fbe3f60f8..553217374 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WASManagedRuntime.java
@@ -24,15 +24,15 @@ import java.lang.reflect.Method;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
 import javax.transaction.xa.XAResource;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
@@ -79,7 +79,7 @@ public class WASManagedRuntime extends AbstractManagedRuntime
      * wrapper
      */
     @Override
-    public javax.transaction.TransactionManager getTransactionManager()
+    public jakarta.transaction.TransactionManager getTransactionManager()
         throws Exception {
         return new WASTransaction();
     }
@@ -97,8 +97,8 @@ public class WASManagedRuntime extends AbstractManagedRuntime
      * <LI>GetStatus</LI>
      * </UL>
      */
-    class WASTransaction implements javax.transaction.TransactionManager,
-        javax.transaction.Transaction {
+    class WASTransaction implements jakarta.transaction.TransactionManager,
+        jakarta.transaction.Transaction {
 
         @Override
         public int getStatus() throws SystemException {
@@ -270,7 +270,7 @@ public class WASManagedRuntime extends AbstractManagedRuntime
 
     /**
      * WASSynchronization wrapper. This class translates the WAS proprietary
-     * synchronization callback methods to javax.transaction.Synchronization
+     * synchronization callback methods to jakarta.transaction.Synchronization
      * methods.
      *
      * <P>
@@ -296,7 +296,7 @@ public class WASManagedRuntime extends AbstractManagedRuntime
 
         /**
          * AfterCompletion wrapper. Translates the WAS proprietary call to a
-         * javax.transaction.Synchronization call.
+         * jakarta.transaction.Synchronization call.
          */
         public void afterCompletion(int localTransactionId,
             byte[] globalTransactionId, boolean committed) {
@@ -311,7 +311,7 @@ public class WASManagedRuntime extends AbstractManagedRuntime
 
         /**
          * BeforeCompletion wrapper. Translates WAS proprietary call to a
-         * javax.transaction.Synchronization call.
+         * jakarta.transaction.Synchronization call.
          */
         public void beforeCompletion(int arg0, byte[] arg1) {
             if (_sync != null) {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WLSManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WLSManagedRuntime.java
index dabb7449f..6ef9e452e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WLSManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/ee/WLSManagedRuntime.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.ee;
 
 import java.lang.reflect.Method;
 
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 
 /**
  * {@link ManagedRuntime} implementation that directly accesses the
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/event/JMSRemoteCommitProvider.java b/openjpa-kernel/src/main/java/org/apache/openjpa/event/JMSRemoteCommitProvider.java
index 99a89e059..3723e1d85 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/event/JMSRemoteCommitProvider.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/event/JMSRemoteCommitProvider.java
@@ -20,18 +20,18 @@ package org.apache.openjpa.event;
 
 import java.util.Properties;
 
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageListener;
-import javax.jms.ObjectMessage;
-import javax.jms.Session;
-import javax.jms.Topic;
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicPublisher;
-import javax.jms.TopicSession;
-import javax.jms.TopicSubscriber;
+import jakarta.jms.ExceptionListener;
+import jakarta.jms.JMSException;
+import jakarta.jms.Message;
+import jakarta.jms.MessageListener;
+import jakarta.jms.ObjectMessage;
+import jakarta.jms.Session;
+import jakarta.jms.Topic;
+import jakarta.jms.TopicConnection;
+import jakarta.jms.TopicConnectionFactory;
+import jakarta.jms.TopicPublisher;
+import jakarta.jms.TopicSession;
+import jakarta.jms.TopicSubscriber;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -197,7 +197,7 @@ public class JMSRemoteCommitProvider
     }
 
     /* *
-     * Returns a {@link javax.jms.MessageListener} capable of
+     * Returns a {@link jakarta.jms.MessageListener} capable of
      * understanding and processing messages created by {@link #createMessage}.
      *  The listener returned by this method is responsible for
      * notifying the provider that a remote event has been received.
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
index 957da41d5..81296787a 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
@@ -34,10 +34,10 @@ import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantLock;
 
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.lib.util.collections.AbstractReferenceMap.ReferenceStrength;
 import org.apache.openjpa.audit.Auditor;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Broker.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Broker.java
index 0426e9b8b..d1437dc66 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Broker.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/Broker.java
@@ -22,7 +22,7 @@ import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 
-import javax.transaction.Synchronization;
+import jakarta.transaction.Synchronization;
 
 import org.apache.openjpa.ee.ManagedRuntime;
 import org.apache.openjpa.event.CallbackModes;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
index 8d3cb5c6f..db9a6a8a3 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
@@ -41,8 +41,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.locks.ReentrantLock;
 
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
 
 import org.apache.openjpa.conf.Compatibility;
 import org.apache.openjpa.conf.OpenJPAConfiguration;
@@ -1593,7 +1593,7 @@ public class BrokerImpl implements Broker, FindCallbacks, Cloneable, Serializabl
         try {
             assertTransactionOperation();
 
-            javax.transaction.Transaction trans =
+            jakarta.transaction.Transaction trans =
                 _runtime.getTransactionManager().getTransaction();
             if (trans == null)
                 throw new InvalidStateException(_loc.get("null-trans"));
@@ -1620,7 +1620,7 @@ public class BrokerImpl implements Broker, FindCallbacks, Cloneable, Serializabl
         try {
             assertTransactionOperation();
 
-            javax.transaction.Transaction trans =
+            jakarta.transaction.Transaction trans =
                 _runtime.getTransactionManager().getTransaction();
             if (trans != null)
                 trans.rollback();
@@ -1686,7 +1686,7 @@ public class BrokerImpl implements Broker, FindCallbacks, Cloneable, Serializabl
             if ((_flags & FLAG_ACTIVE) == 0)
                 return false;
 
-            javax.transaction.Transaction trans =
+            jakarta.transaction.Transaction trans =
                 _runtime.getTransactionManager().getTransaction();
             if (trans == null)
                 return false;
@@ -1707,7 +1707,7 @@ public class BrokerImpl implements Broker, FindCallbacks, Cloneable, Serializabl
             if ((_flags & FLAG_ACTIVE) == 0)
                 return null;
 
-            javax.transaction.Transaction trans =
+            jakarta.transaction.Transaction trans =
                 _runtime.getTransactionManager().getTransaction();
             if (trans == null)
                 return null;
@@ -1745,7 +1745,7 @@ public class BrokerImpl implements Broker, FindCallbacks, Cloneable, Serializabl
      */
     private void setRollbackOnlyInternal(Throwable cause) {
         try {
-            javax.transaction.Transaction trans =
+            jakarta.transaction.Transaction trans =
                 _runtime.getTransactionManager().getTransaction();
             if (trans == null)
                 throw new InvalidStateException(_loc.get("null-trans"));
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
index 118eacb8d..bc8f1ad1d 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
@@ -68,7 +68,7 @@ public class FetchConfigurationImpl
     /**
      * Registers hint keys that have a corresponding setter method.
      * The hint keys are registered in <code>openjpa.FetchPlan</code> and <code>openjpa</code> as prefix.
-     * Also some keys are registered in <code>javax.persistence</code> namespace.
+     * Also some keys are registered in <code>jakarta.persistence</code> namespace.
      */
     static {
             String[] prefixes = {"openjpa.FetchPlan", "openjpa"};
@@ -78,10 +78,10 @@ public class FetchConfigurationImpl
             populateHintSetter(target, "FlushBeforeQueries", int.class, prefixes);
             populateHintSetter(target, "LockScope", int.class, prefixes);
             populateHintSetter(target, "LockTimeout", int.class, prefixes);
-            populateHintSetter(target, "setLockTimeout", "timeout", int.class, "javax.persistence.lock");
+            populateHintSetter(target, "setLockTimeout", "timeout", int.class, "jakarta.persistence.lock");
             populateHintSetter(target, "MaxFetchDepth", int.class, prefixes);
             populateHintSetter(target, "QueryTimeout", int.class, prefixes);
-            populateHintSetter(target, "setQueryTimeout", "timeout", int.class, "javax.persistence.query");
+            populateHintSetter(target, "setQueryTimeout", "timeout", int.class, "jakarta.persistence.query");
             populateHintSetter(target, "ReadLockLevel", int.class, prefixes);
             populateHintSetter(target, "setReadLockLevel", "ReadLockMode", int.class, prefixes);
             populateHintSetter(target, "WriteLockLevel", int.class, prefixes);
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/LocalManagedRuntime.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/LocalManagedRuntime.java
index 7bab6acde..3932c1f33 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/LocalManagedRuntime.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/LocalManagedRuntime.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.kernel;
 
-import javax.transaction.NotSupportedException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 import javax.transaction.xa.XAResource;
 
 import org.apache.openjpa.ee.AbstractManagedRuntime;
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLParser.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLParser.java
index a55298a8d..8df93c0fa 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLParser.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLParser.java
@@ -40,7 +40,7 @@ public class JPQLParser
     private static final long serialVersionUID = 1L;
     private static final Localizer _loc =
         Localizer.forPackage(JPQLParser.class);
-    public static final String LANG_JPQL = "javax.persistence.JPQL";
+    public static final String LANG_JPQL = "jakarta.persistence.JPQL";
 
     @Override
     public Object parse(String ql, ExpressionStoreQuery query) {
diff --git a/openjpa-kernel/src/main/resources/org/apache/openjpa/datacache/localizer.properties b/openjpa-kernel/src/main/resources/org/apache/openjpa/datacache/localizer.properties
index 09820dbc0..2aad2f9a0 100644
--- a/openjpa-kernel/src/main/resources/org/apache/openjpa/datacache/localizer.properties
+++ b/openjpa-kernel/src/main/resources/org/apache/openjpa/datacache/localizer.properties
@@ -116,4 +116,4 @@ invalid-types-excluded-types: Failed to configure openjpa.DataCache Types, Exclu
 	Types "{0}" were found in both lists, but can only appear one of the lists.
 recommend_jpa2_caching: You have specified the openjpa.DataCache property "{0}", but using that \
     property is not recommended. Use the JPA 2.0 shared-cache-mode element "{1}" \
-    in conjunction with the javax.persistence.Cacheable annotation instead.
+    in conjunction with the jakarta.persistence.Cacheable annotation instead.
diff --git a/openjpa-kernel/src/test/java/org/apache/openjpa/ee/TestOSGiManagedRuntime.java b/openjpa-kernel/src/test/java/org/apache/openjpa/ee/TestOSGiManagedRuntime.java
index 16b97ea84..fb9eb35a5 100644
--- a/openjpa-kernel/src/test/java/org/apache/openjpa/ee/TestOSGiManagedRuntime.java
+++ b/openjpa-kernel/src/test/java/org/apache/openjpa/ee/TestOSGiManagedRuntime.java
@@ -24,14 +24,14 @@ import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.List;
 
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.util.InternalException;
 import org.junit.Test;
@@ -52,11 +52,11 @@ import junit.framework.AssertionFailedError;
 import static org.junit.Assert.*;
 
 /**
- * Test javax.transaction.TransactionManager OSGi service discovery.
+ * Test jakarta.transaction.TransactionManager OSGi service discovery.
  */
 public class TestOSGiManagedRuntime {
 
-    private static final String TXN_MANAGER_CLASS_NAME = "javax.transaction.TransactionManager";
+    private static final String TXN_MANAGER_CLASS_NAME = "jakarta.transaction.TransactionManager";
 
     /**
      * A transaction manager instance an nothing more.
@@ -155,7 +155,7 @@ public class TestOSGiManagedRuntime {
     };
 
     /**
-     * A fake bundle context with a reference counter for a javax.transaction.TRansactionManager
+     * A fake bundle context with a reference counter for a jakarta.transaction.TRansactionManager
      */
     private static final class TestBundleContext implements BundleContext {
 
diff --git a/openjpa-kubernetes/pom.xml b/openjpa-kubernetes/pom.xml
index 16386ea4e..2707f1a34 100644
--- a/openjpa-kubernetes/pom.xml
+++ b/openjpa-kubernetes/pom.xml
@@ -28,7 +28,7 @@
   <parent>
     <groupId>org.apache.openjpa</groupId>
     <artifactId>openjpa-parent</artifactId>
-    <version>3.2.3-SNAPSHOT</version>
+    <version>4.0.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>openjpa-kubernetes</artifactId>
diff --git a/openjpa-lib/pom.xml b/openjpa-lib/pom.xml
index 61983976a..abaddc10b 100644
--- a/openjpa-lib/pom.xml
+++ b/openjpa-lib/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-lib</artifactId>
@@ -74,8 +74,8 @@
             <artifactId>serp</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-validation_1.1_spec</artifactId>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
index a69eb6811..b0acd1399 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java
@@ -835,7 +835,7 @@ public class ConfigurationImpl
      */
     private void warnInvalidProperty(String propName) {
         if (propName != null &&
-           (propName.startsWith("java.") || propName.startsWith("javax.persistence")|| propName.startsWith("sun.")))
+           (propName.startsWith("java.") || propName.startsWith("jakarta.persistence")|| propName.startsWith("sun.")))
             return;
         if (!isInvalidProperty(propName))
             return;
diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
index f02e011a1..96eb36610 100644
--- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
+++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/J2DoPrivHelper.java
@@ -49,10 +49,10 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.zip.ZipFile;
 
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
 
 import serp.bytecode.BCClass;
 import serp.bytecode.BCClassLoader;
@@ -117,8 +117,8 @@ import serp.bytecode.Project;
  * <li>AnnotatedElement.getAnnotations
  * <li>AnnotatedElement.getDeclaredAnnotations
  * <li>AnnotatedElement.isAnnotationPresent
- * <li>javax.validation.Validator.validate
- * <li>javax.validation.Validation.buildDefaultValidatorFactory
+ * <li>jakarta.validation.Validator.validate
+ * <li>jakarta.validation.Validation.buildDefaultValidatorFactory
  * </ul>
  *
  * If these methods are used, the following sample usage patterns should be
@@ -1303,7 +1303,7 @@ public abstract class J2DoPrivHelper {
     }
 
     /**
-     * Return a PrivilegeAction object for javax.validation.Validator.validate().
+     * Return a PrivilegeAction object for jakarta.validation.Validator.validate().
      *
      * Requires security policy: 'permission java.lang.RuntimePermission "accessDeclaredMemeber";'
      */
@@ -1318,7 +1318,7 @@ public abstract class J2DoPrivHelper {
     }
 
     /**
-     * Return a PrivilegeAction object for javax.validation.Validation.buildDefaultValidatorFactory().
+     * Return a PrivilegeAction object for jakarta.validation.Validation.buildDefaultValidatorFactory().
      *
      * Requires security policy: 'permission java.lang.RuntimePermission "createClassLoader";'
      */
diff --git a/openjpa-persistence-jdbc/pom.xml b/openjpa-persistence-jdbc/pom.xml
index c02c9db74..5223d1c05 100644
--- a/openjpa-persistence-jdbc/pom.xml
+++ b/openjpa-persistence-jdbc/pom.xml
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-parent</artifactId>
-        <version>3.2.3-SNAPSHOT</version>
+        <version>4.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>openjpa-persistence-jdbc</artifactId>
@@ -69,6 +69,10 @@
     </profiles>
 
     <dependencies>
+        <dependency>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.openjpa</groupId>
             <artifactId>openjpa-jdbc</artifactId>
diff --git a/openjpa-persistence-jdbc/src/main/ant/enhancer.xml b/openjpa-persistence-jdbc/src/main/ant/enhancer.xml
index 922da25c0..6168491c3 100644
--- a/openjpa-persistence-jdbc/src/main/ant/enhancer.xml
+++ b/openjpa-persistence-jdbc/src/main/ant/enhancer.xml
@@ -80,6 +80,7 @@
             <exclude name="**/proxy/entities/*.class" />
             <exclude name="**/xml/*.class" />
             <exclude name="**/Unenhanced*.class" />
+            <exclude name="**/Test*.class"/>
             <exclude name="org/apache/openjpa/enhance/EnhancedSuperClass.class"/>
             <exclude name="org/apache/openjpa/enhance/EnhancedSubClass.class"/>
             <exclude name="**/AbstractUnenhanced*.class" />
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
index 618dfb195..5c99264a7 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
@@ -108,38 +108,38 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.AssociationOverride;
-import javax.persistence.AssociationOverrides;
-import javax.persistence.AttributeOverride;
-import javax.persistence.AttributeOverrides;
-import javax.persistence.CollectionTable;
-import javax.persistence.ColumnResult;
-import javax.persistence.ConstructorResult;
-import javax.persistence.DiscriminatorColumn;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.EntityResult;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FieldResult;
-import javax.persistence.Inheritance;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinColumns;
-import javax.persistence.JoinTable;
-import javax.persistence.MapKeyColumn;
-import javax.persistence.MapKeyEnumerated;
-import javax.persistence.MapKeyJoinColumn;
-import javax.persistence.MapKeyJoinColumns;
-import javax.persistence.MapKeyTemporal;
-import javax.persistence.PrimaryKeyJoinColumn;
-import javax.persistence.PrimaryKeyJoinColumns;
-import javax.persistence.SecondaryTable;
-import javax.persistence.SecondaryTables;
-import javax.persistence.SqlResultSetMapping;
-import javax.persistence.SqlResultSetMappings;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-import javax.persistence.Temporal;
-import javax.persistence.UniqueConstraint;
+import jakarta.persistence.AssociationOverride;
+import jakarta.persistence.AssociationOverrides;
+import jakarta.persistence.AttributeOverride;
+import jakarta.persistence.AttributeOverrides;
+import jakarta.persistence.CollectionTable;
+import jakarta.persistence.ColumnResult;
+import jakarta.persistence.ConstructorResult;
+import jakarta.persistence.DiscriminatorColumn;
+import jakarta.persistence.DiscriminatorValue;
+import jakarta.persistence.EntityResult;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FieldResult;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinColumns;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.MapKeyColumn;
+import jakarta.persistence.MapKeyEnumerated;
+import jakarta.persistence.MapKeyJoinColumn;
+import jakarta.persistence.MapKeyJoinColumns;
+import jakarta.persistence.MapKeyTemporal;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+import jakarta.persistence.PrimaryKeyJoinColumns;
+import jakarta.persistence.SecondaryTable;
+import jakarta.persistence.SecondaryTables;
+import jakarta.persistence.SqlResultSetMapping;
+import jakarta.persistence.SqlResultSetMappings;
+import jakarta.persistence.Table;
+import jakarta.persistence.TableGenerator;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.UniqueConstraint;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.identifier.DBIdentifier;
@@ -207,7 +207,7 @@ public class AnnotationPersistenceMappingParser
         _tags.put(AssociationOverrides.class, ASSOC_OVERRIDES);
         _tags.put(AttributeOverride.class, ATTR_OVERRIDE);
         _tags.put(AttributeOverrides.class, ATTR_OVERRIDES);
-        _tags.put(javax.persistence.Column.class, COL);
+        _tags.put(jakarta.persistence.Column.class, COL);
         _tags.put(ColumnResult.class, COLUMN_RESULT);
         _tags.put(DiscriminatorColumn.class, DISCRIM_COL);
         _tags.put(DiscriminatorValue.class, DISCRIM_VAL);
@@ -266,7 +266,7 @@ public class AnnotationPersistenceMappingParser
         _tags.put(MappingOverrides.class, MAPPING_OVERRIDES);
         _tags.put(Nonpolymorphic.class, NONPOLY);
         _tags.put(OrderColumn.class, ORDER_COL);
-        _tags.put(javax.persistence.OrderColumn.class, ORDER_COLUMN);
+        _tags.put(jakarta.persistence.OrderColumn.class, ORDER_COLUMN);
         _tags.put(Strategy.class, STRAT);
         _tags.put(SubclassFetchMode.class, SUBCLASS_FETCH_MODE);
         _tags.put(Unique.class, UNIQUE);
@@ -653,7 +653,7 @@ public class AnnotationPersistenceMappingParser
     }
 
 
-    org.apache.openjpa.jdbc.schema.Index createIndex(MetaDataContext ctx, javax.persistence.Index anno) {
+    org.apache.openjpa.jdbc.schema.Index createIndex(MetaDataContext ctx, jakarta.persistence.Index anno) {
         String columnNames = anno.columnList();
         if (StringUtil.isEmpty(columnNames)) {
             throw new UserException(_loc.get("index-no-column", ctx));
@@ -677,8 +677,8 @@ public class AnnotationPersistenceMappingParser
     }
 
     void addIndices(String table, MetaDataContext ctx,
-        MappingInfo info, javax.persistence.Index... indices) {
-        for (javax.persistence.Index anno : indices) {
+        MappingInfo info, jakarta.persistence.Index... indices) {
+        for (jakarta.persistence.Index anno : indices) {
             org.apache.openjpa.jdbc.schema.Index idx = createIndex(ctx, anno);
             idx.setTableIdentifier(DBIdentifier.newTable(table, delimit()));
             if (info instanceof ClassMappingInfo)
@@ -1188,7 +1188,7 @@ public class AnnotationPersistenceMappingParser
                         value());
                     break;
                 case COL:
-                    parseColumns(fm, (javax.persistence.Column) anno);
+                    parseColumns(fm, (jakarta.persistence.Column) anno);
                     break;
                 case COLS:
                     parseColumns(fm, ((Columns) anno).value());
@@ -1349,7 +1349,7 @@ public class AnnotationPersistenceMappingParser
                     break;
                 case ORDER_COLUMN:
                     parseJavaxOrderColumn(fm,
-                        (javax.persistence.OrderColumn)anno);
+                        (jakarta.persistence.OrderColumn)anno);
                     break;
                 case ORDER_COL:
                     parseOrderColumn(fm, (OrderColumn) anno);
@@ -1669,7 +1669,7 @@ public class AnnotationPersistenceMappingParser
      * Parse @Column(s).
      */
     protected void parseColumns(FieldMapping fm,
-        javax.persistence.Column... pcols) {
+        jakarta.persistence.Column... pcols) {
         if (pcols.length == 0)
             return;
 
@@ -1725,7 +1725,7 @@ public class AnnotationPersistenceMappingParser
     /**
      * Create a new schema column with information from the given annotation.
      */
-    private static Column newColumn(javax.persistence.Column anno,
+    private static Column newColumn(jakarta.persistence.Column anno,
         boolean delimit) {
         Column col = new Column();
         setupColumn(col, anno, delimit);
@@ -1735,7 +1735,7 @@ public class AnnotationPersistenceMappingParser
     /**
      * Setup the given column with information from the given annotation.
      */
-    private static void setupColumn(Column col, javax.persistence.Column anno,
+    private static void setupColumn(Column col, jakarta.persistence.Column anno,
         boolean delimit) {
         if (!StringUtil.isEmpty(anno.name()))
             col.setIdentifier(DBIdentifier.newColumn(anno.name(),delimit));
@@ -2095,10 +2095,10 @@ public class AnnotationPersistenceMappingParser
     }
 
     /**
-     * Parse @javax.persistence.OrderColumn
+     * Parse @jakarta.persistence.OrderColumn
      */
     private void parseJavaxOrderColumn(FieldMapping fm,
-        javax.persistence.OrderColumn order) {
+        jakarta.persistence.OrderColumn order) {
 
         Column col = new Column();
         if (!StringUtil.isEmpty(order.name()))
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java
index 45b8148d4..82f089c90 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingSerializer.java
@@ -28,28 +28,28 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
-import javax.persistence.ColumnResult;
-import javax.persistence.DiscriminatorColumn;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.EntityResult;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FieldResult;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinColumns;
-import javax.persistence.JoinTable;
-import javax.persistence.Lob;
-import javax.persistence.PrimaryKeyJoinColumn;
-import javax.persistence.PrimaryKeyJoinColumns;
-import javax.persistence.SecondaryTable;
-import javax.persistence.SqlResultSetMapping;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.UniqueConstraint;
+import jakarta.persistence.ColumnResult;
+import jakarta.persistence.DiscriminatorColumn;
+import jakarta.persistence.DiscriminatorValue;
+import jakarta.persistence.EntityResult;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FieldResult;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinColumns;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.Lob;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+import jakarta.persistence.PrimaryKeyJoinColumns;
+import jakarta.persistence.SecondaryTable;
+import jakarta.persistence.SqlResultSetMapping;
+import jakarta.persistence.Table;
+import jakarta.persistence.TableGenerator;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
+import jakarta.persistence.UniqueConstraint;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.meta.ClassMapping;
@@ -749,7 +749,7 @@ public class AnnotationPersistenceMappingSerializer
         private Class<? extends Annotation> getColumnAnnotationType() {
             switch(this) {
                 case COL:
-                    return javax.persistence.Column.class;
+                    return jakarta.persistence.Column.class;
                 case JOIN:
                 case INVERSE:
                     return JoinColumn.class;
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/Columns.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/Columns.java
index 5e19a7ee1..3fe8c29aa 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/Columns.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/Columns.java
@@ -25,7 +25,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.persistence.Column;
+import jakarta.persistence.Column;
 
 /**
  * Allows the specification of multiple columns for complex mappings.
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java
index 729eecf8e..4a1ec35ee 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java
@@ -20,7 +20,7 @@ package org.apache.openjpa.persistence.jdbc;
 
 import java.util.Collection;
 
-import javax.persistence.LockModeType;
+import jakarta.persistence.LockModeType;
 
 import org.apache.openjpa.jdbc.kernel.EagerFetchModes;
 import org.apache.openjpa.jdbc.kernel.LRSSizes;
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java
index 333644187..5470d6788 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.persistence.jdbc;
 import java.sql.ResultSet;
 import java.util.Collection;
 
-import javax.persistence.LockModeType;
+import jakarta.persistence.LockModeType;
 
 import org.apache.openjpa.jdbc.kernel.DelegatingJDBCFetchConfiguration;
 import org.apache.openjpa.jdbc.kernel.EagerFetchModes;
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCPersistenceProductDerivation.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCPersistenceProductDerivation.java
index c754edef4..97248a215 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCPersistenceProductDerivation.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCPersistenceProductDerivation.java
@@ -24,7 +24,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.AttributeConverter;
+import jakarta.persistence.AttributeConverter;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.conf.OpenJPAProductDerivation;
@@ -64,7 +64,7 @@ public class JDBCPersistenceProductDerivation
         throws Exception {
         // make sure JPA is available
         AccessController.doPrivileged(J2DoPrivHelper.getClassLoaderAction(
-            javax.persistence.EntityManagerFactory.class));
+            jakarta.persistence.EntityManagerFactory.class));
     }
 
     @Override
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/MappingOverride.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/MappingOverride.java
index 64ca184e1..4cf4f9618 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/MappingOverride.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/MappingOverride.java
@@ -24,7 +24,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.persistence.Column;
+import jakarta.persistence.Column;
 
 /**
  * Allows override of complex embedded or superclass mappings.
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java
index 7ad549cdb..cded133a5 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingParser.java
@@ -65,10 +65,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import javax.persistence.DiscriminatorType;
-import javax.persistence.EnumType;
-import javax.persistence.InheritanceType;
-import javax.persistence.TemporalType;
+import jakarta.persistence.DiscriminatorType;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.TemporalType;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.identifier.DBIdentifier;
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
index 840d21e06..c1b30163f 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
@@ -29,8 +29,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
-import javax.persistence.EnumType;
-import javax.persistence.TemporalType;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.TemporalType;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.meta.ClassMapping;
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMappingOverride.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMappingOverride.java
index 3e0accbea..f0a055957 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMappingOverride.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMappingOverride.java
@@ -24,7 +24,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.persistence.Column;
+import jakarta.persistence.Column;
 
 /**
  * <p>Allows override of complex embedded or superclass mappings.</p>
diff --git a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XSecondaryTable.java b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XSecondaryTable.java
index e2b30c5fc..7b9b131cc 100644
--- a/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XSecondaryTable.java
+++ b/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XSecondaryTable.java
@@ -24,7 +24,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
-import javax.persistence.PrimaryKeyJoinColumn;
+import jakarta.persistence.PrimaryKeyJoinColumn;
 
 /**
  * Extended secondary table.
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/AuditedEntry.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/AuditedEntry.java
index 6c12a0e63..8d1944be9 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/AuditedEntry.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/AuditedEntry.java
@@ -24,16 +24,16 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.CascadeType;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
 
 import org.apache.openjpa.enhance.PersistenceCapable;
 import org.apache.openjpa.kernel.Audited;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestAudit.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestAudit.java
index 1e8f54d30..36f574e65 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestAudit.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestAudit.java
@@ -23,8 +23,8 @@ import java.lang.ref.ReferenceQueue;
 import java.lang.ref.WeakReference;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestBeginEventOnTransactionListener.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestBeginEventOnTransactionListener.java
index dcb51bb57..d4108064a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestBeginEventOnTransactionListener.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/TestBeginEventOnTransactionListener.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.audit;
 
 import java.util.Collection;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
 
 import org.apache.openjpa.ee.ManagedRuntime;
 import org.apache.openjpa.kernel.Audited;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/X.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/X.java
index af0dae42b..8be812a9f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/X.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/audit/X.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.audit;
 
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 
 /**
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestAutoDetachProperty.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestAutoDetachProperty.java
index ee7608a2c..8d9b4dd21 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestAutoDetachProperty.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestAutoDetachProperty.java
@@ -21,9 +21,9 @@ package org.apache.openjpa.conf;
 import java.util.EnumSet;
 import java.util.HashMap;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.persistence.AutoDetachType;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadAutoDetachProperty.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadAutoDetachProperty.java
index 0d4013ddf..4531adac3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadAutoDetachProperty.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadAutoDetachProperty.java
@@ -20,9 +20,9 @@ package org.apache.openjpa.conf;
 
 import java.util.HashMap;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceException;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceException;
 
 import org.apache.openjpa.lib.util.ParseException;
 import org.apache.openjpa.persistence.test.AbstractPersistenceTestCase;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadJdbcUrl.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadJdbcUrl.java
index 1f4b605d9..c58c5da04 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadJdbcUrl.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestBadJdbcUrl.java
@@ -20,10 +20,10 @@ package org.apache.openjpa.conf;
 
 import java.util.Properties;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.persistence.PersistenceException;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.PersistenceException;
 
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 import org.apache.openjpa.util.UserException;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestCacheMarshallerEndToEnd.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestCacheMarshallerEndToEnd.java
index 811f7ba1d..22133c19a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestCacheMarshallerEndToEnd.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestCacheMarshallerEndToEnd.java
@@ -22,8 +22,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.lib.log.Log;
 import org.apache.openjpa.persistence.JPAFacadeHelper;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestDynamicConfiguration.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestDynamicConfiguration.java
index fe5e8e87f..8539c5a6b 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestDynamicConfiguration.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestDynamicConfiguration.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.conf;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.lib.conf.Value;
 import org.apache.openjpa.meta.ClassMetaData;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestGetProperty.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestGetProperty.java
index ae1748f7e..18ca885fe 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestGetProperty.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestGetProperty.java
@@ -21,9 +21,9 @@ package org.apache.openjpa.conf;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryHints.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryHints.java
index 6f3020940..d278aed03 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryHints.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryHints.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.conf;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.jdbc.sql.MariaDBDictionary;
 import org.apache.openjpa.jdbc.sql.MySQLDictionary;
@@ -73,7 +73,7 @@ public class TestQueryHints extends SingleEMFTestCase {
     }
 
     public void testSupportedHintsContainJPAQueryHints() {
-        assertSupportedHint("javax.persistence.query.timeout", true);
+        assertSupportedHint("jakarta.persistence.query.timeout", true);
     }
 
     public void testUnrecognizedKeyIsIgnored() {
@@ -149,15 +149,15 @@ public class TestQueryHints extends SingleEMFTestCase {
     }
 
     public void testJPAHintSetsFetchPlan() {
-        query.setHint("javax.persistence.lock.timeout", 5671);
-        query.setHint("javax.persistence.query.timeout", 7500);
+        query.setHint("jakarta.persistence.lock.timeout", 5671);
+        query.setHint("jakarta.persistence.query.timeout", 7500);
         assertEquals(5671, query.getFetchPlan().getLockTimeout());
         assertEquals(7500, query.getFetchPlan().getQueryTimeout());
     }
 
     public void testInvalidLockTimeoutHint() {
         try {
-            query.setHint("javax.persistence.lock.timeout", -5671);
+            query.setHint("jakarta.persistence.lock.timeout", -5671);
             fail("Expected setHint to fail with an IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // expected
@@ -166,7 +166,7 @@ public class TestQueryHints extends SingleEMFTestCase {
 
     public void testInvalidQueryTimeoutHint() {
         try {
-            query.setHint("javax.persistence.query.timeout", -7500);
+            query.setHint("jakarta.persistence.query.timeout", -7500);
             fail("Expected setHint to fail with an IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // expected
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryProperties.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryProperties.java
index 38c2328a4..158b5283f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryProperties.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestQueryProperties.java
@@ -53,8 +53,8 @@ public class TestQueryProperties extends SingleEMFTestCase {
         super.setUp(QTimeout.class, CLEAR_TABLES);
         // create the Map to test overrides
         props = new HashMap<>();
-        props.put("javax.persistence.lock.timeout", "12000");
-        props.put("javax.persistence.query.timeout", "7000");
+        props.put("jakarta.persistence.lock.timeout", "12000");
+        props.put("jakarta.persistence.query.timeout", "7000");
     }
 
     public void testNoProperties() {
@@ -93,8 +93,8 @@ public class TestQueryProperties extends SingleEMFTestCase {
             q = em1.createNamedQuery("NoHintList");
             // verify no Query hints
             hints = q.getHints();
-            assertFalse(hints.containsKey("javax.persistence.lock.timeout"));
-            assertFalse(hints.containsKey("javax.persistence.query.timeout"));
+            assertFalse(hints.containsKey("jakarta.persistence.lock.timeout"));
+            assertFalse(hints.containsKey("jakarta.persistence.query.timeout"));
             // verify default config values of no timeouts
             timeout = q.getFetchPlan().getLockTimeout();
             assertEquals("Expected no default lock timeout", lTime.intValue(),
@@ -130,14 +130,14 @@ public class TestQueryProperties extends SingleEMFTestCase {
              * return these default values.
              *
             hints = q.getHints();
-            assertTrue(hints.containsKey("javax.persistence.lock.timeout"));
-            assertTrue(hints.containsKey("javax.persistence.query.timeout"));
+            assertTrue(hints.containsKey("jakarta.persistence.lock.timeout"));
+            assertTrue(hints.containsKey("jakarta.persistence.query.timeout"));
             timeout = new Integer((String) hints.get(
-                "javax.persistence.lock.timeout"));
+                "jakarta.persistence.lock.timeout"));
             assertEquals("Expected Map updated lockTimeout",
                 lTime.intValue(), timeout.intValue());
             timeout = new Integer((String) hints.get(
-                "javax.persistence.query.timeout"));
+                "jakarta.persistence.query.timeout"));
             assertEquals("Expected Map updated queryTimeout",
                 qTime.intValue(), timeout.intValue());
             */
@@ -155,17 +155,17 @@ public class TestQueryProperties extends SingleEMFTestCase {
             // verify setHint overrides Map provided properties
             lTime = 15000;
             qTime = 10000;
-            q.setHint("javax.persistence.lock.timeout", lTime);
-            q.setHint("javax.persistence.query.timeout", qTime);
+            q.setHint("jakarta.persistence.lock.timeout", lTime);
+            q.setHint("jakarta.persistence.query.timeout", qTime);
             hints = q.getHints();
             // verify getHints values were updated
-            timeout = (Integer) hints.get("javax.persistence.lock.timeout");
+            timeout = (Integer) hints.get("jakarta.persistence.lock.timeout");
             assertEquals(
-                "Expected setHint updated javax.persistence.lock.timeout",
+                "Expected setHint updated jakarta.persistence.lock.timeout",
                 lTime.intValue(), timeout.intValue());
-            timeout = (Integer) hints.get("javax.persistence.query.timeout");
+            timeout = (Integer) hints.get("jakarta.persistence.query.timeout");
             assertEquals(
-                "Expected setHint updated javax.persistence.query.timeout",
+                "Expected setHint updated jakarta.persistence.query.timeout",
                 qTime.intValue(), timeout.intValue());
             // verify internal config values were updated
             timeout = q.getFetchPlan().getLockTimeout();
@@ -260,7 +260,7 @@ public class TestQueryProperties extends SingleEMFTestCase {
             // verify getHints values were updated
             hints = q.getHints();
             timeout = new Integer((String)hints.get(
-                    "javax.persistence.query.timeout"));
+                    "jakarta.persistence.query.timeout"));
             assertEquals("Expected QueryHints updated query timeout",
                 qTime.intValue(), timeout.intValue());
             // verify internal config value was updated
@@ -274,14 +274,14 @@ public class TestQueryProperties extends SingleEMFTestCase {
             // verify setHint overrides QueryHint provided properties
             lTime = 15000;
             qTime = 10000;
-            q.setHint("javax.persistence.lock.timeout", lTime);
-            q.setHint("javax.persistence.query.timeout", qTime);
+            q.setHint("jakarta.persistence.lock.timeout", lTime);
+            q.setHint("jakarta.persistence.query.timeout", qTime);
             // verify getHints values were updated
             hints = q.getHints();
-            timeout = (Integer) hints.get("javax.persistence.lock.timeout");
+            timeout = (Integer) hints.get("jakarta.persistence.lock.timeout");
             assertEquals("Expected setHint updated lock timeout",
                 lTime.intValue(), timeout.intValue());
-            timeout = (Integer) hints.get("javax.persistence.query.timeout");
+            timeout = (Integer) hints.get("jakarta.persistence.query.timeout");
             assertEquals("Expected setHint updated query timeout",
                 qTime.intValue(), timeout.intValue());
             // verify internal config values were updated
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestSpecificationConfiguration.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestSpecificationConfiguration.java
index c351a5bb2..0f7ceae23 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestSpecificationConfiguration.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/conf/TestSpecificationConfiguration.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.conf;
 
-import javax.persistence.PersistenceException;
+import jakarta.persistence.PersistenceException;
 
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSubClass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSubClass.java
index adadbd4d9..fcfab979a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSubClass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSubClass.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.enhance;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
 
 /**
  * @see TestClassHierarchyEnhancement
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSuperClass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSuperClass.java
index a00a674d8..a223ece4d 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSuperClass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/EnhancedSuperClass.java
@@ -21,9 +21,9 @@ package org.apache.openjpa.enhance;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
 
 /**
  * @see TestClassHierarchyEnhancement
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestDataCachingAndUnenhancedPropertyAccess.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestDataCachingAndUnenhancedPropertyAccess.java
index aef5a2d97..e16cb23b4 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestDataCachingAndUnenhancedPropertyAccess.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestDataCachingAndUnenhancedPropertyAccess.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
index 1d70c326f..2f8054f54 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
@@ -17,7 +17,7 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance.java
index 130d78820..a6c611142 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 @Entity
 public class UnenhancedBootstrapInstance {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance2.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance2.java
index 287c5e321..912fecfce 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance2.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedBootstrapInstance2.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 @Entity
 public class UnenhancedBootstrapInstance2 {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccess.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccess.java
index 889967089..45977f2dc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccess.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccess.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
 
 import org.apache.openjpa.enhance.UnenhancedCompoundPKFieldAccess.PK;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSubclass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSubclass.java
index f79a4c9b6..3e0ad7c53 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSubclass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSubclass.java
@@ -17,8 +17,8 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.IdClass;
+import jakarta.persistence.Entity;
+import jakarta.persistence.IdClass;
 
 @Entity
 @IdClass(UnenhancedCompoundPKFieldAccessSubclass.PK.class)
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSuperclass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSuperclass.java
index ee7f0cfda..3720ead10 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSuperclass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKFieldAccessSuperclass.java
@@ -17,9 +17,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.MappedSuperclass;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
+import jakarta.persistence.MappedSuperclass;
 
 @MappedSuperclass
 @IdClass(UnenhancedCompoundPKFieldAccessSuperclass.PK.class)
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKPropertyAccess.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKPropertyAccess.java
index 280ba7a43..1db5ab463 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKPropertyAccess.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedCompoundPKPropertyAccess.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
 
 import org.apache.openjpa.enhance.UnenhancedCompoundPKPropertyAccess.PK;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccess.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccess.java
index 49770a988..535f4e96a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccess.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccess.java
@@ -20,15 +20,15 @@ package org.apache.openjpa.enhance;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
 
 @Entity
 @Table(name="UN_FIELD")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapper.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapper.java
index c41382ae6..3c7c8997c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapper.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapper.java
@@ -19,15 +19,15 @@ package org.apache.openjpa.enhance;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
 
 @Entity
 @Table(name = "UN_FIELD_WRAP")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapperSubclass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapperSubclass.java
index 931e666ed..b1bbee016 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapperSubclass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessPrimitiveWrapperSubclass.java
@@ -17,9 +17,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
 
 @Entity
 public class UnenhancedFieldAccessPrimitiveWrapperSubclass
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessSubclass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessSubclass.java
index 662063efd..f88072171 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessSubclass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedFieldAccessSubclass.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
 
 @Entity
 public class UnenhancedFieldAccessSubclass
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedIdentityIdPropertyAccess.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedIdentityIdPropertyAccess.java
index 4e6446927..c25ad5008 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedIdentityIdPropertyAccess.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedIdentityIdPropertyAccess.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
 
 @Entity
 public class UnenhancedIdentityIdPropertyAccess {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedMany.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedMany.java
index 6513e2be8..00478d933 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedMany.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedMany.java
@@ -19,9 +19,9 @@ package org.apache.openjpa.enhance;
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
 
 @Entity
 public class UnenhancedMany implements Serializable, Cloneable {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedOne.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedOne.java
index 82591a376..8dc84a359 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedOne.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedOne.java
@@ -21,9 +21,9 @@ import java.io.Serializable;
 import java.util.Collection;
 import java.util.HashSet;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
 
 @Entity
 public class UnenhancedOne implements Serializable, Cloneable {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
index 027e973a8..b0d8c7df9 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
@@ -17,7 +17,7 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
 
 @Entity
 public class UnenhancedPObject {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccess.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccess.java
index 0ba2fb78b..0b1aad3a6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccess.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccess.java
@@ -20,15 +20,15 @@ package org.apache.openjpa.enhance;
 
 import java.io.Serializable;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
 
 @Entity
 @Table(name="UN_PROP")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccessSubclass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccessSubclass.java
index c198a345f..895d75c27 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccessSubclass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPropertyAccessSubclass.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
 
 import org.apache.openjpa.persistence.Type;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedClass.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedClass.java
index 5bca64e0d..411a87545 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedClass.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedClass.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 @Entity
 public class UnenhancedUnlistedClass {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedReferer.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedReferer.java
index b44ff2fed..c41098917 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedReferer.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedUnlistedReferer.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.enhance;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
 
 @Entity
 public class UnenhancedUnlistedReferer {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Device.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Device.java
index 9dfbb6306..92ba506f6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Device.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Device.java
@@ -18,11 +18,11 @@
  */
 package org.apache.openjpa.enhance.ids;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="ID_DEVTBL")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Hardware.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Hardware.java
index 218ba1d7f..8e0bb63cc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Hardware.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Hardware.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.enhance.ids;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
+import jakarta.persistence.Table;
 
 @Table(name="ID_HWTBL")
 @IdClass(HardwareId.class)
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Software.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Software.java
index f385a2cd2..e1c04ca88 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Software.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/Software.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.enhance.ids;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="ID_SWTBL")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/TestOptimizeIdCopy.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/TestOptimizeIdCopy.java
index 9ccd9e893..47a76f01f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/TestOptimizeIdCopy.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/ids/TestOptimizeIdCopy.java
@@ -21,8 +21,8 @@ package org.apache.openjpa.enhance.ids;
 import java.util.List;
 import java.util.Random;
 
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestLifecycleListener.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestLifecycleListener.java
index 11edffecb..9b56b7ec8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestLifecycleListener.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestLifecycleListener.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.event;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.simple.AllFieldTypes;
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java
index 02b9e1b05..00c207308 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java
@@ -22,7 +22,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.Persistence;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.persistence.JPAFacadeHelper;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/CacheableEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/CacheableEntity.java
index 1d4dfdb5a..99de110e8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/CacheableEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/CacheableEntity.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.instrumentation;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="INST_CACHE_ENT")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/TestInstrumentationProvider.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/TestInstrumentationProvider.java
index 9a1911bc9..762eee37b 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/TestInstrumentationProvider.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/instrumentation/TestInstrumentationProvider.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.instrumentation;
 import java.util.Random;
 import java.util.Set;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.lib.instrumentation.Instrument;
 import org.apache.openjpa.lib.instrumentation.InstrumentationProvider;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/A.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/A.java
index 787e0be42..a70f60358 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/A.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/A.java
@@ -21,10 +21,10 @@ package org.apache.openjpa.jdbc.kernel;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
 
 import org.apache.openjpa.persistence.PersistentMap;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Employee.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Employee.java
index a2d158791..56e5d5fca 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Employee.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Employee.java
@@ -20,12 +20,12 @@ package org.apache.openjpa.jdbc.kernel;
 
 import java.util.Collection;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
 
 @Entity
 // Try not to collide with other Employee entities
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityA.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityA.java
index abf0d816c..bea5e4153 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityA.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityA.java
@@ -18,15 +18,15 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityB.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityB.java
index 1a12309d2..b7c3d009b 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityB.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityB.java
@@ -18,15 +18,15 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityC.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityC.java
index ddef4b0b5..9a7ba2670 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityC.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityC.java
@@ -18,15 +18,15 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 import org.apache.openjpa.persistence.Dependent;
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityD.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityD.java
index 1fb345efb..8d958fc80 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityD.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityD.java
@@ -18,14 +18,14 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityE.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityE.java
index df5b83026..a643760c7 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityE.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityE.java
@@ -18,14 +18,14 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityF.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityF.java
index d378636a6..d2428a044 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityF.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityF.java
@@ -19,10 +19,10 @@
 package org.apache.openjpa.jdbc.kernel;
 import java.util.List;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
 
 @Entity
 public class EntityF  {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityG.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityG.java
index f11367335..932e53886 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityG.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/EntityG.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
 
 import org.apache.openjpa.persistence.jdbc.ForeignKey;
 import org.apache.openjpa.persistence.jdbc.ForeignKeyAction;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniDepartment.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniDepartment.java
index f6bed98e2..a9091d089 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniDepartment.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniDepartment.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Version;
 
 @Entity
 public class M21UniDepartment {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniEmployee.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniEmployee.java
index 20b280740..b03b67ebc 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniEmployee.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M21UniEmployee.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Version;
 
 @Entity
 public class M21UniEmployee {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiDepartment.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiDepartment.java
index 18ca3a923..6671abecf 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiDepartment.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiDepartment.java
@@ -21,11 +21,11 @@ package org.apache.openjpa.jdbc.kernel;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.Version;
 
 @Entity
 public class M2MBiDepartment {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiEmployee.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiEmployee.java
index bddd88551..14e3139ae 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiEmployee.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/M2MBiEmployee.java
@@ -21,11 +21,11 @@ package org.apache.openjpa.jdbc.kernel;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.ManyToMany;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.Version;
 
 @Entity
 public class M2MBiEmployee {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/OptSelectEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/OptSelectEntity.java
index b6d39a814..2b6d40ac6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/OptSelectEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/OptSelectEntity.java
@@ -18,13 +18,13 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 @Entity
 public class OptSelectEntity {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Story.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Story.java
index a70bc5154..34f9b85a8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Story.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Story.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
 
 @Entity
 @Table(name = "PER_JDBC_KERN_STORY") // try not to collide
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Task.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Task.java
index c02091382..537b11864 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Task.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Task.java
@@ -20,13 +20,13 @@ package org.apache.openjpa.jdbc.kernel;
 
 import java.util.Collection;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
 
 @Entity
 @Table(name = "PER_JDBC_KERN_TASK")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestCollectionTracking.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestCollectionTracking.java
index d8e4ade12..f1cdb0266 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestCollectionTracking.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestCollectionTracking.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.jdbc.kernel;
 
 import java.util.Iterator;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java
index b9fb70d8a..7b4d154a3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestForeignKeyCountViolation.java
@@ -26,7 +26,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 import javax.sql.DataSource;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestInsertOrder.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestInsertOrder.java
index bf31d9608..6096310e6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestInsertOrder.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestInsertOrder.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.jdbc.kernel;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.test.SQLListenerTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM21UniVersion.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM21UniVersion.java
index 73d005223..104f44efb 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM21UniVersion.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM21UniVersion.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.jdbc.kernel;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM2MBiVersion.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM2MBiVersion.java
index 2f94250fd..fa01a2ced 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM2MBiVersion.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestM2MBiVersion.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.jdbc.kernel;
 import java.util.Collection;
 import java.util.Iterator;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestNoForeignKeyViolation.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestNoForeignKeyViolation.java
index 6413e38bb..487cac557 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestNoForeignKeyViolation.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestNoForeignKeyViolation.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.jdbc.kernel;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBool.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBool.java
index baa537911..b396432ac 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBool.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBool.java
@@ -17,9 +17,9 @@
  * under the License.
  */
 package org.apache.openjpa.jdbc.meta;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
 
 @Entity
 public class EntityBool {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBoolChar.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBoolChar.java
index 2b415d254..f4225b3eb 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBoolChar.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/EntityBoolChar.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.jdbc.meta;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
 
 @Entity
 public class EntityBoolChar {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestBooleanValue.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestBooleanValue.java
index 1d1f1a4bc..2ba158146 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestBooleanValue.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestBooleanValue.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.jdbc.meta;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.identifier.DBIdentifier;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestMappingToolAutoDelete.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestMappingToolAutoDelete.java
index a50448270..371798f85 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestMappingToolAutoDelete.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestMappingToolAutoDelete.java
@@ -23,8 +23,8 @@ import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.schema.SchemaTool;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/AbstractLobTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/AbstractLobTest.java
index 26491f16d..dbd6bdd1d 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/AbstractLobTest.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/AbstractLobTest.java
@@ -24,8 +24,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.datacache.DataCachePCData;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/InputStreamLobEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/InputStreamLobEntity.java
index 0281a90bc..7d3694866 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/InputStreamLobEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/InputStreamLobEntity.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.jdbc.meta.strats;
 
 import java.io.InputStream;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 import org.apache.openjpa.persistence.Persistent;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/ReaderLobEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/ReaderLobEntity.java
index dead3049a..34fa0bbac 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/ReaderLobEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/strats/ReaderLobEntity.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.jdbc.meta.strats;
 
 import java.io.Reader;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 import org.apache.openjpa.persistence.Persistent;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/TestOracleXmlColumn.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/TestOracleXmlColumn.java
index bb693dc66..16e06a4f0 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/TestOracleXmlColumn.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/TestOracleXmlColumn.java
@@ -22,8 +22,8 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityTransaction;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
 import javax.sql.DataSource;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/XmlColEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/XmlColEntity.java
index 9c0a0fff5..8af5c8032 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/XmlColEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/oracle/XmlColEntity.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.jdbc.oracle;
 
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.Version;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Lob;
+import jakarta.persistence.Version;
 
 @Entity
 public class XmlColEntity {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Artist.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Artist.java
index 0509fe81b..f06e57e79 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Artist.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Artist.java
@@ -20,13 +20,13 @@ package org.apache.openjpa.jdbc.persistence.classcriteria;
 
 import java.util.Collection;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name = "ARTIST")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Book.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Book.java
index aebdabd15..f3d27f8ab 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Book.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Book.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.jdbc.persistence.classcriteria;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.DiscriminatorValue;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToOne;
 
 @Entity
 @DiscriminatorValue(value = "BOOK")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Item.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Item.java
index 6ca29dc89..7a610a941 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Item.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Item.java
@@ -20,16 +20,16 @@ package org.apache.openjpa.jdbc.persistence.classcriteria;
 
 import java.io.Serializable;
 
-import javax.persistence.Column;
-import javax.persistence.DiscriminatorColumn;
-import javax.persistence.DiscriminatorType;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
-import javax.persistence.Transient;
+import jakarta.persistence.Column;
+import jakarta.persistence.DiscriminatorColumn;
+import jakarta.persistence.DiscriminatorType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Inheritance;
+import jakarta.persistence.InheritanceType;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
 
 @Entity
 @Table(name = "ITEMTABLE")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Movie.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Movie.java
index 781e61a59..3a3c4c25b 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Movie.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/persistence/classcriteria/Movie.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.jdbc.persistence.classcriteria;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.DiscriminatorValue;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.DiscriminatorValue;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToOne;
 
 @Entity
 @DiscriminatorValue(value = "MOVIE")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/TestStoredProcedure.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/TestStoredProcedure.java
index 5d8ef187c..42acb9af6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/TestStoredProcedure.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/TestStoredProcedure.java
@@ -20,9 +20,9 @@ package org.apache.openjpa.jdbc.procedure;
 
 import java.util.Iterator;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityTransaction;
-import javax.persistence.StoredProcedureQuery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityTransaction;
+import jakarta.persistence.StoredProcedureQuery;
 
 import org.apache.openjpa.jdbc.procedure.derby.Procedures;
 import org.apache.openjpa.jdbc.procedure.entity.EntityWithStoredProcedure;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/entity/EntityWithStoredProcedure.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/entity/EntityWithStoredProcedure.java
index 673e8c1b2..5b725ef57 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/entity/EntityWithStoredProcedure.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/procedure/entity/EntityWithStoredProcedure.java
@@ -18,17 +18,17 @@
  */
 package org.apache.openjpa.jdbc.procedure.entity;
 
-import static javax.persistence.ParameterMode.INOUT;
-import static javax.persistence.ParameterMode.OUT;
-
-import javax.persistence.Entity;
-import javax.persistence.EntityResult;
-import javax.persistence.Id;
-import javax.persistence.NamedStoredProcedureQueries;
-import javax.persistence.NamedStoredProcedureQuery;
-import javax.persistence.SqlResultSetMapping;
-import javax.persistence.SqlResultSetMappings;
-import javax.persistence.StoredProcedureParameter;
+import static jakarta.persistence.ParameterMode.INOUT;
+import static jakarta.persistence.ParameterMode.OUT;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.EntityResult;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedStoredProcedureQueries;
+import jakarta.persistence.NamedStoredProcedureQuery;
+import jakarta.persistence.SqlResultSetMapping;
+import jakarta.persistence.SqlResultSetMappings;
+import jakarta.persistence.StoredProcedureParameter;
 
 @Entity
 @NamedStoredProcedureQueries({
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/AllFieldTypes.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/DelimitedIdentifiersAllFieldTypesEntity.java
similarity index 85%
copy from openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/AllFieldTypes.java
copy to openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/DelimitedIdentifiersAllFieldTypesEntity.java
index a97aa466f..210a3747c 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/AllFieldTypes.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/DelimitedIdentifiersAllFieldTypesEntity.java
@@ -1,22 +1,20 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
  *
- * http://www.apache.org/licenses/LICENSE-2.0
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
-package org.apache.openjpa.persistence.simple;
+package org.apache.openjpa.jdbc.sql;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -33,16 +31,18 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-
 import org.apache.openjpa.persistence.PersistentCollection;
 
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.OneToOne;
+
 @Entity
-public class AllFieldTypes {
+public class DelimitedIdentifiersAllFieldTypesEntity {
 
-    public enum EnumType {Value1, Value2}
+    public enum EnumType {
+        Value1, Value2
+    }
 
     // @Basic types
     private short shortField;
@@ -85,9 +85,9 @@ public class AllFieldTypes {
 
     // one-to-one and one-to-many relations to self
     @OneToOne
-    private AllFieldTypes selfOneOne;
+    private DelimitedIdentifiersAllFieldTypesEntity selfOneOne;
     @OneToMany
-    private List<AllFieldTypes> selfOneMany = new ArrayList<>();
+    private List<DelimitedIdentifiersAllFieldTypesEntity> selfOneMany = new ArrayList<>();
 
     // Java8 DateTime types which are required by the JPA-2.2 spec
     private LocalDate localDateField;
@@ -96,7 +96,6 @@ public class AllFieldTypes {
     private OffsetTime offsetTimeField;
     private OffsetDateTime offsetDateTimeField;
 
-
     public void setShortField(short shortField) {
         this.shortField = shortField;
     }
@@ -361,23 +360,22 @@ public class AllFieldTypes {
         wShortField = shortField;
     }
 
-    public AllFieldTypes getSelfOneOne() {
+    public DelimitedIdentifiersAllFieldTypesEntity getSelfOneOne() {
         return selfOneOne;
     }
 
-    public void setSelfOneOne(AllFieldTypes selfOneOne) {
+    public void setSelfOneOne(DelimitedIdentifiersAllFieldTypesEntity selfOneOne) {
         this.selfOneOne = selfOneOne;
     }
 
-    public List<AllFieldTypes> getSelfOneMany() {
+    public List<DelimitedIdentifiersAllFieldTypesEntity> getSelfOneMany() {
         return selfOneMany;
     }
 
-    public void setSelfOneMany(List<AllFieldTypes> selfOneMany) {
+    public void setSelfOneMany(List<DelimitedIdentifiersAllFieldTypesEntity> selfOneMany) {
         this.selfOneMany = selfOneMany;
     }
 
-
     public LocalDate getLocalDateField() {
         return localDateField;
     }
@@ -418,4 +416,3 @@ public class AllFieldTypes {
         this.offsetDateTimeField = offsetDateTimeField;
     }
 }
-
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLEntity.java
new file mode 100644
index 000000000..a55d3315f
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLEntity.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.jdbc.sql;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class SnakeCaseDDLEntity {
+    @Id
+    private String fooBar;
+
+    private int thisField;
+
+    public int getThisField() {
+        return thisField;
+    }
+
+    public void setThisField(int thisField) {
+        this.thisField = thisField;
+    }
+
+    public String getFooBar() {
+        return fooBar;
+    }
+
+    public void setFooBar(String fooBar) {
+        this.fooBar = fooBar;
+    }
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy2Entity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy2Entity.java
new file mode 100644
index 000000000..bfe5362e2
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/SnakeCaseDDLMy2Entity.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.jdbc.sql;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+
+@Entity
+public class SnakeCaseDDLMy2Entity {
+    @Id
+    private String anotherField;
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java
index 1ae5ec28c..187fefa11 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestDelimitIdentifiers.java
@@ -24,9 +24,8 @@ import org.apache.openjpa.persistence.PersistenceProviderImpl;
 import org.apache.openjpa.persistence.PersistenceUnitInfoImpl;
 import org.junit.Test;
 
-import javax.persistence.Entity;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
 
 import java.sql.Driver;
 import java.sql.SQLException;
@@ -34,27 +33,12 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Set;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.Statement;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.OffsetDateTime;
-import java.time.OffsetTime;
-import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collection;
-import java.util.Date;
-import java.util.List;
 import java.util.Map;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import org.apache.openjpa.persistence.PersistentCollection;
 
 public class TestDelimitIdentifiers {
 
@@ -85,7 +69,7 @@ public class TestDelimitIdentifiers {
 
         final PersistenceUnitInfoImpl persistenceUnitInfo = new PersistenceUnitInfoImpl();
         persistenceUnitInfo.setExcludeUnlistedClasses(true);
-        persistenceUnitInfo.addManagedClassName(AllFieldTypes.class.getName());
+        persistenceUnitInfo.addManagedClassName(DelimitedIdentifiersAllFieldTypesEntity.class.getName());
         final BasicDataSource ds = new BasicDataSource();
         ds.setDriver(derbyDriver);
         ds.setUrl("jdbc:derby:memory:TestDelimitIdentifiers;create=true");
@@ -123,8 +107,8 @@ public class TestDelimitIdentifiers {
         final EntityManagerFactory entityManagerFactory = new PersistenceProviderImpl()
                 .createContainerEntityManagerFactory(persistenceUnitInfo, new HashMap());
         try {
-            final AllFieldTypes entity = new AllFieldTypes();
-            final AllFieldTypes entity2 = new AllFieldTypes();
+            final DelimitedIdentifiersAllFieldTypesEntity entity = new DelimitedIdentifiersAllFieldTypesEntity();
+            final DelimitedIdentifiersAllFieldTypesEntity entity2 = new DelimitedIdentifiersAllFieldTypesEntity();
             {
                 final EntityManager em = entityManagerFactory.createEntityManager();
                 em.getTransaction().begin();
@@ -166,383 +150,4 @@ public class TestDelimitIdentifiers {
         ds.close();
     }
 
-    @Entity
-    public static class AllFieldTypes {
-
-        public enum EnumType {
-            Value1, Value2
-        }
-
-        // @Basic types
-        private short shortField;
-        private int intField;
-        private boolean booleanField;
-        private long longField;
-        private float floatField;
-        private char charField;
-        private double doubleField;
-        private byte byteField;
-        private Short wShortField;
-        private Integer wIntegerField;
-        private Boolean wBooleanField;
-        private Long wLongField;
-        private Float wFloatField;
-        private Character wCharacterField;
-        private Double wDoubleField;
-        private Byte wByteField;
-        private BigInteger bigIntegerField;
-        private BigDecimal bigDecimalField;
-        private String stringField;
-        private Date dateField;
-        private Calendar calendarField;
-        private java.sql.Date sqlDateField;
-        private java.sql.Time sqlTimeField;
-        private java.sql.Timestamp sqlTimestampField;
-        private byte[] byteLob;
-        private Byte[] wByteLob;
-        private char[] charLob;
-        private Character[] wCharacterLob;
-        private EnumType enumField;
-        private Serializable serializableField;
-
-        // Additional types
-        private Set<String> setOfStrings = new HashSet<>();
-        private String[] arrayOfStrings;
-
-        @PersistentCollection
-        private int[] arrayOfInts;
-
-        // one-to-one and one-to-many relations to self
-        @OneToOne
-        private AllFieldTypes selfOneOne;
-        @OneToMany
-        private List<AllFieldTypes> selfOneMany = new ArrayList<>();
-
-        // Java8 DateTime types which are required by the JPA-2.2 spec
-        private LocalDate localDateField;
-        private LocalTime localTimeField;
-        private LocalDateTime localDateTimeField;
-        private OffsetTime offsetTimeField;
-        private OffsetDateTime offsetDateTimeField;
-
-        public void setShortField(short shortField) {
-            this.shortField = shortField;
-        }
-
-        public short getShortField() {
-            return this.shortField;
-        }
-
-        public void setIntField(int intField) {
-            this.intField = intField;
-        }
-
-        public int getIntField() {
-            return this.intField;
-        }
-
-        public void setBooleanField(boolean booleanField) {
-            this.booleanField = booleanField;
-        }
-
-        public boolean getBooleanField() {
-            return this.booleanField;
-        }
-
-        public void setLongField(long longField) {
-            this.longField = longField;
-        }
-
-        public long getLongField() {
-            return this.longField;
-        }
-
-        public void setFloatField(float floatField) {
-            this.floatField = floatField;
-        }
-
-        public float getFloatField() {
-            return this.floatField;
-        }
-
-        public void setCharField(char charField) {
-            this.charField = charField;
-        }
-
-        public char getCharField() {
-            return this.charField;
-        }
-
-        public void setDoubleField(double doubleField) {
-            this.doubleField = doubleField;
-        }
-
-        public double getDoubleField() {
-            return this.doubleField;
-        }
-
-        public void setByteField(byte byteField) {
-            this.byteField = byteField;
-        }
-
-        public byte getByteField() {
-            return this.byteField;
-        }
-
-        public void setStringField(String stringField) {
-            this.stringField = stringField;
-        }
-
-        public String getStringField() {
-            return this.stringField;
-        }
-
-        public void setDateField(Date dateField) {
-            this.dateField = dateField;
-        }
-
-        public Date getDateField() {
-            return this.dateField;
-        }
-
-        public void setSetOfStrings(Set<String> setOfStrings) {
-            this.setOfStrings = setOfStrings;
-        }
-
-        public Set<String> getSetOfStrings() {
-            return this.setOfStrings;
-        }
-
-        public void setArrayOfStrings(String[] arrayOfStrings) {
-            this.arrayOfStrings = arrayOfStrings;
-        }
-
-        public String[] getArrayOfStrings() {
-            return this.arrayOfStrings;
-        }
-
-        public void setArrayOfInts(int[] arrayOfInts) {
-            this.arrayOfInts = arrayOfInts;
-        }
-
-        public int[] getArrayOfInts() {
-            return arrayOfInts;
-        }
-
-        public BigDecimal getBigDecimalField() {
-            return bigDecimalField;
-        }
-
-        public void setBigDecimalField(BigDecimal bigDecimalField) {
-            this.bigDecimalField = bigDecimalField;
-        }
-
-        public BigInteger getBigIntegerField() {
-            return bigIntegerField;
-        }
-
-        public void setBigIntegerField(BigInteger bigIntegerField) {
-            this.bigIntegerField = bigIntegerField;
-        }
-
-        public byte[] getByteLob() {
-            return byteLob;
-        }
-
-        public void setByteLob(byte[] byteLob) {
-            this.byteLob = byteLob;
-        }
-
-        public Calendar getCalendarField() {
-            return calendarField;
-        }
-
-        public void setCalendarField(Calendar calendarField) {
-            this.calendarField = calendarField;
-        }
-
-        public char[] getCharLob() {
-            return charLob;
-        }
-
-        public void setCharLob(char[] charLob) {
-            this.charLob = charLob;
-        }
-
-        public EnumType getEnumField() {
-            return enumField;
-        }
-
-        public void setEnumField(EnumType enumField) {
-            this.enumField = enumField;
-        }
-
-        public Serializable getSerializableField() {
-            return serializableField;
-        }
-
-        public void setSerializableField(Serializable serializableField) {
-            this.serializableField = serializableField;
-        }
-
-        public java.sql.Date getSqlDateField() {
-            return sqlDateField;
-        }
-
-        public void setSqlDateField(java.sql.Date sqlDateField) {
-            this.sqlDateField = sqlDateField;
-        }
-
-        public java.sql.Time getSqlTimeField() {
-            return sqlTimeField;
-        }
-
-        public void setSqlTimeField(java.sql.Time sqlTimeField) {
-            this.sqlTimeField = sqlTimeField;
-        }
-
-        public java.sql.Timestamp getSqlTimestampField() {
-            return sqlTimestampField;
-        }
-
-        public void setSqlTimestampField(java.sql.Timestamp sqlTimestampField) {
-            this.sqlTimestampField = sqlTimestampField;
-        }
-
-        public Boolean getWBooleanField() {
-            return wBooleanField;
-        }
-
-        public void setWBooleanField(Boolean booleanField) {
-            wBooleanField = booleanField;
-        }
-
-        public Byte getWByteField() {
-            return wByteField;
-        }
-
-        public void setWByteField(Byte byteField) {
-            wByteField = byteField;
-        }
-
-        public Byte[] getWByteLob() {
-            return wByteLob;
-        }
-
-        public void setWByteLob(Byte[] byteLob) {
-            wByteLob = byteLob;
-        }
-
-        public Character getWCharacterField() {
-            return wCharacterField;
-        }
-
-        public void setWCharacterField(Character characterField) {
-            wCharacterField = characterField;
-        }
-
-        public Character[] getWCharacterLob() {
-            return wCharacterLob;
-        }
-
-        public void setWCharacterLob(Character[] characterLob) {
-            wCharacterLob = characterLob;
-        }
-
-        public Double getWDoubleField() {
-            return wDoubleField;
-        }
-
-        public void setWDoubleField(Double doubleField) {
-            wDoubleField = doubleField;
-        }
-
-        public Float getWFloatField() {
-            return wFloatField;
-        }
-
-        public void setWFloatField(Float floatField) {
-            wFloatField = floatField;
-        }
-
-        public Integer getWIntegerField() {
-            return wIntegerField;
-        }
-
-        public void setWIntegerField(Integer integerField) {
-            wIntegerField = integerField;
-        }
-
-        public Long getWLongField() {
-            return wLongField;
-        }
-
-        public void setWLongField(Long longField) {
-            wLongField = longField;
-        }
-
-        public Short getWShortField() {
-            return wShortField;
-        }
-
-        public void setWShortField(Short shortField) {
-            wShortField = shortField;
-        }
-
-        public AllFieldTypes getSelfOneOne() {
-            return selfOneOne;
-        }
-
-        public void setSelfOneOne(AllFieldTypes selfOneOne) {
-            this.selfOneOne = selfOneOne;
-        }
-
-        public List<AllFieldTypes> getSelfOneMany() {
-            return selfOneMany;
-        }
-
-        public void setSelfOneMany(List<AllFieldTypes> selfOneMany) {
-            this.selfOneMany = selfOneMany;
-        }
-
-        public LocalDate getLocalDateField() {
-            return localDateField;
-        }
-
-        public void setLocalDateField(LocalDate localDateField) {
-            this.localDateField = localDateField;
-        }
-
-        public LocalTime getLocalTimeField() {
-            return localTimeField;
-        }
-
-        public void setLocalTimeField(LocalTime localTimeField) {
-            this.localTimeField = localTimeField;
-        }
-
-        public LocalDateTime getLocalDateTimeField() {
-            return localDateTimeField;
-        }
-
-        public void setLocalDateTimeField(LocalDateTime localDateTimeField) {
-            this.localDateTimeField = localDateTimeField;
-        }
-
-        public OffsetTime getOffsetTimeField() {
-            return offsetTimeField;
-        }
-
-        public void setOffsetTimeField(OffsetTime offsetTimeField) {
-            this.offsetTimeField = offsetTimeField;
-        }
-
-        public OffsetDateTime getOffsetDateTimeField() {
-            return offsetDateTimeField;
-        }
-
-        public void setOffsetDateTimeField(OffsetDateTime offsetDateTimeField) {
-            this.offsetDateTimeField = offsetDateTimeField;
-        }
-    }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
index ac36b1f1c..35d7c8329 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/sql/TestSnakeCaseDDL.java
@@ -23,10 +23,9 @@ import org.apache.openjpa.persistence.PersistenceProviderImpl;
 import org.apache.openjpa.persistence.PersistenceUnitInfoImpl;
 import org.junit.Test;
 
-import javax.persistence.Entity;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Id;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+
 import java.sql.Connection;
 import java.sql.Driver;
 import java.sql.ResultSet;
@@ -63,8 +62,8 @@ public class TestSnakeCaseDDL {
 
         final PersistenceUnitInfoImpl persistenceUnitInfo = new PersistenceUnitInfoImpl();
         persistenceUnitInfo.setExcludeUnlistedClasses(true);
-        persistenceUnitInfo.addManagedClassName(MyEntity1.class.getName());
-        persistenceUnitInfo.addManagedClassName(MyEntity2.class.getName());
+        persistenceUnitInfo.addManagedClassName(SnakeCaseDDLEntity.class.getName());
+        persistenceUnitInfo.addManagedClassName(SnakeCaseDDLMy2Entity.class.getName());
         final BasicDataSource ds = new BasicDataSource();
         ds.setDriver(derbyDriver);
         ds.setUrl("jdbc:derby:memory:ddlInSnakeCase;create=true");
@@ -101,7 +100,7 @@ public class TestSnakeCaseDDL {
                 final EntityManager em = entityManagerFactory.createEntityManager();
                 em.getTransaction().begin();
                 try {
-                    final MyEntity1 entity = new MyEntity1();
+                    final SnakeCaseDDLEntity entity = new SnakeCaseDDLEntity();
                     entity.setFooBar("1");
                     entity.setThisField(123);
                     em.persist(entity);
@@ -118,7 +117,7 @@ public class TestSnakeCaseDDL {
             {
                 final EntityManager em = entityManagerFactory.createEntityManager();
                 try {
-                    final MyEntity1 myEntity1 = em.find(MyEntity1.class, "1");
+                    final SnakeCaseDDLEntity myEntity1 = em.find(SnakeCaseDDLEntity.class, "1");
                     assertNotNull(myEntity1);
                     assertEquals("1", myEntity1.getFooBar());
                     assertEquals(123, myEntity1.getThisField());
@@ -144,33 +143,4 @@ public class TestSnakeCaseDDL {
         assertEquals(singleton("ANOTHER_FIELD"), columns.get("TestSnakeCaseDDL$MyEntity2"));
     }
 
-    @Entity
-    public static class MyEntity1 {
-        @Id
-        private String fooBar;
-
-        private int thisField;
-
-        public int getThisField() {
-            return thisField;
-        }
-
-        public void setThisField(int thisField) {
-            this.thisField = thisField;
-        }
-
-        public String getFooBar() {
-            return fooBar;
-        }
-
-        public void setFooBar(String fooBar) {
-            this.fooBar = fooBar;
-        }
-    }
-
-    @Entity
-    public static class MyEntity2 {
-        @Id
-        private String anotherField;
-    }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/BadVersionFieldEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/BadVersionFieldEntity.java
new file mode 100644
index 000000000..22a472ba6
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/BadVersionFieldEntity.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.jira1100;
+
+import java.math.BigDecimal;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
+
+/**
+ * Declares a Version field of unsupported type.
+ */
+@Entity
+@Table(name = "BadVersionField")
+public class BadVersionFieldEntity {
+    @Id
+    @GeneratedValue
+    private long id;
+
+    @Version
+    private BigDecimal version;
+
+    public long getId() {
+        return id;
+    }
+
+    public BigDecimal getVersion() {
+        return version;
+    }
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/TestBadVersionField.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/TestBadVersionField.java
index 2f3bb10df..3ae573586 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/TestBadVersionField.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1100/TestBadVersionField.java
@@ -18,14 +18,7 @@
  */
 package org.apache.openjpa.jira1100;
 
-import java.math.BigDecimal;
-
-import javax.persistence.Entity;
-import javax.persistence.EntityManager;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Version;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
@@ -43,7 +36,7 @@ import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 public class TestBadVersionField extends SingleEMFTestCase {
     @Override
     public void setUp() {
-        super.setUp(CLEAR_TABLES, Data.class);
+        super.setUp(CLEAR_TABLES, BadVersionFieldEntity.class);
     }
 
     public void testWrongVersionFieldNotSupported() {
@@ -55,27 +48,4 @@ public class TestBadVersionField extends SingleEMFTestCase {
         }
     }
 
-    /**
-     * Declares a Version field of unsupported type.
-     *
-     */
-    @Entity
-    @Table(name="BadVersionField")
-    public class Data {
-        @Id
-        @GeneratedValue
-        private long id;
-
-        @Version
-        private BigDecimal version;
-
-        public long getId() {
-            return id;
-        }
-
-        public BigDecimal getVersion() {
-            return version;
-        }
-    }
-
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity.java
index ccb58dbb2..98e73d220 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity.java
@@ -20,10 +20,10 @@ package org.apache.openjpa.jira1794;
 
 import java.util.Date;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name = "j1794_ae")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity_.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity_.java
index 495581940..f40682524 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity_.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/AggEntity_.java
@@ -22,9 +22,9 @@
 **/
 package org.apache.openjpa.jira1794;
 
-import javax.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.metamodel.SingularAttribute;
 
-@javax.persistence.metamodel.StaticMetamodel
+@jakarta.persistence.metamodel.StaticMetamodel
 (value=org.apache.openjpa.jira1794.AggEntity.class)
 public class AggEntity_ {
     public static volatile SingularAttribute<AggEntity,Short> pshortVal;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
index 71af87c22..ed8feec42 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira1794/TestAggregateFunctions.java
@@ -20,16 +20,16 @@ package org.apache.openjpa.jira1794;
 
 import java.util.List;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.Path;
-import javax.persistence.criteria.Root;
-import javax.persistence.metamodel.Metamodel;
-import javax.persistence.metamodel.SingularAttribute;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Expression;
+import jakarta.persistence.criteria.Path;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.metamodel.Metamodel;
+import jakarta.persistence.metamodel.SingularAttribute;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira2780/TestJira2780ReverseCustomizer.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira2780/TestJira2780ReverseCustomizer.java
index cfeefd944..ccc5d8d35 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira2780/TestJira2780ReverseCustomizer.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira2780/TestJira2780ReverseCustomizer.java
@@ -23,8 +23,8 @@ import java.io.FileNotFoundException;
 import java.util.Properties;
 import java.util.Scanner;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.meta.ReverseMappingTool;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/OracleGeneratedIdEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/OracleGeneratedIdEntity.java
new file mode 100644
index 000000000..d63f2e556
--- /dev/null
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/OracleGeneratedIdEntity.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.jira_2883;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+/**
+ * Declares a Version field of unsupported type.
+ */
+@Entity
+@Table(name = "GeneratedId")
+public class OracleGeneratedIdEntity {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    private long id;
+
+    @Column(name = "value")
+    private String value;
+
+    public long getId() {
+        return id;
+    }
+
+    public String getValue() {
+        return value;
+    }
+}
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/TestOracleGeneratedId.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/TestOracleGeneratedId.java
index 3f4eefccd..5359a3e2d 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/TestOracleGeneratedId.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jira_2883/TestOracleGeneratedId.java
@@ -18,13 +18,7 @@
  */
 package org.apache.openjpa.jira_2883;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EntityManager;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.persistence.test.DatabasePlatform;
@@ -40,7 +34,7 @@ import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 public class TestOracleGeneratedId extends SingleEMFTestCase {
     @Override
     public void setUp() {
-        super.setUp(CLEAR_TABLES, OraGenIdData.class,
+        super.setUp(CLEAR_TABLES, OracleGeneratedIdEntity.class,
                 "openjpa.jdbc.DBDictionary", "oracle(UseTriggersForAutoAssign=true, MaxAutoAssignNameLength=28, BatchLimit=100)");
     }
 
@@ -57,27 +51,4 @@ public class TestOracleGeneratedId extends SingleEMFTestCase {
         }
     }
 
-    /**
-     * Declares a Version field of unsupported type.
-     *
-     */
-    @Entity
-    @Table(name="GeneratedId")
-    public class OraGenIdData {
-        @Id
-        @GeneratedValue(strategy = GenerationType.IDENTITY)
-        @Column(name = "id")
-        private long id;
-
-        @Column(name = "value")
-        private String value;
-
-        public long getId() {
-            return id;
-        }
-
-        public String getValue() {
-            return value;
-        }
-    }
 }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/ContainerTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/ContainerTest.java
index 50f2bb2dc..c9a2856c5 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/ContainerTest.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/ContainerTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.jta;
 
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.ee.ManagedRuntime;
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/JTAManagedRuntime.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/JTAManagedRuntime.java
index c2ee30f0f..ca5f2a5a8 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/JTAManagedRuntime.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/JTAManagedRuntime.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.jta;
 
-import javax.transaction.NotSupportedException;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.TransactionManager;
 
 import org.apache.openjpa.ee.ManagedRuntime;
 /**
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransaction.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransaction.java
index 71974f6ea..a97468156 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransaction.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransaction.java
@@ -23,13 +23,13 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
 import javax.transaction.xa.XAResource;
 
 /**
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransactionManager.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransactionManager.java
index 79ac5a2d6..88c1efec2 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransactionManager.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jta/SimpleTransactionManager.java
@@ -18,15 +18,15 @@
  */
 package org.apache.openjpa.jta;
 
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Status;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
 
 /**
  * A very simple Transaction Manager for testing JTA resource without a container.
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/AbstractBrokerSerializationTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/AbstractBrokerSerializationTest.java
index f184ece13..48b5d1136 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/AbstractBrokerSerializationTest.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/AbstractBrokerSerializationTest.java
@@ -27,7 +27,7 @@ import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.event.AbstractLifecycleListener;
 import org.apache.openjpa.event.AbstractTransactionListener;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryEventManager.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryEventManager.java
index 025679e16..a981c382f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryEventManager.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryEventManager.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.kernel;
 
-import javax.persistence.Persistence;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.event.BrokerFactoryEvent;
 import org.apache.openjpa.event.BrokerFactoryListener;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryListenerRegistry.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryListenerRegistry.java
index 0caf2440e..a803f7dc0 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryListenerRegistry.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestBrokerFactoryListenerRegistry.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.kernel;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.event.AbstractLifecycleListener;
 import org.apache.openjpa.event.AbstractTransactionListener;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestDynamicClassRegistration.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestDynamicClassRegistration.java
index 20177e166..7bc9aed77 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestDynamicClassRegistration.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestDynamicClassRegistration.java
@@ -20,7 +20,7 @@ package org.apache.openjpa.kernel;
 
 import java.util.Collections;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.apache.openjpa.enhance.ManagedClassSubclasser;
 import org.apache.openjpa.enhance.PersistenceCapable;
@@ -64,7 +64,7 @@ public class TestDynamicClassRegistration
             JPAFacadeHelper.getMetaData(emf1, SimpleEntity.class);
         assertNotNull(meta);
         EntityManager em = emf1.createEntityManager();
-        javax.persistence.Query q = em.createQuery("select o from simple o");
+        jakarta.persistence.Query q = em.createQuery("select o from simple o");
         em.close();
     }
 
@@ -82,7 +82,7 @@ public class TestDynamicClassRegistration
             JPAFacadeHelper.getMetaData(emf1, UnenhancedFieldAccess.class);
         assertNotNull(meta);
         EntityManager em = emf1.createEntityManager();
-        javax.persistence.Query q = em.createQuery(
+        jakarta.persistence.Query q = em.createQuery(
             "select o from UnenhancedFieldAccess o");
         em.close();
     }
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestEntityManagerFactoryPool.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestEntityManagerFactoryPool.java
index 5b9c930a7..92628c6a6 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestEntityManagerFactoryPool.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestEntityManagerFactoryPool.java
@@ -21,8 +21,8 @@ package org.apache.openjpa.kernel;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestQueryCompilationCache.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestQueryCompilationCache.java
index 2d497cff2..49a714f85 100755
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestQueryCompilationCache.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/kernel/TestQueryCompilationCache.java
@@ -21,7 +21,7 @@ package org.apache.openjpa.kernel;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.persistence.Persistence;
+import jakarta.persistence.Persistence;
 
 import org.apache.openjpa.kernel.QueryImpl.Compilation;
 import org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.ParsedJPQL;
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/lib/conf/TestEquivalentConfiguration.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/lib/conf/TestEquivalentConfiguration.java
index b2cf3875c..f75839ff3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/lib/conf/TestEquivalentConfiguration.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/lib/conf/TestEquivalentConfiguration.java
@@ -20,8 +20,8 @@ package org.apache.openjpa.lib.conf;
 
 import java.util.Properties;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
 
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
@@ -31,7 +31,7 @@ import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
 /**
  * Tests that configuration properties can be specified both as new
- * javax.persistence.* namespace and old openjpa.* namespace. The two style can
+ * jakarta.persistence.* namespace and old openjpa.* namespace. The two style can
  * also be mixed where one property is in javax.* namespace the other in
  * openjpa.*. But same property can not be specified in both style.
  *
@@ -52,9 +52,9 @@ public class TestEquivalentConfiguration extends SingleEMFTestCase {
     private static final String OLD_STYLE_DRIVER_KEY =
         "openjpa.ConnectionDriverName";
     private static final String NEW_STYLE_DRIVER_KEY =
-        "javax.persistence.jdbc.driver";
+        "jakarta.persistence.jdbc.driver";
     private static final String NEW_STYLE_URL_KEY    =
-        "javax.persistence.jdbc.url";
+        "jakarta.persistence.jdbc.url";
 
     private static final String[] KEYS = {
         OLD_STYLE_DRIVER_KEY, OLD_STYLE_URL_KEY,
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java
index f6b9a378d..844960627 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="meta_A")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java
index bda50053d..74422ee1a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Column;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.MappedSuperclass;
+import jakarta.persistence.Column;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.MappedSuperclass;
 
 @MappedSuperclass
 public class AbstractThing {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Artist.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Artist.java
index c7fdeb224..2d1fb745f 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Artist.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Artist.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
 
 @Entity
 public class Artist extends Person {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java
index 9dcabd811..abd170916 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java
@@ -20,9 +20,9 @@ package org.apache.openjpa.meta;
 
 import java.util.Set;
 
-import javax.persistence.Entity;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="meta_B")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java
index 3a3276a69..1a8fd2b15 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.IdClass;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.IdClass;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
 
 import org.apache.openjpa.meta.C.Identity;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Item.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Item.java
index 3ff7b9e0d..edd653873 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Item.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Item.java
@@ -20,12 +20,12 @@ package org.apache.openjpa.meta;
 
 import java.io.Serializable;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="META_ITEM")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChild.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChild.java
index 4b0de4f5a..75f826889 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChild.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChild.java
@@ -36,11 +36,11 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Version;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Version;
 
 @Entity
 public class PChild {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChildBi.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChildBi.java
index f51610696..2e5a9d28b 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChildBi.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/PChildBi.java
@@ -18,12 +18,12 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Basic;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.OneToOne;
-import javax.persistence.Version;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Version;
 
 @Entity
 public class PChildBi {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Painter.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Painter.java
index 081be1549..f59e247ca 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Painter.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Painter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
 
 @Entity
 public class Painter extends Artist {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Parent.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Parent.java
index 517b0ff0d..9ab8675fb 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Parent.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Parent.java
@@ -18,14 +18,14 @@
  */
 package org.apache.openjpa.meta;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToOne;
-import javax.persistence.PrimaryKeyJoinColumn;
-import javax.persistence.SecondaryTable;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.PrimaryKeyJoinColumn;
+import jakarta.persistence.SecondaryTable;
 
 @Entity(name="META_PARENT")
 @SecondaryTable(name = "ParentSecondaryTable", pkJoinColumns =
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Person.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Person.java
index b68ac4c03..abe37de30 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Person.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/Person.java
@@ -21,9 +21,9 @@ package org.apache.openjpa.meta;
 import java.io.Serializable;
 import java.util.Collection;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.OneToMany;
 
 @Entity
 public class Person implements Serializable {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/OpenJPA2018Test.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/OpenJPA2018Test.java
index 821b08613..1adb49943 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/OpenJPA2018Test.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/OpenJPA2018Test.java
@@ -22,11 +22,11 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.ParameterExpression;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.ParameterExpression;
+import jakarta.persistence.criteria.Root;
 
 import org.apache.openjpa.persistence.test.SingleEMTestCase;
 
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/User2018.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/User2018.java
index 18f988e5b..5cf6c8379 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/User2018.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/openjpa2018/User2018.java
@@ -18,9 +18,9 @@
  */
 package org.apache.openjpa.openjpa2018;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
 
 @Entity
 public class User2018 {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Country.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Country.java
index e359b4c90..c43d39984 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Country.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Country.java
@@ -18,10 +18,10 @@
  */
 package org.apache.openjpa.persistence;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
 @Entity
 @Table(name="COUNTRY1")
 public class Country {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Embed.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Embed.java
index 64040152e..b54501a0b 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Embed.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Embed.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 package org.apache.openjpa.persistence;
-import javax.persistence.Embeddable;
+import jakarta.persistence.Embeddable;
 
 @Embeddable
 public class Embed {
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Issue428Entity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Issue428Entity.java
index f9349afae..cc02472d3 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Issue428Entity.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Issue428Entity.java
@@ -18,8 +18,8 @@
  */
 package org.apache.openjpa.persistence;
 
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name = "ISSUE_428_ENTITY")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java
index 008b1a2e2..a93307f1d 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java
+++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java
@@ -17,14 +17,14 @@
  * under the License.
  */
 package org.apache.openjpa.persistence;
-import javax.persistence.Column;
-import javax.persistence.Embedded;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embedded;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Table;
 
 @Entity
 @Table(name="SECURITY1")
diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestOpenJPA2330.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestOpenJPA2330.java
index 85e83f585..f0301623a 100644
--- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestOpenJPA2330.java
... 47668 lines suppressed ...


[openjpa] 10/17: OPENJPA-2909 implement ASM proxy for Collections

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 12f780eb763d0e7a39faf74d4fdb58af0f7094d7
Author: Mark Struberg <st...@apache.org>
AuthorDate: Wed May 3 12:58:26 2023 +0200

    OPENJPA-2909 implement ASM proxy for Collections
---
 openjpa-kernel/pom.xml                             |   2 +
 .../apache/openjpa/util/ClassWriterTracker.java    |  58 ++
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 588 ++++++++++++++-------
 .../org/apache/openjpa/util/asm/AsmHelper.java     | 182 +++++++
 4 files changed, 651 insertions(+), 179 deletions(-)

diff --git a/openjpa-kernel/pom.xml b/openjpa-kernel/pom.xml
index 71b7fe094..c9e5538b0 100644
--- a/openjpa-kernel/pom.xml
+++ b/openjpa-kernel/pom.xml
@@ -109,6 +109,7 @@
                             <goal>run</goal>
                         </goals>
                     </execution>
+<!--
                     <execution>
                         <id>generate-standard-sco-proxies</id>
                         <phase>process-classes</phase>
@@ -123,6 +124,7 @@
                             <goal>run</goal>
                         </goals>
                     </execution>
+-->
                 </executions>
             </plugin>
             <plugin>
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassWriterTracker.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassWriterTracker.java
new file mode 100644
index 000000000..0bcee1d47
--- /dev/null
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassWriterTracker.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xbean.asm9.ClassWriter;
+import org.apache.xbean.asm9.MethodVisitor;
+
+/**
+ * Helper to keep track of generated methods when using ASM ClassWriter.
+ *
+ * @author <a href="mailto:struberg@apache.org">Mark Struberg</a>
+ */
+public class ClassWriterTracker {
+
+    private final ClassWriter cw;
+    private List<String> createdMethods = new ArrayList<>();
+
+    public ClassWriterTracker(ClassWriter cw) {
+        this.cw = cw;
+    }
+
+    public ClassWriter getCw() {
+        return cw;
+    }
+
+    public MethodVisitor visitMethod(final int access,
+                                    final String name,
+                                    final String descriptor,
+                                    final String signature,
+                                    final String[] exceptionTypes) {
+        MethodVisitor mv = cw.visitMethod(access, name, descriptor, signature, exceptionTypes);
+
+        createdMethods.add(name + descriptor);
+
+        return mv;
+    }
+
+    public boolean hasMethod(final String name, final String descriptor) {
+        return createdMethods.contains(name + descriptor);
+    }
+}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index e1a6ce40b..8b4455180 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -58,6 +58,7 @@ import org.apache.openjpa.lib.util.J2DoPrivHelper;
 import org.apache.openjpa.lib.util.Localizer;
 import org.apache.openjpa.lib.util.Options;
 import org.apache.openjpa.lib.util.StringUtil;
+import org.apache.openjpa.util.asm.AsmHelper;
 import org.apache.openjpa.util.proxy.DelayedArrayListProxy;
 import org.apache.openjpa.util.proxy.DelayedHashSetProxy;
 import org.apache.openjpa.util.proxy.DelayedLinkedHashSetProxy;
@@ -74,6 +75,7 @@ import org.apache.openjpa.util.proxy.ProxyDate;
 import org.apache.openjpa.util.proxy.ProxyMap;
 import org.apache.openjpa.util.proxy.ProxyMaps;
 import org.apache.xbean.asm9.ClassWriter;
+import org.apache.xbean.asm9.Label;
 import org.apache.xbean.asm9.MethodVisitor;
 import org.apache.xbean.asm9.Opcodes;
 import org.apache.xbean.asm9.Type;
@@ -403,25 +405,6 @@ public class ProxyManagerImpl
         return null;
     }
 
-    /**
-     * Return the cached factory proxy for the given collection type.
-     */
-    private ProxyCollection getFactoryProxyCollection(Class type) {
-        // we don't lock here; ok if two proxies get generated for same type
-        ProxyCollection proxy = (ProxyCollection) _proxies.get(type);
-        if (proxy == null) {
-            ClassLoader l = GeneratedClasses.getMostDerivedLoader(type,
-                ProxyCollection.class);
-            Class pcls = loadBuildTimeProxy(type, l);
-            if (pcls == null)
-                pcls = GeneratedClasses.loadBCClass(
-                    generateProxyCollectionBytecode(type, true), l);
-            proxy = (ProxyCollection) instantiateProxy(pcls, null, null);
-            _proxies.put(type, proxy);
-        }
-        return proxy;
-    }
-
     /**
      * Return the cached factory proxy for the given map type.
      */
@@ -477,6 +460,25 @@ public class ProxyManagerImpl
         return proxy;
     }
 
+    /**
+     * Return the cached factory proxy for the given collection type.
+     */
+    private ProxyCollection getFactoryProxyCollection(Class type) {
+        // we don't lock here; ok if two proxies get generated for same type
+        ProxyCollection proxy = (ProxyCollection) _proxies.get(type);
+        if (proxy == null) {
+            ClassLoader l = GeneratedClasses.getMostDerivedLoader(type,
+                    ProxyCollection.class);
+            Class pcls = loadBuildTimeProxy(type, l);
+            if (pcls == null)
+                pcls = generateAndLoadProxyCollection(type, true, l);
+            proxy = (ProxyCollection) instantiateProxy(pcls, null, null);
+            _proxies.put(type, proxy);
+        }
+        return proxy;
+    }
+
+
     /**
      * Return the cached factory proxy for the given bean type.
      */
@@ -683,6 +685,13 @@ public class ProxyManagerImpl
         return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
     }
 
+    private Class generateAndLoadProxyCollection(Class type, boolean runtime, ClassLoader l) {
+        final String proxyClassName = getProxyClassName(type, runtime);
+        final byte[] classBytes = generateProxyCollectionBytecode(type, runtime, proxyClassName);
+
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+    }
+
     /**
      * Generate the bytecode for a date proxy for the given type.
      */
@@ -696,15 +705,16 @@ public class ProxyManagerImpl
         cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
                 null, superClassFileNname, interfaceNames);
 
+        ClassWriterTracker ct = new ClassWriterTracker(cw);
         String classFileName = runtime ? type.getName() : proxyClassDef;
         cw.visitSource(classFileName + ".java", null);
 
-        delegateConstructors(cw, type, superClassFileNname);
-        addInstanceVariables(cw);
-        addProxyMethods(cw, true, proxyClassDef, type);
-        addProxyDateMethods(cw, proxyClassDef, type);
-        proxySetters(cw, proxyClassDef, type);
-        addWriteReplaceMethod(cw, proxyClassDef, runtime);
+        delegateConstructors(ct, type, superClassFileNname);
+        addInstanceVariables(ct);
+        addProxyMethods(ct, true, proxyClassDef, type);
+        addProxyDateMethods(ct, proxyClassDef, type);
+        proxySetters(ct, proxyClassDef, type);
+        addWriteReplaceMethod(ct, proxyClassDef, runtime);
 
         return cw.toByteArray();
     }
@@ -722,31 +732,351 @@ public class ProxyManagerImpl
         cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
                 null, superClassFileNname, interfaceNames);
 
+        ClassWriterTracker ct = new ClassWriterTracker(cw);
+        String classFileName = runtime ? type.getName() : proxyClassDef;
+        cw.visitSource(classFileName + ".java", null);
+
+        delegateConstructors(ct, type, superClassFileNname);
+        addInstanceVariables(ct);
+        addProxyMethods(ct, true, proxyClassDef, type);
+        addProxyCalendarMethods(ct, proxyClassDef, type);
+        proxySetters(ct, proxyClassDef, type);
+        addWriteReplaceMethod(ct, proxyClassDef, runtime);
+
+        return cw.toByteArray();
+    }
+
+    /**
+     * Generate the bytecode for a collection proxy for the given type.
+     */
+    protected byte[] generateProxyCollectionBytecode(Class type, boolean runtime, String proxyClassName) {
+        assertNotFinal(type);
+        String proxyClassDef = proxyClassName.replace('.', '/');
+        String superClassFileNname = Type.getInternalName(type);
+        String[] interfaceNames = new String[]{Type.getInternalName(ProxyCollection.class)};
+
+        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
+                null, superClassFileNname, interfaceNames);
+
+        ClassWriterTracker ct = new ClassWriterTracker(cw);
         String classFileName = runtime ? type.getName() : proxyClassDef;
         cw.visitSource(classFileName + ".java", null);
 
-        delegateConstructors(cw, type, superClassFileNname);
-        addInstanceVariables(cw);
-        addProxyMethods(cw, true, proxyClassDef, type);
-        addProxyCalendarMethods(cw, proxyClassDef, type);
-        proxySetters(cw, proxyClassDef, type);
-        addWriteReplaceMethod(cw, proxyClassDef, runtime);
+        delegateConstructors(ct, type, superClassFileNname);
+        addInstanceVariables(ct);
+        addProxyMethods(ct, false, proxyClassDef, type);
+        addProxyCollectionMethods(ct, proxyClassDef, type);
+        proxyRecognizedMethods(ct, proxyClassDef, type,ProxyCollections.class, ProxyCollection.class);
+        proxySetters(ct, proxyClassDef, type);
+        addWriteReplaceMethod(ct, proxyClassDef, runtime);
 
         return cw.toByteArray();
+    }
+
+
+    private void addProxyCollectionMethods(ClassWriterTracker ct, String proxyClassDef, Class type) {
+        // change tracker
+        {
+            ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                    "changeTracker", Type.getDescriptor(CollectionChangeTracker.class), null, null).visitEnd();
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getChangeTracker",
+                    Type.getMethodDescriptor(Type.getType(ChangeTracker.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "changeTracker", Type.getDescriptor(CollectionChangeTracker.class));
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // collection copy
+        {
+            Constructor cons = findCopyConstructor(type);
+            if (cons == null && SortedSet.class.isAssignableFrom(type)) {
+                cons = findComparatorConstructor(type);
+            }
+            Class[] params = (cons == null) ? new Class[0]
+                    : cons.getParameterTypes();
 
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "copy",
+                    Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
+            mv.visitInsn(Opcodes.DUP);
+
+            if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                if (params[0] == Comparator.class) {
+                    mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(SortedSet.class));
+                    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, Type.getInternalName(SortedSet.class), "comparator",
+                            Type.getMethodDescriptor(Type.getType(Comparator.class)), true);
+                }
+                else {
+                    // otherwise just pass the parameter
+                    mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
+                }
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
+
+            if (params.length == 0 || params[0] == Comparator.class) {
+                mv.visitInsn(Opcodes.DUP);
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Collection.class));
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "addAll",
+                        Type.getMethodDescriptor(Type.BOOLEAN_TYPE, TYPE_OBJECT), true);
+                mv.visitInsn(Opcodes.POP);
+            }
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        // element type
+        {
+            ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                    "elementType", Type.getDescriptor(Class.class), null, null).visitEnd();
+
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getElementType",
+                    Type.getMethodDescriptor(Type.getType(Class.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "elementType", Type.getDescriptor(Class.class));
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+
+        }
+
+        // new instance factory
+        {
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "newInstance",
+                    Type.getMethodDescriptor(Type.getType(ProxyCollection.class),
+                            Type.getType(Class.class), Type.getType(Comparator.class), Type.BOOLEAN_TYPE, Type.BOOLEAN_TYPE)
+                    , null, null);
+            mv.visitCode();
+            mv.visitTypeInsn(Opcodes.NEW, proxyClassDef);
+            mv.visitInsn(Opcodes.DUP);
+
+            Constructor cons = findComparatorConstructor(type);
+            Class[] params = (cons == null) ? new Class[0] : cons.getParameterTypes();
+            if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 2);
+            }
+
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, proxyClassDef, "<init>",
+                Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
+
+            mv.visitVarInsn(Opcodes.ASTORE, 5);
+            mv.visitVarInsn(Opcodes.ALOAD, 5);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "elementType", Type.getDescriptor(Class.class));
+
+            mv.visitVarInsn(Opcodes.ILOAD, 3);
+            Label lNotTrack = new Label();
+            mv.visitJumpInsn(Opcodes.IFEQ, lNotTrack);
+            mv.visitVarInsn(Opcodes.ALOAD, 5);
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(CollectionChangeTrackerImpl.class));
+
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitVarInsn(Opcodes.ALOAD, 5);
+
+            mv.visitInsn(allowsDuplicates(type) ? Opcodes.ICONST_1 : Opcodes.ICONST_0);
+            mv.visitInsn(isOrdered(type) ? Opcodes.ICONST_1 : Opcodes.ICONST_0);
+            mv.visitVarInsn(Opcodes.ILOAD, 4);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(CollectionChangeTrackerImpl.class), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Collection.class),
+                                             Type.BOOLEAN_TYPE, Type.BOOLEAN_TYPE, Type.BOOLEAN_TYPE),
+                    false);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "changeTracker", Type.getDescriptor(CollectionChangeTracker.class));
+
+            mv.visitLabel(lNotTrack);
+            mv.visitVarInsn(Opcodes.ALOAD, 5);
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+    }
+
+    private void proxyRecognizedMethods(ClassWriterTracker ct, String proxyClassDef, Class<?> type,
+                                        Class<?> helper, Class<?> proxyType) {
+        Method[] meths = type.getMethods();
+
+        for (Method meth : meths) {
+            // Java 8 methods with a return type of KeySetView do not need to be proxied
+            if (meth.getReturnType().getName().contains("KeySetView")) {
+                continue;
+            }
+
+            Class[] helperParams = toHelperParameters(meth.getParameterTypes(), proxyType);
+
+            // first check for overriding method
+            try {
+                Method match;
+                match = helper.getMethod(meth.getName(), helperParams);
+                proxyOverrideMethod(ct, meth, match, helperParams);
+                continue;
+            }
+            catch (NoSuchMethodException nsme) {
+                // all fine
+            }
+            catch (Exception e) {
+                throw new GeneralException(e);
+            }
+
+            // check for before and after methods, either of which may not
+            // exist
+            Method before = null;
+            try {
+                before = helper.getMethod("before" + StringUtil.capitalize(meth.getName()), helperParams);
+            }
+            catch (NoSuchMethodException nsme) {
+                // all fine
+            }
+            catch (Exception e) {
+                throw new GeneralException(e);
+            }
+            Method after = null;
+            Class[] afterParams = null;
+
+            try {
+                afterParams = toHelperAfterParameters(helperParams,
+                        meth.getReturnType(), (before == null)
+                                ? void.class : before.getReturnType());
+                after = helper.getMethod("after"
+                        + StringUtil.capitalize(meth.getName()), afterParams);
+            }
+            catch (NoSuchMethodException nsme) {
+            }
+            catch (Exception e) {
+                throw new GeneralException(e);
+            }
+            if (before != null || after != null)
+                proxyBeforeAfterMethod(ct, type, meth, helperParams, before, after, afterParams);
+        }
+    }
+
+    /**
+     * Proxy the given method with one that overrides it by calling into the
+     * given helper.
+     */
+    private void proxyOverrideMethod(ClassWriterTracker ct, Method meth, Method helper, Class[] helperParams) {
+        MethodVisitor mv = ct.visitMethod(meth.getModifiers() & ~Modifier.SYNCHRONIZED, meth.getName(),
+                Type.getMethodDescriptor(meth), null, null);
+        mv.visitCode();
+
+        // push all the method params to the stack
+        // we only start at param[1] as param[0] of the helper method is the instance itself
+        // and will get loaded with ALOAD_0 (this)
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        for (int i = 1; i < helperParams.length; i++)
+        {
+            mv.visitVarInsn(AsmHelper.getLoadInsn(helperParams[i]), i);
+        }
+
+        mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(helper.getDeclaringClass()), helper.getName(),
+                Type.getMethodDescriptor(helper), false);
+
+        mv.visitInsn(AsmHelper.getReturnInsn(meth.getReturnType()));
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+    }
+
+    /**
+     * Proxy the given method with one that overrides it by calling into the
+     * given helper.
+     */
+    private void proxyBeforeAfterMethod(ClassWriterTracker ct, Class type, Method meth, Class[] helperParams,
+                                        Method before, Method after, Class[] afterParams) {
+
+        MethodVisitor mv = ct.visitMethod(meth.getModifiers() & ~Modifier.SYNCHRONIZED, meth.getName(),
+                Type.getMethodDescriptor(meth), null, null);
+        mv.visitCode();
+
+        int beforeRetPos = -1;
+        int variableNr = helperParams.length;;
+
+        // invoke before
+        if (before != null) {
+            // push all the method params to the stack
+            // we only start at param[1] as param[0] of the helper method is the instance itself
+            // and will get loaded with ALOAD_0 (this)
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            for (int i = 1; i < helperParams.length; i++)
+            {
+                mv.visitVarInsn(AsmHelper.getLoadInsn(helperParams[i]), i);
+            }
+
+            mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(before.getDeclaringClass()), before.getName(),
+                    Type.getMethodDescriptor(before), false);
+
+            if (after != null && before.getReturnType() != void.class) {
+                // this is always a boolean and 1 after the
+                beforeRetPos = variableNr++;
+                mv.visitVarInsn(AsmHelper.getStoreInsn(before.getReturnType()), beforeRetPos);
+            }
+        }
+
+        // invoke super
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        for (int i = 1; i < helperParams.length; i++)
+        {
+            mv.visitVarInsn(AsmHelper.getLoadInsn(helperParams[i]), i);
+        }
+        mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), meth.getName(),
+                Type.getMethodDescriptor(meth), false);
+
+        // invoke after
+        if (after != null) {
+            int retPos = -1;
+            if (meth.getReturnType() != void.class) {
+                retPos = variableNr++;
+                mv.visitVarInsn(AsmHelper.getStoreInsn(meth.getReturnType()), retPos);
+            }
+
+            // push all the method params to the stack
+            // we only start at param[1] as param[0] of the helper method is the instance itself
+            // and will get loaded with ALOAD_0 (this)
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            for (int i = 1; i < helperParams.length; i++)
+            {
+                mv.visitVarInsn(AsmHelper.getLoadInsn(helperParams[i]), i);
+            }
+
+            if (retPos != -1) {
+                mv.visitVarInsn(AsmHelper.getLoadInsn(meth.getReturnType()),retPos);
+            }
+            if (beforeRetPos != -1) {
+                mv.visitVarInsn(AsmHelper.getLoadInsn(before.getReturnType()),beforeRetPos);
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(after.getDeclaringClass()), after.getName(),
+                    Type.getMethodDescriptor(after), false);
+        }
+
+        mv.visitInsn(AsmHelper.getReturnInsn(meth.getReturnType()));
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
     }
 
 
     /**
      * add the instance variables to the class to be generated
      */
-    private void addInstanceVariables(ClassWriter cw) {
+    private void addInstanceVariables(ClassWriterTracker ct) {
         // variable #1, the state manager
-        cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+        ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
                 "sm", Type.getDescriptor(OpenJPAStateManager.class), null, null).visitEnd();
 
         // variable #2, the state manager
-        cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+        ct.getCw().visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
                 "field", Type.getDescriptor(int.class), null, null).visitEnd();
     }
 
@@ -754,19 +1084,19 @@ public class ProxyManagerImpl
     /**
      * Create pass-through constructors to base type.
      */
-    private void delegateConstructors(ClassWriter cw, Class type, String superClassFileNname) {
+    private void delegateConstructors(ClassWriterTracker ct, Class type, String superClassFileNname) {
         Constructor[] constructors = type.getConstructors();
 
         for (Constructor constructor : constructors) {
             Class[] params = constructor.getParameterTypes();
-            String[] exceptionTypes = getInternalNames(constructor.getExceptionTypes());
+            String[] exceptionTypes = AsmHelper.getInternalNames(constructor.getExceptionTypes());
             String descriptor = Type.getConstructorDescriptor(constructor);
-            MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", descriptor, null, exceptionTypes);
+            MethodVisitor mv = ct.visitMethod(Opcodes.ACC_PUBLIC, "<init>", descriptor, null, exceptionTypes);
             mv.visitCode();
             mv.visitVarInsn(Opcodes.ALOAD, 0);
             for (int i = 1; i <= params.length; i++)
             {
-                mv.visitVarInsn(getVarInsn(params[i-1]), i);
+                mv.visitVarInsn(AsmHelper.getLoadInsn(params[i-1]), i);
             }
             mv.visitMethodInsn(Opcodes.INVOKESPECIAL, superClassFileNname, "<init>", descriptor, false);
 
@@ -780,14 +1110,14 @@ public class ProxyManagerImpl
      * Implement the methods in the {@link Proxy} interface, with the exception
      * of {@link Proxy#copy}.
      *
-     * @param changeTracker whether to implement a null change tracker; if false
+     * @param defaultChangeTracker whether to implement a null change tracker; if false
      * the change tracker method is left unimplemented
      * @param proxyClassDef
      */
-    private void addProxyMethods(ClassWriter cw, boolean changeTracker, String proxyClassDef, Class<?> parentClass) {
+    private void addProxyMethods(ClassWriterTracker ct, boolean defaultChangeTracker, String proxyClassDef, Class<?> parentClass) {
 
         {
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "setOwner",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "setOwner",
                     Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE)
                     , null, null);
             mv.visitCode();
@@ -805,7 +1135,7 @@ public class ProxyManagerImpl
         }
 
         {
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "getOwner",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getOwner",
                     Type.getMethodDescriptor(Type.getType(OpenJPAStateManager.class))
                     , null, null);
             mv.visitCode();
@@ -819,7 +1149,7 @@ public class ProxyManagerImpl
         }
 
         {
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "getOwnerField",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getOwnerField",
                     Type.getMethodDescriptor(Type.INT_TYPE)
                     , null, null);
             mv.visitCode();
@@ -840,7 +1170,7 @@ public class ProxyManagerImpl
              * was invoked.  So, we are now overriding the clone() method so as to
              * provide a detached proxy object (null out the StateManager).
              */
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "clone",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "clone",
                     Type.getMethodDescriptor(TYPE_OBJECT)
                     , null, null);
             mv.visitCode();
@@ -863,8 +1193,8 @@ public class ProxyManagerImpl
             mv.visitEnd();
         }
 
-        if (changeTracker) {
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "getChangeTracker",
+        if (defaultChangeTracker) {
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "getChangeTracker",
                     Type.getMethodDescriptor(Type.getType(ChangeTracker.class))
                     , null, null);
             mv.visitCode();
@@ -878,7 +1208,7 @@ public class ProxyManagerImpl
     /**
      * Implement the methods in the {@link ProxyDate} interface.
      */
-    private void addProxyDateMethods(ClassWriter cw, String proxyClassDef, Class type) {
+    private void addProxyDateMethods(ClassWriterTracker ct, String proxyClassDef, Class type) {
 
         final boolean hasDefaultCons = hasConstructor(type);
         final boolean hasMillisCons = hasConstructor(type, long.class);
@@ -889,7 +1219,7 @@ public class ProxyManagerImpl
 
         // add a default constructor that delegates to the millis constructor
         if (!hasDefaultCons) {
-            MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>",
+            MethodVisitor mv = ct.visitMethod(Opcodes.ACC_PUBLIC, "<init>",
                     Type.getMethodDescriptor(Type.VOID_TYPE), null, null);
             mv.visitCode();
             mv.visitVarInsn(Opcodes.ALOAD, 0);
@@ -918,7 +1248,7 @@ public class ProxyManagerImpl
                 params = new Class[0];
             }
 
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "copy",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "copy",
                     Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
                     , null, null);
             mv.visitCode();
@@ -926,21 +1256,20 @@ public class ProxyManagerImpl
             mv.visitInsn(Opcodes.DUP);
 
             if (params.length == 1) {
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
                 if (params[0] == long.class) {
                     // call getTime on the given Date if the current type has a long constructor
-                    mv.visitVarInsn(Opcodes.ALOAD, 1);
                     mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(java.util.Date.class));
                     mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(java.util.Date.class), "getTime",
                             Type.getMethodDescriptor(Type.LONG_TYPE), false);
                 }
                 else {
                     // otherwise just pass the parameter
-                    mv.visitVarInsn(Opcodes.ALOAD, 1);
                     mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
                 }
             }
             mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
-                    Type.getMethodDescriptor(Type.VOID_TYPE, getParamTypes(params)), false);
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
 
             if (params.length == 0) {
                 mv.visitInsn(Opcodes.DUP);
@@ -970,7 +1299,7 @@ public class ProxyManagerImpl
 
         {
             // new instance factory
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "newInstance",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "newInstance",
                     Type.getMethodDescriptor(Type.getType(ProxyDate.class))
                     , null, null);
             mv.visitCode();
@@ -985,13 +1314,13 @@ public class ProxyManagerImpl
         }
     }
 
-    private void addProxyCalendarMethods(ClassWriter cw, String proxyClassDef, Class type) {
+    private void addProxyCalendarMethods(ClassWriterTracker ct, String proxyClassDef, Class type) {
         // calendar copy
         {
             Constructor cons = findCopyConstructor(type);
             Class[] params = (cons == null) ? new Class[0] : cons.getParameterTypes();
 
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "copy",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "copy",
                     Type.getMethodDescriptor(TYPE_OBJECT, TYPE_OBJECT)
                     , null, null);
             mv.visitCode();
@@ -999,7 +1328,7 @@ public class ProxyManagerImpl
             mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
             mv.visitInsn(Opcodes.DUP);
             mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
-                    Type.getMethodDescriptor(Type.VOID_TYPE, getParamTypes(params)), false);
+                    Type.getMethodDescriptor(Type.VOID_TYPE, AsmHelper.getParamTypes(params)), false);
 
             // timeInMillis
             mv.visitInsn(Opcodes.DUP);
@@ -1053,7 +1382,7 @@ public class ProxyManagerImpl
 
         // newInstance factory
         {
-            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "newInstance",
+            MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, "newInstance",
                     Type.getMethodDescriptor(Type.getType(ProxyCalendar.class))
                     , null, null);
             mv.visitCode();
@@ -1070,7 +1399,7 @@ public class ProxyManagerImpl
         // proxy the protected computeFields method b/c it is called on
         // mutate, and some setters are final and therefore not proxyable
         {
-            MethodVisitor mv = cw.visitMethod(Modifier.PROTECTED, "computeFields",
+            MethodVisitor mv = ct.visitMethod(Modifier.PROTECTED, "computeFields",
                     Type.getMethodDescriptor(Type.VOID_TYPE)
                     , null, null);
             mv.visitCode();
@@ -1088,25 +1417,6 @@ public class ProxyManagerImpl
             mv.visitMaxs(-1, -1);
             mv.visitEnd();
         }
-
-
-        /*
-
-        // proxy the protected computeFields method b/c it is called on
-        // mutate, and some setters are final and therefore not proxyable
-        m = bc.declareMethod("computeFields", void.class, null);
-        m.makeProtected();
-        code = m.getCode(true);
-        code.aload().setThis();
-        code.constant().setValue(true);
-        code.invokestatic().setMethod(Proxies.class, "dirty", void.class,
-            new Class[] { Proxy.class, boolean.class });
-        code.aload().setThis();
-        code.invokespecial().setMethod(type, "computeFields", void.class, null);
-        code.vreturn();
-        code.calculateMaxStack();
-        code.calculateMaxLocals();
-         */
     }
 
     /**
@@ -1114,28 +1424,30 @@ public class ProxyManagerImpl
      *
      * @return true if we generated any setters, false otherwise
      */
-    private boolean proxySetters(ClassWriter cw, String proxyClassDef, Class type) {
+    private boolean proxySetters(ClassWriterTracker ct, String proxyClassDef, Class type) {
         Method[] meths = type.getMethods();
 
         int setters = 0;
         for (Method meth : meths) {
             if (isSetter(meth) && !Modifier.isFinal(meth.getModifiers())) {
-
                 setters++;
-                proxySetter(cw, proxyClassDef, type, meth);
+                proxySetter(ct, proxyClassDef, type, meth);
             }
         }
         return setters > 0;
     }
 
-    private void proxySetter(ClassWriter cw, String proxyClassDef, Class type, Method meth) {
+    private void proxySetter(ClassWriterTracker ct, String proxyClassDef, Class type, Method meth) {
         Class[] params = meth.getParameterTypes();
         Class ret = meth.getReturnType();
 
-        final String methodDescriptor = Type.getMethodDescriptor(Type.getType(ret), getParamTypes(params));
-        MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, meth.getName(),
-                methodDescriptor
-                , null, null);
+        final String methodDescriptor = Type.getMethodDescriptor(Type.getType(ret), AsmHelper.getParamTypes(params));
+        if (ct.hasMethod(meth.getName(), methodDescriptor)) {
+            // this method already got created
+            return;
+        }
+
+        MethodVisitor mv = ct.visitMethod(Modifier.PUBLIC, meth.getName(), methodDescriptor, null, null);
         mv.visitCode();
         mv.visitVarInsn(Opcodes.ALOAD, 0);
         mv.visitInsn(Opcodes.ICONST_1);
@@ -1147,13 +1459,13 @@ public class ProxyManagerImpl
         // push all the method params to the stack
         for (int i = 1; i <= params.length; i++)
         {
-            mv.visitVarInsn(getVarInsn(params[i-1]), i);
+            mv.visitVarInsn(AsmHelper.getLoadInsn(params[i-1]), i);
         }
 
         mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), meth.getName(),
                 methodDescriptor, false);
 
-        mv.visitInsn(getReturnInsn(ret));
+        mv.visitInsn(AsmHelper.getReturnInsn(ret));
         mv.visitMaxs(-1, -1);
         mv.visitEnd();
     }
@@ -1163,8 +1475,8 @@ public class ProxyManagerImpl
      * Add a writeReplace implementation that serializes to a non-proxy type
      * unless detached and this is a build-time generated class.
      */
-    private void addWriteReplaceMethod(ClassWriter cw, String proxyClassDef, boolean runtime) {
-        MethodVisitor mv = cw.visitMethod(Modifier.PROTECTED, "writeReplace",
+    private void addWriteReplaceMethod(ClassWriterTracker ct, String proxyClassDef, boolean runtime) {
+        MethodVisitor mv = ct.visitMethod(Modifier.PROTECTED, "writeReplace",
                 Type.getMethodDescriptor(TYPE_OBJECT)
                 , null, new String[]{Type.getInternalName(ObjectStreamException.class)});
         mv.visitCode();
@@ -1180,23 +1492,7 @@ public class ProxyManagerImpl
 
     /* a few utility methods to make life with ASM easier */
 
-    private String[] getInternalNames(Class[] classes) {
-        String[] internalNames = new String[classes.length];
 
-        for (int i=0; i<classes.length; i++) {
-            internalNames[i] = Type.getInternalName(classes[i]);
-        }
-        return internalNames;
-    }
-
-    private Type[] getParamTypes(Class[] params) {
-        Type[] types = new Type[params.length];
-        for (int i=0; i<types.length; i++) {
-            types[i] = Type.getType(params[i]);
-        }
-
-        return types;
-    }
 
     private boolean hasConstructor(Class type, Class<?>... paramTypes) {
         try {
@@ -1207,76 +1503,6 @@ public class ProxyManagerImpl
         }
     }
 
-    /**
-     * Returns the appropriate bytecode instruction to load a value from a variable to the stack
-     *
-     * @param type Type to load
-     * @return Bytecode instruction to use
-     */
-    private int getVarInsn(Class<?> type)
-    {
-        if (type.isPrimitive())
-        {
-            if (Integer.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Boolean.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Character.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Byte.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Short.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Float.TYPE.equals(type))
-            {
-                return Opcodes.FLOAD;
-            }
-            else if (Long.TYPE.equals(type))
-            {
-                return Opcodes.LLOAD;
-            }
-            else if (Double.TYPE.equals(type))
-            {
-                return Opcodes.DLOAD;
-            }
-        }
-
-        return Opcodes.ALOAD;
-    }
-
-    /**
-     * calclates the proper Return instruction opcode for the given class
-     */
-    private int getReturnInsn(Class ret) {
-        if (ret.equals(Void.TYPE)) {
-            return Opcodes.RETURN;
-        }
-        if (ret.equals(Integer.TYPE)) {
-            return Opcodes.IRETURN;
-        }
-        if (ret.equals(Long.TYPE)) {
-            return Opcodes.LRETURN;
-        }
-        if (ret.equals(Float.TYPE)) {
-            return Opcodes.FRETURN;
-        }
-        if (ret.equals(Double.TYPE)) {
-            return Opcodes.DRETURN;
-        }
-        return Opcodes.ARETURN;
-    }
-
-
     /* ASM end */
 
 
@@ -1663,7 +1889,7 @@ public class ProxyManagerImpl
         code.calculateMaxStack();
         code.calculateMaxLocals();
     }
-    
+
     /**
      * Implement the methods in the {@link ProxyBean} interface.
      */
@@ -2142,16 +2368,22 @@ public class ProxyManagerImpl
 
             // ASM generated proxies
             if (Date.class.isAssignableFrom(cls) ||
-                Calendar.class.isAssignableFrom(cls)) {
+                Calendar.class.isAssignableFrom(cls) ||
+                Collection.class.isAssignableFrom(cls)) {
                 final String proxyClassName = getProxyClassName(cls, false);
 
                 byte[] bytes = null;
+
                 if (Date.class.isAssignableFrom(cls)) {
                     bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
                 }
                 else if (Calendar.class.isAssignableFrom(cls)) {
                     bytes = mgr.generateProxyCalendarBytecode(cls, false, proxyClassName);
                 }
+                else if (Collection.class.isAssignableFrom(cls)) {
+                    bytes = mgr.generateProxyCollectionBytecode(cls, false, proxyClassName);
+                }
+
                 if (bytes != null) {
                     final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
                     java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
@@ -2159,8 +2391,6 @@ public class ProxyManagerImpl
                 continue;
             }
 
-            if (Collection.class.isAssignableFrom(cls))
-                bc = mgr.generateProxyCollectionBytecode(cls, false);
             else if (Map.class.isAssignableFrom(cls))
                 bc = mgr.generateProxyMapBytecode(cls, false);
             else {
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/AsmHelper.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/AsmHelper.java
new file mode 100644
index 000000000..ec84023a3
--- /dev/null
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/asm/AsmHelper.java
@@ -0,0 +1,182 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openjpa.util.asm;
+
+import java.lang.reflect.Method;
+
+import org.apache.xbean.asm9.Opcodes;
+import org.apache.xbean.asm9.Type;
+
+/**
+ * Utility methods to deal with ASM bytecode
+ * 
+ * @author <a href="mailto:struberg@apache.org">Mark Struberg</a>
+ */
+public final class AsmHelper {
+    private AsmHelper() {
+        // utility class ct
+    }
+
+    /**
+     * Calclates the proper Return instruction opcode for the given class
+     * 
+     * @param type the type to get returned
+     * @return the proper Opcode RETURN, ARETURN, IRETURN, etc
+     */
+    public static int getReturnInsn(Class type) {
+        if (type.equals(Void.TYPE)) {
+            return Opcodes.RETURN;
+        }
+        if (type.isPrimitive()) {
+            if (Integer.TYPE.equals(type)) {
+                return Opcodes.IRETURN;
+            }
+            else if (Boolean.TYPE.equals(type)) {
+                return Opcodes.IRETURN;
+            }
+            else if (Character.TYPE.equals(type)) {
+                return Opcodes.IRETURN;
+            }
+            else if (Byte.TYPE.equals(type)) {
+                return Opcodes.IRETURN;
+            }
+            else if (Short.TYPE.equals(type)) {
+                return Opcodes.IRETURN;
+            }
+            else if (Float.TYPE.equals(type)) {
+                return Opcodes.FRETURN;
+            }
+            else if (Long.TYPE.equals(type)) {
+                return Opcodes.LRETURN;
+            }
+            else if (Double.TYPE.equals(type)) {
+                return Opcodes.DRETURN;
+            }
+        }
+        return Opcodes.ARETURN;
+    }
+
+    /**
+     * Calclates the proper STORE instruction opcode for the given type
+     *
+     * @param type the type to get stored
+     * @return the proper Opcode ISTORE, ASTORE, LSTORE, etc
+     */
+    public static int getStoreInsn(Class<?> type) {
+        if (type.equals(Void.TYPE)) {
+            throw new IllegalArgumentException("Void type cannot be stored");
+        }
+        if (type.isPrimitive()) {
+            if (Integer.TYPE.equals(type)) {
+                return Opcodes.ISTORE;
+            }
+            else if (Boolean.TYPE.equals(type)) {
+                return Opcodes.ISTORE;
+            }
+            else if (Character.TYPE.equals(type)) {
+                return Opcodes.ISTORE;
+            }
+            else if (Byte.TYPE.equals(type)) {
+                return Opcodes.ISTORE;
+            }
+            else if (Short.TYPE.equals(type)) {
+                return Opcodes.ISTORE;
+            }
+            else if (Float.TYPE.equals(type)) {
+                return Opcodes.FSTORE;
+            }
+            else if (Long.TYPE.equals(type)) {
+                return Opcodes.LSTORE;
+            }
+            else if (Double.TYPE.equals(type)) {
+                return Opcodes.DSTORE;
+            }
+        }
+
+        return Opcodes.ASTORE;
+    }
+
+
+    /**
+     * Calclates the proper LOAD instruction opcode for the given type.
+     * This is the appropriate bytecode instruction to load a value from a variable to the stack.
+     *
+     * @param type the type to get loaded
+     * @return the proper Opcode ILOAD, ALOAD, LLOAD, etc
+     */
+    public static int getLoadInsn(Class<?> type) {
+        if (type.equals(Void.TYPE)) {
+            throw new IllegalArgumentException("Void type cannot be loaded");
+        }
+        if (type.isPrimitive()) {
+            if (Integer.TYPE.equals(type)) {
+                return Opcodes.ILOAD;
+            }
+            else if (Boolean.TYPE.equals(type)) {
+                return Opcodes.ILOAD;
+            }
+            else if (Character.TYPE.equals(type)) {
+                return Opcodes.ILOAD;
+            }
+            else if (Byte.TYPE.equals(type)) {
+                return Opcodes.ILOAD;
+            }
+            else if (Short.TYPE.equals(type)) {
+                return Opcodes.ILOAD;
+            }
+            else if (Float.TYPE.equals(type)) {
+                return Opcodes.FLOAD;
+            }
+            else if (Long.TYPE.equals(type)) {
+                return Opcodes.LLOAD;
+            }
+            else if (Double.TYPE.equals(type)) {
+                return Opcodes.DLOAD;
+            }
+        }
+
+        return Opcodes.ALOAD;
+    }
+
+    /**
+     * Get the internal names for the given classes
+     * @see Type#getInternalName(Class) 
+     */
+    public static String[] getInternalNames(Class[] classes) {
+        String[] internalNames = new String[classes.length];
+
+        for (int i=0; i<classes.length; i++) {
+            internalNames[i] = Type.getInternalName(classes[i]);
+        }
+        return internalNames;
+    }
+
+
+    /**
+     * get the ASM Types for the given classes
+     * @see Type#getType(Method)
+     */
+    public static Type[] getParamTypes(Class[] params) {
+        Type[] types = new Type[params.length];
+        for (int i=0; i<types.length; i++) {
+            types[i] = Type.getType(params[i]);
+        }
+
+        return types;
+    }
+
+}


[openjpa] 06/17: OPENJPA-2909 first skeleton for ASM based proxies

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 487159da3bc5404a39e87a883410405e1ef39b02
Author: Mark Struberg <st...@apache.org>
AuthorDate: Mon May 1 20:24:34 2023 +0200

    OPENJPA-2909 first skeleton for ASM based proxies
    
    work in progress
---
 .../openjpa/util/ClassLoaderProxyService.java      | 154 +++++++++++++
 .../org/apache/openjpa/util/GeneratedClasses.java  |   6 +
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 246 +++++++++++++++++++--
 3 files changed, 393 insertions(+), 13 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
new file mode 100644
index 000000000..654d06368
--- /dev/null
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ClassLoaderProxyService.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.util;
+
+import java.security.ProtectionDomain;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import org.apache.openjpa.lib.conf.Configuration;
+
+/**
+ * Service to load classes dynamically at runtime.
+ * This class got forked from Apache OpenWebBeans
+ */
+public class ClassLoaderProxyService
+{
+    private final ProxiesClassLoader loader;
+
+    public ClassLoaderProxyService(Configuration config, final ClassLoader parentLoader)
+    {
+        this.loader = new ProxiesClassLoader(parentLoader, false);
+    }
+
+    protected ClassLoaderProxyService(final ProxiesClassLoader loader)
+    {
+        this.loader = loader;
+    }
+
+    public ClassLoader getProxyClassLoader(final Class<?> forClass)
+    {
+        return loader;
+    }
+
+    public <T> Class<T> defineAndLoad(final String name, final byte[] bytecode, final Class<T> proxiedClass)
+    {
+        return (Class<T>) loader.getOrRegister(
+                name, bytecode, proxiedClass.getPackage(), proxiedClass.getProtectionDomain());
+    }
+
+    public <T> T newInstance(final Class<? extends T> proxyClass)
+    {
+        try
+        {
+            return proxyClass.getConstructor().newInstance();
+        }
+        catch (final Exception e)
+        {
+            throw new IllegalStateException("Failed to create a new Proxy instance of " + proxyClass.getName(), e);
+        }
+    }
+
+
+    private static class ProxiesClassLoader extends ClassLoader
+    {
+        private final boolean skipPackages;
+        private final ConcurrentMap<String, Class<?>> classes = new ConcurrentHashMap<>();
+
+        private ProxiesClassLoader(final ClassLoader parentLoader, boolean skipPackages)
+        {
+            super(parentLoader);
+            this.skipPackages = skipPackages;
+        }
+
+
+        @Override
+        protected Class<?> loadClass(final String name, final boolean resolve) throws ClassNotFoundException
+        {
+            final Class<?> clazz = classes.get(name);
+            if (clazz == null)
+            {
+                return getParent().loadClass(name);
+            }
+            return clazz;
+        }
+
+        private Class<?> getOrRegister(final String proxyClassName, final byte[] proxyBytes,
+                                       final Package pck, final ProtectionDomain protectionDomain)
+        {
+            final String key = proxyClassName.replace('/', '.');
+            Class<?> existing = classes.get(key);
+            if (existing == null)
+            {
+                synchronized (this)
+                {
+                    existing = classes.get(key);
+                    if (existing == null)
+                    {
+                        if (!skipPackages)
+                        {
+                            definePackageFor(pck, protectionDomain);
+                        }
+                        existing = super.defineClass(proxyClassName, proxyBytes, 0, proxyBytes.length);
+                        resolveClass(existing);
+                        classes.put(key, existing);
+                    }
+                }
+            }
+            return existing;
+        }
+
+        private void definePackageFor(final Package model, final ProtectionDomain protectionDomain)
+        {
+            if (model == null)
+            {
+                return;
+            }
+            if (getPackage(model.getName()) == null)
+            {
+                if (model.isSealed() && protectionDomain != null &&
+                        protectionDomain.getCodeSource() != null &&
+                        protectionDomain.getCodeSource().getLocation() != null)
+                {
+                    definePackage(
+                            model.getName(),
+                            model.getSpecificationTitle(),
+                            model.getSpecificationVersion(),
+                            model.getSpecificationVendor(),
+                            model.getImplementationTitle(),
+                            model.getImplementationVersion(),
+                            model.getImplementationVendor(),
+                            protectionDomain.getCodeSource().getLocation());
+                }
+                else
+                {
+                    definePackage(
+                            model.getName(),
+                            model.getSpecificationTitle(),
+                            model.getSpecificationVersion(),
+                            model.getSpecificationVendor(),
+                            model.getImplementationTitle(),
+                            model.getImplementationVersion(),
+                            model.getImplementationVendor(),
+                            null);
+                }
+            }
+        }
+    }
+}
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
index b109b2734..47e5961d2 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/GeneratedClasses.java
@@ -56,6 +56,7 @@ public class GeneratedClasses {
 
     /**
      * Load the class represented by the given bytecode.
+     * @deprecated move to ASM
      */
     public static Class loadBCClass(BCClass bc, ClassLoader loader) {
         BCClassLoader bcloader = AccessController
@@ -70,6 +71,11 @@ public class GeneratedClasses {
         }
     }
 
+    public static Class loadAsmClass(String className, byte[] classBytes, Class<?> proxiedClass, ClassLoader loader) {
+        ClassLoaderProxyService pcls = new ClassLoaderProxyService(null, loader);
+        return pcls.defineAndLoad(className, classBytes, proxiedClass);
+    }
+
     /**
      * Return true if the given loader will load the same version of a given
      * class.
diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 0737d1ef2..5d41ffa2e 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -73,6 +73,10 @@ import org.apache.openjpa.util.proxy.ProxyConcurrentMaps;
 import org.apache.openjpa.util.proxy.ProxyDate;
 import org.apache.openjpa.util.proxy.ProxyMap;
 import org.apache.openjpa.util.proxy.ProxyMaps;
+import org.apache.xbean.asm9.ClassWriter;
+import org.apache.xbean.asm9.MethodVisitor;
+import org.apache.xbean.asm9.Opcodes;
+import org.apache.xbean.asm9.Type;
 
 import serp.bytecode.BCClass;
 import serp.bytecode.BCField;
@@ -85,6 +89,7 @@ import serp.bytecode.Project;
  * Default implementation of the {@link ProxyManager} interface.
  *
  * @author Abe White
+ * @author Mark Struberg
  */
 public class ProxyManagerImpl
     implements ProxyManager {
@@ -446,8 +451,7 @@ public class ProxyManagerImpl
                 ProxyDate.class);
             Class pcls = loadBuildTimeProxy(type, l);
             if (pcls == null)
-                pcls = GeneratedClasses.loadBCClass(
-                    generateProxyDateBytecode(type, true), l);
+                pcls = generateAndLoadProxyDate(type, true, l);
             proxy = (ProxyDate) instantiateProxy(pcls, null, null);
             _proxies.put(type, proxy);
         }
@@ -664,25 +668,235 @@ public class ProxyManagerImpl
         return bc;
     }
 
+
+    private Class generateAndLoadProxyDate(Class type, boolean runtime, ClassLoader l) {
+        final String proxyClassName = getProxyClassName(type, runtime);
+        final byte[] classBytes = generateProxyDateBytecode(type, runtime, proxyClassName);
+
+        return GeneratedClasses.loadAsmClass(proxyClassName, classBytes, ProxyDate.class, l);
+    }
+
     /**
      * Generate the bytecode for a date proxy for the given type.
      */
-    protected BCClass generateProxyDateBytecode(Class type, boolean runtime) {
+    protected byte[] generateProxyDateBytecode(Class type, boolean runtime, String proxyClassName) {
         assertNotFinal(type);
-        Project project = new Project();
-        BCClass bc = AccessController.doPrivileged(J2DoPrivHelper
-            .loadProjectClassAction(project, getProxyClassName(type, runtime)));
-        bc.setSuperclass(type);
-        bc.declareInterface(ProxyDate.class);
+        proxyClassName = proxyClassName.replace('.', '/');
 
-        delegateConstructors(bc, type);
-        addProxyMethods(bc, true);
+        String superClassFileNname = type.getName().replace('.', '/');
+
+        String[] interfaceNames = new String[]{Type.getInternalName(ProxyDate.class)};
+
+        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassName,
+                null, superClassFileNname, interfaceNames);
+
+        String classFileName = runtime ? type.getName() : proxyClassName;
+        cw.visitSource(classFileName + ".java", null);
+
+        delegateConstructors(cw, type, superClassFileNname);
+        addInstanceVariables(cw);
+        addProxyMethods(cw, true, proxyClassName, type);
+
+/* TODO
         addProxyDateMethods(bc, type);
         proxySetters(bc, type);
         addWriteReplaceMethod(bc, runtime);
-        return bc;
+*/
+        return cw.toByteArray();
+    }
+
+    /**
+     * add the instance variables to the class to be generated
+     */
+    private void addInstanceVariables(ClassWriter cw) {
+        // variable #1, the state manager
+        cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                "sm", Type.getDescriptor(OpenJPAStateManager.class), null, null).visitEnd();
+
+        // variable #2, the state manager
+        cw.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_TRANSIENT,
+                "field", Type.getDescriptor(int.class), null, null).visitEnd();
+    }
+
+    /**
+     * Returns the appropriate bytecode instruction to load a value from a variable to the stack
+     *
+     * @param type Type to load
+     * @return Bytecode instruction to use
+     */
+    private int getVarInsn(Class<?> type)
+    {
+        if (type.isPrimitive())
+        {
+            if (Integer.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Boolean.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Character.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Byte.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Short.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Float.TYPE.equals(type))
+            {
+                return Opcodes.FLOAD;
+            }
+            else if (Long.TYPE.equals(type))
+            {
+                return Opcodes.LLOAD;
+            }
+            else if (Double.TYPE.equals(type))
+            {
+                return Opcodes.DLOAD;
+            }
+        }
+
+        return Opcodes.ALOAD;
+    }
+
+    /**
+     * Create pass-through constructors to base type.
+     */
+    private void delegateConstructors(ClassWriter cw, Class type, String superClassFileNname) {
+        Constructor[] constructors = type.getConstructors();
+
+        for (Constructor constructor : constructors) {
+            Class[] params = constructor.getParameterTypes();
+            String[] exceptionTypes = getInternalNames(constructor.getExceptionTypes());
+            String descriptor = Type.getConstructorDescriptor(constructor);
+            MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", descriptor, null, exceptionTypes);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            for (int i = 1; i <= params.length; i++)
+            {
+                mv.visitVarInsn(getVarInsn(params[i-1]), i);
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, superClassFileNname, "<init>", descriptor, false);
+
+            mv.visitInsn(Opcodes.RETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+    }
+
+    private String[] getInternalNames(Class[] classes) {
+        String[] internalNames = new String[classes.length];
+
+        for (int i=0; i<classes.length; i++) {
+            internalNames[i] = Type.getInternalName(classes[i]);
+        }
+        return internalNames;
     }
 
+    /**
+     * Implement the methods in the {@link Proxy} interface, with the exception
+     * of {@link Proxy#copy}.
+     *
+     * @param changeTracker whether to implement a null change tracker; if false
+     * the change tracker method is left unimplemented
+     * @param proxyClassName
+     */
+    private void addProxyMethods(ClassWriter cw, boolean changeTracker, String proxyClassName, Class<?> parentClass) {
+
+        MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "setOwner",
+                Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE)
+                , null, null);
+        mv.visitCode();
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitVarInsn(Opcodes.ALOAD, 1);
+        mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassName, "sm", Type.getDescriptor(OpenJPAStateManager.class));
+
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitVarInsn(Opcodes.ILOAD, 2);
+        mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassName, "field", Type.getDescriptor(Integer.TYPE));
+
+        mv.visitInsn(Opcodes.RETURN);
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+
+
+        mv = cw.visitMethod(Modifier.PUBLIC, "getOwner",
+                Type.getMethodDescriptor(Type.getType(OpenJPAStateManager.class), Type.VOID_TYPE)
+                , null, null);
+        mv.visitCode();
+
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassName, "sm", Type.getDescriptor(OpenJPAStateManager.class));
+
+        mv.visitInsn(Opcodes.IRETURN);
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+
+
+        mv = cw.visitMethod(Modifier.PUBLIC, "getOwnerField",
+                Type.getMethodDescriptor(Type.INT_TYPE)
+                , null, null);
+        mv.visitCode();
+
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassName, "field", Type.INT_TYPE.getDescriptor());
+
+        mv.visitInsn(Opcodes.IRETURN);
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+
+
+        /*
+         * clone (return detached proxy object)
+         * Note:  This method is only being provided to satisfy a quirk with
+         * the IBM JDK -- while comparing Calendar objects, the clone() method
+         * was invoked.  So, we are now overriding the clone() method so as to
+         * provide a detached proxy object (null out the StateManager).
+         */
+        mv = cw.visitMethod(Modifier.PUBLIC, "clone",
+                Type.getMethodDescriptor(Type.getType(Object.class))
+                , null, null);
+        mv.visitCode();
+
+        mv.visitVarInsn(Opcodes.ALOAD, 0);
+        mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(parentClass), "clone",
+                Type.getMethodDescriptor(Type.getType(Object.class)), false);
+        mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Proxy.class));
+        mv.visitVarInsn(Opcodes.ASTORE, 1);
+        mv.visitVarInsn(Opcodes.ALOAD, 1);
+
+        mv.visitInsn(Opcodes.ACONST_NULL);
+        mv.visitInsn(Opcodes.ICONST_0);
+        mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, Type.getInternalName(Proxy.class), "setOwner",
+                Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE), true);
+
+        mv.visitVarInsn(Opcodes.ALOAD, 1);
+        mv.visitInsn(Opcodes.ARETURN);
+        mv.visitMaxs(-1, -1);
+        mv.visitEnd();
+
+
+        if (changeTracker) {
+            mv = cw.visitMethod(Modifier.PUBLIC, "getChangeTracker",
+                    Type.getMethodDescriptor(Type.getType(ChangeTracker.class))
+                    , null, null);
+            mv.visitCode();
+            mv.visitInsn(Opcodes.ACONST_NULL);
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+    }
+
+
     /**
      * Generate the bytecode for a calendar proxy for the given type.
      */
@@ -1751,8 +1965,14 @@ public class ProxyManagerImpl
                 bc = mgr.generateProxyCollectionBytecode(cls, false);
             else if (Map.class.isAssignableFrom(cls))
                 bc = mgr.generateProxyMapBytecode(cls, false);
-            else if (Date.class.isAssignableFrom(cls))
-                bc = mgr.generateProxyDateBytecode(cls, false);
+            else if (Date.class.isAssignableFrom(cls)) {
+                final String proxyClassName = getProxyClassName(cls, false);
+                byte[] bytes = mgr.generateProxyDateBytecode(cls, false, proxyClassName);
+
+                final String fileName = cls.getName().replace('.', '$') + PROXY_SUFFIX + ".class";
+                java.nio.file.Files.write(new File(dir, fileName).toPath(), bytes);
+                continue;
+            }
             else if (Calendar.class.isAssignableFrom(cls))
                 bc = mgr.generateProxyCalendarBytecode(cls, false);
             else {


[openjpa] 07/17: OPENJPA-2909 generate ProxyDate

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit 65242c70b7296c581c98df5e5d4471846c879fec
Author: Mark Struberg <st...@apache.org>
AuthorDate: Tue May 2 10:39:12 2023 +0200

    OPENJPA-2909 generate ProxyDate
    
    still wip
---
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 381 ++++++++++++++-------
 1 file changed, 258 insertions(+), 123 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 5d41ffa2e..6c43b9dec 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -681,25 +681,25 @@ public class ProxyManagerImpl
      */
     protected byte[] generateProxyDateBytecode(Class type, boolean runtime, String proxyClassName) {
         assertNotFinal(type);
-        proxyClassName = proxyClassName.replace('.', '/');
+        String proxyClassDef = proxyClassName.replace('.', '/');
 
         String superClassFileNname = type.getName().replace('.', '/');
 
         String[] interfaceNames = new String[]{Type.getInternalName(ProxyDate.class)};
 
         ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
-        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassName,
+        cw.visit(Opcodes.V11, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, proxyClassDef,
                 null, superClassFileNname, interfaceNames);
 
-        String classFileName = runtime ? type.getName() : proxyClassName;
+        String classFileName = runtime ? type.getName() : proxyClassDef;
         cw.visitSource(classFileName + ".java", null);
 
         delegateConstructors(cw, type, superClassFileNname);
         addInstanceVariables(cw);
-        addProxyMethods(cw, true, proxyClassName, type);
+        addProxyMethods(cw, true, proxyClassDef, type);
+        addProxyDateMethods(cw, proxyClassDef, type);
 
 /* TODO
-        addProxyDateMethods(bc, type);
         proxySetters(bc, type);
         addWriteReplaceMethod(bc, runtime);
 */
@@ -719,52 +719,6 @@ public class ProxyManagerImpl
                 "field", Type.getDescriptor(int.class), null, null).visitEnd();
     }
 
-    /**
-     * Returns the appropriate bytecode instruction to load a value from a variable to the stack
-     *
-     * @param type Type to load
-     * @return Bytecode instruction to use
-     */
-    private int getVarInsn(Class<?> type)
-    {
-        if (type.isPrimitive())
-        {
-            if (Integer.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Boolean.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Character.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Byte.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Short.TYPE.equals(type))
-            {
-                return Opcodes.ILOAD;
-            }
-            else if (Float.TYPE.equals(type))
-            {
-                return Opcodes.FLOAD;
-            }
-            else if (Long.TYPE.equals(type))
-            {
-                return Opcodes.LLOAD;
-            }
-            else if (Double.TYPE.equals(type))
-            {
-                return Opcodes.DLOAD;
-            }
-        }
-
-        return Opcodes.ALOAD;
-    }
 
     /**
      * Create pass-through constructors to base type.
@@ -791,100 +745,95 @@ public class ProxyManagerImpl
         }
     }
 
-    private String[] getInternalNames(Class[] classes) {
-        String[] internalNames = new String[classes.length];
-
-        for (int i=0; i<classes.length; i++) {
-            internalNames[i] = Type.getInternalName(classes[i]);
-        }
-        return internalNames;
-    }
-
     /**
      * Implement the methods in the {@link Proxy} interface, with the exception
      * of {@link Proxy#copy}.
      *
      * @param changeTracker whether to implement a null change tracker; if false
      * the change tracker method is left unimplemented
-     * @param proxyClassName
+     * @param proxyClassDef
      */
-    private void addProxyMethods(ClassWriter cw, boolean changeTracker, String proxyClassName, Class<?> parentClass) {
-
-        MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "setOwner",
-                Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE)
-                , null, null);
-        mv.visitCode();
-        mv.visitVarInsn(Opcodes.ALOAD, 0);
-        mv.visitVarInsn(Opcodes.ALOAD, 1);
-        mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassName, "sm", Type.getDescriptor(OpenJPAStateManager.class));
-
-        mv.visitVarInsn(Opcodes.ALOAD, 0);
-        mv.visitVarInsn(Opcodes.ILOAD, 2);
-        mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassName, "field", Type.getDescriptor(Integer.TYPE));
-
-        mv.visitInsn(Opcodes.RETURN);
-        mv.visitMaxs(-1, -1);
-        mv.visitEnd();
+    private void addProxyMethods(ClassWriter cw, boolean changeTracker, String proxyClassDef, Class<?> parentClass) {
 
+        {
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "setOwner",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE)
+                    , null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "sm", Type.getDescriptor(OpenJPAStateManager.class));
 
-        mv = cw.visitMethod(Modifier.PUBLIC, "getOwner",
-                Type.getMethodDescriptor(Type.getType(OpenJPAStateManager.class), Type.VOID_TYPE)
-                , null, null);
-        mv.visitCode();
-
-        mv.visitVarInsn(Opcodes.ALOAD, 0);
-        mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassName, "sm", Type.getDescriptor(OpenJPAStateManager.class));
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitVarInsn(Opcodes.ILOAD, 2);
+            mv.visitFieldInsn(Opcodes.PUTFIELD, proxyClassDef, "field", Type.getDescriptor(Integer.TYPE));
 
-        mv.visitInsn(Opcodes.IRETURN);
-        mv.visitMaxs(-1, -1);
-        mv.visitEnd();
+            mv.visitInsn(Opcodes.RETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
 
+        {
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "getOwner",
+                    Type.getMethodDescriptor(Type.getType(OpenJPAStateManager.class))
+                    , null, null);
+            mv.visitCode();
 
-        mv = cw.visitMethod(Modifier.PUBLIC, "getOwnerField",
-                Type.getMethodDescriptor(Type.INT_TYPE)
-                , null, null);
-        mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "sm", Type.getDescriptor(OpenJPAStateManager.class));
 
-        mv.visitVarInsn(Opcodes.ALOAD, 0);
-        mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassName, "field", Type.INT_TYPE.getDescriptor());
+            mv.visitInsn(Opcodes.IRETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
 
-        mv.visitInsn(Opcodes.IRETURN);
-        mv.visitMaxs(-1, -1);
-        mv.visitEnd();
+        {
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "getOwnerField",
+                    Type.getMethodDescriptor(Type.INT_TYPE)
+                    , null, null);
+            mv.visitCode();
 
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitFieldInsn(Opcodes.GETFIELD, proxyClassDef, "field", Type.INT_TYPE.getDescriptor());
 
-        /*
-         * clone (return detached proxy object)
-         * Note:  This method is only being provided to satisfy a quirk with
-         * the IBM JDK -- while comparing Calendar objects, the clone() method
-         * was invoked.  So, we are now overriding the clone() method so as to
-         * provide a detached proxy object (null out the StateManager).
-         */
-        mv = cw.visitMethod(Modifier.PUBLIC, "clone",
-                Type.getMethodDescriptor(Type.getType(Object.class))
-                , null, null);
-        mv.visitCode();
+            mv.visitInsn(Opcodes.IRETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
 
-        mv.visitVarInsn(Opcodes.ALOAD, 0);
-        mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(parentClass), "clone",
-                Type.getMethodDescriptor(Type.getType(Object.class)), false);
-        mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Proxy.class));
-        mv.visitVarInsn(Opcodes.ASTORE, 1);
-        mv.visitVarInsn(Opcodes.ALOAD, 1);
+        {
+            /*
+             * clone (return detached proxy object)
+             * Note:  This method is only being provided to satisfy a quirk with
+             * the IBM JDK -- while comparing Calendar objects, the clone() method
+             * was invoked.  So, we are now overriding the clone() method so as to
+             * provide a detached proxy object (null out the StateManager).
+             */
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "clone",
+                    Type.getMethodDescriptor(Type.getType(Object.class))
+                    , null, null);
+            mv.visitCode();
 
-        mv.visitInsn(Opcodes.ACONST_NULL);
-        mv.visitInsn(Opcodes.ICONST_0);
-        mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, Type.getInternalName(Proxy.class), "setOwner",
-                Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE), true);
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(parentClass), "clone",
+                    Type.getMethodDescriptor(Type.getType(Object.class)), false);
+            mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Proxy.class));
+            mv.visitVarInsn(Opcodes.ASTORE, 1);
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
 
-        mv.visitVarInsn(Opcodes.ALOAD, 1);
-        mv.visitInsn(Opcodes.ARETURN);
-        mv.visitMaxs(-1, -1);
-        mv.visitEnd();
+            mv.visitInsn(Opcodes.ACONST_NULL);
+            mv.visitInsn(Opcodes.ICONST_0);
+            mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, Type.getInternalName(Proxy.class), "setOwner",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(OpenJPAStateManager.class), Type.INT_TYPE), true);
 
+            mv.visitVarInsn(Opcodes.ALOAD, 1);
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
 
         if (changeTracker) {
-            mv = cw.visitMethod(Modifier.PUBLIC, "getChangeTracker",
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "getChangeTracker",
                     Type.getMethodDescriptor(Type.getType(ChangeTracker.class))
                     , null, null);
             mv.visitCode();
@@ -893,9 +842,195 @@ public class ProxyManagerImpl
             mv.visitMaxs(-1, -1);
             mv.visitEnd();
         }
+    }
+
+    /**
+     * Implement the methods in the {@link ProxyDate} interface.
+     */
+    private void addProxyDateMethods(ClassWriter cw, String proxyClassDef, Class type) {
+
+        final boolean hasDefaultCons = hasConstructor(type);
+        final boolean hasMillisCons = hasConstructor(type, long.class);
+
+        if (!hasDefaultCons && !hasMillisCons) {
+            throw new UnsupportedException(_loc.get("no-date-cons", type));
+        }
 
+        // add a default constructor that delegates to the millis constructor
+        if (!hasDefaultCons) {
+            MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE), null, null);
+            mv.visitCode();
+            mv.visitVarInsn(Opcodes.ALOAD, 0);
+            mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(System.class), "currentTimeMillis",
+                    Type.getMethodDescriptor(Type.LONG_TYPE), false);
+
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, Type.LONG_TYPE), false);
+
+            mv.visitInsn(Opcodes.RETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        {
+            // date copy
+            Constructor cons = findCopyConstructor(type);
+            Class[] params;
+            if (cons != null) {
+                params = cons.getParameterTypes();
+            }
+            else if (hasMillisCons) {
+                params = new Class[]{long.class};
+            }
+            else {
+                params = new Class[0];
+            }
+
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "copy",
+                    Type.getMethodDescriptor(Type.getType(Object.class), Type.getType(Object.class))
+                    , null, null);
+            mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(type));
+            mv.visitInsn(Opcodes.DUP);
+
+            if (params.length == 1) {
+                if (params[0] == long.class) {
+                    // call getTime on the given Date if the current type has a long constructor
+                    mv.visitVarInsn(Opcodes.ALOAD, 1);
+                    mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(java.util.Date.class));
+                    mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(java.util.Date.class), "getTime",
+                            Type.getMethodDescriptor(Type.LONG_TYPE), false);
+                }
+                else {
+                    // otherwise just pass the parameter
+                    mv.visitVarInsn(Opcodes.ALOAD, 1);
+                    mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(params[0]));
+                }
+            }
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE, getParamTypes(params)), false);
+
+            if (params.length == 0) {
+                mv.visitInsn(Opcodes.DUP);
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(java.util.Date.class));
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(java.util.Date.class), "getTime",
+                        Type.getMethodDescriptor(Type.LONG_TYPE), false);
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setTime",
+                        Type.getMethodDescriptor(Type.VOID_TYPE, Type.LONG_TYPE), false);
+            }
+            if ((params.length == 0 || params[0] == long.class)
+                    && Timestamp.class.isAssignableFrom(type)) {
+                mv.visitInsn(Opcodes.DUP);
+                mv.visitVarInsn(Opcodes.ALOAD, 1);
+                mv.visitTypeInsn(Opcodes.CHECKCAST, Type.getInternalName(Timestamp.class));
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Timestamp.class), "getNanos",
+                        Type.getMethodDescriptor(Type.INT_TYPE), false);
+                mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(type), "setNanos",
+                        Type.getMethodDescriptor(Type.VOID_TYPE, Type.INT_TYPE), false);
+
+            }
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+
+        {
+            // new instance factory
+            MethodVisitor mv = cw.visitMethod(Modifier.PUBLIC, "newInstance",
+                    Type.getMethodDescriptor(Type.getType(ProxyDate.class))
+                    , null, null);
+            mv.visitTypeInsn(Opcodes.NEW, proxyClassDef);
+            mv.visitInsn(Opcodes.DUP);
+            mv.visitMethodInsn(Opcodes.INVOKESPECIAL, proxyClassDef, "<init>",
+                    Type.getMethodDescriptor(Type.VOID_TYPE), false);
+
+            mv.visitInsn(Opcodes.ARETURN);
+            mv.visitMaxs(-1, -1);
+            mv.visitEnd();
+        }
+    }
+
+
+
+    /* a few utility methods to make life with ASM easier */
+
+    private String[] getInternalNames(Class[] classes) {
+        String[] internalNames = new String[classes.length];
+
+        for (int i=0; i<classes.length; i++) {
+            internalNames[i] = Type.getInternalName(classes[i]);
+        }
+        return internalNames;
+    }
+
+    private Type[] getParamTypes(Class[] params) {
+        Type[] types = new Type[params.length];
+        for (int i=0; i<types.length; i++) {
+            types[i] = Type.getType(params[i]);
+        }
+
+        return types;
+    }
+
+    private boolean hasConstructor(Class type, Class<?>... paramTypes) {
+        try {
+            return type.getDeclaredConstructor(paramTypes) != null;
+        }
+        catch (NoSuchMethodException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Returns the appropriate bytecode instruction to load a value from a variable to the stack
+     *
+     * @param type Type to load
+     * @return Bytecode instruction to use
+     */
+    private int getVarInsn(Class<?> type)
+    {
+        if (type.isPrimitive())
+        {
+            if (Integer.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Boolean.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Character.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Byte.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Short.TYPE.equals(type))
+            {
+                return Opcodes.ILOAD;
+            }
+            else if (Float.TYPE.equals(type))
+            {
+                return Opcodes.FLOAD;
+            }
+            else if (Long.TYPE.equals(type))
+            {
+                return Opcodes.LLOAD;
+            }
+            else if (Double.TYPE.equals(type))
+            {
+                return Opcodes.DLOAD;
+            }
+        }
+
+        return Opcodes.ALOAD;
     }
 
+    /* ASM end */
 
     /**
      * Generate the bytecode for a calendar proxy for the given type.


[openjpa] 14/17: OPENJPA-2909 fix stack calculation

Posted by st...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openjpa.git

commit ecff638a02f4bc2f1357857318657325e7d8da1e
Author: Mark Struberg <st...@apache.org>
AuthorDate: Thu May 4 19:53:11 2023 +0200

    OPENJPA-2909 fix stack calculation
    
    double and long require 2 positions on the stack.
---
 .../org/apache/openjpa/util/ProxyManagerImpl.java  | 33 +++++++++++++---------
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
index 80e8dc33c..0f1c2dc41 100644
--- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
+++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/ProxyManagerImpl.java
@@ -596,14 +596,19 @@ public class ProxyManagerImpl
 
     private static boolean isProxyable(Class<?> cls){
         int mod = cls.getModifiers();
-        if(Modifier.isFinal(mod))
+        if(Modifier.isFinal(mod)) {
             return false;
-        if(Modifier.isProtected(mod) || Modifier.isPublic(mod))
+        }
+
+        if(Modifier.isProtected(mod) || Modifier.isPublic(mod)) {
             return true;
+        }
+
         // Default scoped class, we can only extend if it is in the same package as the generated proxy. Ideally
         // we'd fix the code gen portion and place proxies in the same pacakge as the types being proxied.
-        if(cls.getPackage().getName().equals("org.apache.openjpa.util"))
+        if(cls.getPackage().getName().equals("org.apache.openjpa.util")) {
             return true;
+        }
 
         return false;
 
@@ -891,8 +896,7 @@ public class ProxyManagerImpl
                 continue;
             }
 
-            if (!startsWith(meth.getName(), "set")
-                    || meth.getParameterTypes().length != 1) {
+            if (!startsWith(meth.getName(), "set") || meth.getParameterTypes().length != 1) {
                 continue;
             }
 
@@ -1381,9 +1385,10 @@ public class ProxyManagerImpl
             MethodVisitor mv = ct.visitMethod(Opcodes.ACC_PUBLIC, "<init>", descriptor, null, exceptionTypes);
             mv.visitCode();
             mv.visitVarInsn(Opcodes.ALOAD, 0);
-            for (int i = 1; i <= params.length; i++)
-            {
-                mv.visitVarInsn(AsmHelper.getLoadInsn(params[i-1]), i);
+            int stackPos = 1;
+            for (Class param : params) {
+                mv.visitVarInsn(AsmHelper.getLoadInsn(param), stackPos);
+                stackPos += Type.getType(param).getSize();
             }
             mv.visitMethodInsn(Opcodes.INVOKESPECIAL, superClassFileNname, "<init>", descriptor, false);
 
@@ -1718,13 +1723,13 @@ public class ProxyManagerImpl
         for (Method meth : meths) {
             if (isSetter(meth) && !Modifier.isFinal(meth.getModifiers())) {
                 setters++;
-                proxySetter(ct, proxyClassDef, type, meth);
+                proxySetter(ct, type, meth);
             }
         }
         return setters > 0;
     }
 
-    private void proxySetter(ClassWriterTracker ct, String proxyClassDef, Class type, Method meth) {
+    private void proxySetter(ClassWriterTracker ct, Class type, Method meth) {
         Class[] params = meth.getParameterTypes();
         Class ret = meth.getReturnType();
 
@@ -1744,9 +1749,11 @@ public class ProxyManagerImpl
         mv.visitVarInsn(Opcodes.ALOAD, 0);
 
         // push all the method params to the stack
-        for (int i = 1; i <= params.length; i++)
-        {
-            mv.visitVarInsn(AsmHelper.getLoadInsn(params[i-1]), i);
+        int stackPos = 1;
+        for (int i = 1; i <= params.length; i++) {
+            Class param = params[i-1];
+            mv.visitVarInsn(AsmHelper.getLoadInsn(param), stackPos);
+            stackPos += Type.getType(param).getSize();
         }
 
         mv.visitMethodInsn(Opcodes.INVOKESPECIAL, Type.getInternalName(type), meth.getName(),