Apache Cayenne Release Notes
============================

For the latest information visit project web site:
http://cayenne.apache.org/

To browse individual bug reports check out project issue tracker:
https://issues.apache.org/jira/browse/CAY

----------------------------------
Release: 4.1.1
Date: December 17, 2021
----------------------------------

Changes/New Features:

CAY-2725 Upgrade Gradle to 7.3

Bug Fixes:

CAY-2670 CommitLog does not include FKs for deleted objects with one-way relationships
CAY-2676 Degradation: Custom class generation templates are not working anymore
CAY-2677 Modeler: Custom Class Generation Templates for Embeddables and DataMaps
CAY-2678 Inheritance warnings caused by unnecessary MappingCache creations during initialization
CAY-2679 Unstable ordering of relationships in the .map.xml file
CAY-2681 Modeler: All selected checkboxes cause project to become dirty at initialization
CAY-2690 dbimport skips length changes for BINARY and VARBINARY columns
CAY-2691 MySQL driver 8.0.x stores LocalDateTime differently than 5.1.x
CAY-2697 Read-only cgen template creates mutator methods for to-many relationships
CAY-2698 EventSubject.getSubject() is not thread safe
CAY-2702 Modeler: Callbacks table has too small default width
CAY-2721 Platform builds of CayenneModeler don't work with Java 17
CAY-2724 Duplicating relationship after editing its name

----------------------------------
Release: 4.1
Date: July 14, 2020
----------------------------------

Bug Fixes:

CAY-2642 EhCache memory leak due to misconfiguration
CAY-2643 ObjectSelect.prefetch(name, semantics) method creates a phantom node
CAY-2646 Wrong target path selection logic in cgen config
CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 failure
CAY-2653 No methods for queries with qualifier parameters generated
CAY-2654 Exception in dbimport when relationships should be imported, but no explicit configuration exists

----------------------------------
Release: 4.1.RC2
Date: October 25, 2019
----------------------------------

Bug Fixes:

CAY-2627 Modeler: ObjRelationship creation dialog ignores delete rule
CAY-2628 dbimport: unable to add several relationships to existing entity
CAY-2631 Can no longer use "byte[]" as root of scalar SQLSelect
CAY-2632 Modeler: issue saving cgen path for maven project
CAY-2633 Modeler: attribute sorting logic in cgen can corrupt model
CAY-2634 Minor inconsistencies in Modeler "DB Import"
CAY-2635 Lambda expressions break ROP serialization

----------------------------------
Release: 4.1.RC1
Date: October 3, 2019
----------------------------------

Changes/New Features:
CAY-2592 Modeler: make all datamaps selected in global cgen tab
CAY-2593 Add tableTypes field to dbImport config in dataMap
CAY-2611 Exclude system catalogs and schemas when run dbImport without config

Bug Fixes:

CAY-2417 Modeler: wrong title in attribute context menu
CAY-2553 Wrong disjoint prefetch query qualifier
CAY-2565 Can't use new generated PK properties with dot() operator
CAY-2573 DI field injection is triggered when creating sql Driver
CAY-2580 Cgen: Can't use custom templates for client mode
CAY-2582 Double insert of manyToMany relationship mapped to Set
CAY-2584 Crypto: can't use ColumnSelect with encrypted columns
CAY-2586 Char can't be materialized to EnumType in some cases
CAY-2591 Modeler: project becomes dirty after click on dbImport or cgen tab
CAY-2594 DbImport: AutoAdapter resolving inside an import operation hangs up the op on Hana DB
CAY-2595 ObjAttributes are not sorted in alphabetical ordering on save
CAY-2596 DbImport xml config changes after dbImport plugin task execution
CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog support
CAY-2601 Modeler DbImport: result dialog issues
CAY-2603 NPE reloading project in the model
CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException
CAY-2606 Can't resolve obj path with embeddable component
CAY-2608 Modeler: NPE when reverse engineering with an auto-adapter DataSource
CAY-2609 Modeler: can't close dbImport result dialog window
CAY-2614 Modeler: Connection test result window shown under other windows
CAY-2616 Modeler: Wrong handling of path with spaces
CAY-2618 Unstable property ordering in generated classes
CAY-2619 "to-dep PK" related dbimport delta confuses the Modeler
CAY-2624 SelectQuery "having" qualifier is not considered when calculating cache key

----------------------------------
Release: 4.1.B2
Date: May 4, 2019
----------------------------------

Changes:

CAY-2570 Use MySQL adapter for latest versions of MariaDB

Bug Fixes:

CAY-2506 Java class generated for Embeddable object is not serializable
CAY-2538 Modeler: dbImport configuration unclear behavior
CAY-2550 Modeler: ObjAttribute inspector modifies wrong columns in attribute table
CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
CAY-2561 Modeler: cgen type combobox doesn't set templates
CAY-2564 No import for Property after generation classes with pk properties
CAY-2566 Flush action generates update for PK attribute in case of toDepPK relationship
CAY-2568 Class Generation: Superclass Package setting persistence
CAY-2569 Custom 'Naming Strategy' in Cayenne Modeler
CAY-2572 Queries are not sorted by name in data map XML

