Compare commits

...
Author SHA1 Message Date
Rob Bygrave bdc936b63b [maven-release-plugin] prepare release ebean-parent-13.3.0 2022-04-12 21:23:05 +12:00
Rob BygraveandGitHub 2aba1835f1 ebean-test - Fix AutoConfigureForTesting to skip configuration for non-default DatabaseConfig (#2644)
#2644 - ebean-test - Fix AutoConfigureForTesting to skip configuration for non-default DatabaseConfig
2022-04-12 17:36:25 +12:00
Rob Bygrave 4b8eadad1c Bump to 13.3.0-SNAPSHOT 2022-04-11 14:00:45 +12:00
Rob Bygrave 0a43b64f71 #2641 - Add a simple integration test for toString() implementation 2022-04-11 13:52:30 +12:00
Rob Bygrave 21c2232d96 #2641 - Bump ebean-agent for toString() implementation 2022-04-11 13:42:56 +12:00
Rob Bygrave 119b2d4638 #2643 - Bump dependencies h2database -> 2.1.212 ebean-test-docker -> 4.6 2022-04-11 12:50:46 +12:00
Rob BygraveandGitHub 5cc2685732 Merge pull request #2642 from ebean-orm/feature/2641-ToStringBuilder
#2641 -  Provide a decent default toString() implementation for entity beans
2022-04-11 12:49:02 +12:00
Rob Bygrave 6d6e417c94 #2641 - toString() - add tests for max beans and max content 2022-04-11 12:27:09 +12:00
Rob Bygrave be2466003d #2641 - toString() - addCollection() firstElement change 2022-04-08 22:30:00 +12:00
Rob Bygrave 183b601be8 #2641 - toString() - Change BeanCollection toString() implementations, suppress unloaded BeanCollections 2022-04-08 18:53:57 +12:00
Rob Bygrave 5a7e8456e1 #2641 - Provide a decent default toString() implementation for entity beans 2022-04-08 17:35:27 +12:00
Rob Bygrave 6e3db70d20 #2640 - ebean-redis - bump jedis dependency to 4.2.1 from 4.2.0 2022-04-08 09:10:12 +12:00
Rob Bygrave 2be34a8eb8 Bump test modules to 13.2.1-SNAPSHOT after release 2022-04-07 18:46:44 +12:00
Rob Bygrave 1c749e55c6 Fix javadoc in DB 2022-04-07 18:45:19 +12:00
Rob Bygrave 73dd4a5648 [maven-release-plugin] prepare for next development iteration 2022-04-07 18:13:48 +12:00
Rob Bygrave 6802fe9e02 [maven-release-plugin] prepare release ebean-parent-13.2.0 2022-04-07 18:13:41 +12:00
Rob Bygrave 6e5e89f155 Bump ebean-agent to 13.2.0 2022-04-07 18:04:45 +12:00
Rob Bygrave aa351e919d Bump to 13.2.0-SNAPSHOT 2022-04-07 18:03:58 +12:00
Rob BygraveandGitHub 857bde645a Merge pull request #2639 from ebean-orm/feature/deprecated_ServerCache
Remove deprecated methods on ServerCache getHitRatio() -> hitRatio(), getStatistics() -> statistics()
2022-04-07 17:04:31 +12:00
Rob Bygrave ff257a272b Remove deprecated methods on ServerCache getHitRatio() -> hitRatio(), getStatistics() -> statistics() 2022-04-07 17:03:04 +12:00
Rob Bygrave e22e5885e2 Bump parent pom to 3.7 (surefire bump) 2022-04-07 16:48:23 +12:00
Rob Bygrave 71892fd2b5 Organise imports only 2022-04-07 16:44:02 +12:00
Rob BygraveandGitHub e41f9a0669 Merge pull request #2638 from ebean-orm/feature/TenantAwareCache
Refactor L2 cache tenant awareness - add TenantAwareCache
2022-04-07 16:43:05 +12:00
Rob Bygrave f5a779e18b Refactor L2 cache tenant awareness - add TenantAwareCache
The design change is to use TenantAwareCache to deal with wrap/unwrap of tenant aware keys, removing any tenant awareness from the underlying cache implementations (DefaultServerCache, redis, hazelcast etc).
2022-04-07 15:26:21 +12:00
Rob Bygrave daf5220766 #2635 Remove deprecated methods from Database - createSqlQuery() -> sqlQuery(), createSqlUpdate() -> sqlUpdate() 2022-04-06 22:36:31 +12:00
Rob BygraveandGitHub 4b5379c80c Merge pull request #2635 from ebean-orm/feature/deprecated_Database
Remove deprecated methods in ebean-api - Database
2022-04-06 22:30:05 +12:00
Rob BygraveandGitHub 51b4f58744 Merge pull request #2634 from ebean-orm/feature/deprecated_DB
Remove deprecated methods in ebean-api - DB
2022-04-06 22:29:27 +12:00
Rob BygraveandGitHub 539dd7c90c Merge pull request #2637 from ebean-orm/feature/2636_remove_CreatedTimestamp
#2636 - Remove deprecated @CreatedTimestamp and @UpdateTimestamp, migrate to @WhenCreated / @WhenModified
2022-04-06 22:25:21 +12:00
Rob Bygrave c7ad5c5981 #2636 - Remove deprecated @CreatedTimestamp and @UpdateTimestamp, migrate to @WhenCreated / @WhenModified 2022-04-06 22:17:33 +12:00
Rob Bygrave 34ce77c17e Bump to 13.1.1-SNAPSHOT after release 2022-04-06 22:10:01 +12:00
Rob Bygrave bee476ecf6 [maven-release-plugin] prepare for next development iteration 2022-04-06 21:55:18 +12:00
Rob Bygrave ddebb8a6b0 [maven-release-plugin] prepare release ebean-parent-13.1.0 2022-04-06 21:55:12 +12:00
Rob Bygrave 690c492ff3 Bump to 13.1.0-SNAPSHOT 2022-04-06 21:51:07 +12:00
Rob Bygrave fe99212596 Bump to 13.1.0-SNAPSHOT 2022-04-06 21:47:19 +12:00
Rob Bygrave 8cbd98757e #2627 - ebean-agent - bump to ASM 9.3, support Java 19 bytecode 2022-04-06 21:39:06 +12:00
Rob BygraveandGitHub 10fa07f59f Merge pull request #2633 from ebean-orm/feature/deprecated_BeanState
Remove deprecated methods in ebean-api - BeanState
2022-04-06 21:34:48 +12:00
Rob BygraveandGitHub ed339c3834 Merge pull request #2632 from ebean-orm/feature/deprecated_SqlUpdate
Remove deprecated methods in ebean-api - SqlUpdate
2022-04-06 21:34:12 +12:00
Rob BygraveandGitHub 741873d077 Merge pull request #2631 from ebean-orm/feature/deprecated_SqlQuery
Remove deprecated methods in ebean-api - SqlQuery
2022-04-06 21:33:40 +12:00
Rob BygraveandGitHub d1e140144c Merge pull request #2630 from ebean-orm/feature/deprecated-serverCacheManager
Remove deprecated methods in ebean-api - ServerCacheManager ServerCacheRegion
2022-04-06 21:32:57 +12:00
Rob BygraveandGitHub 2689376847 Merge pull request #2629 from ebean-orm/feature/deprecated-remove_Meta_Metric_Plugin
Remove deprecated methods from ebean-api  meta metric and plugin packages
2022-04-06 21:32:35 +12:00
Rob BygraveandGitHub cb47d88d32 Merge pull request #2628 from ebean-orm/feature/deprecated-findLargeStream
Remove deprecated findLargeStream(), migrate to findStream()
2022-04-06 21:32:06 +12:00
Rob Bygrave 370f50aebe Remove deprecated methods in ebean-api - Database 2022-04-06 21:05:57 +12:00
Rob Bygrave 22db5abdbe Remove deprecated methods in ebean-api - DB 2022-04-06 21:00:35 +12:00
Rob Bygrave 7f0dc07a6b Remove deprecated methods in ebean-api - BeanState 2022-04-06 20:53:58 +12:00
Rob Bygrave 8636888d65 Remove deprecated methods in ebean-api - SqlUpdate
migrate from -> to
setParams() -> setParameters()
setNextParameter() -> setParameter()
2022-04-06 20:49:23 +12:00
Rob Bygrave 9bb307cce2 Remove deprecated methods in ebean-api - SqlQuery 2022-04-06 20:45:24 +12:00
Rob Bygrave 75dc74eb58 Remove deprecated methods in ebean-api - ServerCacheManager ServerCacheRegion
These methods are deprecated getters, migrate to the associated accessor method.
2022-04-06 20:32:50 +12:00
Rob Bygrave 07e62d9537 Remove deprecated methods in ebean-api - QueryPlanCapture. Migrate getFoo() -> foo()
These methods are deprecated getters, migrate to the associated accessor method.
2022-04-06 20:17:42 +12:00
Rob Bygrave 495af7ae4a Remove deprecated methods in ebean-api - plugin BeanType. Migrate getFoo() -> foo()
These methods are deprecated getters, migrate to the associated accessor method.
2022-04-06 20:09:07 +12:00
Rob Bygrave e7dd5570a5 Remove deprecated methods in ebean-api - meta, metric, plugin. Migrate getFoo() -> foo()
These methods are deprecated getters, migrate to the associated accessor method.
2022-04-06 18:32:52 +12:00
Rob Bygrave 48d7e79b16 Remove deprecated findLargeStream(), migrate to findStream()
findLargeStream() became no longer become needed due to improvements in the persistence context. Migrate to just use findStream() instead.
2022-04-06 18:17:25 +12:00
Rob Bygrave a87897dd46 Update README add EA build badge for ebean-agent 2022-04-06 18:01:47 +12:00
Rob Bygrave 36c3319a24 Tidy API making some classes final 2022-04-06 17:24:11 +12:00
Rob Bygrave c9a04e6983 #2627 - ebean-agent - bump to ASM 9.3, support Java 19 bytecode 2022-04-06 16:31:55 +12:00
Rob BygraveandGitHub d55223f9f5 Merge pull request #2624 from ebean-orm/feature/2623-CurrentTenantProvider
#2623 - CurrentTenantProvider called even when table has no tenantId column specified
2022-04-01 08:58:59 +13:00
Rob Bygrave c4a3f43e0d #2623 - CurrentTenantProvider called even when table has no tenantId column specified 2022-03-31 16:54:45 +13:00
Rob Bygrave 585fb9d849 Bump to 13.0.1-SNAPSHOT in test modules after release 2022-03-31 15:29:01 +13:00
Rob Bygrave 9e54491071 Bump to 13.0.1-SNAPSHOT in test modules after release 2022-03-31 15:10:39 +13:00
Rob Bygrave 0b56aaf991 [maven-release-plugin] prepare for next development iteration 2022-03-31 14:17:10 +13:00
Rob Bygrave 75f0a6815f [maven-release-plugin] prepare release ebean-parent-13.0.0 2022-03-31 14:17:03 +13:00
Rob Bygrave a473c20b24 Bump to 13.0.0-SNAPSHOT 2022-03-31 14:07:32 +13:00
Rob Bygrave 540b414443 Bump to 13.0.0-SNAPSHOT 2022-03-31 14:07:00 +13:00
Rob Bygrave 7dca282eb6 Bump to 13.0.0-SNAPSHOT 2022-03-31 14:04:54 +13:00
Rob BygraveandGitHub de905ccd60 Merge pull request #2622 from ebean-orm/feature/java11-module-path
#2374 - Bump to Java 11 and module-path
2022-03-31 10:13:26 +13:00
Rob Bygrave aa2490cfb4 EA build - remove valhalla due to javadoc error
javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://ebean.io/platforms/ebean-platform-h2/apidocs/ are in named modules.
2022-03-31 09:57:55 +13:00
Rob Bygrave 587d673684 Adding requires com.fasterxml.jackson.annotation and ebean-test needs jupiter as provided scope
Interesting these changes are required for compilation against Java 11, not required for Java 17+.
2022-03-31 09:17:22 +13:00
Rob Bygrave 472db65ac6 Adding requires io.avaje.classpath.scanner; 2022-03-31 09:00:16 +13:00
Rob Bygrave 64e4e674ac ebean-core - Adding requires static com.fasterxml.jackson.annotation; 2022-03-31 08:51:51 +13:00
Rob Bygrave 24d8f38b1d #2374 - Bump to Java 11 and module-path 2022-03-31 08:42:14 +13:00
Rob Bygrave 79be375f54 Modify GH workflows to not build against Java 8, Java 11+ now 2022-03-30 19:04:49 +13:00
Rob BygraveandGitHub e95eae4ee6 Merge pull request #2621 from ebean-orm/feature/platform-modules-2
Refactor extract separate modules for each platform from ebean-api dbplatform
2022-03-30 19:01:22 +13:00
Rob Bygrave e71e16c1ee Refactor extract separate modules for each platform from ebean-api dbplatform 2022-03-30 17:11:36 +13:00
Rob Bygrave 514bba4130 bump versions in test modules after release 2022-03-29 23:04:31 +13:00
Rob Bygrave d31aa2b24c [maven-release-plugin] prepare for next development iteration 2022-03-29 22:49:50 +13:00
Rob Bygrave d834817dc2 [maven-release-plugin] prepare release ebean-parent-12.16.1 2022-03-29 22:49:42 +13:00
Rob Bygrave 4cad515110 #2619 - Lack of setNullParameter() functionality on io.ebean.SqlQuery interface 2022-03-29 22:41:36 +13:00
Rob Bygrave aa89df5f00 Merge branch 'master' of github.com:ebean-orm/ebean 2022-03-29 22:10:54 +13:00
Rob Bygrave 29f7375468 Bump ebean-agent to 12.16.1 2022-03-29 22:10:40 +13:00
Rob BygraveandGitHub 3e4d7c9b5a Merge pull request #2617 from FOCONIS/json-update-existing
ENH: JsonContext accepts a bean as target
2022-03-29 08:38:29 +13:00
Rob BygraveandGitHub fa34c39d92 Merge pull request #2615 from FOCONIS/tidy-code
Tidy, remove unused imports - Suggested changes (no code change)
2022-03-29 08:28:20 +13:00
Roland Praml ffeb630e7e JsonContext accepts a bean as target 2022-03-28 15:38:44 +02:00
Roland Praml 7666775d1a Suggested changes (no code change) 2022-03-28 14:39:12 +02:00
Rob Bygrave f95212eeb3 #2613 - Bump ebean-migration to 12.16.1 2022-03-28 14:36:10 +13:00
Rob Bygrave 5c3b680c8a #2612 - Incorrect DDL generation for MySql on history tables that use quoted identifiers 2022-03-28 13:05:59 +13:00
Rob Bygrave c8bb3c7b57 Fix test ebean-redis ClusterTest such that it allows for background thread sync to redis 2022-03-28 09:23:55 +13:00
Rob Bygrave dcd3bfee4c Fix test ConfigTest such that it doesn't set the RunOnceMarker
When tests are run using for example -Dprops.file=testconfig/ebean-postgres.properties ... then we want ebean-test AutoConfigureForTesting to run and setup the default datasource appropriately. If ConfigTest runs before that then it sets the RunOnceMarker and the default datasource isn't adjusted
2022-03-28 09:12:13 +13:00
Rob Bygrave b85bb5f459 Refactor tests, move some unit tests to ebean-api 2022-03-27 20:31:17 +13:00
Rob Bygrave 426d314e63 Refactor tests, move internal type tests to ebean-core 2022-03-27 20:20:35 +13:00
Rob Bygrave e3e5414157 Refactor tests, move some internal expression tests to ebean-core 2022-03-27 19:55:34 +13:00
Rob Bygrave 28088a5e54 Refactor tests, move some internal deploy tests to ebean-core 2022-03-27 17:44:43 +13:00
Rob Bygrave 2acdf2f4bf Refactor tests, move some internal core tests to ebean-core 2022-03-27 17:06:52 +13:00
Rob Bygrave 785a027dd6 Refactor tests, move some cache tests to ebean-core 2022-03-27 16:49:28 +13:00
Rob Bygrave 88005dbe09 Refactor tests, move changelog tests 2022-03-25 18:44:24 +13:00
Rob Bygrave 88acd8190a Refactor tests, move db migration tests 2022-03-25 18:23:23 +13:00
Rob Bygrave 72963bc9fb Refactor tests, move DbPrimaryTest to ebean-api 2022-03-25 18:07:29 +13:00
Rob BygraveandGitHub 6a552cd7d1 Merge pull request #2610 from FOCONIS/remove-unused-imports
No effective code change: Removed unused imports
2022-03-24 22:53:56 +13:00
Roland Praml c40b9738d1 No effective code change: Removed unused imports 2022-03-24 09:23:39 +01:00
Rob Bygrave 84a64f9640 Refactor tests, move BaseTestCase and annotations @ForPlatform @IgnorePlatform 2022-03-24 18:52:37 +13:00
Rob Bygrave e4c06432a0 Move some more unit tests from ebean-test back to ebean-core 2022-03-24 18:48:59 +13:00
Rob Bygrave f58d6038c7 Move some unit tests from ebean-test back to ebean-core 2022-03-24 18:21:48 +13:00
Rob Bygrave f270c52c00 Bump maven-compiler-plugin 2022-03-24 16:58:41 +13:00
Rob Bygrave e6ea85a193 #2609 - Fix module-info export io.ebean.config.dbplatform.yugabyte 2022-03-24 16:51:18 +13:00
Rob Bygrave 17f408681c No functional change - final methods on internal RsetDataReader 2022-03-24 12:01:22 +13:00
Rob Bygrave fcf6f5f384 No effective change - typo in javadoc 2022-03-24 11:32:50 +13:00
Rob Bygrave d98c49e266 Update test generated db2 index migration files 2022-03-23 22:31:32 +13:00
Rob Bygrave 79213e7194 Merge branch 'master' of github.com:ebean-orm/ebean 2022-03-23 22:29:16 +13:00
Rob Bygrave bc1f7040da Merge branch 'FOCONIS-tmp-tablespace' 2022-03-23 22:27:44 +13:00
Rob Bygrave f157c2da7f Merge branch 'tmp-tablespace' of https://github.com/FOCONIS/ebean into FOCONIS-tmp-tablespace 2022-03-23 22:27:17 +13:00
Rob BygraveandGitHub 33b18fb837 Merge pull request #2607 from FOCONIS/some-todos
DDL: Support schema in history entities and ignore case in DB2 procedures
2022-03-23 16:46:31 +13:00
Rob BygraveandGitHub 1f8a6b0668 Update README.md 2022-03-23 13:16:17 +13:00
Rob BygraveandGitHub 85a971323a Update early access build badges 2022-03-23 13:10:57 +13:00
Rob Bygrave f1b626a182 Merge branch 'master' of github.com:ebean-orm/ebean 2022-03-23 13:00:44 +13:00
Rob Bygrave cc043316ee Update EA build name 2022-03-23 13:00:30 +13:00
Rob BygraveandGitHub c656436d09 Update README.md 2022-03-23 12:31:22 +13:00
Roland Praml 250e66819b Reference scripts 2022-03-22 17:05:04 +01:00
Roland Praml 3e4cc3b3d6 Add tablespace support for DB2 2022-03-22 17:03:38 +01:00
Roland Praml f1950d479e Added testcase with upper and lower case characters 2022-03-22 10:43:34 +01:00
Roland Praml 00686fcccf DB2: ignore case in "drop if exists" checks 2022-03-22 09:58:20 +01:00
Roland Praml 4fe8ef2b23 Support schema in history-entities 2022-03-22 09:42:19 +01:00
Rob Bygrave baddc76961 Refactor tidy grammar in server/expression classes 2022-03-22 16:48:47 +13:00
Rob Bygrave de4140aaac #2600 - Pending drops migration with the same version of the target migration cause trouble 2022-03-22 16:20:06 +13:00
Rob BygraveandGitHub 66aa772f4a Merge pull request #2603 from FOCONIS/remove-lowertablename
Refactored DDL generation to correctly handle quoted identifiers
2022-03-22 09:02:42 +13:00
Rob BygraveandGitHub f745cfaab3 Merge pull request #2604 from FOCONIS/remove-lowertablename2
Remove LowerTableName
2022-03-22 08:38:14 +13:00
Roland Praml 8640b4a1a0 Fix: Check if pendingDrops are used correctly 2022-03-21 15:20:41 +01:00
Roland Praml 5e87706055 Fix: check newTable for history flag 2022-03-21 15:05:29 +01:00
Roland Praml 0d765d6583 Reference scripts 2022-03-21 15:02:06 +01:00
Roland Praml 2a924d8d32 Add more quotes, for history tables 2022-03-21 15:01:43 +01:00
Roland Praml 04d2a20945 Add testcase, that uses all kinds of reserved keywords 2022-03-21 13:48:48 +01:00
Roland Praml 4077d906d1 ADD: Support for quoted identifiers 2022-03-21 13:34:29 +01:00
Roland Praml 7e3fbbba62 Refactor: use normalized table names for history 2022-03-21 11:52:00 +01:00
Roland Praml 3db9a17c6a Refactored DbTriggerBasedHistory: always use historyTableName 2022-03-21 11:15:13 +01:00
Roland Praml 327babbfa2 Reference scripts 2022-03-21 11:08:54 +01:00
Roland Praml 0a1acb3f9b Fix: DB2-History table must be an exact copy 2022-03-21 11:08:41 +01:00
Roland Praml a2e27b9e00 fixed test case 2022-03-21 11:02:14 +01:00
Roland Praml a8ad93823a Removed 'lowerTableName' and 'lowerColumnName' 2022-03-18 08:56:43 +01:00
Rob Bygrave 5eb790e54d Merge branch 'master' of github.com:ebean-orm/ebean 2022-03-18 11:08:29 +13:00
Rob Bygrave c44ae96e09 Add badge to README for JDK EA 2022-03-18 11:08:11 +13:00
Rob BygraveandGitHub d540bf4d16 Merge pull request #2601 from FOCONIS/ddl-refactor9
Extended @Column support for DB2
2022-03-18 09:25:56 +13:00
Roland Praml ab6f5daec3 FIX LargeValueInsert-Test for DB2 2022-03-17 13:26:54 +01:00
Roland Praml d7a7ef097b Reference scripts 2022-03-17 13:14:11 +01:00
Roland Praml 8f746196ab Support for extra colum options for DB2 2022-03-17 13:11:48 +01:00
Roland Praml eb1ed0bdd0 DbColumDefault must be returned although if individual columnDefinition is specified (cases no DDL change)
We support optional platform columnDefinitions now. E.g. "db2;clob(64M);" - so we must not ignore @DbDefault for all other platforms
2022-03-17 13:07:52 +01:00
Roland Praml 37ab71cb7c Reference scripts 2022-03-17 13:03:55 +01:00
Roland Praml 74720a840d DbMigration: Do only real type changes 2022-03-17 13:01:25 +01:00
Rob Bygrave 923f83cafb Bump after release to 12.16.1-SNAPSHOT 2022-03-17 21:37:56 +13:00
Rob Bygrave 2faaf5f186 [maven-release-plugin] prepare for next development iteration 2022-03-16 22:49:23 +13:00
1493 changed files with 13681 additions and 5479 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
java_version: [8]
java_version: [11]
os: [ubuntu-latest]
steps:
+4 -2
View File
@@ -1,5 +1,5 @@
name: JDK EA
name: ebean EA
on:
workflow_dispatch:
@@ -16,7 +16,9 @@ jobs:
strategy:
fail-fast: false
matrix:
java_version: [17,18,19,loom,valhalla,metropolis,panama]
## valhalla - failing on javadoc with:
## javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://ebean.io/platforms/ebean-platform-h2/apidocs/ are in named modules.
java_version: [17,18,19,loom,metropolis,panama]
os: [ubuntu-latest]
steps:
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
java_version: [8.0.192, 8, 11.0.3, 11, 17]
java_version: [11, 17]
os: [ubuntu-latest]
steps:
+15 -5
View File
@@ -11,6 +11,16 @@
[![SqlServer](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver.yml)
[![Yugabyte](https://github.com/ebean-orm/ebean/actions/workflows/yugabyte.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/yugabyte.yml)
#### Builds against EA (Early Access) versions of Java (19, Loom, panama etc)
[![ebean EA](https://github.com/ebean-orm/ebean/actions/workflows/jdk-ea.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/jdk-ea.yml)
[![datasource EA](https://github.com/ebean-orm/ebean-datasource/actions/workflows/jdk-ea.yml/badge.svg)](https://github.com/ebean-orm/ebean-datasource/actions/workflows/jdk-ea.yml)
[![migration EA](https://github.com/ebean-orm/ebean-migration/actions/workflows/jdk-ea.yml/badge.svg)](https://github.com/ebean-orm/ebean-migration/actions/workflows/jdk-ea.yml)
[![test-docker EA](https://github.com/ebean-orm/ebean-test-docker/actions/workflows/jdk-ea.yml/badge.svg)](https://github.com/ebean-orm/ebean-test-docker/actions/workflows/jdk-ea.yml)
[![ebean-agent EA](https://github.com/ebean-orm/ebean-agent/actions/workflows/jdk-ea.yml/badge.svg)](https://github.com/ebean-orm/ebean-agent/actions/workflows/jdk-ea.yml)
# Sponsors
<table>
<tbody>
@@ -39,15 +49,15 @@
</tbody>
</table>
# Need help?
## Need help?
Post questions or issues to the Ebean google group - https://groups.google.com/forum/#!forum/ebean
# Documentation
## Documentation
Goto [https://ebean.io/docs/](https://ebean.io/docs/)
## Maven central links:
[Maven central - ebean](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.ebean%22%20AND%20a%3A%22ebean%22 "maven central ebean")
## Maven central
[Maven central - io.ebean](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.ebean%22%20)
[Maven central - all related projects](http://search.maven.org/#search%7Cga%7C1%7Cebean "maven central all related projects")
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-clickhouse</name>
<description>ebean-clickhouse composite</description>
<artifactId>ebean-clickhouse</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-clickhouse</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.clickhouse.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.clickhouse {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.clickhouse;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-cockroach</name>
<description>ebean-cockroach composite</description>
<artifactId>ebean-cockroach</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.cockroach.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.cockroach {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.postgres;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-db2</name>
<description>ebean-db2 composite</description>
<artifactId>ebean-db2</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-db2</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.db2.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.db2 {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.db2;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-h2</name>
<description>ebean-h2 composite</description>
<artifactId>ebean-h2</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-h2</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.h2.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.h2 {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.h2;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-hana</name>
<description>ebean-hana composite</description>
<artifactId>ebean-hana</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-hana</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.hana.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.hana {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.hana;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-mariadb</name>
<description>ebean-mariadb composite</description>
<artifactId>ebean-mariadb</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mariadb</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.mariadb.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.mariadb {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.mariadb;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-mysql</name>
<description>ebean-mysql composite</description>
<artifactId>ebean-mysql</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-mysql</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.mysql.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.mysql {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.mysql;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-nuodb</name>
<description>ebean-nuodb composite</description>
<artifactId>ebean-nuodb</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-nuodb</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.nuodb.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.nuodb {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.nuodb;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-oracle</name>
<description>ebean-oracle composite</description>
<artifactId>ebean-oracle</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-oracle</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.oracle.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.oracle {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.oracle;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-postgres</name>
<description>ebean-postgres composite</description>
<artifactId>ebean-postgres</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.postgres.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.postgres {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.postgres;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-sqlite</name>
<description>ebean-sqlite composite</description>
<artifactId>ebean-sqlite</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlite</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.sqlite.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.sqlite {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.sqlite;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-sqlserver</name>
<description>ebean-sqlserver composite</description>
<artifactId>ebean-sqlserver</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-sqlserver</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.sqlserver.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.sqlserver {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.sqlserver;
}
+52
View File
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<name>ebean-yugabyte</name>
<description>ebean-yugabyte composite</description>
<artifactId>ebean-yugabyte</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-postgres</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -0,0 +1,7 @@
package io.ebean.yugabyte.assembly;
/**
* Nothing interesting here - required placeholder for javadoc.
*/
public class Assembly {
}
@@ -0,0 +1,9 @@
module io.ebean.yugabyte {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.postgres;
}
+26 -32
View File
@@ -2,57 +2,51 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>ebean-parent</artifactId>
<artifactId>composites</artifactId>
<groupId>io.ebean</groupId>
<version>12.16.0</version>
<version>13.3.0</version>
</parent>
<name>ebean composite</name>
<description>Composite of common runtime dependencies</description>
<name>ebean (all platforms)</name>
<description>composite of common runtime dependencies for all platforms</description>
<artifactId>ebean</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-datasource</artifactId>
<version>${ebean-datasource.version}</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>12.16.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-core</artifactId>
<version>12.16.0</version>
</dependency>
<!-- Technically optional but most expected to use query beans -->
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-querybean</artifactId>
<version>12.16.0</version>
<version>13.3.0</version>
</dependency>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-platform-all</artifactId>
<version>13.3.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
<scm>
<tag>ebean-parent-13.3.0</tag>
</scm>
</project>
@@ -2,6 +2,7 @@ module io.ebean {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.datasource;
requires transitive io.ebean.querybean;
requires transitive io.ebean.platform.all;
}
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>13.3.0</version>
</parent>
<artifactId>composites</artifactId>
<packaging>pom</packaging>
<modules>
<module>ebean</module>
<module>ebean-clickhouse</module>
<module>ebean-cockroach</module>
<module>ebean-db2</module>
<module>ebean-h2</module>
<module>ebean-hana</module>
<!-- <module>hsqldb</module>-->
<module>ebean-mariadb</module>
<module>ebean-mysql</module>
<module>ebean-nuodb</module>
<module>ebean-oracle</module>
<module>ebean-postgres</module>
<!-- <module>sqlanywhere</module>-->
<module>ebean-sqlite</module>
<module>ebean-sqlserver</module>
<module>ebean-yugabyte</module>
</modules>
</project>
+2 -26
View File
@@ -4,7 +4,7 @@
<parent>
<artifactId>ebean-parent</artifactId>
<groupId>io.ebean</groupId>
<version>12.16.0</version>
<version>13.3.0</version>
</parent>
<name>ebean api</name>
@@ -49,7 +49,7 @@
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-annotation</artifactId>
<version>7.6</version>
<version>8.0</version>
</dependency>
<dependency>
@@ -80,15 +80,6 @@
<optional>true</optional>
</dependency>
<!-- Provided scope so that the H2HistoryTrigger can live in Ebean core
and not require a separate module for it -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2database.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
@@ -112,19 +103,4 @@
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -74,40 +74,16 @@ public interface BeanState {
*/
Set<String> loadedProps();
/**
* Deprecated migrate to loadedProps().
*/
@Deprecated
default Set<String> getLoadedProps() {
return loadedProps();
}
/**
* Return the set of changed properties.
*/
Set<String> changedProps();
/**
* Deprecated migrate to changedProps().
*/
@Deprecated
default Set<String> getChangedProps() {
return changedProps();
}
/**
* Return a map of the updated properties and their new and old values.
*/
Map<String, ValuePair> dirtyValues();
/**
* Deprecated migrate to dirtyValues().
*/
@Deprecated
default Map<String, ValuePair> getDirtyValues() {
return dirtyValues();
}
/**
* Return true if the bean is readOnly.
* <p>
@@ -139,24 +115,9 @@ public interface BeanState {
*/
Map<String, Exception> loadErrors();
/**
* Deprecated migrate to loadErrors().
*/
@Deprecated
default Map<String, Exception> getLoadErrors() {
return loadErrors();
}
/**
* Return the sort order value for an order column.
*/
int sortOrder();
/**
* Deprecated migrate to sortOrder().
*/
@Deprecated
default int getSortOrder() {
return sortOrder();
}
}
+19 -133
View File
@@ -22,10 +22,9 @@ import java.util.concurrent.Callable;
* DB additionally provides a convenient way to use the 'default' Database.
* <p>
* <h3>Default database</h3>
* <p>
* One of the Database instances can be registered as the "default database"
* and can be obtained using <code>DB.getDefault()</code>
* </p>
*
* <pre>{@code
*
* Database database = DB.getDefault();
@@ -36,7 +35,7 @@ import java.util.concurrent.Callable;
* <p>
* Multiple database instances can be registered with DB and we can obtain them
* using <code>DB.byName()</code>
* </p>
*
* <pre>{@code
*
* Database hrDatabase = DB.byName("hr");
@@ -47,7 +46,6 @@ import java.util.concurrent.Callable;
* <p>
* DB has methods like {@link #find(Class)} and {@link #save(Object)} which are
* just convenience for using the default database.
* </p>
*
* <pre>{@code
*
@@ -117,39 +115,26 @@ public final class DB {
* build the WHERE and HAVING clauses. Alternatively you can use the
* ExpressionFactory directly to create expressions to add to the query where
* clause.
* </p>
* <p>
* Alternatively you can use the {@link Expr} as a shortcut to the
* ExpressionFactory of the 'Default' database.
* </p>
* <p>
* You generally need to the an ExpressionFactory (or {@link Expr}) to build
* an expression that uses OR like Expression e = Expr.or(..., ...);
* </p>
*/
public static ExpressionFactory expressionFactory() {
return getDefault().expressionFactory();
}
/**
* Deprecated migrate to expressionFactory().
*/
@Deprecated
public static ExpressionFactory getExpressionFactory() {
return expressionFactory();
}
/**
* Return the next identity value for a given bean type.
* <p>
* This will only work when a IdGenerator is on this bean type such as a DB
* sequence or UUID.
* </p>
* <p>
* For DB's supporting getGeneratedKeys and sequences such as Oracle10 you do
* not need to use this method generally. It is made available for more
* complex cases where it is useful to get an ID prior to some processing.
* </p>
*/
public static Object nextId(Class<?> beanType) {
return getDefault().nextId(beanType);
@@ -159,17 +144,14 @@ public final class DB {
* Start a transaction with 'REQUIRED' semantics.
* <p>
* With REQUIRED semantics if an active transaction already exists that transaction will be used.
* </p>
* <p>
* The transaction is stored in a ThreadLocal variable and typically you only
* need to use the returned Transaction <em>IF</em> you wish to do things like
* use batch mode, change the transaction isolation level, use savepoints or
* log comments to the transaction log.
* </p>
* <p>
* Example of using a transaction to span multiple calls to find(), save()
* etc.
* </p>
* Example of using a transaction to span multiple calls to find(), save() etc.
*
* <pre>{@code
*
* try (Transaction transaction = DB.beginTransaction()) {
@@ -187,7 +169,6 @@ public final class DB {
* With Database we can pass the transaction to the various find(), save() and execute()
* methods. This gives us the ability to create the transactions externally from Ebean
* and use the transaction explicitly via the various methods available on Database.
* </p>
*/
public static Transaction beginTransaction() {
return getDefault().beginTransaction();
@@ -199,7 +180,6 @@ public final class DB {
* You will want to do this if you want multiple Transactions in a single
* thread or generally use transactions outside of the TransactionThreadLocal
* management.
* </p>
*/
public static Transaction createTransaction() {
return getDefault().createTransaction();
@@ -219,7 +199,6 @@ public final class DB {
* <p>
* Note that this provides an try finally alternative to using {@link #executeCall(TxScope, Callable)} or
* {@link #execute(TxScope, Runnable)}.
* </p>
* <p>
* <h3>REQUIRES_NEW example:</h3>
* <pre>{@code
@@ -278,7 +257,7 @@ public final class DB {
/**
* Register a TransactionCallback on the currently active transaction.
* <p/>
* <p>
* If there is no currently active transaction then a PersistenceException is thrown.
*
* @param transactionCallback the transaction callback to be registered with the current transaction
@@ -307,14 +286,12 @@ public final class DB {
* rollback the transaction.
* <p>
* It is preferable to use <em>try with resources</em> rather than this.
* </p>
* <p>
* Useful to put in a finally block to ensure the transaction is ended, rather
* than a rollbackTransaction() in each catch block.
* </p>
* <p>
* Code example:
* </p>
*
* <pre>{@code
* DB.beginTransaction();
* try {
@@ -345,7 +322,6 @@ public final class DB {
* <p>
* When null is passed in for b, then the 'OldValues' of a is used for the
* difference comparison.
* </p>
*/
public static Map<String, ValuePair> diff(Object a, Object b) {
return getDefault().diff(a, b);
@@ -356,18 +332,15 @@ public final class DB {
* <p>
* If there is no current transaction one will be created and committed for
* you automatically.
* </p>
* <p>
* Save can cascade along relationships. For this to happen you need to
* specify a cascade of CascadeType.ALL or CascadeType.PERSIST on the
* OneToMany, OneToOne or ManyToMany annotation.
* </p>
* <p>
* When a save cascades via a OneToMany or ManyToMany Ebean will automatically
* set the 'parent' object to the 'detail' object. In the example below in
* saving the order and cascade saving the order details the 'parent' order
* will be set against each order detail when it is saved.
* </p>
*/
public static void save(Object bean) throws OptimisticLockException {
getDefault().save(bean);
@@ -418,11 +391,9 @@ public final class DB {
* <b>Stateless updates:</b> Note that the bean does not have to be previously fetched to call
* update().You can create a new instance and set some of its properties programmatically for via
* JSON/XML marshalling etc. This is described as a 'stateless update'.
* </p>
* <p>
* <b>Optimistic Locking: </b> Note that if the version property is not set when update() is
* called then no optimistic locking is performed (internally ConcurrencyMode.NONE is used).
* </p>
* <p>
* <pre>{@code
*
@@ -539,20 +510,16 @@ public final class DB {
* Delete the bean.
* <p>
* This will return true if the bean was deleted successfully or JDBC batch is being used.
* </p>
* <p>
* If there is no current transaction one will be created and committed for
* you automatically.
* </p>
* <p>
* If the bean is configured with <code>@SoftDelete</code> then this will perform a soft
* delete rather than a hard/permanent delete.
* </p>
* <p>
* If the Bean does not have a version property (or loaded version property) and
* the bean does not exist then this returns false indicating that nothing was
* deleted. Note that, if JDBC batch mode is used then this always returns true.
* </p>
*/
public static boolean delete(Object bean) throws OptimisticLockException {
return getDefault().delete(bean);
@@ -612,7 +579,6 @@ public final class DB {
* <p>
* Note that this resets OneToMany and ManyToMany properties so that if they
* are accessed a lazy load will refresh the many property.
* </p>
*/
public static void refresh(Object bean) {
getDefault().refresh(bean);
@@ -620,6 +586,7 @@ public final class DB {
/**
* Refresh a 'many' property of a bean.
*
* <pre>{@code
*
* Order order = ...;
@@ -640,7 +607,7 @@ public final class DB {
* Get a reference object.
* <p>
* This is sometimes described as a proxy (with lazy loading).
* </p>
*
* <pre>{@code
*
* Product product = DB.getReference(Product.class, 1);
@@ -661,14 +628,6 @@ public final class DB {
return getDefault().reference(beanType, id);
}
/**
* Deprecated migrate to beanId().
*/
@Deprecated
public static <T> T getReference(Class<T> beanType, Object id) {
return reference(beanType, id);
}
/**
* Sort the list using the sortByClause which can contain a comma delimited
* list of property names and keywords asc, desc, nullsHigh and nullsLow.
@@ -684,7 +643,7 @@ public final class DB {
* <p>
* Note that the sorting uses a Comparator and Collections.sort(); and does
* not invoke a DB query.
* </p>
*
* <pre>{@code
*
* // find orders and their customers
@@ -719,9 +678,8 @@ public final class DB {
*
* }</pre>
* <p>
* If you want more control over the query then you can use createQuery() and
* Query.findOne();
* </p>
* If you want more control over the query then you can use createQuery() and Query.findOne();
*
* <pre>{@code
*
* // ... additionally fetching customer, customer shipping address,
@@ -761,40 +719,25 @@ public final class DB {
}
/**
* Look to execute a native sql query that does not returns beans but instead
* returns SqlRow or direct access to ResultSet (see {@link SqlQuery#findList(RowMapper)}.
*
* Look to execute a native sql query that does not return beans but instead
* returns SqlRow or uses {@link RowMapper}.
* <p>
* Refer to {@link DtoQuery} for native sql queries returning DTO beans.
* </p>
* <p>
* Refer to {@link #findNative(Class, String)} for native sql queries returning entity beans.
* </p>
*/
public static SqlQuery sqlQuery(String sql) {
return getDefault().sqlQuery(sql);
}
/**
* Deprecated - migrate to sqlQuery().
* <p>
* This is an alias for {@link #sqlQuery(String)}.
*/
@Deprecated
public static SqlQuery createSqlQuery(String sql) {
return sqlQuery(sql);
}
/**
* Look to execute a native sql insert update or delete statement.
* <p>
* Use this to execute a Insert Update or Delete statement. The statement will
* be native to the database and contain database table and column names.
* </p>
*
* <p>
* See {@link SqlUpdate} for example usage.
* </p>
*
* @return The SqlUpdate instance to set parameters and execute
*/
@@ -802,16 +745,6 @@ public final class DB {
return getDefault().sqlUpdate(sql);
}
/**
* Deprecated - migrate to sqlUpdate().
* <p>
* This is an alias for {@link #sqlUpdate(String)}.
*/
@Deprecated
public static SqlUpdate createSqlUpdate(String sql) {
return sqlUpdate(sql);
}
/**
* Create a CallableSql to execute a given stored procedure.
*
@@ -828,10 +761,9 @@ public final class DB {
* <p>
* The orm update differs from the sql update in that it you can use the bean
* name and bean property names rather than table and column names.
* </p>
* <p>
* An example:
* </p>
*
* <pre>{@code
*
* // The bean name and properties - "topic","postCount" and "id"
@@ -864,7 +796,6 @@ public final class DB {
* Create a named query.
* <p>
* For RawSql the named query is expected to be in ebean.xml.
* </p>
*
* @param beanType The type of entity bean
* @param namedQuery The name of the query
@@ -880,15 +811,12 @@ public final class DB {
* <p>
* You can use the methods on the Query object to specify fetch paths,
* predicates, order by, limits etc.
* </p>
* <p>
* You then use findList(), findSet(), findMap() and findOne() to execute
* the query and return the collection or bean.
* </p>
* <p>
* Note that a query executed by {@link Query#findList()} etc will execute against
* the same database from which is was created.
* </p>
*
* @param beanType the class of entity to be fetched
* @return A ORM Query for this beanType
@@ -940,7 +868,6 @@ public final class DB {
* This is actually the same as {@link #createQuery(Class)}. The reason it
* exists is that people used to JPA will probably be looking for a
* createQuery method (the same as entityManager).
* </p>
*
* @param beanType the type of entity bean to find
* @return A ORM Query object for this beanType
@@ -953,7 +880,7 @@ public final class DB {
* Create a query using native SQL.
* <p>
* The native SQL can contain named parameters or positioned parameters.
* </p>
*
* <pre>{@code
*
* String sql = "select c.id, c.name from customer c where c.name like ? order by c.name";
@@ -978,7 +905,6 @@ public final class DB {
* <p>
* DTO beans are just normal bean like classes with public constructor(s) and setters.
* They do not need to be registered with Ebean before use.
* </p>
*
* @param dtoType The type of the DTO bean the rows will be mapped into.
* @param sql The SQL query to execute.
@@ -1015,10 +941,8 @@ public final class DB {
* going back to the database.
* <p>
* This produces and returns a new list with the sort and filters applied.
* </p>
* <p>
* Refer to {@link Filter} for an example of its use.
* </p>
*/
public static <T> Filter<T> filter(Class<T> beanType) {
return getDefault().filter(beanType);
@@ -1029,7 +953,7 @@ public final class DB {
* <p>
* The scope can control the transaction type, isolation and rollback
* semantics.
* </p>
*
* <pre>{@code
*
* // set specific transactional scope settings
@@ -1053,7 +977,7 @@ public final class DB {
* <p>
* The default scope runs with REQUIRED and by default will rollback on any
* exception (checked or runtime).
* </p>
*
* <pre>{@code
*
* DB.execute(() -> {
@@ -1078,7 +1002,7 @@ public final class DB {
* <p>
* The scope can control the transaction type, isolation and rollback
* semantics.
* </p>
*
* <pre>{@code
*
* // set specific transactional scope settings
@@ -1102,11 +1026,10 @@ public final class DB {
* <p>
* The default scope runs with REQUIRED and by default will rollback on any
* exception (checked or runtime).
* </p>
* <p>
* This is basically the same as TxRunnable except that it returns an Object
* (and you specify the return type via generics).
* </p>
*
* <pre>{@code
*
* DB.executeCall(() -> {
@@ -1135,23 +1058,19 @@ public final class DB {
* <p>
* If you use DB.execute(UpdateSql) then the table modification information
* is automatically deduced and you do not need to call this method yourself.
* </p>
* <p>
* This information is used to invalidate objects out of the cache and
* potentially text indexes. This information is also automatically broadcast
* across the cluster.
* </p>
* <p>
* If there is a transaction then this information is placed into the current
* transactions event information. When the transaction is committed this
* information is registered (with the transaction manager). If this
* transaction is rolled back then none of the transaction event information
* registers including the information you put in via this method.
* </p>
* <p>
* If there is NO current transaction when you call this method then this
* information is registered immediately (with the transaction manager).
* </p>
*
* @param tableName the name of the table that was modified
* @param inserts true if rows where inserted into the table
@@ -1166,20 +1085,11 @@ public final class DB {
* Return the BeanState for a given entity bean.
* <p>
* This will return null if the bean is not an enhanced entity bean.
* </p>
*/
public static BeanState beanState(Object bean) {
return getDefault().beanState(bean);
}
/**
* Deprecated migrate to beanState().
*/
@Deprecated
public static BeanState getBeanState(Object bean) {
return beanState(bean);
}
/**
* Return the value of the Id property for a given bean.
*/
@@ -1187,14 +1097,6 @@ public final class DB {
return getDefault().beanId(bean);
}
/**
* Deprecated migrate to beanId().
*/
@Deprecated
public static Object getBeanId(Object bean) {
return beanId(bean);
}
/**
* Load and lock the bean using {@code select for update}.
* <p>
@@ -1210,14 +1112,6 @@ public final class DB {
getDefault().lock(bean);
}
/**
* Deprecated migrate to cacheManager().
*/
@Deprecated
public static ServerCacheManager getServerCacheManager() {
return getDefault().cacheManager();
}
/**
* Return the manager of the level 2 cache ("L2" cache).
*/
@@ -1233,14 +1127,6 @@ public final class DB {
return getDefault().backgroundExecutor();
}
/**
* Deprecated migrate to backgroundExecutor().
*/
@Deprecated
public static BackgroundExecutor getBackgroundExecutor() {
return backgroundExecutor();
}
/**
* Return the JsonContext for reading/writing JSON.
*/
+1 -129
View File
@@ -123,81 +123,33 @@ public interface Database {
*/
AutoTune autoTune();
/**
* Deprecated migrate to autoTune().
*/
@Deprecated
default AutoTune getAutoTune() {
return autoTune();
}
/**
* Return the associated DataSource for this Database instance.
*/
DataSource dataSource();
/**
* Deprecated migrate to dataSource().
*/
@Deprecated
default DataSource getDataSource() {
return dataSource();
}
/**
* Return the associated read only DataSource for this Database instance (can be null).
*/
DataSource readOnlyDataSource();
/**
* Deprecated migrate to readOnlyDataSource().
*/
@Deprecated
default DataSource getReadOnlyDataSource() {
return readOnlyDataSource();
}
/**
* Return the name. This is used with {@link DB#byName(String)} to get a
* Database that was registered with the DB singleton.
*/
String name();
/**
* Deprecated migrate to name().
*/
@Deprecated
default String getName() {
return name();
}
/**
* Return the ExpressionFactory for this database.
*/
ExpressionFactory expressionFactory();
/**
* Deprecated migrate to expressionFactory().
*/
@Deprecated
default ExpressionFactory getExpressionFactory() {
return expressionFactory();
}
/**
* Return the MetaInfoManager which is used to get meta data from the Database
* such as query execution statistics.
*/
MetaInfoManager metaInfo();
/**
* Deprecated migrate to metaInfo().
*/
@Deprecated
default MetaInfoManager getMetaInfoManager() {
return metaInfo();
}
/**
* Return the platform used for this database instance.
* <p>
@@ -217,27 +169,11 @@ public interface Database {
*/
Platform platform();
/**
* Deprecated migrate to platform().
*/
@Deprecated
default Platform getPlatform() {
return platform();
}
/**
* Return the extended API intended for use by plugins.
*/
SpiServer pluginApi();
/**
* Deprecated migrate to pluginApi().
*/
@Deprecated
default SpiServer getPluginApi() {
return pluginApi();
}
/**
* Return the BeanState for a given entity bean.
* <p>
@@ -246,27 +182,11 @@ public interface Database {
*/
BeanState beanState(Object bean);
/**
* Deprecated migrate to beanState().
*/
@Deprecated
default BeanState getBeanState(Object bean) {
return beanState(bean);
}
/**
* Return the value of the Id property for a given bean.
*/
Object beanId(Object bean);
/**
* Deprecated migrate to beanId().
*/
@Deprecated
default Object getBeanId(Object bean) {
return beanId(bean);
}
/**
* Set the Id value onto the bean converting the type of the id value if necessary.
* <p>
@@ -279,14 +199,6 @@ public interface Database {
*/
Object beanId(Object bean, Object id);
/**
* Deprecated migrate to beanId().
*/
@Deprecated
default Object setBeanId(Object bean, Object id) {
return beanId(bean, id);
}
/**
* Return a map of the differences between two objects of the same type.
* <p>
@@ -300,7 +212,7 @@ public interface Database {
* Create a new instance of T that is an EntityBean.
* <p>
* Useful if you use BeanPostConstructListeners or &#64;PostConstruct Annotations.
* In this case you should not use "new Bean...()". Making all bean construtors protected
* In this case you should not use "new Bean...()". Making all bean constructors protected
* could be a good idea here.
* </p>
*/
@@ -588,14 +500,6 @@ public interface Database {
*/
SqlQuery sqlQuery(String sql);
/**
* Deprecated - migrate to sqlQuery().
* <p>
* This is an alias for {@link #sqlQuery(String)}.
*/
@Deprecated
SqlQuery createSqlQuery(String sql);
/**
* Look to execute a native sql insert update or delete statement.
* <p>
@@ -611,14 +515,6 @@ public interface Database {
*/
SqlUpdate sqlUpdate(String sql);
/**
* Deprecated - migrate to sqlUpdate().
* <p>
* This is an alias for {@link #sqlUpdate(String)}.
*/
@Deprecated
SqlUpdate createSqlUpdate(String sql);
/**
* Create a CallableSql to execute a given stored procedure.
*/
@@ -952,14 +848,6 @@ public interface Database {
*/
<T> T reference(Class<T> beanType, Object id);
/**
* Deprecated migrate to reference().
*/
@Deprecated
default <T> T getReference(Class<T> beanType, Object id) {
return reference(beanType, id);
}
/**
* Return the extended API for Database.
* <p>
@@ -1528,28 +1416,12 @@ public interface Database {
*/
ServerCacheManager cacheManager();
/**
* Deprecated migrate to cacheManager().
*/
@Deprecated
default ServerCacheManager getServerCacheManager() {
return cacheManager();
}
/**
* Return the BackgroundExecutor service for asynchronous processing of
* queries.
*/
BackgroundExecutor backgroundExecutor();
/**
* Deprecated migrate to backgroundExecutor().
*/
@Deprecated
default BackgroundExecutor getBackgroundExecutor() {
return backgroundExecutor();
}
/**
* Return the JsonContext for reading/writing JSON.
* <p>
@@ -26,7 +26,7 @@ import java.util.concurrent.locks.ReentrantLock;
* methods on the DB singleton such as {@link DB#find(Class)} are just a
* convenient way of using the 'default/primary' Database.
*/
public class DatabaseFactory {
public final class DatabaseFactory {
private static final ReentrantLock lock = new ReentrantLock();
private static SpiContainer container;
@@ -10,7 +10,7 @@ import java.util.concurrent.locks.ReentrantLock;
* <p/>
* Intended for internal use as part of bootup, construction, registration of the default database.
*/
class DbPrimary {
final class DbPrimary {
private static final ReentrantLock lock = new ReentrantLock();
private static String defaultServerName;
@@ -12,7 +12,7 @@ import java.util.Properties;
*
* @author Roland Praml, FOCONIS AG
*/
public class EbeanVersion {
public final class EbeanVersion {
private static final Logger log = LoggerFactory.getLogger("io.ebean");
+1 -1
View File
@@ -25,7 +25,7 @@ import java.util.Map;
*
* @see Query#where()
*/
public class Expr {
public final class Expr {
private Expr() {
}
@@ -112,19 +112,6 @@ public interface ExtendedServer {
*/
<T> Stream<T> findStream(Query<T> query, Transaction transaction);
/**
* Deprecated - migrate to findStream().
* <p>
* Execute the query returning the result as a Stream.
* <p>
* Note that this can support very large queries iterating any number of results.
* To do so internally it can use multiple persistence contexts.
* <p>
* Note that the stream needs to be closed so use with try with resources.
*/
@Deprecated
<T> Stream<T> findLargeStream(Query<T> query, Transaction transaction);
/**
* Execute the query visiting the each bean one at a time.
* <p>
@@ -31,7 +31,7 @@ import java.io.Serializable;
* @author mario
* @author rbygrave
*/
public class FetchConfig implements Serializable {
public final class FetchConfig implements Serializable {
private static final long serialVersionUID = 1L;
@@ -750,29 +750,6 @@ public interface Query<T> extends CancelableQuery {
*/
Stream<T> findStream();
/**
* Deprecated - migrate to findStream.
* <p>
* Execute the query returning the result as a Stream.
* <p>
* Note that this uses multiple persistence contexts such that we can use
* it with a large number of results.
* </p>
* <pre>{@code
*
* // use try with resources to ensure Stream is closed
*
* try (Stream<Customer> stream = query.findLargeStream()) {
* stream
* .map(...)
* .collect(...);
* }
*
* }</pre>
*/
@Deprecated
Stream<T> findLargeStream();
/**
* Execute the query processing the beans one at a time.
* <p>
+10 -62
View File
@@ -74,18 +74,6 @@ public interface SqlQuery extends Serializable, CancelableQuery {
@Nullable
SqlRow findOne();
/**
* Deprecated migrate to use {@link #mapTo(RowMapper)}
*/
@Deprecated
<T> T findOne(RowMapper<T> mapper);
/**
* Deprecated migrate to use {@link #mapTo(RowMapper)}
*/
@Deprecated
<T> List<T> findList(RowMapper<T> mapper);
/**
* Execute the query reading each row from ResultSet using the RowConsumer.
* <p>
@@ -121,50 +109,6 @@ public interface SqlQuery extends Serializable, CancelableQuery {
*/
Optional<SqlRow> findOneOrEmpty();
/**
* Deprecated - migrate to <code>.mapToScalar(attributeType).findOne()</code>.
* <pre>{@code
*
* .mapToScalar(BigDecimal.class)
* .findOne();
* }
*/
@Deprecated
<T> T findSingleAttribute(Class<T> attributeType);
/**
* Deprecated - migrate to <code>.mapToScalar(BigDecimal.class).findOne()</code>.
* <pre>{@code
*
* .mapToScalar(BigDecimal.class)
* .findOne();
* }
*/
@Deprecated
BigDecimal findSingleDecimal();
/**
* Deprecated - migrate to <code>.mapToScalar(Long.class).findOne()</code>.
* <pre>{@code
*
* .mapToScalar(Long.class)
* .findOne();
* }
*/
@Deprecated
Long findSingleLong();
/**
* Deprecated - migrate to <code>.mapToScalar(Long.class).findList()</code>.
* <pre>{@code
*
* .mapToScalar(Long.class)
* .findList();
* }
*/
@Deprecated
<T> List<T> findSingleAttributeList(Class<T> attributeType);
/**
* Set one of more positioned parameters.
* <p>
@@ -194,12 +138,6 @@ public interface SqlQuery extends Serializable, CancelableQuery {
*/
SqlQuery setParameters(Object... values);
/**
* Deprecated migrate to setParameters(Object... values)
*/
@Deprecated
SqlQuery setParams(Object... values);
/**
* Set the next bind parameter by position.
* <pre>{@code
@@ -246,6 +184,16 @@ public interface SqlQuery extends Serializable, CancelableQuery {
*/
SqlQuery setParameter(Object value);
/**
* Set a null parameter by position.
*/
SqlQuery setNullParameter(int position, int jdbcType);
/**
* Set a null parameter by name.
*/
SqlQuery setNullParameter(String name, int jdbcType);
/**
* Bind the parameter by its index position (1 based like JDBC).
* <p>
@@ -287,12 +287,6 @@ public interface SqlUpdate {
*/
SqlUpdate setParameters(Object... values);
/**
* Deprecated migrate to setParameters(Object... values).
*/
@Deprecated
SqlUpdate setParams(Object... values);
/**
* Set the next bind parameter by position.
*
@@ -300,12 +294,6 @@ public interface SqlUpdate {
*/
SqlUpdate setParameter(Object value);
/**
* Deprecated migrate to setParameter(value).
*/
@Deprecated
SqlUpdate setNextParameter(Object value);
/**
* Set a parameter via its index position.
*/
@@ -11,7 +11,7 @@ import java.util.ServiceLoader;
/**
* Lookup internal services.
*/
class XServiceProvider {
final class XServiceProvider {
private static SpiRawSqlService rawSqlService = initRawSql();
@@ -18,7 +18,7 @@ import java.util.Set;
* <em>java.util.Collection</em>. The reason being that java.util.Map is not a
* Collection. I realise this makes this name confusing so I apologise for that.
*/
public interface BeanCollection<E> extends Serializable {
public interface BeanCollection<E> extends Serializable, ToStringAware {
enum ModifyListenMode {
/**
@@ -11,7 +11,7 @@ import java.io.Serializable;
* general application consumption.
* </p>
*/
public interface EntityBean extends Serializable {
public interface EntityBean extends Serializable, ToStringAware {
/**
* Return all the property names in defined order.
@@ -109,4 +109,8 @@ public interface EntityBean extends Serializable {
throw new NotEnhancedException();
}
@Override
default void toString(ToStringBuilder builder) {
throw new NotEnhancedException();
}
}
@@ -0,0 +1,12 @@
package io.ebean.bean;
/**
* A type that can participate in building toString content with ToStringBuilder.
*/
public interface ToStringAware {
/**
* Append to the ToStringBuilder.
*/
void toString(ToStringBuilder builder);
}
@@ -0,0 +1,163 @@
package io.ebean.bean;
import java.util.Collection;
import java.util.IdentityHashMap;
/**
* Helps build toString content taking into account recursion.
* <p>
* That is, it detects and handles the case where there are relationships that recurse
* and would otherwise become an infinite loop (e.g. bidirectional parent child).
*/
public final class ToStringBuilder {
/**
* The max number of objects that we allow before stopping content being appended.
*/
private static final int MAX = 100;
/**
* Max length of content in string form added for any given value.
*/
private static final int TRIM_LENGTH = 500;
/**
* The max total content after which we stop content being appended.
*/
private static final int MAX_TOTAL_CONTENT = 2000;
private final IdentityHashMap<Object, Integer> id = new IdentityHashMap<>();
private final StringBuilder sb = new StringBuilder(50);
private boolean first = true;
private int counter;
@Override
public String toString() {
return sb.toString();
}
/**
* Set of an object being added.
*/
public void start(Object bean) {
if (counter == 0) {
id.putIfAbsent(bean, 0);
}
if (counter <= MAX) {
sb.append(bean.getClass().getSimpleName()).append("@").append(counter).append("(");
}
}
/**
* Add a property as name value pair.
*/
public void add(String name, Object value) {
if (value != null && counter <= MAX) {
if (value instanceof BeanCollection) {
if (((BeanCollection<?>)value).isReference()) {
// suppress unloaded bean collections
return;
}
}
key(name);
value(value);
}
}
/**
* Add raw content.
*/
public void addRaw(String content) {
sb.append(content);
}
/**
* End of an object.
*/
public void end() {
if (counter <= MAX) {
sb.append(")");
}
}
private void key(String name) {
if (counter > MAX) {
return;
}
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append(name).append(":");
}
private void value(Object value) {
if (counter > MAX) {
return;
}
if (value instanceof ToStringAware) {
if (value instanceof BeanCollection) {
((ToStringAware) value).toString(this);
} else if (push(value)) {
((ToStringAware) value).toString(this);
}
} else if (value instanceof Collection) {
addCollection((Collection<?>) value);
} else {
String content = String.valueOf(value);
if (content.length() > TRIM_LENGTH) {
content = content.substring(0, TRIM_LENGTH) + " <trimmed>";
}
sb.append(content);
if (sb.length() >= MAX_TOTAL_CONTENT) {
sb.append(" ...");
counter += MAX;
}
}
}
/**
* Add a collection of values.
*/
public void addCollection(Collection<?> c) {
if (c == null || c.isEmpty()) {
sb.append("[]");
return;
}
boolean firstElement = true;
sb.append("[");
for (Object o : c) {
if (firstElement) {
firstElement = false;
} else {
sb.append(", ");
}
value(o);
if (counter > MAX) {
return;
}
}
sb.append("]");
}
private boolean push(Object bean) {
if (counter > MAX) {
return false;
}
if (counter == MAX) {
sb.append(" ...");
counter++;
return false;
}
Integer idx = id.putIfAbsent(bean, counter++);
if (idx != null) {
--counter;
sb.append(bean.getClass().getSimpleName()).append("@").append(idx);
return false;
}
first = true;
return true;
}
}
+15 -15
View File
@@ -1,5 +1,6 @@
package io.ebean.cache;
import io.avaje.lang.Nullable;
import io.ebean.meta.MetricVisitor;
import java.util.LinkedHashMap;
@@ -68,40 +69,39 @@ public interface ServerCache {
/**
* Return the number of entries in the cache.
*/
int size();
default int size() {
return 0;
}
/**
* Return the hit ratio the cache is currently getting.
*/
default int hitRatio() {
return getHitRatio();
return 0;
}
/**
* Deprecated migrate to hitRatio().
*/
@Deprecated
int getHitRatio();
/**
* Return statistics for the cache.
*
* @param reset if true the statistics are reset.
*/
@Nullable
default ServerCacheStatistics statistics(boolean reset) {
return getStatistics(reset);
return null;
}
/**
* Deprecated migrate to statistics().
*/
@Deprecated
ServerCacheStatistics getStatistics(boolean reset);
/**
* Visit the metrics for the cache.
*/
default void visit(MetricVisitor visitor) {
// do nothing by default
}
/**
* Unwrap the underlying ServerCache.
*/
@SuppressWarnings("unchecked")
default <T> T unwrap(Class<T> cls) {
return (T) this;
}
}
@@ -13,6 +13,7 @@ public class ServerCacheConfig {
private final ServerCacheOptions cacheOptions;
private final CurrentTenantProvider tenantProvider;
private final QueryCacheEntryValidate queryCacheEntryValidate;
private final TenantAwareKey tenantAwareKey;
public ServerCacheConfig(ServerCacheType type, String cacheKey, String shortName, ServerCacheOptions cacheOptions, CurrentTenantProvider tenantProvider, QueryCacheEntryValidate queryCacheEntryValidate) {
this.type = type;
@@ -21,6 +22,14 @@ public class ServerCacheConfig {
this.cacheOptions = cacheOptions;
this.tenantProvider = tenantProvider;
this.queryCacheEntryValidate = queryCacheEntryValidate;
this.tenantAwareKey = (tenantProvider == null) ? null : new TenantAwareKey(tenantProvider);
}
/**
* Return the ServerCache taking into account if multi-tenant is used.
*/
public ServerCache tenantAware(ServerCache cache) {
return tenantAwareKey == null ? cache : new TenantAwareCache(cache, tenantAwareKey);
}
/**
@@ -23,14 +23,6 @@ public interface ServerCacheManager {
*/
boolean localL2Caching();
/**
* Deprecated migrate to localL2Caching().
*/
@Deprecated
default boolean isLocalL2Caching() {
return localL2Caching();
}
/**
* Return all the cache regions.
*/
@@ -46,77 +38,36 @@ public interface ServerCacheManager {
*/
void enabledRegions(String regions);
/**
* Deprecated migrate to enabledRegions().
*/
@Deprecated
default void setEnabledRegions(String regions) {
enabledRegions(regions);
}
/**
* Enable or disable all the cache regions.
*/
void allRegionsEnabled(boolean enabled);
/**
* Deprecated migrate to allRegionsEnabled().
*/
@Deprecated
default void setAllRegionsEnabled(boolean enabled) {
allRegionsEnabled(enabled);
}
/**
* Return the cache region by name. Typically, to enable or disable the region.
*/
ServerCacheRegion region(String name);
@Deprecated
default ServerCacheRegion getRegion(String name) {
return region(name);
}
/**
* Return the cache for mapping natural keys to id values.
*/
ServerCache naturalKeyCache(Class<?> beanType);
@Deprecated
default ServerCache getNaturalKeyCache(Class<?> beanType) {
return naturalKeyCache(beanType);
}
/**
* Return the cache for beans of a particular type.
*/
ServerCache beanCache(Class<?> beanType);
@Deprecated
default ServerCache getBeanCache(Class<?> beanType) {
return beanCache(beanType);
}
/**
* Return the cache for associated many properties of a bean type.
*/
ServerCache collectionIdsCache(Class<?> beanType, String propertyName);
@Deprecated
default ServerCache getCollectionIdsCache(Class<?> beanType, String propertyName) {
return collectionIdsCache(beanType, propertyName);
}
/**
* Return the cache for query results of a particular type of bean.
*/
ServerCache queryCache(Class<?> beanType);
@Deprecated
default ServerCache getQueryCache(Class<?> beanType) {
return queryCache(beanType);
}
/**
* This clears both the bean and query cache for a given type.
*/
@@ -10,14 +10,6 @@ public interface ServerCacheRegion {
*/
String name();
/**
* Deprecated migrate to name().
*/
@Deprecated
default String getName() {
return name();
}
/**
* Return true if the cache region is enabled.
*/
@@ -0,0 +1,104 @@
package io.ebean.cache;
import io.ebean.meta.MetricVisitor;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* A ServerCache proxy that is tenant aware.
*/
public final class TenantAwareCache implements ServerCache {
private final ServerCache delegate;
private final TenantAwareKey tenantAwareKey;
/**
* Create given the TenantAwareKey and delegate cache to proxy to.
*
* @param delegate The cache to proxy to
* @param tenantAwareKey Provides tenant aware keys to use in the cache
*/
public TenantAwareCache(ServerCache delegate, TenantAwareKey tenantAwareKey) {
this.delegate = delegate;
this.tenantAwareKey = tenantAwareKey;
}
/**
* Return the underlying ServerCache that is being delegated to.
*/
@Override
public <T> T unwrap(Class<T> cls) {
return (T)delegate;
}
@Override
public void visit(MetricVisitor visitor) {
delegate.visit(visitor);
}
private Object key(Object key) {
return tenantAwareKey.key(key);
}
@Override
public Object get(Object id) {
return delegate.get(key(id));
}
@Override
public void put(Object id, Object value) {
delegate.put(key(id), value);
}
@Override
public void remove(Object id) {
delegate.remove(key(id));
}
@Override
public void clear() {
delegate.clear();
}
@Override
public int size() {
return delegate.size();
}
@Override
public int hitRatio() {
return delegate.hitRatio();
}
@Override
public ServerCacheStatistics statistics(boolean reset) {
return delegate.statistics(reset);
}
@Override
public Map<Object, Object> getAll(Set<Object> keys) {
Map<Object, Object> keyMapping = new HashMap<>(keys.size());
keys.forEach(k -> keyMapping.put(key(k), k));
Map<Object, Object> tmp = delegate.getAll(keyMapping.keySet());
Map<Object, Object> ret = new HashMap<>(keys.size());
// unwrap tenant info here
tmp.forEach((k,v)-> ret.put(((TenantAwareKey.CacheKey) k).key, v));
return ret;
}
@Override
public void putAll(Map<Object, Object> keyValues) {
Map<Object, Object> tmp = new HashMap<>();
keyValues.forEach((k, v) -> tmp.put(key(k), v));
delegate.putAll(tmp);
}
@Override
public void removeAll(Set<Object> keys) {
delegate.removeAll(keys.stream().map(this::key).collect(Collectors.toSet()));
}
}
@@ -1,9 +1,6 @@
package io.ebean.common;
import io.ebean.bean.BeanCollection;
import io.ebean.bean.BeanCollectionAdd;
import io.ebean.bean.BeanCollectionLoader;
import io.ebean.bean.EntityBean;
import io.ebean.bean.*;
import java.io.Serializable;
import java.util.ArrayList;
@@ -47,6 +44,11 @@ public final class BeanList<E> extends AbstractBeanCollection<E> implements List
super(loader, ownerBean, propertyName);
}
@Override
public void toString(ToStringBuilder builder) {
builder.addCollection(list);
}
@Override
public void reset(EntityBean ownerBean, String propertyName) {
this.ownerBean = ownerBean;
@@ -191,18 +193,11 @@ public final class BeanList<E> extends AbstractBeanCollection<E> implements List
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append("BeanList ");
if (isReadOnly()) {
sb.append("readOnly ");
}
if (list == null) {
sb.append("deferred ");
return "BeanList<deferred>";
} else {
sb.append("size[").append(list.size()).append("] ");
sb.append("list").append(list);
return list.toString();
}
return sb.toString();
}
/**
@@ -3,6 +3,7 @@ package io.ebean.common;
import io.ebean.bean.BeanCollection;
import io.ebean.bean.BeanCollectionLoader;
import io.ebean.bean.EntityBean;
import io.ebean.bean.ToStringBuilder;
import java.util.Collection;
import java.util.Collections;
@@ -40,6 +41,19 @@ public final class BeanMap<K, E> extends AbstractBeanCollection<E> implements Ma
super(ebeanServer, ownerBean, propertyName);
}
@Override
public void toString(ToStringBuilder builder) {
if (map == null || map.isEmpty()) {
builder.addRaw("{}");
} else {
builder.addRaw("{");
for (Entry<K, E> entry : map.entrySet()) {
builder.add(String.valueOf(entry.getKey()), entry.getValue());
}
builder.addRaw("}");
}
}
@Override
public void reset(EntityBean ownerBean, String propertyName) {
this.ownerBean = ownerBean;
@@ -183,27 +197,20 @@ public final class BeanMap<K, E> extends AbstractBeanCollection<E> implements Ma
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append("BeanMap ");
if (isReadOnly()) {
sb.append("readOnly ");
}
if (map == null) {
sb.append("deferred ");
return "BeanMap<deferred>";
} else {
sb.append("size[").append(map.size()).append("]");
sb.append(" map").append(map);
return map.toString();
}
return sb.toString();
}
/**
* Equal if obj is a Map and equal in a Map sense.
* Equal if object is a Map and equal in a Map sense.
*/
@Override
public boolean equals(Object obj) {
public boolean equals(Object object) {
init();
return map.equals(obj);
return map.equals(object);
}
@Override
@@ -1,9 +1,6 @@
package io.ebean.common;
import io.ebean.bean.BeanCollection;
import io.ebean.bean.BeanCollectionAdd;
import io.ebean.bean.BeanCollectionLoader;
import io.ebean.bean.EntityBean;
import io.ebean.bean.*;
import java.io.Serializable;
import java.util.Collection;
@@ -41,6 +38,11 @@ public final class BeanSet<E> extends AbstractBeanCollection<E> implements Set<E
super(loader, ownerBean, propertyName);
}
@Override
public void toString(ToStringBuilder builder) {
builder.addCollection(set);
}
@Override
public void reset(EntityBean ownerBean, String propertyName) {
this.ownerBean = ownerBean;
@@ -169,18 +171,11 @@ public final class BeanSet<E> extends AbstractBeanCollection<E> implements Set<E
@Override
public String toString() {
StringBuilder sb = new StringBuilder(50);
sb.append("BeanSet ");
if (isReadOnly()) {
sb.append("readOnly ");
}
if (set == null) {
sb.append("deferred ");
return "BeanSet<deferred>";
} else {
sb.append("size[").append(set.size()).append("]");
sb.append(" set").append(set);
return set.toString();
}
return sb.toString();
}
/**
@@ -184,17 +184,4 @@ public class DbConstraintNaming {
return normalise.normaliseColumn(tableName);
}
/**
* Lower case the table name checking for quoted identifiers.
*/
public String lowerTableName(String tableName) {
return normalise.lowerTableName(tableName);
}
/**
* Lower case the column name checking for quoted identifiers.
*/
public String lowerColumnName(String name) {
return normalise.lowerColumnName(name);
}
}
@@ -55,53 +55,19 @@ public class DbConstraintNormalise {
return value.replace("(","").replace(")","");
}
/**
* Lower case the table name checking for quoted identifiers.
*/
public String lowerTableName(String tableName) {
if (lowerCaseTables && notQuoted(tableName)) {
return tableName.toLowerCase();
}
return tableName;
}
/**
* Lower case the column name checking for quoted identifiers.
*/
public String lowerColumnName(String name) {
if (lowerCaseColumns && notQuoted(name)) {
return name.toLowerCase();
}
return name;
}
/**
* Trim off the platform quoted identifier quotes like [ ' and ".
*/
public boolean notQuoted(String tableName) {
public String trimQuotes(String identifier) {
// remove quoted identifier characters
for (String quotedIdentifier : quotedIdentifiers) {
if (tableName.contains(quotedIdentifier)) {
return false;
}
}
return true;
}
/**
* Trim off the platform quoted identifier quotes like [ ' and ".
*/
public String trimQuotes(String tableName) {
if (tableName == null) {
if (identifier == null) {
return "";
}
// remove quoted identifier characters
for (String quotedIdentifier : quotedIdentifiers) {
tableName = tableName.replace(quotedIdentifier, "");
identifier = identifier.replace(quotedIdentifier, "");
}
return tableName;
return identifier;
}
@@ -25,14 +25,6 @@ public class QueryPlanCapture {
return database;
}
/**
* Deprecated migrate to database().
*/
@Deprecated
public Database getDatabase() {
return database;
}
/**
* Return the captured query plans.
*/
@@ -40,11 +32,4 @@ public class QueryPlanCapture {
return plans;
}
/**
* Deprecated migrate to plans().
*/
@Deprecated
public List<MetaQueryPlan> getPlans() {
return plans;
}
}
@@ -165,7 +165,7 @@ public class DatabasePlatform {
* want to use quoted identifiers for. The backticks get converted to the
* appropriate characters in convertQuotedIdentifiers
*/
private static final char BACK_TICK = '`';
private static final char[] QUOTED_IDENTIFIERS = new char[] { '"', '\'', '[', ']', '`' };
/**
* The non-escaped like clause (to stop slash being escaped on some platforms).
@@ -662,8 +662,8 @@ public class DatabasePlatform {
public String convertQuotedIdentifiers(String dbName) {
// Ignore null values e.g. schema name or catalog
if (dbName != null && !dbName.isEmpty()) {
if (dbName.charAt(0) == BACK_TICK) {
if (dbName.charAt(dbName.length() - 1) == BACK_TICK) {
if (isQuote(dbName.charAt(0))) {
if (isQuote(dbName.charAt(dbName.length() - 1))) {
return openQuote + dbName.substring(1, dbName.length() - 1) + closeQuote;
} else {
log.error("Missing backquote on [" + dbName + "]");
@@ -675,6 +675,15 @@ public class DatabasePlatform {
return dbName;
}
private boolean isQuote(char ch) {
for (char identifer : QUOTED_IDENTIFIERS) {
if (identifer == ch) {
return true;
}
}
return false;
}
/**
* Remove quoted identifier quotes from the table or column name if present.
*/
@@ -0,0 +1,46 @@
package io.ebean.config.dbplatform;
import io.ebean.annotation.Platform;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
/**
* Provides DatabasePlatform matching by name, JDBC product name and specific platform enum.
* <p>
* DatabasePlatformProvider implementations are service loaded and custom implementations
* can be added and used via the service loading mechanism.
*/
public interface DatabasePlatformProvider {
/**
* Match on the lower case platform name.
*/
boolean match(String name);
/**
* Create the platform based on the lower case platform name.
*/
DatabasePlatform create(String name);
/**
* Match on the lower case JDBC metadata product name.
*/
boolean matchByProductName(String productName);
/**
* Create the platform based on the lower case JDBC metadata product name.
*/
DatabasePlatform create(int majorVersion, int minorVersion, DatabaseMetaData meta, Connection connection);
/**
* Match on the specific platform.
*/
boolean matchPlatform(Platform platform);
/**
* Create the specific platform.
*/
DatabasePlatform create(Platform platform);
}
@@ -1,4 +0,0 @@
/**
* Clickhouse DB specific support.
*/
package io.ebean.config.dbplatform.clickhouse;
@@ -1,4 +0,0 @@
/**
* Cockroach DB specific support.
*/
package io.ebean.config.dbplatform.cockroach;
@@ -1,4 +0,0 @@
/**
* DB2 specific support.
*/
package io.ebean.config.dbplatform.db2;
@@ -1,4 +0,0 @@
/**
* H2 specific support.
*/
package io.ebean.config.dbplatform.h2;
@@ -1,4 +0,0 @@
/**
* SAP HANA specific support.
*/
package io.ebean.config.dbplatform.hana;
@@ -1,4 +0,0 @@
/**
* Hsqldb specific support.
*/
package io.ebean.config.dbplatform.hsqldb;
@@ -1,4 +0,0 @@
/**
* MySql specific support.
*/
package io.ebean.config.dbplatform.mysql;
@@ -1,4 +0,0 @@
/**
* NuoDB specific support.
*/
package io.ebean.config.dbplatform.nuodb;
@@ -1,4 +0,0 @@
/**
* Oracle specific support.
*/
package io.ebean.config.dbplatform.oracle;
@@ -1,4 +0,0 @@
/**
* Postgres specific support.
*/
package io.ebean.config.dbplatform.postgres;
@@ -1,4 +0,0 @@
/**
* SqlAnywhere specific support.
*/
package io.ebean.config.dbplatform.sqlanywhere;
@@ -1,4 +0,0 @@
/**
* Sqlite specific support.
*/
package io.ebean.config.dbplatform.sqlite;
@@ -1,4 +0,0 @@
/**
* SqlServer specific support.
*/
package io.ebean.config.dbplatform.sqlserver;
@@ -1,12 +0,0 @@
package io.ebean.config.dbplatform.yugabyte;
import io.ebean.annotation.Platform;
import io.ebean.config.dbplatform.postgres.PostgresPlatform;
public class YugabytePlaform extends PostgresPlatform {
public YugabytePlaform() {
super();
this.platform = Platform.YUGABYTE;
}
}
@@ -10,11 +10,4 @@ public interface MetaCountMetric extends MetaMetric {
*/
long count();
/**
* Migrate to count()
*/
@Deprecated
default long getCount() {
return count();
}
}
@@ -10,11 +10,4 @@ public interface MetaMetric {
*/
String name();
/**
* Migrate to name().
*/
@Deprecated
default String getName() {
return name();
}
}
@@ -10,40 +10,16 @@ public interface MetaQueryMetric extends MetaTimedMetric {
*/
Class<?> type();
/**
* Migrate to type().
*/
@Deprecated
default Class<?> getType() {
return type();
}
/**
* The label for the query (can be null).
*/
String label();
/**
* Migrate to label().
*/
@Deprecated
default String getLabel() {
return label();
}
/**
* The actual SQL of the query.
*/
String sql();
/**
* Migrate to sql().
*/
@Deprecated
default String getSql() {
return sql();
}
/**
* Return the hash of the plan.
*/
@@ -11,67 +11,26 @@ public interface MetaTimedMetric extends MetaMetric {
*/
String location();
/**
* Migrate to location()
*/
@Deprecated
default String getLocation() {
return location();
}
/**
* Return the total count.
*/
long count();
/**
* Migrate to count()
*/
@Deprecated
default long getCount() {
return count();
}
/**
* Return the total execution time in micros.
*/
long total();
/**
* Migrate to total()
*/
@Deprecated
default long getTotal() {
return total();
}
/**
* Return the max execution time in micros.
*/
long max();
/**
* Migrate to max()
*/
@Deprecated
default long getMax() {
return max();
}
/**
* Return the mean execution time in micros.
*/
long mean();
/**
* Migrate to mean()
*/
@Deprecated
default long getMean() {
return mean();
}
/**
* Return true if this is the first metrics collection for this query.
* <p>
@@ -12,37 +12,14 @@ public interface ServerMetrics {
*/
List<MetaTimedMetric> timedMetrics();
/**
* Migrate to timedMetrics().
*/
@Deprecated
default List<MetaTimedMetric> getTimedMetrics() {
return timedMetrics();
}
/**
* Return the query metrics.
*/
List<MetaQueryMetric> queryMetrics();
/**
* Migrate to queryMetrics().
*/
@Deprecated
default List<MetaQueryMetric> getQueryMetrics() {
return queryMetrics();
}
/**
* Return the Counter metrics.
*/
List<MetaCountMetric> countMetrics();
/**
* Migrate to countMetrics().
*/
@Deprecated
default List<MetaCountMetric> getCountMetrics() {
return countMetrics();
}
}
@@ -19,6 +19,7 @@ public interface ServerMetricsAsJson {
/**
* Set the sort property - see SortMetric
*
* @see SortMetric
*/
ServerMetricsAsJson withSort(Comparator<MetaTimedMetric> sortBy);
@@ -35,9 +36,9 @@ public interface ServerMetricsAsJson {
*/
ServerMetricsAsJson withHeader(boolean withHeader);
/**
* Collect and write metrics as JSON to the given buffer.
*/
/**
* Collect and write metrics as JSON to the given buffer.
*/
void write(Appendable buffer);
/**
@@ -5,7 +5,7 @@ import java.util.Comparator;
/**
* Comparator for timed metrics sorted by name and then count.
*/
public class SortMetric {
public final class SortMetric {
public static final Comparator<MetaCountMetric> COUNT_NAME = new CountName();
@@ -6,7 +6,7 @@ import java.util.ServiceLoader;
/**
* Lookup MetricFactory service.
*/
class MetricServiceProvider {
final class MetricServiceProvider {
private static final MetricFactory metricFactory = init();

Some files were not shown because too many files have changed in this diff Show More