Skip to content

Commit 978d183

Browse files
authored
Feature/version 2.2.0 (#386)
* Feature/transient fields (#142) * Fix null pointer if no enumerations are part of servcie * Enable HAS and enumeration as return type of operations * Allow Enumerations as operation parameter * Provide java based operations converted enumeration * Add SourceClear addon * Delete SourceClean addon * Enumerations at UDF functions - Works for bound functions - Works for functions with import * Correct unit tests * Enable multiple values for flags enumerations * Switch detection default between Embedded and Entity type * Allow collection attributes for metadata * Enable query without collection attributes * Rework query result conversion to reduce memory consumtion * Missing Metadata pom * First step entity with collections as return of function/action * Bugfix: Expand on Parent with $filter on navigation path * Enable the use of Join Tables - Filter on navigation via Join Table generally not supported * Create new query for inlinecount * Enable Join Tables@Navigation Filter - Not working mapped associations - Not working $count * Enable Join Tables@Navigation Filter - With mapped associations - With $count, know issue EclipsLink two sub types * Increase Version --> 0.2.6 * Remove deprecated JPAExecutableQuery * Bugfix: unidirectional join table based association * Access collection properties via navigation - New version * Access collection properties w and w/o $select * Access collection properties which are part of complex property * CUD operations on collection properties * Filter on collection properties pre optimization * Filter on collection properties any/all * Filter on collection w/o filter on $count and orderby $count * Correct issue #29 - Correct /$count implementation in JPAJoinQuery - Clean-up Hibernate differences -- Subquery from clause -- Id Class determination * Increase Version to 0.2.7 * Enable [email protected] in case of odata.metadata=full - links@complex types not yet working * Preparation for solution of issue OLINGO-1143 * Correct NullPointer and some clean-ups * Support order by $count - Increase version to 0.2.8 * Intermediate merge clean-up * Solve merge problem navigate complex collections * Resolve merge conflict converter * Correct error collection property and expand=* * Enable filter $count on collection property * Update version and url * Create and use page provider * Recreate change for solution of issue OLINGO-1143 * Finalize top level server driven paging * Correct string handling error * Correct link problem * Enable skiptoken to have other type than String * Move paging so next request injects old uriInfo correctly * Enable deep insert via complex properties * Ignore test for next commit * Enable create of a new entity linked by a to one using PATCH * Update to Olingo 4.5.0 - use new Olingo version - adopt one test to changed @odata.context content * Collection attributes rework. Issue #60 - Change processor pom -> javax.servlet became provided * Enable annotation for properties to mark them authorization relevant * Enable multiple protected properties at complex attributes * Rework EdmProtectedBy annotation to handle multiple claims at complex * Process protection * Rework handling of ignored protected * Made inner class static * Fixing issue #60 * $count query not working correctly on complex collection attributes * Various small bugs - Reorg. pom.xml - Correct http status on empty result - Correct empty check for collection properties * Correct typo in interface JPAODataPagingProvider * Prepare JPAODataDatabaseTableFunction for paging * Change to HSQLDB * Remove function from sql-file to work around problems with Derby * Correct NullPointerException EdmEntitySetResult * Determine result of create dependent based on before image * EntityType getAttribute did not return value for embedded id * Provide CUD example and correct query status codes * Correct query response * Maven Archetype for Spring based service * Upgrade to Junit5 to get support for Java > 1.8 * Extract interface for better unit test support - Cleanup tests * Clean-up interface implementation * Add SQL function handling * Complete DB function changes * Clean-up test class * Clean-up test class * Update Version number * Update Version number * Additional test for API classes * Enable suppress of wildcard in metadata * Enable wildcards during query processing * Increase information on error during filter * Support of PUT on collection properties and primitive properties * Fix Null Pointer on PATCH with return != minimal * Claims where not respected by queries issue #69 part one - /$count - ?$count=true - paging queries * Claims where not respected by queries issue #69 part two - $filter - Update on Olingo 4.6.0 * Restrict the DISTINCT to protections only * Increase test coverage - New tests - Rework vocabulary handling * Cleanup Vocabularies II - Add Action and Function - Remove NavigationProperty and dependent * Additional test and solution of issue #78 * Enable new annotation EdmVisibleFor at properties * Introduction of Request Context - Deprecation of two variants of JPAODataGetHandler.process - Increase test coverage * Restrict EdmVisiableFor to nullable non key attributes * Skip properties from selection that do not belong to provided group * Handle collection properties and navigation path * Enable groups at complex collections * Handle OrderBy clause * Correct unit test * Rework test containing images * Rework context handling - Move of cud handler to request context - Move of DebugSupport to request context (is request specific because of isUserAuthorized) - Introduction of builder for Service Context to get a leaner creation of handler * Providing groups during modifying requests * Re-enable old shortcut with late metadata provisioning * Update pom for missing jackson dependency * Update Archetype to version 0.3.4 * Update Version * Extension of session context, so an emf can be provided * Ignore annotation qualified if empty * Go back to Olingo JSON deserializer * Add qualifier to annotation * Increase release * Clean-up JPAEdmNameBuilder * Preparation of custom name builder - Create public interface - replace class by new interface * Revoke test adoption * Providing custome name builder * Update annotation EdmFunction * Increase release * Adopt archetype - Simplify service - Add integration test * Modify example did not persist on create * Deep Insert did not responded deep * Always select ETag * Complete ETag handling * Missing Context Changes * Reset unit test to current pushed state * Increase test coverage * Adopt test to real number of complex types * Enable V4.01 JSON format as request and response * Additional Integration tests support OData V4.01 JSON * Allow usage of different types of transaction * Increase Spring support * Bugfix/issue83 (#120) * Update Version * Extension of session context, so an emf can be provided * Preparation of custom name builder - Create public interface - replace class by new interface * Revoke test adoption * Providing custome name builder * Update annotation EdmFunction * Increase release * Adopt archetype - Simplify service - Add integration test * Modify example did not persist on create * Deep Insert did not responded deep * Always select ETag * Complete ETag handling * Missing Context Changes * Reset unit test to current pushed state * Increase test coverage * Adopt test to real number of complex types * Enable V4.01 JSON format as request and response * Additional Integration tests support OData V4.01 JSON * Allow usage of different types of transaction * Increase Spring support * Restrict $expand select by key range * Support root with navigation like AdministrativeDivision(...)/Children * Protect dilution of test coverage by test package (#133) * Increase release * Increase release (#136) * Protect dilution of test coverage by test package (#135) * Remove deprecated artifacts (#134) * Remove deprecated artefacts * Missing test adoptions * Upgrade Olingo version and processor version * Feature/transient fields (#137) * Increase release * Upgrade Olingo version and processor version * Prevent NPE on expand empty result (#138) * Correct SonarQube and SpotBug hints * Feature/transient fields (#139) * Increase release * Upgrade Olingo version and processor version * Correct SonarQube and SpotBug hints * SpotBugs and clean-ups * Build metadata I * First draft of criteria builder and query implementation (#140) * First draft of criteria builder and query implementation * Add Transient * First join version * Correct structured type * Test adoption was missing * Update criteria builder * Solve enum error * Support aggregation function * Correct buildInverseJoinColumns() error * Add Test buildInverseJoinColumns() error * Enable table join without entity type * Correct Error table name * Own test for JPAEdmProvider and correct name builder error * Additional test * Support parallel processing of batch requests * Complete synchronized creation of metadata * Enable transient field calculator * Suppress transient fields at $filter and $orderby * Enable transient collections and collections with transient attributes * Additional tests for changing operations * Enable absolute path in url * Add sonar plugin (#144) * Add sonar plugin * Update pom with sonar plugin * Feature/logging (#145) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Feature/logging (#147) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Logging as part of standard debugger * Generic authorization check for JPAExampleCUDRequestHandler * Feature/logging (#148) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Logging as part of standard debugger * Generic authorization check for JPAExampleCUDRequestHandler * Update xmake version * Feature/logging (#150) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Logging as part of standard debugger * Generic authorization check for JPAExampleCUDRequestHandler * Update xmake version * Clean-up sonar issues * Feature/logging (#151) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Logging as part of standard debugger * Generic authorization check for JPAExampleCUDRequestHandler * Update xmake version * Clean-up sonar issues * Update build status on read.me * New badges * Update README.md * Update README.md * Feature/logging (#152) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Logging as part of standard debugger * Generic authorization check for JPAExampleCUDRequestHandler * Update xmake version * Clean-up sonar issues * Update build status on read.me * New badges * Clean-up sonar issues * Create additional test for debugger * Add tests for debugger * Update README.md * Replace database derby -> hsqldb * Update README.md (#153) * Feature/logging (#154) * Add sonar plugin * Update pom with sonar plugin * Remove old xmake version * Logging as part of standard debugger * Generic authorization check for JPAExampleCUDRequestHandler * Update xmake version * Clean-up sonar issues * Update build status on read.me * New badges * Clean-up sonar issues * Create additional test for debugger * Add tests for debugger * Update README.md * Replace database derby -> hsqldb * Cleanup sonar issue * Increase test coverage for criteria builder (#155) * Feature/criteria builder (#156) * Increase test coverage for criteria builder * Replace double implementation by mocks * Update README.md (#157) * Feature/criteria builder (#158) * Increase test coverage for criteria builder * Replace double implementation by mocks * Rework vocabulary read * Feature/criteria builder (#159) * Increase test coverage for criteria builder * Replace double implementation by mocks * Rework vocabulary read * Add method to retrieve all claims * Update README.md (#160) * Update README.md * Update README.md * Remove potential null pointer (#161) * Bugfix/sonar issues (#162) * Remove potential null pointer * Remove potential Null Pointer * Bugfix/sonar issues (#163) * Remove potential null pointer * Remove potential Null Pointer * Remove potential Null Pointer * Bugfix/sonar issues (#164) * Remove potential null pointer * Remove potential Null Pointer * Remove potential Null Pointer * Additional clean-ups * Work on soanr issues * Bugfix/sonar issues (#165) * Remove potential null pointer * Remove potential Null Pointer * Remove potential Null Pointer * Additional clean-ups * Work on soanr issues * Additional cleanups * Feature/release 1.0.0 (#170) * Bugfix/typo package (#168) * Update version to 1.0.0-RC * Rename package to ...metadata.core.edm.mapper.extension * Rename message constants * Correct typos in method names * Rollback change to Optional * Support Include Annotation (#169) * Feature/include annotation (#171) * Support Include Annotation * Increase test coverage transient properties * Bugfix/issue98 (#173) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Bugfix/issue98 (#174) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * sonar issues (#175) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Bugfix/issue98 (#176) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Clean-up sonar issues * Bugfix/issue98 (#177) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Clean-up sonar issues * Delete intermediate code * Feature/criteria builder (#178) * Increase test coverage for criteria builder * Replace double implementation by mocks * Rework vocabulary read * Add method to retrieve all claims * Add README.md and correct spelling errors * Add README.md and correct spelling errors (#179) * Feature/release 1.0.0 (#192) * Bugfix/typo package (#168) * Update version to 1.0.0-RC * Rename package to ...metadata.core.edm.mapper.extension * Rename message constants * Correct typos in method names * Rollback change to Optional * Support Include Annotation (#169) * Feature/include annotation (#171) * Support Include Annotation * Increase test coverage transient properties * Bugfix/syntax errors (#181) * Feature/release 1.0.0 (#170) * Bugfix/typo package (#168) * Update version to 1.0.0-RC * Rename package to ...metadata.core.edm.mapper.extension * Rename message constants * Correct typos in method names * Rollback change to Optional * Support Include Annotation (#169) * Feature/include annotation (#171) * Support Include Annotation * Increase test coverage transient properties * Bugfix/issue98 (#173) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Bugfix/issue98 (#174) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * sonar issues (#175) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Bugfix/issue98 (#176) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Clean-up sonar issues * Bugfix/issue98 (#177) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Clean-up sonar issues * Delete intermediate code * Feature/criteria builder (#178) * Increase test coverage for criteria builder * Replace double implementation by mocks * Rework vocabulary read * Add method to retrieve all claims * Add README.md and correct spelling errors * Add README.md and correct spelling errors * Correct syntax errors metadata * Clean-up typos * Rework build of OrderBy creation (#183) * Bugfix/syntax errors (#185) * Feature/release 1.0.0 (#170) * Bugfix/typo package (#168) * Update version to 1.0.0-RC * Rename package to ...metadata.core.edm.mapper.extension * Rename message constants * Correct typos in method names * Rollback change to Optional * Support Include Annotation (#169) * Feature/include annotation (#171) * Support Include Annotation * Increase test coverage transient properties * Bugfix/issue98 (#173) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Bugfix/issue98 (#174) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * sonar issues (#175) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Bugfix/issue98 (#176) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Clean-up sonar issues * Bugfix/issue98 (#177) * Support java.time.Instant and BigInteger * Correct issue #98 - Correct typo - Make DatabaseProcessor public * Enhance documentation of transient property calculator * Clean-up sonar issue * Clean-up sonar * Clean-up author * Meaningfull error message on $apply * Service Context creates Emf Wrapper if present in class path * Suppoprt of MappedSuperclass * $top and $skip use order by primary key * Clean-up sonar issues * Clean-up sonar issues * Delete intermediate code * Feature/criteria builder (#178) * Increase test coverage for criteria builder * Replace double implementation by mocks * Rework vocabulary read * Add method to retrieve all claims * Add README.md and correct spelling errors * Add README.md and correct spelling errors * Add README.md and correct spelling errors (#179) * Correct syntax errors metadata * Clean-up typos * Update Version -> 1.0.0 * Usage of builder to create external request context (#187) * Bugfix/continue on error (#189) * Move batch processor from API to PROCESSOR package * Correct continue-on-error handling * Support generated Id in example CUD handler (#190) * Support generated Id in example CUD handler * Correct failing test * Adoption of archetype to 1.0.0 (#191) * Adoption of archetype to 1.0.0 * Correct sql error * Clean-up sonar issues * Correct criteria builder implementation (#193) * Feature/criteria builder (#194) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Feature/criteria builder (#195) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Eliminate duplicate code * Feature/criteria builder (#196) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Eliminate duplicate code * Add Locale to request context, so it can be set from user data * Correct request context copy * Feature/criteria builder (#197) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Eliminate duplicate code * Add Locale to request context, so it can be set from user data * Correct request context copy * Missing transient fields at $expand * Add tests * Feature/criteria builder (#198) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Eliminate duplicate code * Add Locale to request context, so it can be set from user data * Correct request context copy * Missing transient fields at $expand * Add tests * Fix GeneratedKey problem * Feature/criteria builder (#199) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Eliminate duplicate code * Add Locale to request context, so it can be set from user data * Correct request context copy * Missing transient fields at $expand * Add tests * Fix GeneratedKey problem * Intermediate state * Enable next block of queries * Expand with Join Tables * Last unit test corrections * Eliminate typos * Finalize changes * missing variable usage (#200) * missing variable usage * Increase processor version * Clean-up Sonar issues (#201) * Bugfix/no mapper for operations (#202) * Clean-up Sonar issues * Add test for type mapping for actions and java function + Cleanup test classes * Feature/1.0.1 (#203) * Correct criteria builder implementation * Enable sub query as FROM * Update tests * Update sonar issues * Update sonar issue * Add mutation testing to processor and metadata * Eliminate duplicate code * Add Locale to request context, so it can be set from user data * Correct request context copy * Missing transient fields at $expand * Add tests * Fix GeneratedKey problem * Change version to 1.0.1 * New version (#204) * Bugfix/filter eq withdate (#205) * New version * Support filter on Date and DateTime * Correct precision * Change another test * Us generated alias for column selection (#206) * Upgrade Version (#207) * Us generated alias for column selection * Upgrade version * Reduce complexity (#209) * ALL did not work with functions like startswith (#210) * Update version (#208) * Entity Set Path @ DB Functions (#211) * Feature/new archetype (#212) * Clean-up folder name * Create archetype repo * Use copy of spring archetype as start * Enable named queries * Feature/new archetype (#213) * Clean-up folder name * Create archetype repo * Use copy of spring archetype as start * Enable named queries * Allow Star for non string claim properties * Add Equals method to DeepProtectedExample * Feature/new archetype (#214) * Clean-up folder name * Create archetype repo * Use copy of spring archetype as start * Enable named queries * Allow Star for non string claim properties * Add Equals method to DeepProtectedExample * Enable grant access to all for non string fields read * Replace Reflections API by Reflections8 (#215) * Support entitytypes singeltons (#216) * New annotation to make singletons and entity types - Update to olingo 4.8.0 - Deprecate EdmAsEntitySet - Read not ready * Update README.md (#218) * Update README.md * Update README.md * Update README.md * Solve issue 136 (#217) * Solve issue 136 * Eliminate hyphen * Eliminate WhiteSource detected vulnerabilities (#219) * Eliminate WhiteSource detected vulnerabilities * Add now required dependency * Remove setExternalName from Metadata Post Processor (#220) * Support entitytypes singeltons (#221) * New annotation to make singletons and entity types - Update to olingo 4.8.0 - Deprecate EdmAsEntitySet * Wrong entity type on singleton only * Add java doc to TopLevelElementRepresentation * Finalize singleton metadata handling * Clean-up test classes * Add option to retrieve Singleton from SD * Rename test class * Support entitytypes singeltons (#222) * New annotation to make singletons and entity types - Update to olingo 4.8.0 - Deprecate EdmAsEntitySet * Wrong entity type on singleton only * Add java doc to TopLevelElementRepresentation * Finalize singleton metadata handling * Clean-up test classes * Add option to retrieve Singleton from SD * Rename test class * Add and clean-up unit tests * Query extension declaration (#223) * New annotation to make singletons and entity types - Update to olingo 4.8.0 - Deprecate EdmAsEntitySet * Wrong entity type on singleton only * Add java doc to TopLevelElementRepresentation * Finalize singleton metadata handling * Clean-up test classes * Add option to retrieve Singleton from SD * Rename test class * Add and clean-up unit tests * Introduce query extension metadata * Enable Singleton and Cast on subtypes - clean-up sonar issues * Support entity types and singletons (#224) * New annotation to make singletons and entity types - Update to olingo 4.8.0 - Deprecate EdmAsEntitySet * Wrong entity type on singleton only * Add java doc to TopLevelElementRepresentation * Finalize singleton metadata handling * Clean-up test classes * Add option to retrieve Singleton from SD * Rename test class * Add and clean-up unit tests * Introduce query extension metadata * Enable Singleton and Cast on subtypes - clean-up sonar issues * Clean-up sonar issues * Support cast on navigations (#225) * New annotation to make singletons and entity types - Update to olingo 4.8.0 - Deprecate EdmAsEntitySet * Wrong entity type on singleton only * Add java doc to TopLevelElementRepresentation * Finalize singleton metadata handling * Clean-up test classes * Add option to retrieve Singleton from SD * Rename test class * Add and clean-up unit tests * Introduce query extension metadata * Enable Singleton and Cast on subtypes - clean-up sonar issues * Clean-up sonar issues * Cast within navigation path * Add cast collections * Add tests for EdmBoundCast * Support Cast on $expand * Update README.md (#226) * Update README.md * Update README.md * Update README.md * Update README.md * Bugfix/no constranis with ignored properties (#227) * Suppress referential constraint for properties that shall be ignored * No Referential Constraint in case one property shall be ignored * Bugfix/no constranis with ignored properties (#228) * Suppress referential constraint for properties that shall be ignored * No Referential Constraint in case one property shall be ignored * Bring back error on ignored * Enable subtyping for complex types (#229) * Support transient properties that require ignored properties (#231) * Bugfix/multi level inheritance (#232) * Adopt process-cb * Correct type converter problem * Use dbType for tuple result mapping * Bugfix/multi level inheritance (#233) * Adopt process-cb * Correct type converter problem * Use dbType for tuple result mapping * Correct constructor test of extension * Feature/release 1.0.3 (#234) * Correct typos and replace deprecated method * Set final Version * Feature/release 1.0.4 (#235) * Error corrections - Debugger did not work - Transaction Factory not forwarded * Update release * Make debugger runtime a List * Feature/release 1.0.4 (#236) * Error corrections - Debugger did not work - Transaction Factory not forwarded * Update release * Make debugger runtime a List * Small adoptions to test model * Reset change * Error correction (#237) * Feature/release 1.0.5 (#238) * Error corrections - Debugger did not work - Transaction Factory not forwarded * Update release * Make debugger runtime a List * Small adoptions to test model * Reset change * Add test for criteria builder * Error correction * Update H2 version (#239) * Update H2 version * Update version and rework DataSourceHelper * Feature/release 1.0.6 (#240) * Update H2 version * Update version and rework DataSourceHelper * Let H2 run in Postges mode * Upgrade version and additional tests (#241) * Upgrade version and additional tests * Remove session context from queries * Remove session context from processors * New version an sonar clean-up (#242) * Release 1.1.0 (#243) * New version an sonar clean-up * New path property fro sonar * Release 1.1.0 (#244) * New version an sonar clean-up * New path property fro sonar * Test usage of SNAPSHOT version * Update version -> 1.0.8 (#245) * Update version -> 1.0.8 * Count queries support Integer as result * Update archetype to support PATCH * Feature/release 1.0.0 (#247) * New version an sonar clean-up * New path property fro sonar * Test usage of SNAPSHOT version * Adopt archetype * Clean-up sonar issues * Resolve more sonar issues * Introducing virtual property * Clean-up associations and enable default columns when using ...-cb * Generate metadata for overloaded action (#248) * Generate metadata for overloaded action * Process action * Feature/action overload (#249) * Generate metadata for overloaded action * Process action * Use constructor of entity type an action is called for not of binding * Fix claims in collections where (#250) * Fix claims in collections where * Missed interface definition * Missed test renaming * Use dbtype to build key pair in case a conversion exists (#251) * Enable more constructors for binding parameter (#252) * Feature/more flexable constructor determination operations (#253) * Enable more constructors for binding parameter * Clean-up sonar errors * New type cast added - they have possible data lost (#254) * Collection not longer retrieves transient (#255) * Collection not longer retrieves transient * Skip unit test * Enhance partner determination (#256) * Bugfix/reuse navigation as partner (#257) * Enhance partner determination * Remove one sonar issue * Bugfix/reuse navigation as partner (#258) * Enhance partner determination * Remove one sonar issue * Correct partner determination * No fallback to server locale in case bundle requested local not found (#259) * Replace file reader (#260) * Replace fixed values by variables (#261) * Bugfix/error in controller test (#262) * Replace fixed values by variables * Update pom * Update archetype pom (#265) * Defect/archetype pom (#266) * Update archetype pom * Check older version of sonar plugin * Update test constants (#267) * Correct count behavior (#268) * Change to Java 11 (#269) * Change to Java 11 * Revert Java 11 * Update README.md (#270) * Defect/count not working on hana (#271) * Correct count behavior * Ignore sonar check. Equal methods are generated * Defect/java function parameter name (#272) * Raise meaningful exception on empty function parameter name * Meaningful exception if action parameter name empty * Raise message in case of Void as return type for functions (#273) * Raise message in case of Void as return type for functions * Add extenstion * Error in if clause * Extension of visitor for java functions (#274) * Update version to 1.1.1 (#275) * Feature/predefined annotations (#276) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Add page to order by builder (#277) * Feature/predefined annotations (#278) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Intermediate state * Clean-up basic mapping and introduce annotation * Finalize annotation mapper * Feature/predefined annotations (#279) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Intermediate state * Clean-up basic mapping and introduce annotation * Finalize annotation mapper * Update dependency * Feature/predefined annotations (#280) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Intermediate state * Clean-up basic mapping and introduce annotation * Finalize annotation mapper * Update dependency * Adopt HSQLDB * Update .xmake.cfg (#283) * Update .xmake.cfg * Update .xmake.cfg * Correct spelling (#281) * Feature/predefined annotations (#282) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Intermediate state * Clean-up basic mapping and introduce annotation * Finalize annotation mapper * Update dependency * Adopt HSQLDB * Rename package for vocabulary parser * Move OData vocabularies to new module * Merge tests * Annotations in metadata * Finalize annotations within metadata * Update .xmake.cfg (#284) * Update .xmake.cfg * Update .xmake.cfg * Feature/predefined annotations (#286) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Intermediate state * Clean-up basic mapping and introduce annotation * Finalize annotation mapper * Update dependency * Adopt HSQLDB * Rename package for vocabulary parser * Move OData vocabularies to new module * Merge tests * Annotations in metadata * Finalize annotations within metadata * Support sorting restrictions by annotation * Build annotation based expand check * Expand star via path reads only requested from database * Check countability * Support collection property count * Annotations@Singeltons * Provide AnnotationProvider to all model elements * Enable annotations at properties * Feature/predefined annotations (#287) * First list of predefined OData annotations * Update capabilities annotations * Sonar issues * Update dependencies * Adopt layer test * Intermediate state * Clean-up basic mapping and introduce annotation * Finalize annotation mapper * Update dependency * Adopt HSQLDB * Rename package for vocabulary parser * Move OData vocabularies to new module * Merge tests * Annotations in metadata * Finalize annotations within metadata * Support sorting restrictions by annotation * Build annotation based expand check * Expand star via path reads only requested from database * Check countability * Support collection property count * Annotations@Singeltons * Provide AnnotationProvider to all model elements * Enable annotations at properties * Enable access to annotations via JPARequestEntity * Watch filtering * Clean-up pom and typo correction (#288) * Solve issue 212 and fix permission check issue with join tables (#289) * Solve issue 212 and fix permission check issue with join tables * $count for collection join as well * Clean-up code * Fix issue, converting type (#290) * Fix issue, converting type * Fix unit test * Correct type determination * Multi step Mapped Superclass (#291) * Upgrade H2 to 2.2.220 (#293) * Correct navigation to one is null (#294) * Fix join column determination with cyclic dependency (#295) * Fix join column determination with cyclic dependency * Additional test for navigation with mapped join table * Make OneToOne required and handle non JPA Processor errors in metadata (#296) * Defect/issue214 (#297) * Make OneToOne required and handle non JPA Processor errors in metadata * Clean-up warnings * Defect/issue214 (#298) * Make OneToOne required and handle non JPA Processor errors in metadata * Clean-up warnings * Add check for OneToMany * Clean-up sonar issues * Update .xmake.cfg (#300) * Update version to 2.0.0 (#299) * Update version to 2.0.0 * Unify junit version * Make use of Jakarta * Clean-up sonar issues created by switching to Java 17 * Update dependencies * Update dependencies and clean-up typos * Add unit tests * Increase test coverage * Defect/issue226 (#301) * Update version * Adopt correction done for release * Clean-up archetype * Clean-up error * Add test to check Olingo not supporting $expand...($level=; $expand...) * Note thrown runtime exception * First level of COUNT query as IN (#302) * Defect/issues239 (#303) * First level of COUNT query as IN * Deletion of JPACollectionFilterQuery * Defect/issues239 (#304) * First level of COUNT query as IN * Deletion of JPACollectionFilterQuery * Handle null where conditions * Rename properties file to prevent name clashes (#305) * Rename properties file to prevent name clashes * Update dependency, resolve conflict with Olingo * Clean-up pom and some code (#306) * Defect/pom cleanup (#307) * Clean-up pom and some code * Update dependencies * Archetype and SOnar clean-up (#308) * Add protection where to collection query (#309) * Check if cast is necessary (#310) * Set version to 2.0.2 (#311) * Update to Olingo 5.0.0 and remove wrapper (#314) * Extend interface for server driven paging (#313) * Extend interface for server driven paging * Correct failing tests * Clean-ups * Sonar clean-up * Change default implementation * Enhance paging provider interface * Finalize paging provider * Feature/enhancement of paging (#315) * Extend interface for server driven paging * Correct failing tests * Clean-ups * Sonar clean-up * Change default implementation * Enhance paging provider interface * Finalize paging provider * Use synchronized instead of thread save collections * First version and some clean-ups (#312) * First version and some clean-ups * Update filter restriction and new query directives * New query implementation for count (#316) * Feature/annotation api extension (#317) * First step * Enhancement with path expressions * Re-factor annotation search * Get annotation value from property * Prepare test of EntityType and NavigationProperty * Finalize annotation API * Update project files (#318) * Add null check for NOT IN clauses (#319) * Fix $count problem with collection properties (#320) * Fix $count problem with collection properties * Handle navigation filter query for collection properties * Defect/use raw uri for vocabularies (#321) * Update urls * update pom * Defect/use raw uri for vocabularies (#322) * Update urls * update pom * Defect/missing paging expand with cp (#323) * Introduction of default paging provider * Skip token shall be null * Handle LIMIT and OFFSET with TypedQuery (#324) * Defect/eclipse link hana problem (#325) * Handle LIMIT and OFFSET with TypedQuery * Update default for LIMIT * Check restrictions on IN clause (#326) * Correct NPE if enum property is nullable (#327) * Update README.md (#328) * Update README.md * Update README.md * Update version to 2.2.0-SNAPSHOT * Fix duplicates result multi expands issue#292 (#329) * Defect/enumeration convertion error (#330) * Update Version * Make use of @Enumerated and fix order issue * Suppress generation of defaults for LIMIT and OFFSET (#331) * Enable order by to one associations (#333) * Enhanced ETag handling for GET entity set requests (#332) * Enhanced ETag handling for GET entity set requests * Prepare ETag handling for functions and actions * Cleanup test for filter using db functions * Fix unit tests * ETag at Functions and Actions * Defect/orderby navigation to on (#334) * Enable order by to one associations * Group By at sub queries * Correct collection property select clause issues (#335) * Enable nested lambda expressions (#336) * Fix problem with expand and lambda to collection (#337) * Set version to 2.1.3 (#338) * Feature/release 2.1.3 (#339) * Set version to 2.1.3 * Update readme * Enable weak etags * Add word * Generalize unit test * Feature/release 2.1.3 (#340) * Set version to 2.1.3 * Update readme * Enable weak etags * Add word * Generalize unit test * Adopt validation header check to potential lower case conversion * Update to version 2.1.4 (#341) * Update to version 2.2.0 (#342) * Defect/issue 330 (#343) * Add derby as db option and allow integer as count value * Merge remote-tracking branch 'origin/master' into defect/issue-330 * Defect/issue 330 (#344) * Add derby as db option and allow integer as count value * Merge remote-tracking branch 'origin/master' into defect/issue-330 * Enable database specific conversion of cb * Update test * Fix issue with orderby and description properties (#345) - re-think orderby creation * Add test * Update gitignore * Handle missed changes * clean-up * Update artifact pom * Clean-up duplicate code * server driven paging on expand (#346) * Clean-up * Add MySQL to migration 1.1 * Uri switch and singleton problem solution * Page no longer used. Usage of wrapped uri info - Add paging provider to request context - Enable skip token for expand result * Enable paging for first level of expand * Solve issue 362 * Change way of conversion of expand result to on-demand * Support $level and paging * Solution for issue 376 and support of star - missing support of star levels=max - missing max deprecation warning * Solution for issue 376 and support of star - missing support of star levels=max - missing max deprecation warning * Set back Derby version * Add star with levels=max and warning * Adopt test * Update create response (#347) * Feature/server driven paging expand (#348) * Update create response * Clean-up sonar * Feature/server driven paging expand (#349) * Clean-up * Add MySQL to migration 1.1 * Uri switch and singleton problem solution * Page no longer used. Usage of wrapped uri info - Add paging provider to request context - Enable skip token for expand result * Enable paging for first level of expand * Solve issue 362 * Change way of conversion of expand result to on-demand * Support $level and paging * Solution for issue 376 and support of star - missing support of star levels=max - missing max deprecation warning * Solution for issue 376 and support of star - missing support of star levels=max - missing max deprecation warning * Set back Derby version * Add star with levels=max and warning * Adopt test * Finalize server driven paging $expand * Update pom
1 parent 0438149 commit 978d183

File tree

19 files changed

+289
-141
lines changed

19 files changed

+289
-141
lines changed

jpa-archetype/odata-jpa-archetype-spring/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717
<extension>
1818
<groupId>org.apache.maven.archetype</groupId>
1919
<artifactId>archetype-packaging</artifactId>
20-
<version>3.2.1</version>
20+
<version>3.3.0</version>
2121
</extension>
2222
</extensions>
2323
<pluginManagement>
2424
<plugins>
2525
<plugin>
2626
<groupId>org.apache.maven.plugins</groupId>
2727
<artifactId>maven-archetype-plugin</artifactId>
28-
<version>3.2.1</version>
28+
<version>3.3.0</version>
2929
<configuration>
3030
<debug>true</debug>
3131
</configuration>

jpa/odata-jpa-metadata/src/test/java/com/sap/olingo/jpa/metadata/core/edm/mapper/impl/IntermediateDescriptionPropertyTest.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ void checkAnnotations() throws ODataJPAModelException {
262262

263263
@Test
264264
void checkPostProcessorCalled() throws ODataJPAModelException {
265-
// PostProcessorSpy spy = new PostProcessorSpy();
266265
IntermediateModelElement.setPostProcessor(processor);
267266
final Attribute<?, ?> jpaAttribute = helper.getDeclaredAttribute(helper.getEmbeddableType("PostalAddressData"),
268267
"countryName");
@@ -285,35 +284,31 @@ void checkPostProcessorAnnotationAdded() throws ODataJPAModelException {
285284
@Test
286285
void checkEmptyAssociationThrowsException() throws ODataJPAModelException {
287286

288-
final IntermediateDescriptionProperty cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(
289-
false, false, 0), et, helper.schema);
287+
cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(false, false, 0), et, helper.schema);
290288
final ODataJPAModelException act = assertThrows(ODataJPAModelException.class, () -> cut.lazyBuildEdmItem());
291289
assertEquals(ODataJPAModelException.MessageKeys.DESCRIPTION_ANNOTATION_MISSING.getKey(), act.getId());
292290
}
293291

294292
@Test
295293
void checkUnknownAttributeAtTargetThrowsException() throws ODataJPAModelException {
296294

297-
final IntermediateDescriptionProperty cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(
298-
true, false, 0), et, helper.schema);
295+
cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(true, false, 0), et, helper.schema);
299296
final ODataJPAModelException act = assertThrows(ODataJPAModelException.class, () -> cut.lazyBuildEdmItem());
300297
assertEquals(ODataJPAModelException.MessageKeys.INVALID_DESCRIPTION_PROPERTY.getKey(), act.getId());
301298
}
302299

303300
@Test
304301
void checkNoLocationAtTargetThrowsException() throws ODataJPAModelException {
305302

306-
final IntermediateDescriptionProperty cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(
307-
true, true, 0), et, helper.schema);
303+
cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(true, true, 0), et, helper.schema);
308304
final ODataJPAModelException act = assertThrows(ODataJPAModelException.class, () -> cut.lazyBuildEdmItem());
309305
assertEquals(ODataJPAModelException.MessageKeys.DESCRIPTION_LOCALE_FIELD_MISSING.getKey(), act.getId());
310306
}
311307