----------------------------------
Release: 4.1.B1
Date: March 7, 2019
----------------------------------
Changes/New Features:

CAY-2446 Run Disjoint By Id queries outside of synchronized block
CAY-2447 Crypto support for LocalDateTime
CAY-2471 Support multiple XML project versions
CAY-2473 Modeler: cleanup attributes and relationship editors
CAY-2474 Modeler: swap buttons in dialog toolbar
CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table
CAY-2478 cgen: Generate properties for PK
CAY-2481 Support for Object[] as return type in SQLTemplate and SQLExec
CAY-2485 Compact Slf4j Logger
CAY-2487 Removed usage of CayenneException.
CAY-2489 Add validation to the case of not to PK relationships
CAY-2491 Remaster Db Import View
CAY-2493 Save cgen configuration with datamap XML
CAY-2494 Rename dbImport tag from 'config' to 'dbImport'
CAY-2499 Support for COUNT(DISTINCT(column)) function aggregate
CAY-2514 Set SERVER_CONTEXTS_SYNC_PROPERTY default value to false
CAY-2517 EventManager: optimization of adding listeners

Bug Fixes:

CAY-2320 Modeler: Limit input into numeric fields to 10 digits
CAY-2444 Change URI from http:// to https:// in xsi:schemaLocation
CAY-2445 Oracle: Problem with ExpressionFactory.notInExp()
CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu
CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity
CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship
CAY-2454 Modeler: Unable to read validation message if it's truncated
CAY-2455 Modeler: The width of the pop-up window is very large
CAY-2459 Modeler: DataMap paste function is not working
CAY-2462 Modeler: Clipboard holds old content after application was reloaded
CAY-2463 Modeler: DB Schema generation doesn't work
CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
CAY-2470 Can't bind SQLExec parameters in a loop
CAY-2472 Clear cached replacement query on mutation in all indirect queries
CAY-2476 Modeller: Fixed wrong behaviour of code generation dialog
CAY-2480 cayenne:cdbgen and cayenne:cgen have identical text in cayenne-maven-plugin
CAY-2484 maven plugins missing in 4.1.M2 release
CAY-2490 Added dbEntities from other datamaps in dbRelationship dialog.
CAY-2496 Fixed wrong table behavior: focus color, cleanup DBAttribute Path cell on select.
CAY-2497 Modeler: SQL Scripts tab isn't scrollable
CAY-2501 Modeler: DbImport ui not loading columns for MySQL connector v8.0
CAY-2502 DataMap in DataNode tree view disappears after dbImport
CAY-2504 Broken detection logic of NoopEventBridge in DataRowStoreFactory
CAY-2505 EventBridge providers should be bound without scope
CAY-2521 Expression without Object ID disjoint issue
CAY-2530 DB Import and Class Generation from Project is performed for removed datamaps
CAY-2531 Importing same schema after Import Revert clears all entities in datamap
CAY-2533 Modeler: Exception on validating ObjRelationship without db path
CAY-2535 Imposible to import stored proceedure apart from db tables
CAY-2537 Generate DB Schema: Schema Generation Complete popup window is hidden
CAY-2544 Possible name clash of ivar and property name in generated class
CAY-2547 CayenneDataObject serialization issue

----------------------------------
Release: 4.1.M2
Date: July 11, 2018
----------------------------------
Changes/New Features:

CAY-1683 Injectable PkGenerator
CAY-2304 Custom ClassLoader for Maven and Gradle plugins that use project dependencies
CAY-2334 cgen: option to force run from maven/gradle
CAY-2337 Save reverse engineering configuration with datamap XML
CAY-2372 Extract new modules from cayenne-server
CAY-2377 Cleanup deprecated code.
CAY-2391 cdbimport: add option to skip user-defined relationships
CAY-2393 Add sqlserver-docker profile to automate tests on SQLServer
CAY-2394 Upgrade to Apache Velocity 2.0
CAY-2395 cdbimport: add option to create project file
CAY-2396 Upgrade maven-assembly-plugin to 3.1.0
CAY-2398 Deprecate cayenne-joda
CAY-2400 Deprecate cayenne-dbcp2
CAY-2403 Extract eventbridges to top level
CAY-2404 Move itests to maven-plugins
CAY-2406 Add prefetch-related API to SQLSelect
CAY-2407 Modeler: add prefetch support for the SQLTemplate query
CAY-2410 Add prefetch type support for SQLTemplate query and SelectQuery
CAY-2414 Modeler: new icon design
CAY-2415 Transaction isolation and propagation support
CAY-2416 Change TreeMap for HashMap to store data in Cayenne model classes
CAY-2422 Modeler: Open driver setup window on driver load error
CAY-2438 Split DataChannel filter into two independent filters
CAY-2440 cdbimport: allow cross-schema relationships
CAY-2443 Make SqlTemplate and SqlExec possible to return generated keys

Bug Fixes:

