Skip to content

Commit

Permalink
Feature/version 2.2.0 (#379)
Browse files Browse the repository at this point in the history
* 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

* Update archetype.yml
  • Loading branch information
wog48 authored Sep 23, 2024
1 parent 3ea39ae commit 0438149
Show file tree
Hide file tree
Showing 143 changed files with 4,800 additions and 2,832 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/archetype.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ jobs:
distribution: 'temurin'
cache: maven
- name: 1. Build JPA
run: cd ./jpa && mvn clean -Dmaven.test.skip
run: cd ./jpa && mvn clean install -Dmaven.test.skip
- name: 2. Build and test archetype
run: cd ./jpa-archetype && mvn clean install archetype:integration-test
2 changes: 2 additions & 0 deletions additionalWords.directory
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,5 @@ Concat
Postgresql
Hana
Desc
Crossjoin
Pageable
1 change: 1 addition & 0 deletions jpa/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ target/
*.log
/.dbeaver/
/old.project
/Scripts/
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,6 @@ public interface JPAAssociationPath extends ODataNavigationPath {
boolean hasJoinTable();

boolean isCollection();

List<JPAPath> getForeignKeyColumns() throws ODataJPAModelException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,11 @@ public List<JPAPath> getRightColumnsList() throws ODataJPAModelException {
return Collections.emptyList();
}

@Override
public List<JPAPath> getForeignKeyColumns() throws ODataJPAModelException {
return List.of();
}

@Override
public JPAAssociationAttribute getLeaf() {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,4 +268,9 @@ private String buildNavigationPropertyBindingName(final JPAAssociationPath assoc
public boolean hasJoinTable() {
return joinTable != null;
}

@Override
public List<JPAPath> getForeignKeyColumns() throws ODataJPAModelException {
return hasJoinTable() ? getLeftColumnsList() : getRightColumnsList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
* These properties cannot be used in expand expressions.
* <p>
* The properties are given as an array attributes path. In case the path
* is composed, path segments joined together by forward slashes (/) e.g <i>address/cityName</i>.
* is composed, path segments joined together by forward slashes (/) e.g. <i>address/cityName</i>.
*/
String[] nonExpandableProperties() default {};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ public <X, Y> Join<X, Y> join(@Nonnull final String attributeName, final JoinTyp
final JPAStructuredType source = determineSource();
final JPAAttribute joinAttribute = source
.getAttribute(Objects.requireNonNull(attributeName))
.orElse(getAssociation(source, attributeName));
.orElseGet(() -> getAssociation(source, attributeName));

if (joinAttribute == null)
throw new IllegalArgumentException(buildExceptionText(attributeName));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import jakarta.persistence.metamodel.PluralAttribute;
import jakarta.persistence.metamodel.SingularAttribute;

import org.apache.commons.logging.LogFactory;

import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAAttribute;
import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAEntityType;
import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAPath;
Expand Down Expand Up @@ -55,6 +57,8 @@ class PathImpl<X> extends ExpressionImpl<X> implements Path<X> {
this.parent = Objects.requireNonNull(parent);
this.st = type;
this.tableAlias = Optional.ofNullable(tableAlias.orElseGet(this::tableAliasFromParent));
if (st == null)
LogFactory.getLog(getClass()).info("Type not provided for " + path);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ class SubqueryRootImpl<X> extends FromImpl<X, X> implements Root<X> {

private final Subquery<X> query;

SubqueryRootImpl(@Nonnull final ProcessorSubquery<X> inner, @Nonnull final AliasBuilder ab,
SubqueryRootImpl(@Nonnull final ProcessorSubquery<X> inner, @Nonnull final AliasBuilder aliasBuilder,
@Nonnull final JPAServiceDocument sd) throws ODataJPAModelException {

super(sd.getEntity(inner.getJavaType()), ab, null);
super(sd.getEntity(inner.getJavaType()), aliasBuilder, null);
this.query = inner;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.sap.olingo.jpa.processor.core.api;

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

public record JPAODataExpandPage(UriInfoResource uriInfo, int skip, int top, JPAODataSkipTokenProvider skipToken) {

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
package com.sap.olingo.jpa.processor.core.api;

import org.apache.olingo.server.api.uri.UriInfo;
import java.util.Collections;
import java.util.List;

public record JPAODataPage(UriInfo uriInfo, int skip, int top, Object skipToken) {}
import org.apache.olingo.server.api.uri.UriInfoResource;

public record JPAODataPage(UriInfoResource uriInfo, int skip, int top, Object skipToken,
List<JPAODataPageExpandInfo> expandInfo) {

public JPAODataPage(final UriInfoResource uriInfo, final int skip, final int top, final Object skipToken) {
this(uriInfo, skip, top, skipToken, Collections.emptyList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sap.olingo.jpa.processor.core.api;

public record JPAODataPageExpandInfo(String navigationPropertyPath, String keyPath) {

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,14 @@
import org.apache.olingo.server.api.ODataApplicationException;
import org.apache.olingo.server.api.ServiceMetadata;
import org.apache.olingo.server.api.uri.UriInfo;
import org.apache.olingo.server.api.uri.UriInfoResource;
import org.apache.olingo.server.api.uri.queryoption.SkipOption;
import org.apache.olingo.server.api.uri.queryoption.TopOption;

import com.sap.olingo.jpa.metadata.api.JPARequestParameterMap;
import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAAssociationAttribute;
import com.sap.olingo.jpa.processor.core.query.JPACountQuery;
import com.sap.olingo.jpa.processor.core.query.JPAExpandCountQuery;

/**
* Supporting
Expand Down Expand Up @@ -79,7 +84,7 @@ default JPAODataPage getFirstPage(final UriInfo uriInfo, @Nullable final Integer
* @param preferredPageSize Value of the odata.maxpagesize preference header
* @param countQuery A query that can be used to determine the maximum number of results that can be
* expected. Only if the number of expected results is bigger then the page size a next link
* @param em An instenace of the entity manager
* @param em An instance of the entity manager
* @return An optional of the page that shall be read. In case the optional is empty, all records are read from the
* database.
* @throws ODataApplicationException
Expand All @@ -90,4 +95,22 @@ default Optional<JPAODataPage> getFirstPage(final JPARequestParameterMap request
return Optional.ofNullable(getFirstPage(uriInfo, preferredPageSize, countQuery, em));// NOSONAR
}

/**
* Requires module {@code odata-jpa-processor-cb}
* @param requestParameter The parameter from the request context
* @param pathInformation
* @param uriInfo
* @param association
* @param preferredPageSize
* @param count
* @param em An instance of the entity manager
* @return
*/
default Optional<JPAODataExpandPage> getFirstPageExpand(final JPARequestParameterMap requestParameter,
final JPAODataPathInformation pathInformation, final UriInfoResource uriInfo, final TopOption top,
final SkipOption skip, final JPAAssociationAttribute association, final JPAExpandCountQuery count,
final EntityManager em) throws ODataApplicationException {
return Optional.empty();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ public interface JPAODataRequestContextAccess {

public JPASerializer getSerializer();

public JPAODataPage getPage();

public Optional<JPAODataClaimProvider> getClaimsProvider();

public Optional<JPAODataGroupProvider> getGroupsProvider();
Expand Down Expand Up @@ -73,4 +71,6 @@ public Optional<EdmQueryExtensionProvider> getQueryEnhancement(@Nonnull final JP
public JPAODataQueryDirectives getQueryDirectives();

public JPAODataEtagHelper getEtagHelper();

public Optional<JPAODataPagingProvider> getPagingProvider();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.sap.olingo.jpa.processor.core.api;

import java.util.List;

public interface JPAODataSkipTokenProvider {

String get(final List<JPAODataPageExpandInfo> foreignKeyStack);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAAssociationPath;
import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAEntityType;
import com.sap.olingo.jpa.processor.core.api.JPAODataPageExpandInfo;

public interface JPAExpandResult { // NOSONAR

Expand All @@ -34,6 +35,9 @@ public interface JPAExpandResult { // NOSONAR

boolean hasCount();

void convert(final JPATupleChildConverter converter) throws ODataApplicationException;
void convert(final JPAResultConverter converter) throws ODataApplicationException;

@CheckForNull
String getSkipToken(@Nonnull final List<JPAODataPageExpandInfo> newInfo);

}
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
package com.sap.olingo.jpa.processor.core.converter;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.apache.olingo.commons.api.data.EntityCollection;
import org.apache.olingo.server.api.ODataApplicationException;

import com.sap.olingo.jpa.metadata.core.edm.mapper.api.JPAPath;
import com.sap.olingo.jpa.processor.core.api.JPAODataPageExpandInfo;
import com.sap.olingo.jpa.processor.core.query.JPAExpandQueryResult;

public interface JPAResultConverter {

public Object getResult(final JPAExpandResult jpaResult, final Collection<JPAPath> requestedSelection)
public Object getResult(final JPAExpandResult jpaResult, final Collection<JPAPath> requestedSelection)
throws ODataApplicationException;

public Map<String, List<Object>> getCollectionResult(final JPACollectionResult jpaResult,
final Collection<JPAPath> requestedSelection) throws ODataApplicationException;

public EntityCollection getResult(JPAExpandQueryResult jpaExpandQueryResult, Collection<JPAPath> requestedSelection,
String parentKey, List<JPAODataPageExpandInfo> expandInfo) throws ODataApplicationException;

}
Loading

0 comments on commit 0438149

Please sign in to comment.