312308
@Test
313309
void checkLocationAndLanguageAtTargetThrowsException() throws ODataJPAModelException {
314310

315-
final IntermediateDescriptionProperty cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(
316-
true, true, 2), et, helper.schema);
311+
cut = new IntermediateDescriptionProperty(nameBuilder, createAttributeMock(true, true, 2), et, helper.schema);
317312
final ODataJPAModelException act = assertThrows(ODataJPAModelException.class, () -> cut.lazyBuildEdmItem());
318313
assertEquals(ODataJPAModelException.MessageKeys.DESCRIPTION_LOCALE_FIELD_MISSING.getKey(), act.getId());
319314
}
@@ -393,17 +388,24 @@ void checkPathHasJoinTableNull() throws ODataJPAModelException {
393388
assertNull(act.getJoinTable());
394389
}
395390

396-
private class PostProcessorSetName implements JPAEdmMetadataPostProcessor {
391+
@Test
392+
void checkPathGetForeignKeyColumns() throws ODataJPAModelException {
393+
createDefaultCut();
394+
final var act = cut.getPath().getForeignKeyColumns();
395+
assertNotNull(act);
396+
assertTrue(act.isEmpty());
397+
}
398+
399+
private static class PostProcessorSetName implements JPAEdmMetadataPostProcessor {
397400

398401
@Override
399402
public void processProperty(final IntermediatePropertyAccess property, final String jpaManagedTypeClassName) {
400-
if (jpaManagedTypeClassName.equals(ADDR_CANONICAL_NAME)) {
401-
if (property.getInternalName().equals("countryName")) {
402-
final CsdlAnnotation annotation = new CsdlAnnotation();
403-
annotation.setTerm("Immutable");
404-
annotation.setExpression(new CsdlConstantExpression(ConstantExpressionType.Bool, "true"));
405-
property.addAnnotations(Collections.singletonList(annotation));
406-
}
403+
if (jpaManagedTypeClassName.equals(ADDR_CANONICAL_NAME)
404+
&& property.getInternalName().equals("countryName")) {
405+
final CsdlAnnotation annotation = new CsdlAnnotation();
406+
annotation.setTerm("Immutable");
407+
annotation.setExpression(new CsdlConstantExpression(ConstantExpressionType.Bool, "true"));
408+
property.addAnnotations(Collections.singletonList(annotation));
407409
}
408410
}
409411

@@ -430,7 +432,7 @@ private void createDefaultCut() throws ODataJPAModelException {
430432
}
431433

432434
private Attribute<?, ?> createAttributeMock(final boolean association, final boolean associationName,
433-
final int langFields) {
435+
final int languageFields) {
434436
final Attribute<?, ?> attribute = mock(Attribute.class);
435437
final ManagedType<?> managedType = mock(ManagedType.class);
436438
final Member member = mock(AnnotatedMember.class);
@@ -461,9 +463,9 @@ public Class<BusinessPartner> answer(final InvocationOnMock invocation) throws T
461463
when(((AnnotatedElement) member).getAnnotation(EdmDescriptionAssociation.class)).thenReturn(a);
462464
if (associationName)
463465
when(a.descriptionAttribute()).thenReturn("name");
464-
if (langFields > 0)
466+
if (languageFields > 0)
465467
when(a.languageAttribute()).thenReturn("language");
466-
if (langFields > 1)
468+
if (languageFields > 1)
467469
when(a.localeAttribute()).thenReturn("location");
468470
}
469471
return attribute;

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/api/JPAODataPage.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,20 @@
55

66
import org.apache.olingo.server.api.uri.UriInfoResource;
77

8+
/**
9+
* A page in case a the amount of returned data shall be restricted by the server.
10+
*
11+
* @param uriInfo UriInfoResource of the original request
12+
* @param skip Skip value to be used
13+
* @param top Top value to be used
14+
* @param skipToken The skip token to be used in the next link for non expand requests.
15+
* @param expandInformation Provides for pages of restricted expand requests the path and key information needed to build the
16+
* next
17+
* request.
18+
*
19+
*/
820
public record JPAODataPage(UriInfoResource uriInfo, int skip, int top, Object skipToken,
9-
List<JPAODataPageExpandInfo> expandInfo) {
21+
List<JPAODataPageExpandInfo> expandInformation) {
1022

1123
public JPAODataPage(final UriInfoResource uriInfo, final int skip, final int top, final Object skipToken) {
1224
this(uriInfo, skip, top, skipToken, Collections.emptyList());
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
package com.sap.olingo.jpa.processor.core.api;
22

3+
/**
4+
*
5+
* @param navigationPropertyPath Concatenated path information leading to the next expand
6+
* @param keyPath Concatenated key information to be used to convert the expand
7+
*
8+
* @author Oliver Grande
9+
* @since 2.2.0
10+
*
11+
*/
312
public record JPAODataPageExpandInfo(String navigationPropertyPath, String keyPath) {
413

514
}

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/api/JPAODataPagingProvider.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ default JPAODataPage getFirstPage(final UriInfo uriInfo, @Nullable final Integer
8383
* @param uriInfo
8484
* @param preferredPageSize Value of the odata.maxpagesize preference header
8585
* @param countQuery A query that can be used to determine the maximum number of results that can be
86-
* expected. Only if the number of expected results is bigger then the page size a next link
86+
* expected. Only if the number of expected results is bigger then the page size a page should be generated.
8787
* @param em An instance of the entity manager
8888
* @return An optional of the page that shall be read. In case the optional is empty, all records are read from the
8989
* database.
@@ -98,11 +98,12 @@ default Optional<JPAODataPage> getFirstPage(final JPARequestParameterMap request
9898
/**
9999
* Requires module {@code odata-jpa-processor-cb}
100100
* @param requestParameter The parameter from the request context
101-
* @param pathInformation
102-
* @param uriInfo
103-
* @param association
101+
* @param pathInformation Fragmented string representation of the URI, to be able to rebuild the uri info.
102+
* @param uriInfo Java representation of the request URI
103+
* @param association Metadata of the
104104
* @param preferredPageSize
105-
* @param count
105+
* @param count A query that can be used to determine the maximum number of results that can be
106+
* expected per parent. Only if the number of expected results is bigger then the page size a page should be generated.
106107
* @param em An instance of the entity manager
107108
* @return
108109
*/

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/api/JPAODataRequestContextAccess.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,6 @@ public Optional<EdmQueryExtensionProvider> getQueryEnhancement(@Nonnull final JP
7373
public JPAODataEtagHelper getEtagHelper();
7474

7575
public Optional<JPAODataPagingProvider> getPagingProvider();
76+
77+
public JPAODataPathInformation getPathInformation();
7678
}

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/processor/JPANavigationRequestProcessor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ public <K extends Comparable<K>> void retrieveData(final ODataRequest request, f
8282
final ContentType responseFormat) throws ODataException {
8383

8484
try (var measurement = debugger.newMeasurement(this, "retrieveData")) {
85-
8685
checkRequestSupported();
8786
// Create a JPQL Query and execute it
8887
JPAJoinQuery query = null;

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/processor/JPAODataInternalRequestContext.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.sap.olingo.jpa.processor.core.api.JPAODataEtagHelper;
3737
import com.sap.olingo.jpa.processor.core.api.JPAODataGroupProvider;
3838
import com.sap.olingo.jpa.processor.core.api.JPAODataPagingProvider;
39+
import com.sap.olingo.jpa.processor.core.api.JPAODataPathInformation;
3940
import com.sap.olingo.jpa.processor.core.api.JPAODataQueryDirectives;
4041
import com.sap.olingo.jpa.processor.core.api.JPAODataRequestContext;
4142
import com.sap.olingo.jpa.processor.core.api.JPAODataRequestContextAccess;
@@ -71,6 +72,7 @@ public final class JPAODataInternalRequestContext implements JPAODataRequestCont
7172
private JPAODataQueryDirectives queryDirectives;
7273
private JPAODataEtagHelper etagHelper;
7374
private Optional<JPAODataPagingProvider> pagingProvider;
75+
private JPAODataPathInformation pathInformation;
7476

7577
public JPAODataInternalRequestContext(@Nonnull final JPAODataRequestContext requestContext,
7678
@Nonnull final JPAODataSessionContextAccess sessionContext, final OData odata) {
@@ -89,7 +91,7 @@ public JPAODataInternalRequestContext(@Nonnull final JPAODataRequestContext requ
8991
*/
9092
public JPAODataInternalRequestContext(final UriInfoResource uriInfo, final JPAODataRequestContextAccess context)
9193
throws ODataJPAProcessorException {
92-
this(uriInfo, null, context, context.getHeader());
94+
this(uriInfo, null, context, context.getHeader(), null);
9395
}
9496

9597
/**
@@ -100,11 +102,12 @@ public JPAODataInternalRequestContext(final UriInfoResource uriInfo, final JPAOD
100102
*/
101103
public JPAODataInternalRequestContext(final UriInfoResource uriInfo, final JPAODataRequestContextAccess context,
102104
final Map<String, List<String>> header) throws ODataJPAProcessorException {
103-
this(uriInfo, null, context, header);
105+
this(uriInfo, null, context, header, null);
104106
}
105107

106108
JPAODataInternalRequestContext(final UriInfoResource uriInfo, @Nullable final JPASerializer serializer,
107-
final JPAODataRequestContextAccess context, final Map<String, List<String>> header)
109+
final JPAODataRequestContextAccess context, final Map<String, List<String>> header,
110+
final JPAODataPathInformation pathInformation)
108111
throws ODataJPAProcessorException {
109112

110113
copyContextValues(context);
@@ -115,6 +118,7 @@ public JPAODataInternalRequestContext(final UriInfoResource uriInfo, final JPAOD
115118
this.header = new JPAHttpHeaderHashMap(header);
116119
this.customParameter = new JPARequestParameterHashMap(context.getRequestParameter());
117120
this.hookFactory = new JPAHookFactory(em, this.header, customParameter);
121+
this.pathInformation = pathInformation != null ? pathInformation : this.pathInformation;
118122
}
119123

120124
@Override
@@ -248,6 +252,11 @@ public Optional<JPAODataPagingProvider> getPagingProvider() {
248252
return pagingProvider;
249253
}
250254

255+
@Override
256+
public JPAODataPathInformation getPathInformation() {
257+
return pathInformation;
258+
}
259+
251260
private void copyContextValues(final JPAODataRequestContextAccess context)
252261
throws ODataJPAProcessorException {
253262
this.em = context.getEntityManager();
@@ -264,6 +273,7 @@ private void copyContextValues(final JPAODataRequestContextAccess context)
264273
this.queryDirectives = context.getQueryDirectives();
265274
this.etagHelper = context.getEtagHelper();
266275
this.pagingProvider = context.getPagingProvider();
276+
this.pathInformation = context.getPathInformation();
267277
}
268278

269279
private void copyRequestContext(@Nonnull final JPAODataRequestContext requestContext,

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/processor/JPAProcessorFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public JPACUDRequestProcessor createCUDRequestProcessor(final UriInfo uriInfo, f
5555

5656
final JPAODataRequestContextAccess requestContext = new JPAODataInternalRequestContext(uriInfo, serializerFactory
5757
.createCUDSerializer(responseFormat, uriInfo, Optional.ofNullable(header.get(HttpHeader.ODATA_MAX_VERSION))),
58-
context, header);
58+
context, header, null);
5959

6060
return new JPACUDRequestProcessor(odata, serviceMetadata, requestContext, new JPAConversionHelper());
6161
}
@@ -73,7 +73,7 @@ public JPAActionRequestProcessor createActionProcessor(final UriInfo uriInfo, fi
7373

7474
final JPAODataRequestContextAccess requestContext = new JPAODataInternalRequestContext(uriInfo,
7575
responseFormat != null ? serializerFactory.createSerializer(responseFormat, uriInfo, Optional.ofNullable(header
76-
.get(HttpHeader.ODATA_MAX_VERSION))) : null, context, header);
76+
.get(HttpHeader.ODATA_MAX_VERSION))) : null, context, header, null);
7777

7878
return new JPAActionRequestProcessor(odata, requestContext);
7979

@@ -88,7 +88,7 @@ public JPARequestProcessor createProcessor(final UriInfo uriInfo, final ContentT
8888

8989
final JPAODataRequestContextAccess requestContext = new JPAODataInternalRequestContext(newUriInfo, serializerFactory
9090
.createSerializer(responseFormat, newUriInfo, Optional.ofNullable(header.get(
91-
HttpHeader.ODATA_MAX_VERSION))), context, header);
91+
HttpHeader.ODATA_MAX_VERSION))), context, header, pathInformation);
9292

9393
return switch (newUriInfo.getLastResourcePart().getKind()) {
9494
case count -> new JPACountRequestProcessor(odata, requestContext);

jpa/odata-jpa-processor/src/main/java/com/sap/olingo/jpa/processor/core/query/JPAExpandItemInfoFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ public List<JPAExpandItemInfo> buildExpandItemInfo(final JPAServiceDocument sd,
7272
final Optional<JPAODataExpandPage> page;
7373
if (provider.isPresent())
7474
page = provider.get().getFirstPageExpand(requestContext.getRequestParameter(),
75-
null, requestContext.getUriInfo(), item.getKey().getTopOption(), item.getKey().getSkipOption(),
75+
requestContext.getPathInformation(), requestContext.getUriInfo(), item.getKey().getTopOption(), item
76+
.getKey().getSkipOption(),
7677
item.getValue().getLeaf(), count, requestContext.getEntityManager());
7778
else
7879
page = Optional.empty();

0 commit comments

Comments
 (0)