CAY-2282 Various Update Issues With Vertical Inheritance
CAY-2370 ValueObjectType for byte[] fails lookup
CAY-2380 ReferenceMap should not store or return null values
CAY-2381 cgen: meaningful PK with boxed type ends up with primitive type in generated source
CAY-2382 Lack of synchronization in DataContext serialization
CAY-2387 Can't select byte[] property with ColumnSelect
CAY-2388 Modeler: Visualization issues with undo/redo actions for attributes and relationships
CAY-2389 DbEntity qualifier with DbPath expression translates into wrong SQL
CAY-2392 Modeler: Unable to remove DataNode
CAY-2397 Modeler: Unable to set enum:value as Entity qualifier
CAY-2401 Modeler: NPE in ObjEntity sync action
CAY-2405 Broken prefetch of entity with inheritance and attribute with custom java type
CAY-2408 Cayenne JDK 10 compatibility
CAY-2411 Wrong resolution of ExtendedType with ValueObjectType for inherited class
CAY-2418 Modeler: unable to edit entity selected via Search
CAY-2419 Modeler: Not changing highlight on selecting search results within one entity
CAY-2420 Modeler: search is not performed for Stored Procedures
CAY-2425 Modeler: Migrate DB Direction field is locked if no option was selected in dropdown list
CAY-2427 Modeler: Undo throws exception
CAY-2429 Generate classes: Invalid template type: EMBEDDABLE_SINGLE_CLASS
CAY-2430 Modeler: Redo throws NPE
CAY-2435 cdbimport: procedure parameters are not imported
CAY-2436 NPE in CayenneRuntimeException constructor
CAY-2439 Modeler: Error deleting dbEntity when show only dbEntities filter is set
CAY-2442 Broken EventBridge providers implementations

----------------------------------
Release: 4.1.M1
Date: October 14, 2017
----------------------------------
Changes/New Features:

CAY-2152 Redesign project file upgrade system
CAY-2329 Update project dependencies
CAY-2330 Field based data objects
CAY-2335 New XML loading/saving mechanics with support of plugable handlers
CAY-2336 Support for comments in Modeler
CAY-2339 Compatibility module to support old versions of projects at runtime
CAY-2344 Modeler: Save ER-Graph and class diagram
CAY-2345 Own template renderer as a replacement for Velocity
CAY-2346 Field-based data object with Map-based storage fallback
CAY-2351 Remove commons-collections usage completely

Bug Fixes:

CAY-2312 Modeler: Undo does not work for checkboxes
CAY-2318 Modeler: Query. Exception after Undo clicking
CAY-2319 Modeler: Embeddable > Attributes. Undo does not cancel pasted objects
CAY-2321 cdbimport: Reverse relationship is not created after adding and rev engineeering new db table
CAY-2323 Modeler: Graph. No warning while saving the image with existing name
CAY-2331 cgen: broken templates for data map
CAY-2347 cdbimport: can't get all relationships on the first pass
CAY-2349 Cache issue: 'SelectQuery' with prefetches loses relationships
CAY-2350 Expression: NotIn with empty collection returns empty result
CAY-2353 Broken paginated column select with only one entity in the result
CAY-2354 DbGenerator.runGenerator must commit its connection
CAY-2356 EJBQL: Incorrect COUNT() on outer joined table
CAY-2357 Generic select queries silently convert result to nulls if no PK column found
CAY-2358 NPE when callbacks invoked on null objects
CAY-2359 EJBQL: db path in not supported in ORDER BY
CAY-2361 PostgreSQL DbGenerator issues
CAY-2362 ColumnSelect: unable to use Property without type
CAY-2363 ColumnSelect: unable to use from nested context
CAY-2364 Wrong logging in SQLTemplate
CAY-2365 SQLExec query tries to convert (unexpected) result set into objects
CAY-2366 Incorrect EJBQL COUNT translation
CAY-2367 ClassCastException reading object with an attribute of type 'char'
CAY-2368 ColumnSelect: Property.self() translates into wrong SQL code

----------------------------------
Release: 4.0.B1
Date: June 12, 2017
----------------------------------
Changes/New Features:

CAY-1873 Move DataDomain cache configuration from the Modeler and into DI
CAY-1891 Modeler: Add To-Many Warning
CAY-1892 Modeler: Add Relationship Data Type Warning
CAY-2057 Modeler: Clean up OS X version
CAY-2109 cayenne-crypto: add value authentication (HMAC)
CAY-2210 Query cache: incorrect cache key for queries with custom value objects
CAY-2255 ObjectSelect improvement: columns as full entities
CAY-2258 DI: type-safe binding of List and Map
CAY-2259 QueryCache: support for referencing type-safe caches
CAY-2261 Replace NamedQuery with MappedXYZ in *datamap.vm
CAY-2262 Module auto-loading
CAY-2266 Move EventBridge implementations into autoloadable modules
CAY-2267 Contribute lifecycle events listeners via DI
CAY-2268 DI: Refactor ListBuilder API ambiguities for before() / after() bindings
CAY-2269 Add support for date/time components extraction in expression functions
CAY-2270 Update function support in expression parser
CAY-2271 ColumnSelect: support for prefetch and limit
CAY-2272 ColumnSelect: methods to manually control DISTINCT clause
CAY-2274 Modeler: Validate case when dependent PK is marked as “generated”
CAY-2277 Create ClientRuntime with ClientRuntimeBuilder just like ServerRuntime
CAY-2278 Extract cayenne-postcommit module from cayenne-lifecycle
CAY-2280 Switch from commons-logging to slf4j
CAY-2295 "Sync ObjEntity with DbEntity" and "View related DbEntity" buttons aren't disabled, if DbEntity doesn't have ObjEntity
CAY-2296 cayenne-crypto: Get java type for DbAttribute bound to ObjAttributes with the same type
CAY-2300 Modeler: New icons and design improvements
CAY-2302 Rename postcommit module and its content to commitlog

