| Summary: | Optimize validation and content assist for Hermes parser | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | z_Archived | Reporter: | Pascal Filion <pascal.filion> | ||||||||
| Component: | Eclipselink | Assignee: | Pascal Filion <pascal.filion> | ||||||||
| Status: | RESOLVED FIXED | QA Contact: | |||||||||
| Severity: | normal | ||||||||||
| Priority: | P3 | CC: | neil.hauge | ||||||||
| Version: | unspecified | ||||||||||
| Target Milestone: | --- | ||||||||||
| Hardware: | All | ||||||||||
| OS: | All | ||||||||||
| Whiteboard: | |||||||||||
| Attachments: |
|
||||||||||
|
Description
Pascal Filion
Created attachment 192303 [details]
The patch contains the changes related to optimization
The patch includes the following changes: - The internal TypeResolver API was refactored (and renamed to Resolver too). A Resolver was constantly recreated during validation and content assist when the type or mapping for a path expression. Now a single instance exists for any resolver. "e.name" will be resolved once if it's used more than once in a query. - The declaration of the query is now scanned only once. JPQLQueryContext now contains that information, which is shared accross validation and content assist. Prior to this change, the declaration was rescanned everytime it was needed. - Some of the visitor classes are now cached, which means they can be reused until everything is disposed. It appears there are some problems with the patch. There are a few references to EntityTypeResolver after applying the patch, in addition to a few other compile errors. The test project has some compile errors due to the classpath not containing all the necessary required projects. Created attachment 192582 [details]
Updated patch since the previous one was not created correctly
Created attachment 192584 [details]
Updated patch since the previous one was not created correctly
The unit-tests were also converted to be a simple Java project but also a plug-in test, which will eventually be consumed.
Latest patches have been tested and committed. The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink |