Skip to content

Commit

Permalink
Feature/version 2.1.0 (#293)
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

* Update In - Exists docu

* Update quick start

* Update version

* Update README

* No tutorial on servicer driven paging

* Update archetype version

* Reset README to point to current non SNAPSHOT version

* Check restrictions on IN clause (#326)
  • Loading branch information
wog48 authored Apr 16, 2024
1 parent b6750ab commit 1788ad2
Show file tree
Hide file tree
Showing 18 changed files with 173 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.10.1</version><!--$NO-MVN-MAN-VER$-->
<version>1.10.2</version><!--$NO-MVN-MAN-VER$-->
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public interface JPAODataPagingProvider {
* If the skiptoken is not known the method must return null.
* @param skipToken
* @return Next page. If the page is null, an exception
* @deprecated implement
* {@link #getNextPage(String, OData, ServiceMetadata, JPARequestParameterMap, EntityManager)}
* instead
*/
@Deprecated(since = "2.1.0", forRemoval = true)
default JPAODataPage getNextPage(@Nonnull final String skipToken) {
Expand Down Expand Up @@ -58,6 +61,9 @@ default Optional<JPAODataPage> getNextPage(@Nonnull final String skipToken, fina
* @param em
* @return
* @throws ODataApplicationException
* @deprecated implement
* {@link #getFirstPage(JPARequestParameterMap, JPAODataPathInformation, UriInfo, Integer, JPACountQuery, EntityManager)}
* instead *
*/
@Deprecated(since = "2.1.0", forRemoval = true)
default JPAODataPage getFirstPage(final UriInfo uriInfo, @Nullable final Integer preferredPageSize,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,5 @@ public Optional<EdmQueryExtensionProvider> getQueryEnhancement(@Nonnull final JP
*/
public List<Locale> getProvidedLocale();

JPAODataQueryDirectives getQueryDirectives();
public JPAODataQueryDirectives getQueryDirectives();
}
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ static class Builder implements JPAODataServiceContextBuilder {
private ErrorProcessor errorProcessor;
private JPAODataPagingProvider pagingProvider;
private Optional<? extends EntityManagerFactory> emf = Optional.empty();
private DataSource ds;
private DataSource dataSource;
private JPAEdmProvider jpaEdm;
private JPAEdmNameBuilder nameBuilder;
private String mappingPath;
Expand All @@ -190,15 +190,15 @@ public JPAODataSessionContextAccess build() throws ODataException {
}
if (packageName == null)
packageName = new String[0];
if (!emf.isPresent() && ds != null && namespace != null)
emf = Optional.ofNullable(JPAEntityManagerFactory.getEntityManagerFactory(namespace, ds));
if (!emf.isPresent() && dataSource != null && namespace != null)
emf = Optional.ofNullable(JPAEntityManagerFactory.getEntityManagerFactory(namespace, dataSource));
createEmfWrapper();
if (emf.isPresent() && jpaEdm == null)
jpaEdm = new JPAEdmProvider(emf.get().getMetamodel(), postProcessor, packageName, nameBuilder, Arrays.asList(
annotationProvider));
if (databaseProcessor == null) {
LOGGER.trace("No database-processor provided, use JPAODataDatabaseProcessorFactory to create one");
databaseProcessor = new JPAODataDatabaseProcessorFactory().create(ds);
databaseProcessor = new JPAODataDatabaseProcessorFactory().create(dataSource);
}
if (batchProcessorFactory == null) {
LOGGER.trace("No batch-processor-factory provided, use default factory to create one");
Expand Down Expand Up @@ -233,12 +233,12 @@ public JPAODataServiceContextBuilder setDatabaseProcessor(final JPAODataDatabase
* {@link Builder#setEntityManagerFactory(EntityManagerFactory)}, and to determine the type of
* database used to select an integrated database processor, in case the database processor was not set via
* {@link Builder#setDatabaseProcessor(JPAODataDatabaseProcessor)}}.
* @param ds
* @param dataSource
* @return
*/
@Override
public JPAODataServiceContextBuilder setDataSource(final DataSource ds) {
this.ds = ds;
public JPAODataServiceContextBuilder setDataSource(final DataSource dataSource) {
this.dataSource = dataSource;
return this;
}

Expand Down Expand Up @@ -417,10 +417,9 @@ public JPAODataQueryDirectivesBuilder useQueryDirectives() {
return JPAODataQueryDirectives.with(this);
}

JPAODataServiceContextBuilder setQueryDirectives(final JPAODataQueryDirectivesImpl queryDirectives) {
public JPAODataServiceContextBuilder setQueryDirectives(final JPAODataQueryDirectivesImpl queryDirectives) {
this.queryDirectives = queryDirectives;
return this;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -130,15 +130,13 @@ <T extends JPAODataBatchProcessor> JPAODataServiceContextBuilder setBatchProcess
* can be overruled.<br>
* @see <a href="https://issues.apache.org/jira/browse/OLINGO-787">Issue OLINGO-787</a>
* @param useAbsoluteContextURL
* @return
*/
JPAODataServiceContextBuilder setUseAbsoluteContextURL(boolean useAbsoluteContextURL);

JPAODataServiceContextBuilder setAnnotationProvider(AnnotationProvider... annotationProvider);

/**
*
* @return
*
*/
JPAODataQueryDirectivesBuilder useQueryDirectives();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,5 @@ public default boolean useAbsoluteContextURL() {
public List<AnnotationProvider> getAnnotationProvider();

public JPAODataQueryDirectives getQueryDirectives();

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ public enum MessageKeys implements ODataJPAMessageKey {

FILTERING_REQUIRED,
FILTERING_NOT_SUPPORTED,
FILTERING_MISSING_PROPERTIES;
FILTERING_MISSING_PROPERTIES,

NO_VALUES_OUT_OF_LIMIT;

@Override
public String getKey() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import java.util.function.BiFunction;
import java.util.function.Function;

import javax.annotation.Nonnull;

import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaBuilder.In;
import jakarta.persistence.criteria.Expression;
Expand All @@ -12,19 +14,23 @@
import org.apache.olingo.server.api.uri.queryoption.expression.BinaryOperatorKind;
import org.apache.olingo.server.api.uri.queryoption.expression.UnaryOperatorKind;

import com.sap.olingo.jpa.processor.core.api.JPAODataQueryDirectives;
import com.sap.olingo.jpa.processor.core.database.JPAODataDatabaseOperations;
import com.sap.olingo.jpa.processor.core.exception.ODataJPAFilterException;

public class JPAOperationConverter {

protected final CriteriaBuilder cb;
private final JPAODataDatabaseOperations dbConverter;
private final JPAODataQueryDirectives directives;

public JPAOperationConverter(final CriteriaBuilder cb, final JPAODataDatabaseOperations converterExtension) {
public JPAOperationConverter(final CriteriaBuilder cb, final JPAODataDatabaseOperations converterExtension,
@Nonnull final JPAODataQueryDirectives directives) {
super();
this.cb = cb;
this.dbConverter = converterExtension;
this.dbConverter.setCriteriaBuilder(cb);
this.directives = directives;
}

public final Expression<Long> convert(final JPAAggregationOperationImp jpaOperator) throws ODataApplicationException {
Expand All @@ -36,7 +42,7 @@ public final Expression<Long> convert(final JPAAggregationOperationImp jpaOperat
}

@SuppressWarnings("unchecked")
public final <T extends Number> Expression<T> convert(final JPAArithmeticOperator jpaOperator)
public final <T extends Number> Expression<T> convert(final JPAArithmeticOperator jpaOperator) // NOSONAR
throws ODataApplicationException {
switch (jpaOperator.getOperator()) {
case ADD:
Expand Down Expand Up @@ -115,15 +121,19 @@ public final Expression<Boolean> convert(@SuppressWarnings("rawtypes") final JPA
public final <T, X extends JPAOperator> Expression<Boolean> convert(final JPAInOperator<T, X> jpaOperator)
throws ODataApplicationException {

if (BinaryOperatorKind.IN == jpaOperator.getOperator()) {
if (BinaryOperatorKind.IN == jpaOperator.getOperator() && directives.getMaxValuesInInClause() > 0) {
final In<T> in = cb.in(jpaOperator.getLeft());
if (directives.getMaxValuesInInClause() < jpaOperator.getFixValues().size())
throw new ODataJPAFilterException(ODataJPAFilterException.MessageKeys.NO_VALUES_OUT_OF_LIMIT,
HttpStatusCode.BAD_REQUEST, String.valueOf(directives.getMaxValuesInInClause()),
String.valueOf(jpaOperator.getFixValues().size()));
for (final JPAOperator value : jpaOperator.getFixValues()) {
in.value((T) value.get());
}
return in;
}
throw new ODataJPAFilterException(ODataJPAFilterException.MessageKeys.NOT_SUPPORTED_OPERATOR,
HttpStatusCode.NOT_IMPLEMENTED, jpaOperator.getName());
HttpStatusCode.BAD_REQUEST, jpaOperator.getName());
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -703,15 +703,17 @@ && isCollectionPropertyQuery()) {
}
joinTables.put(lastInfo.getAssociationPath().getAlias(), path);
final JPAEntityType targetEt = (JPAEntityType) ((JPAAssociationAttribute) element).getTargetEntity(); // NOSONAR
final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter());
final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter(),
requestContext.getQueryDirectives());
final JPAODataRequestContextAccess subContext = new JPAODataInternalRequestContext(uriResource, requestContext);
final JPAFilterRestrictionsWatchDog watchDog = new JPAFilterRestrictionsWatchDog(
((JPAAssociationAttribute) element), !lastInfo.getKeyPredicates().isEmpty());
lastInfo.setFilterCompiler(new JPAFilterCrossComplier(odata, sd, targetEt, converter, this, path,
lastInfo.getAssociationPath(), subContext, watchDog));
} else {
lastInfo.getKeyPredicates();
final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter());
final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter(),
requestContext.getQueryDirectives());
final JPAODataRequestContextAccess subContext = new JPAODataInternalRequestContext(uriResource, requestContext);
final JPAFilterRestrictionsWatchDog watchDog = new JPAFilterRestrictionsWatchDog(entitySet.orElse(null),
!lastInfo.getKeyPredicates().isEmpty());
Expand Down Expand Up @@ -796,7 +798,8 @@ boolean derivedTypeRequested(@Nonnull final JPAStructuredType baseType,
protected final void addFilterCompiler(final JPANavigationPropertyInfo navigationInfo) throws ODataJPAModelException,
ODataJPAProcessorException {

final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter());
final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter(),
requestContext.getQueryDirectives());
final JPAODataRequestContextAccess subContext = new JPAODataInternalRequestContext(navigationInfo.getUriInfo(),
requestContext);
navigationInfo.setFilterCompiler(new JPAFilterCrossComplier(odata, sd, navigationInfo.getEntityType(), converter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,8 @@ public <T> Subquery<T> getSubQuery(@Nullable final Subquery<?> childQuery,
protected final JPAFilterCrossComplier addFilterCompiler(final JPANavigationPropertyInfo navigationInfo)
throws ODataJPAModelException, ODataJPAProcessorException, ODataJPAQueryException {

final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter());
final JPAOperationConverter converter = new JPAOperationConverter(cb, requestContext.getOperationConverter(),
requestContext.getQueryDirectives());
final JPAODataRequestContextAccess subContext = new JPAODataInternalRequestContext(navigationInfo.getUriInfo(),
requestContext);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ Subquery<?> createSubQuery(final JPAAbstractQuery parent) {
final void buildExpression(final VisitableExpression expression, final List<String> groups)
throws ODataApplicationException {
this.filterComplier = new JPAFilterElementComplier(odata, sd, em, jpaEntity, new JPAOperationConverter(cb,
getContext().getOperationConverter()), null, this, expression, association, groups);
getContext().getOperationConverter(), getContext().getQueryDirectives()), null, this, expression, association,
groups);
createDescriptionJoin();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ ODataJPAFilterException.NOT_ALLOWED_MEMBER = Not authorized to use '%1$s' as fil
ODataJPAFilterException.FILTERING_REQUIRED = '%1$s' requires to filter
ODataJPAFilterException.FILTERING_NOT_SUPPORTED = A filter is not supported by '%1$s'
ODataJPAFilterException.FILTERING_MISSING_PROPERTIES = Filter not found for required properties '%1$s' at '%2$s'
ODataJPAFilterException.NO_VALUES_OUT_OF_LIMIT = The number of values for IN is limited to '%1$s'. '%2$s' values found.

ODataJPAUtilException.UNKNOWN_NAVI_PROPERTY = Unknown navigation property
ODataJPAUtilException.UNKNOWN_ENTITY_TYPE = Unknown entity type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import javax.sql.DataSource;

import org.apache.olingo.commons.api.edmx.EdmxReference;
import org.apache.olingo.commons.api.ex.ODataException;

import com.sap.olingo.jpa.metadata.api.JPAEdmProvider;
import com.sap.olingo.jpa.metadata.core.edm.extension.vocabularies.AnnotationProvider;
Expand All @@ -19,21 +20,28 @@

public class JPAODataContextAccessDouble implements JPAODataSessionContextAccess {
private final JPAEdmProvider edmProvider;
private final DataSource ds;
private final JPAODataDatabaseOperations context;
private final DataSource dataSource;
private final JPADefaultDatabaseProcessor processor;
private final String[] packageNames;
private final JPAODataPagingProvider pagingProvider;
private final AnnotationProvider annotationProvider;
private JPAODataQueryDirectives directives;

public JPAODataContextAccessDouble(final JPAEdmProvider edmProvider, final DataSource ds,
public JPAODataContextAccessDouble(final JPAEdmProvider edmProvider, final DataSource dataSource,
final JPAODataPagingProvider provider, final AnnotationProvider annotationProvider, final String... packages) {
super();
this.edmProvider = edmProvider;
this.ds = ds;
this.context = new JPADefaultDatabaseProcessor();
this.dataSource = dataSource;
this.processor = new JPADefaultDatabaseProcessor();
this.packageNames = packages;
this.pagingProvider = provider;
this.annotationProvider = annotationProvider;
try {
this.directives = JPAODataServiceContext.with().useQueryDirectives().maxValuesInInClause(3).build().build()
.getQueryDirectives();
} catch (final ODataException e) {
this.directives = null;
}
}

@Override
Expand All @@ -44,7 +52,7 @@ public List<EdmxReference> getReferences() {

@Override
public JPAODataDatabaseOperations getOperationConverter() {
return context;
return processor;
}

@Override
Expand All @@ -55,7 +63,7 @@ public JPAEdmProvider getEdmProvider() {
@Override
public JPAODataDatabaseProcessor getDatabaseProcessor() {
try {
return new JPAODataDatabaseProcessorFactory().create(ds);
return new JPAODataDatabaseProcessorFactory().create(dataSource);
} catch (final SQLException e) {
fail();
}
Expand All @@ -79,6 +87,6 @@ public List<AnnotationProvider> getAnnotationProvider() {

@Override
public JPAODataQueryDirectives getQueryDirectives() {
return null;
return directives;
}
}
Loading

0 comments on commit 1788ad2

Please sign in to comment.