Bug Fixes:

CAY-2021 cdbimport: detect when same FK constraint is defined twice
CAY-2077 Bug in CayenneRuntimeException using wrong specified string in Formatter
CAY-2094 SelectById query doesn't work from ROP client
CAY-2161 'Not for Client Use' option is ignored at Class Generation
CAY-2171 Modeler: Undo db Entity Sync throws error
CAY-2208 SQLTemplate: LEFT JOIN to a subset of a table returns nulls for entries that don't have a match in the subset
CAY-2230 Error using connection to postgresql with db schema in DB URL
CAY-2240 Modeler: issue with cursor rendering for EJBQL query
CAY-2243 ObjectContext.getGraphManager().unregisterObject() inconsistencies
CAY-2250 Remove: Incorrect text in Confirm Remove message when cursor is set on attribute row
CAY-2256 Cannot Save/Insert an Object With null Flattened (complex) toOne Relationship (see also CAY-2146)
CAY-2265 ServerRuntime.builder() fails to set default runtime name when a the project file doesn't follow recognized pattern
CAY-2273 Modeler: default suggested cgen location is rooted in subpackage
CAY-2275 Documentation: tutorial is out of sync with 4.0.M5 version
CAY-2276 PrePersist listener registered as PostPersist in LifecycleCallbackRegistry.addListener(Class<?>, LifecycleListener)
CAY-2279 cdbimport: skip PK comparison for VIEWs
CAY-2281 ObjEntity attribute overrides are never deleted
CAY-2284 Expression likeIgnoreCase can't handle unicode chars in in-memory evaluation
CAY-2286 Filter out inherited ObjEntities from sync with DbEntity
CAY-2326 DI: can't override List/Map elements from another Module

----------------------------------
Release: 4.0.M5
Date: March 6, 2017
----------------------------------
Changes/New Features:

CAY-2139 Upgrade HSQLDB dependency to the most recent version (2.3.4)
CAY-2150 Refactoring: ParameterBinding to contain ExtendedType property
CAY-2163 Property.path() , ExpressionFactory.pathExp()
CAY-2164 Relocate builder bootstrap methods from ServerRuntimeBuilder to ServerRuntime
CAY-2165 Explicit "contribution" API for easier expansion of DI collections and maps
CAY-2166 Auto-loading of Cayenne modules
CAY-2168 Split DbLoader to parts and clean it up
CAY-2169 Split DbMerger to parts and clean it up
CAY-2170 MergeToken sorting is highly unstable
CAY-2172 Cleanup Modeler import and migrate db actions
CAY-2176 Java 7 diamond class generation templates
CAY-2177 Sync auto generated state of PK between model and DB
CAY-2187 Support for the scalar and aggregate SQL functions in ObjectSelect API
CAY-2197 Update sqlite version and enable in-memory default config
CAY-2212 cdbimport cleanup and configuration schema refactoring
CAY-2223 JCacheQueryCache - a query cache provider to plug in JCache implementers
CAY-2225 Extensible CacheInvalidationFilter logic
CAY-2228 Deprecate multiple cache groups in caching and query API
CAY-2231 Support for collections in new functional expressions and old math expressions
CAY-2232 Proper conversion to String for new functional expressions
CAY-2235 Deprecate Query.getDataMap() method

Bug Fixes:

CAY-2032 SelectAction: DistinctResultIterator ignores flattened relationships
CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join conditions
CAY-2174 Change FK attribute name cause ObjAttribute appear after Reverse Engineering
CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
CAY-2183 Newly created DbRelationship is unexpectedly renamed by the Modeler
CAY-2199 Modeler on Windows: The same project is displayed twice in "Recent Projects"
CAY-2207 Modeler: "Java Type" and "DbAttribute Path" are not saved with using TAB to move forward
CAY-2221 In-memory expression evaluation gives different result than select query
CAY-2236 Modeler Migrate DB Schema: unable to Reverse All Operations
CAY-2238 Modeler: Preserve manually set DbRelationship name when syncing with ObjEntity
CAY-2242 Vertical Inheritance: Cannot Insert Record For Implementing Class with Attribute And Relationship

----------------------------------
Release: 4.0.M4
Date: December 13, 2016
----------------------------------
Changes/New Features:

CAY-2051 Applying new Reverse Engineering to the Modeler
CAY-2053 SQLExec fluent query API
CAY-2060 Replace Query objects in DataMap with query descriptors
CAY-2062 MappedSelect and MappedExec fluent query API
CAY-2063 ProcedureCall fluent query API
CAY-2065 Pluggable serialization and connectivity layers for ROP
CAY-2073 Ordering.orderedList methods
CAY-2074 Support for catalogs in stored procedures
CAY-2076 Implement Jetty HTTP/1.1 and HTTP/2 Client support for ROP Client
CAY-2083 Implement Protostuff as serialization service for Cayenne ROP
CAY-2090 Untangle HttpRemoteService from ServiceContext thread local setup
CAY-2100 Add supporting generated keys for PostgreSQL
CAY-2102 EJBQL: db: path not supported in select columns
CAY-2103 cayenne-crypto: support for mapping non-String and non-binary types
CAY-2106 cayenne-crypto: allow DI contribution of type converters inside ValueTransformerFactory
CAY-2107 cayenne-crypto: Lazy initialization of crypto subsystem
CAY-2111 Unbind transaction object from the current thread for iterated queries
CAY-2112 Expose callback for "performInTransaction"
CAY-2113 cdbimport: Reverse-engineering reinstates previously ignored columns
CAY-2114 cdbimport: object layer settings are not respected
CAY-2115 DbLoader - allow loading DataMap without Obj layer
CAY-2116 Split schema synchronization code in a separate module
CAY-2118 cdbimport: drop support for the old style of table filtering
CAY-2129 Modeler: reengineer dialog improvements
CAY-2130 Stripping common name prefixes on reverse engineering
CAY-2132 Adding SybaseSelectTranslator to support TOP/DISTINCT TOP in limited queries
CAY-2133 ObjectNameGenerator refactoring - unifying relationship name generation
CAY-2135 cdbimport: reset DbEntity catalogs / schemas to DataMap defaults
CAY-2136 Allow Ordering.orderedList(…) methods to accept a Collection rather than only a List
CAY-2160 Modeler: new welcome screen
CAY-2222 MySQLAdapter should not create indexes on FK columns

Bug Fixes:

CAY-2016 cdbimport: Rename table with toMany relationship causes migration error
CAY-2064 Issue with BeanAccessor for classes with complex inheritance
CAY-2066 Fixes for inner enums handling in ExtendedTypeMap
CAY-2067 Cayenne 4.0 connection pool is occasionally running out of connections
CAY-2070 Modeler sync function adds extraneous ObjRelationships inside the class hierarchy
CAY-2078 Client code gen bug. Unnecessary DataMap class generation setting datamap gen to false.
CAY-2080 Cayenne doesn't pick up reverse engineering file changes
CAY-2084 ObjectIdQuery - no cache access polymorphism
CAY-2086 SelectById.selectFirst stack overflow
CAY-2087 PostCommitFilter is confused about changes made by Pre* listeners
CAY-2089 HTTP connections aren't always closed in new ROP implementation
CAY-2097 NullPointerException while updating relationships for entities with vertical inheritance
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
CAY-2105 Add missing elements to the reverseEngineering.xsd
CAY-2108 cayenne-di: StackOverflow for decorator that takes Provider of the delegate
CAY-2110 Obfuscated exception when processing iterated results
CAY-2119 ProjectUpgrader test failure (Windows)
CAY-2122 Vertical Inheritance: Cannot Insert Record For Implementing Class with Attribute And Relationship
CAY-2125 SchemaUpdateStrategy doesn't work with multiple DataNodes
CAY-2126 Modeler cannot upgrade project from v7 to v9
CAY-2128 Modeler stored procedures are not imported
CAY-2131 Modeler NullPointerException in reverse engineering when importing different catalogs in one datamap
CAY-2138 NVARCHAR, LONGNVARCHAR and NCLOB types are missing from Firebird types.xml
CAY-2141 Disjoint-by-id prefetch generates repeating ID conditions
CAY-2143 NPE in BaseSchemaUpdateStrategy
CAY-2144 cdbimport always fails for databases which don't support catalogs
CAY-2146 Vertical inheritance: record still inserted into parent db table when child validation fails
CAY-2148 Failure upgrading from 3.1 to M4
CAY-2150 UI bug: PK generation custom sequence is getting reset
CAY-2151 Migrate Database Schema: issue when no db is specified
CAY-2153 Modeler Exception in save action after reverse engineering some complex DB schema
CAY-2154 Migrate db: queries order
CAY-2226 PK generation for Frontbase: PK cache size must be ignored

----------------------------------
Release: 4.0.M3
Date: February 12, 2016
----------------------------------
Changes/New Features:

CAY-1626 Add JodaTime DateTime support
CAY-1902 Implement resolving Db paths for DataObjects
CAY-1991 More control over generated String property names
CAY-1992 Allow to exclude DataMap java class from Modeler class generation
CAY-1995 Add support for iterators to Select
CAY-2001 Saving a display state of Project
CAY-2004 EJBQL: Support for ordering on aggregate expressions
CAY-2007 Refactoring SelectTranslator for better extensibility
CAY-2008 Connection pool refactoring and validation query support in Cayenne DataSource
CAY-2009 Non-blocking connection pool
CAY-2010 DataSourceBuilder to help users create pooling and non-pooling DataSources
CAY-2011 Support for Java 8 date and time types
CAY-2012 ObjectSelect, SelectById: eliminating methods that reset query state
CAY-2013 In-memory evaluation of DB expressions - non-id attributes
CAY-2023 Decouple the use of ResourceLocator
CAY-2025 Support for DBCP2
CAY-2026 Java 7
CAY-2027 Support for Expression outer join syntax in EJBQL
CAY-2028 Wrap DataChannelFilter calls in the main transaction
CAY-2029 Allow out-of-order insertion into DI lists
CAY-2030 Capturing a stream of commit changes
CAY-2035 Autobind items added to collections (Cayenne DI)
CAY-2042 Remove an arbitrary limitation on 1000 runtime DbRelationships
CAY-2043 ServerRuntimeBuilder: use DataDomain name for the default DataNode
CAY-2044 Collection setter for to-many relationships
CAY-2045 Add autosuggestion fields to choose attributes and relationships

Bug Fixes:

CAY-1977 Cleanup Modeler reverse engineering functionality
CAY-1987 Widen types before performing in-memory evaluation of qualifiers using j.l.Number subclasses
CAY-1990 Incorrect display of the raw SQL query in Modeler
CAY-1993 Reverse Engineering does not work with PostgreSQL database
CAY-1994 Modeler Migration Tool Shows No Changes
CAY-1997 Difference in NULL handling inside the path between PropertyUtils and DataObject.readNestedProperty
CAY-1998 Speeding up PropertyUtils
CAY-1999 Unneeded Property import for superclasses with no properties
CAY-2003 cdbimport doesn't work properly with several includeTable tags
CAY-2015 Joint prefetches combined with DisjointById prefetches return null incorrectly
CAY-2020 typo: correction to upper alpha range in Rot13PasswordEncoder
CAY-2041 "cayenne.jdbc.max_connections" and "cayenne.jdbc.min_connections" command line options are ignored
CAY-2047 Relationship mapping with target inheritance
CAY-2049 Changing the Relationship name in ObjRelationship Inspector has no effect

----------------------------------
Release: 4.0.M2
Date: March 18, 2015
----------------------------------
Changes/New Features:

CAY-1267 Some changes to LogDialog
CAY-1826 Merge Entity Attributes and Relationships tabs together with one toolbar.
CAY-1839 Allow to link DataMaps to DataNodes from DataNode editor.
CAY-1841 Filters for Left-hand project navigator
CAY-1842 Remove Listeners support from the Modeler
CAY-1843 DataMap v7: Stop saving listeners in DataMap, add upgrade handler
CAY-1845 Upgrade javadoc plugin to 2.9.1
CAY-1846 Reworking of callback mapping
CAY-1847 Make ConverterFactory extensible
CAY-1848 New method: ObjectContext.selectOne(Select query)
CAY-1851 Generate default serialVersionUID for generated java classes to avoid eclipse warnings
CAY-1852 Straighten thread model and synchronization in the Modeler
CAY-1855 Iterated and paginated queries must print result counts
CAY-1856 Expression.expWithParameters does not work when parameters are placed in the inline collection
CAY-1860 In-memory matching of DataObjects against ObjectId or int
CAY-1861 Remove runtime relationships
CAY-1870 cgen - smarter default for 'superPkg' and 'destDir'
CAY-1882 Porting to OSGi environment
CAY-1883 Clean up Cayenne maven structure
CAY-1886 cayenne-di module reorg, new exceptions
CAY-1890 Remove Cayenne-level buffering when retrieving LOBs
CAY-1894 Support native PK generation using sequences for H2 databases
CAY-1899 ServerRuntimeBuilder
CAY-1900 Allow DataNode name to be used as a root of SQLTemplate
CAY-1901 Config-free ServerRuntime
CAY-1904 Simple injection-friendly constructor for AuditableFilter
CAY-1907 RowReaderFactory
CAY-1908 Refactor all SQLActions to work with DataNode
CAY-1911 BatchQuery refactoring - make Iterable
CAY-1912 BatchQueryBuilder refactoring
CAY-1913 Refactor org.apache.cayenne.access.trans into query-specific packages
CAY-1914 Refactor EJBQL-related translators to a standalone 'org.apache.cayenne.access.translator.ejbql' package
CAY-1915 BatchTranslator instead of performing bindings should return binding object whose values can be altered
CAY-1916 cayenne-crypto module that enables data encryption for certain model attributes
CAY-1918 Replace Oracle LOB hacks with JDBC 4.0 API
CAY-1919 Split DataNode creation into a separate DataNodeFactory
CAY-1920 DI: add support for decorators
CAY-1921 Support for schema selection in 'Migrate Database Schema'
CAY-1923 Optimize BatchTranslator - use fixed size array of BatchParameterBinding
CAY-1925 cayenne-crypto: add optional compression to the encryption pipeline
CAY-1928 Second INNER join generated for OUTER flattended relationships in disjoint prefetches
CAY-1929 Property.outer method to build OUTER join properties
CAY-1932 Improved Handling for Scalar Parameters Converting Expressions to EJBQL
CAY-1933 Problems in Evaluating EJBQL Statements with Integral Literals > Integer.MAX_VALUE
CAY-1934 A problem exists where the escape character is not conveyed in the EJBQL when toEJBQL() is invoked on the expression.
CAY-1936 ServerRuntime.getDataSource() returning DataSource of a default DataNode
CAY-1937 Make Transaction an interface
CAY-1938 Create a DI factory for transactions, get rid of TransactionDelegate and modeler config for tx policies
CAY-1939 DataDomain must use injectable TransactionManager
CAY-1946 CDbimport improvements
CAY-1949 Search in configuration fields (Catalog, Schema) in DbEntity
CAY-1952 Undeprecate (actually restore) ObjectContext.deleteObject(..)
CAY-1953 Redo ResultIteratorCallback to handle single row callback instead of iterator
CAY-1954 Make Cayenne class constructor protected
CAY-1958 SelectById - a new full-featured select query to get objects by id
CAY-1959 ObjectSelect query - a fluent API alternative to SelectQuery
CAY-1960 ExpressionFactory.exp(..) , and(..), or(..)
CAY-1962 Implement CayenneTable column resize on double-click on the header separator
CAY-1965 Change version from 3.2 to 4.0
CAY-1966 SQLTemplate/SQLSelect positional parameter binding
CAY-1967 Deprecate SQLTemplate parameter batches
CAY-1968 SQLSelect cleanup and omissions
CAY-1971 Variants of Property.like(..) : contains(..), startsWith(..), endsWith(..)
CAY-1972 A property to override DataSources of multi-module projects
CAY-1981 Add support of JDBC 4.0 N-types (nchar, nvarchar, longnvarchar, nclob)
CAY-1984 cdbimport doesn't flatten many to many relationships

Bug Fixes:

CAy-1988 ServerRuntimeBuilder: synthetic DataNode does not have domain's DataMaps linked
CAY-1480 Implement cross-db functional expressions
CAY-1695 Unexpected null value in bidirectional one-to-one prefetch
CAY-1736 IllegalArgumentException when synchronizing entities in the Modeler
CAY-1795 "Invisible" ObjAttribute in subclass
CAY-1796 ROP: All entity's to-many relationships getting faulted from database when using it as a parameter in qualifier expression
CAY-1797 NPE importing DataMap
CAY-1798 ROP: Reverse relationships of prefetched entity objects are not filled during server to client objects conversion
CAY-1799 ROP: Server can't deserialize LIKE expression with pattern already compiled
CAY-1818 Fix copyright year in the Modeler "about" panel
CAY-1834 Exception: ToManyList cannot be cast to DataObject
CAY-1857 Problem with hotkeys
CAY-1859 NullPointerException when importing EOModel
CAY-1863 Make determining whether a particular database type supports length adapter-specific not universal
CAY-1866 Change in General Modeler Preferences reverts old settings to default value
CAY-1868 Select contention with multiple contexts
CAY-1869 ResultIterator from cayenne-client dependency is subclassed from org.apache.cayenne.access.ResultIterator which is present only in cayenne-server dependency
CAY-1874 DB2 Procedure action ignores the first result set
CAY-1877 In-memory evaluation of expression may fail with UnsupportedOpeartionException depending on order of nodes
CAY-1880 objectStore snapshots never cleared from RefreshQuery when "use shared cache" unchecked
CAY-1881 CayenneModeler (Mac version) doesn't work with Java 7
CAY-1885 Null value in subclass's field.
CAY-1905 Multi-step prefetching NPE : 1..N..1 with absent N and root with no qualifier
CAY-1943 XML file not deleted when a DataMap is deleted from the project
CAY-1961 Fix RemoveAction for DataMaps in ProjectTree
CAY-1964 Fix convertAdditionalDataMaps() in CayenneGeneratorMojo.java
CAY-1973 error while generating classes
CAY-1974 Copy/Paste DbEntiry throws exception
CAY-1978 ESCAPE clause should be included in LIKE parenthesis
CAY-1979 Prefetches on Many-to-Many Relationships with Longvarchar
CAY-1980 'mvn cayenne-modeler:run' seems to be broken in 4.0

----------------------------------
Release: 3.2M1
Date: July 19, 2013
----------------------------------
Changes/New Features:

CAY-1294 Generify query
CAY-1646 Synchronize tabs in Modeler between ObjEntity and DbEntity editor panes
CAY-1647 Easily switch to/from ObjEntity and DbEntity in Modeler
CAY-1717 [PATCH] Implement JDBC compatibility layer methods
CAY-1718 Remove everything deprecated in 3.1
CAY-1724 Add 'Property' class for easier and better Expression creation
CAY-1726 Expression parser support for bit operators, support for << and >>
CAY-1737 ObjectContexts listening to DataChannel events must be non-blocking
CAY-1748 IdCoder/EntityIdCoder improvements to work with ObjectIds, including temp ones
CAY-1753 remove light-superclass.vm class template
CAY-1754 Modeler suggested URL for SQLServer should start with 'jdbc:sqlserver:' instead of 'jdbc:microsoft:sqlserver:'
CAY-1758 cdbimport improvements
CAY-1759 cdbimport improvements: add 'catalog', rename 'schemaName' to 'schema'
CAY-1760 cdbimport improvements: Default adapter (if none specified) must be AutoAdapter, not JdbcAdapter
CAY-1761 cdbimport improvements: DbLoader must reverse engineer PK auto-increment state.
CAY-1762 cdbimport improvements: Support for "defaultPackage" parameter, as the new DataMaps ends up placing entities in the root package
CAY-1763 cdbimport improvements: specified "schema" should become the default schema of the generated DataMap
CAY-1764 cdbimport improvements: "overwrite" flag
CAY-1765 cdbimport improvements: add excludeTables/includeTables parameters
CAY-1766 Deprecating DataPort ant task
CAY-1768 cdbimport improvements: DataMap "project-version" attribute is skipped when DM is saved
CAY-1769 cdbimport improvements: meaningfulPk flag must be turned into a pattern
CAY-1771 cdbimport improvements: "usePrimitives" flag
CAY-1772 Real support for DbEntity catalogs
CAY-1778 TransactionManager to simplify user-managed transactions
CAY-1779 Flatten object entities for many to many relationships on reverse engineering
CAY-1781 Add StatelessContextRequestHandler as an alternative to the Session-based one
CAY-1785 SelectQuery<T> for DataRows
CAY-1789 Lock-free EntityResolver
CAY-1792 [PATCH] Supply additional factory methods for generic SelectQueries
CAY-1803 Optimize Expression conversion to String and EJBQL
CAY-1809 Remove 'final' modifier from Cayenne, HessianUtil, PropertyComparator, ConversionUtil, and LinkedDeque
CAY-1813 Missing ObjEntity Attribute Validation with Duplicate DbEntity Columns
CAY-1814 Support Property.nin
CAY-1819 When adding a filter, auto-register it as a listener
CAY-1820 DataDomain.addListener(Object) - a shortcut for adding annotated listeners
CAY-1821 AuditableFilter and friends should explicitly work with Persistent instead of Object
CAY-1822 Make DataMap editor fields wider
CAY-1823 remove ":sync w/DbEntity" button from ObjEntity - it is redundant and already present on the entity toolbar.
CAY-1825 Simplify API for setting up query caching
CAY-1828 SQLSelect - generics friendly fluent selecting sql query
CAY-1829 Make ResultIterator implement Iterable<T>, create ObjectContext.iterate method
CAY-1836 Firebird Adapter
CAY-1838 Deprecate EntityResolver.indexedByClassProperty
CAY-1840 Conditionally log slow / long-running queries
CAY-1844 Configuration for maximum time to wait for an available DB connection
CAY-1862 MySQL - allow specifying a length for TIMESTAMP and TIME columns

Bug Fixes:

CAY-957 Deadlock in nested contexts
CAY-1522 EJBQL query don't support quotes
CAY-1677 Modeler: text fields discard input unless you press enter
CAY-1701 Modeler cannot undo pasting of obj (db) entity
CAY-1708 Modeler error when pasting datamap with EJBQL query
CAY-1714 ROP: Cayenne tries to build a query for non committed object when using more than 2 nested contexts
CAY-1721 Writing blobs fails (Oracle)
CAY-1725 NullPointerException from call to removeToManyTarget
CAY-1719 Modeler - Obj Attribute Java Type editor won't focus sometimes
CAY-1727 Modeler thinks entity is using inheritance when it doesn't
CAY-1729 PersistentDescriptor must have predictable property iteration order
CAY-1738 Tutorial cayenne-rop-server should be packaged as a war
CAY-1739 Cayenne ROP server resets session on every request if BASIC auth is used
CAY-1742 ObjRelationship inspector says "ObjAttribute Inspector"
CAY-1744 Unexpected read-only relationships in vertical inheritance mapping
CAY-1749 NPE on simple nested context commit
CAY-1755 FaultFailureException resolving relationships to UNIQUE non-PK columns
CAY-1757 ROP: Faulting entity relationship resets uncommitted modifications made to its reverse relationship
CAY-1774 EhCacheQueryCache.get(QueryMetadata, QueryCacheEntryFactory) returns null if EhCache instance for group is not present
CAY-1780 cdbimport do not create xml file in resource folder
CAY-1782 Deadlock when performing many concurrent inserts
CAY-1783 JdbcPkGenerator.longPkFromDatabase would throw an exception if the PK value exceeds a range of Java int
CAY-1794 Duplicate attributes in discriminator columns of PersistentDescriptor
CAY-1804 Serialisation of long[] type was not working correctly.
CAY-1806 Error importing eomodel
CAY-1817 NPE during Validate Project
CAY-1827 EhCache region corresponding to a cache group loses its settings after 'removeGroup'
CAY-1832 Exception when modifying objects in postLoad callback
