The 4.0 release of AccessPlatform is available under the Apache 2 license from our download page
Version 4.0 includes the following over 3.2/3.3
Runtime will still be supported as runnable for Java7+
Extend SchemaAwareStoreManager/SchemaTool to add createSchema/dropSchema
Upgrade ODF, Excel, HBase, MongoDB plugins to start using "persistable-identity"
Clean up NucleusContext "type" and maybe make NucleusContext an interface, and have PersistenceNucleusContext for persistence runtime. Means that we could also add a SchemaNucleusContext later on for schema tool(s)
Transaction savepoints - Basic API present in core, and supported in RDBMS (needs testing)
Clean up MetaDataManager and maybe make it an interface.
Move majority of schema operations from StoreManager to StoreSchemaHandler
Upgrade ASM to v5.0
Generalise TypeConverters so they can support conversion to multiple datastore column values and usable by all store plugins
Support Java8 (including javax.time - so build requirement for java8 plugin at least will be Java8)
Official support for Cassandra v1.2+
Upgrade relevant store plugins to use Table/Column structure and benefit from common features, for ODF, Excel, JSON, MongoDB, Neo4j, HBase
Upgrade enhancement process to enhance to org.datanucleus.enhancer.Persistable so that users need to have "datanucleus-core.jar" in the CLASSPATH and not "jdo-api.jar".
Drop EclipsePluginRegistry so all OSGi users should use OSGiPluginRegistry
Schema Evolution : restructure schema properties to allow for all we will need when adding/removing fields etc
JPA : no longer needs to have jdo-api.jar present
JPA : allow "native" query for Cassandra
Cassandra : support for native CQL queries via JDO or JPA
RDBMS : support for HikariCP and DBCP2 connection pools
RDBMS : ability to use single connection per PM/EM (rather than 1 for transactional operations, and 1 for non-transactional operations)
RDBMS : removed the need to create JavaTypeMapping classes when the user type has a TypeConverter
JSON : support for embedded 1-1 relation fields/properties
Excel/ODF/JSON/MongoDB/Neo4j/HBase/Cassandra : move to using "core" definition of table/columns meaning access to generalised features tested on other datastores
No further releases planned; commercial enquiries required.
Mar 1st 2015 : Version 4.0.6 includes the following changes
NUCCORE-1273 - Support for NUCRDBMS-848 for DN 4.0
NUCCORE-1274 - Support CASE / IF/ELSE "when" conditions that are not completely defined (i.e depend on previous when conditions)
NUCRDBMS-854 - Support NUCCORE-1274
NUCRDBMS-848 - "max" value generator provides wrong id if 2 objects are persisted in one transaction
NUCRDBMS-856 - ViewImpl seems to have regression in validate() method
NUCEXCEL-81 - Numeric object wrapper fields can fail on retrieval due to falling back to TypeConverter
NUCEXCEL-82 - StoreEmbeddedFieldManager has incorrect logic in detection of embedded sub field
NUCEXCEL-84 - Persist of object with composite PK results in blank row in worksheet before the next inserted object
NUCODF-61 - StoreEmbeddedFieldManager has incorrect logic in detection of embedded sub field
Feb 2nd 2015 : Version 4.0.5 includes the following changes
NUCRDBMS-845 - Handling of case expression should check for non-Boolean conditional expression, and convert to CaseNumericExpression if possible
NUCRDBMS-852 - Support query fetch of Collection/Map/Array fields when serialised (i,e stored in single column of owner table).
NUCRDBMS-851 - Add check on CASE "action" expression types for consistency
NUCRDBMS-847 - JDOQL statement with multi-tenant PersistenceManager
NUCMONGODB-151 - JDOQL COUNT query fails for unknown classes
NUCLDAP-66 - AttributeStrategy : When reassigning N-1 owner, allow for new owner not yet being persistent
NUCEXCEL-80 - Make sure StoreData is populated before using fetchObject(…)
NUCODF-60 - Make sure StoreData is populated before using fetchObject(…)
Nov 15th 2014 : Version 4.0.4 includes the following changes
NUCLDAP-63 - Add ability to specify "mapping-strategy" for a field without relying on random "join" information
NUCCORE-1262 - Simplify Invalid[Class/Member]MetaDataException constructor to just take in params list and no class/member name
NUCLDAP-64 - StoreFieldManager/FetchFieldManager create an instance of mapping strategy for every objects instance of every basic field!
NUCRDBMS-838 - Start restructuring of ClassAdder to allow easier updates/locking in the future
NUCCORE-1257 - AbstractMetaData population moving of ColumnMetaData to element/value when using collection/map is incomplete, should MOVE not COPY
NUCCORE-1259 - AbstractConnectionFactory/ConnectionFactory should have factoryName and resourceType and not use "options"
NUCCORE-1261 - Backing store wrappers don’t need to hold "queued" property
NUCCORE-1258 - transaction options is lost, leading to ISOLATION LEVEL violation
NUCAPIJDO-80 - JDOPersistenceManagerFactory.getPersistenceManagerFactory(Map overridingProps) doesn’t cater for people abusing API of java.util.Properties
NUCCASSANDRA-60 - Make sure resultObjects in CassandraQueryResults are dereferenced
NUCRDBMS-792 - Map.containsKey generates invalid query
Oct 2nd 2014 : Version 4.0.3 includes the following changes
NUCJPA-283 - Expose access to the underlying connection, so people can perform native operations
NUCJPA-285 - Allow EntityManager.createNativeQuery to create a query using a non-SQL query language
NUCCASSANDRA-21 - Support native Cassandra CQL queries
NUCCORE-1256 - Extend NUCCORE-1233 support for JDOQL "IF … ELSE IF … ELSE …" to require final ELSE or throw exception
NUCRDBMS-730 - Persist of M-N relation can be inefficient; currently always does SELECT to see if present then INSERT.
NUCCORE-1248 - NamingFactory.getConstraintName for member should also pass in the class name so we can name indexes when part of table for subclasses
NUCCORE-1249 - Drop SCOMtoN since we can just check if it is M-N relation or if collection
NUCCORE-1250 - Add method to MetaDataManager that returns the enhanced method name prefix (i.e "dn")
NUCCORE-1253 - Move identity conversion handling into core from api.jdo/api.jpa
NUCCORE-1255 - Add method for what query language is considered "native" for a store
NUCAPIJDO-79 - Add Transaction set/getNontransactionalWriteAutoCommit
NUCJPA-282 - Support @ConstructorResult
NUCCASSANDRA-58 - Support NUCCORE-1248
NUCCASSANDRA-59 - Support NUCCORE-1255
NUCMONGODB-150 - Support NUCCORE-1248
NUCRDBMS-827 - Support constructor mappings in SQL query results
NUCRDBMS-833 - Support NUCCORE-1255
NUCCORE-1252 - ByteArrayByteBufferConverter toMemberType ByteBuffer to byte[] conversion fails
NUCCORE-1254 - Backed SCO wrappers should not add operations to queue when the owner object is not yet inserted
NUCJPA-281 - CriteriaQuery needs to respect any distinct specified on "select" but currently ignores it
NUCCASSANDRA-57 - JPQLQuery should have latest candidate class code (copy from HBase for example)
NUCRDBMS-829 - Embedded object causes: IllegalArgumentException: out of field index
NUCRDBMS-830 - ResultClassROF can throw exception if it finds an enhancement method in the result class of a query
NUCRDBMS-831 - RDBMSStoreManager generates comments which are bad syntax in Mysql
NUCRDBMS-832 - Persist of object with Collection (via join table) containing some new and some detached elements doesn’t create the join table entries
Aug 29th 2014 : Version 4.0.2 includes the following changes
NUCRDBMS-814 - Support maxActive on DBCP2 connection pool
NUCRDBMS-823 - SQLite only supports "autoincrement" on INTEGER columns, so should default to that
NUCRDBMS-824 - Fields should be ordered by name in insert statement generation
NUCRDBMS-826 - Move org.datanucleus.store.rdbms.datasource.DriverManagerDataSource to inner class of DefaultConnectionPoolFactory
NUCCORE-1241 - Support result set value conversion from Long/Integer to Boolean in ClassUtils.convertValue
NUCCORE-1242 - Fix ByteBuffer converters to handle null input/output
NUCCORE-1245 - JDO "persistence-capable-superclass" metadata was deprecated in JDO2. Remove it since we use reflection anyway
NUCJPA-275 - Throw NoPersistenceUnitException when not found in creation of EMF via PersistenceProvider
NUCJPA-280 - Enable close of query results at ExecutionContext close
NUCNEOFORJ-52 - Upgrade to Neo4j 2.1
NUCCORE-1243 - OSGI classloading problem
NUCCORE-1246 - TypeConverter cannot use basic inheritance
NUCJPA-277 - Annotation attribute for @Index "unique" is being used incorrectly
NUCJPA-278 - Some types of fields are setting allowsNull as false when shouldn’t, dependent on annotations
NUCRDBMS-779 - Without explicit commit, fetching multiple results fails with Firebird
NUCRDBMS-790 - Boolean fields are left as null when selecting objects using SQL query
NUCRDBMS-815 - NullPointerException when setting multiple Date parameters
NUCRDBMS-816 - Incorrect handling of join expressions when using multiple joins
NUCRDBMS-817 - Using Collection with class (Discriminator.value_map) with no subclasses (i.e redundant discriminator)
NUCRDBMS-818 - Schema Tool throws NullPointerException when @Index name does not match a field
NUCRDBMS-819 - HSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER
NUCRDBMS-820 - PostgreSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER
NUCRDBMS-821 - SQLTableAlphaNamer doesn’t check for lowercase when looking for name clashes
NUCRDBMS-822 - possible bug in org.datanucleus.store.rdbms.mapping.datastore.BigIntRDBMSMapping
NUCJAVAEIGHT-15 - HSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER
NUCJAVAEIGHT-16 - Persist of LocalDateTime/LocalTime is not setting nanos
NUCJAVAEIGHT-17 - PostgreSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER
Jul 19th 2014 : Version 4.0.1 includes the following changes
NUCCORE-1233 - Support JDOQL compilation of "IF (expr) expr ELSE IF (expr) expr ELSE expr"
NUCCASSANDRA-56 - Adding support for uuid datastoreType of Cassandra
NUCHBASE-96 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCEXCEL-78 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCODF-59 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCJSON-53 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCMONGODB-148 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCRDBMS-807 - Support mapping java.util.UUID to PostgreSQL native "uuid" column type
NUCRDBMS-810 - Support for TIME and DATE JDBC data types for MS SQL Server 2008 and newer
NUCNEOFORJ-51 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCODF-59 - Support cascade-persist/cascade-update on 1-1/1-N fields
NUCJAVAEIGHT-14 - Provide Java8 variants of Collection/Map wrappers so that any new methods can be supported.
NUCCORE-1237 - CompleteClassTable should check for columns with same name in the table and throw an exception
NUCCORE-1230 - Upgrade ASM to 5.0.3
NUCCORE-1231 - Add basic support for temporal literals as Strings
NUCCORE-1236 - Support update of L2 cache when refresh() is called
NUCRDBMS-805 - Add simple handling of temporal literal as String
NUCRDBMS-806
NUCCORE-1235 - RDBMSStoreManager.addSchemaCallback does not populate the schemaCallbacks correctly
NUCCORE-1239 - 1-1 Birdirecional relation management fails when using optimistic tx
NUCAPIJDO-78 - Creation of implementation of persistent abstract class / interface creates metadata with full name (including package)
NUCJPA-274 - NamedStoredProcedureQueries doesn’t set procedure name on processed stored procs metadata
NUCCASSANDRA-55 - Could not serialize byte[] @Serialized member on Cassandra store
NUCEXCEL-79 - SchemaTool doesn’t make full use of generalised Table; should create CompleteClassTable when not present
NUCMONGODB-149 - SchemaTool doesn’t make full use of generalised Table; should create CompleteClassTable when not present
NUCRDBMS-808 - Datanucleus can’t find sequence in PostrgreSQL when persistence property 'datanucleus.identifier.case' is set
NUCRDBMS-809 - Inconsistent behavior in enum value conversion to/from numeric value in RDBMS using 'enum-value-getter' extension
NUCRDBMS-811 - Enum extension "enum-check-constraint" is incorrectly handled if also using extension "enum-value-getter"
NUCRDBMS-812 - When executing StoredProcedure with multiple result sets, the close of the first results will close the statement!
NUCRDBMS-813 - 1-N FK bidir relationship management failing when using optimistic tx
Jun 13th 2014 : Version 4.0 RELEASE includes the following changes
NUCMONGODB-147 - Support multicolumn TypeConverters
NUCHBASE-94 - Support multicolumn TypeConverters
NUCNEOFORJ-50 - Support multicolumn TypeConverters
NUCCORE-1223 - org.datanucleus.store.StoreData should have Table field since many store plugins use this now and we should encourage it
NUCCORE-1227 - UUIDStringConverter should implement ColumnLengthDefiningTypeConverter and set length to 36
NUCRDBMS-802 - Change org.datanucleus.store.rdbms.table.Table to extend org.datanucleus.store.schema.table.Table
NUCSPATIAL-39 - Formatting ol files with the latest Datanucleus code convention xml.
NUCSPATIAL-50 - Java8 related javadoc enhancements needed
NUCCORE-1121 - Remove AbstractMemberMetaData.getColumn since deprecated for some time
NUCCORE-1221 - NamingFactory getIndexName() methods should be renamed to getConstraintName() so we can use for unique constraint and FK constraint also
NUCCORE-1222 - Change ForeignKeyMetaData to extend ConstraintMetaData
NUCCORE-1224 - Refactor Table.getIdentifier -> Table.getName, Column.getIdentifier -> Column.getName
NUCCORE-1225 - Update JdbcType to use ordinal as the java.sql.Types value allowing lookup in RDBMS
NUCCORE-1226 - Add persistence property to set the preference for embedding of a PC object
NUCCORE-1228 - CompleteClassTable should add "column" for nested array/map holder
NUCEXCEL-77 - Remove need for SchemaVerifierImpl since does nothing currently anyway
NUCODF-58 - Remove need for SchemaVerifierImpl since does nothing currently anyway
NUCMONGODB-146 - Change schema management to use org.datanucleus.store.schema.table.Table
NUCHBASE-85 - HTablePool is deprecated in HBase 0.94.11, 0.95.2 onwards
NUCHBASE-93 - Change schema management to use org.datanucleus.store.schema.table.Table
NUCHBASE-95 - Use column name from Table/Column structure and extract familyName/qualifierName from that name
NUCJSON-52 - Remove need for SchemaVerifierImpl since does nothing currently anyway
NUCNEOFORJ-49 - Use generic Table/Column code for Node/property namings and ditch ad-hoc code
NUCRDBMS-803 - Refactor some of the method names around DatastoreIdentifier, Table, Column to make more logical to casual reader
NUCRDBMS-804 - Enable TypeConverterMapping.getDefaultLength to use converter length (when defined)
NUCCORE-1204 - Object is left in 2nd level cache when commit() fails
NUCJAVAEIGHT-13 - Typoe in plugin.xml for InstantLongConverter
May 29th 2014 : Version 4.0 Milestone 4 includes the following changes
NUCCORE-1216 - Allow option of Query results being closed when ExecutionContext is closed
NUCCASSANDRA-49 - Support schema creation "USING" options via metadata
NUCJAVAEIGHT-11 - Add support for Instant persisted as Long (numeric)
NUCJAVAEIGHT-12 - Support for OffsetTime, OffsetDateTime
NUCCORE-1203 - Logging around transactional cache enlist/evict is far from optimum and can just show evictions
NUCCORE-1208 - Transaction cache cpu improvement
NUCCORE-1209 - Constructor cache in IdentityManagerImpl
NUCCORE-1210 - Configuration.getManagerOverrideableProperties() costs quite a lot of cpu during ExecutionContext creation
NUCCORE-1212 - Change Localisation sub-system to allow each plugin to register its bundle, and specify language/errorCodes via System properties
NUCCORE-1213 - Cache frequently accessed properties in fields
NUCCORE-1214 - Cache populated ClassMetadata
NUCCORE-1215 - org.datanucleus.store.types.SCO should be genericised with the java type it represents
NUCCORE-1217 - Refactor ExecutionContext callback handler method names to make clearer their usage
NUCCORE-1219 - Add method to AbstractJavaQuery to compile the query to get just the generic compilation
NUCAPIJDO-75 - Decrease lock contention during PersistenceManager.close()
NUCCORE-1195 - Upgrade ASM to 5.0.2
NUCCORE-1196 - Make StoreManager.getStrategyForNative public
NUCCORE-1197 - Various ApiAdapter methods are now no longer needed since we use a DataNucleus-centric enhancement contract
NUCCORE-1198 - Drop org.datanucleus.metadata.PersistenceFlags, now part of Persistable interface
NUCCORE-1200 - ExecutionContext.newQuery is not needed and all queries should be instantiated via QueryManager
NUCCORE-1201 - Move query language name conversion to JDO API layer
NUCCORE-1205 - Add accessor for the StoreManager for the managed object
NUCCORE-1206 - Add TypeConverter for Calendar to (millis, timezone)
NUCCORE-1207 - Collection wrappers (with backing store) should likely throw IllegalXXXException when add() fails in the datastore
NUCCORE-1211 - Change QueryManager to be interface, with default implementation
NUCCORE-1218 - org.datanucleus.metadata.FieldRole should be enum to give type safety
NUCJPA-271 - Support NUCCORE-1197 removing methods from ApiAdapter
NUCJPA-273 - JPAAnnotationReader has line which sets jdbcType of all boolean fields to SMALLINT. No reason why we need this so disable
NUCAPIJDO-74 - Support NUCCORE-1197 removing methods from ApiAdapter
NUCRDBMS-794 - Support NUCCORE-1197 removing methods from ApiAdapter
NUCRDBMS-796 - Change default Calendar persistence to single column (timestamp)
NUCRDBMS-798 - PostgreSQL : support OFFSET/FETCH for ranges
NUCRDBMS-799 - PostgreSQL : add dummy BOOLEAN JDBC type
NUCRDBMS-801 - PostgreSQL : add dummy TINYINT JDBC type
NUCNEODATIS-30 - Support NUCCORE-1197 removing methods from ApiAdapter
NUCACCESS-128 - Migrate projects to standard maven 2 layout
NUCACCESS-129 - Release own version of javax.persistence jar and remove use of EclipseLink JPA API jar
NUCCORE-1199 - Improve logic for transient id handling to check for null
NUCCORE-1202 - Missing release resource in non-tx handling
NUCJPA-270 - JPA spec 2.10.3.1 requires a unique constraint on a OneToOne unidir relation by default
NUCJPA-272 - Query.getParameter methods using position return that parameter is not found for JPQL
NUCRDBMS-795 - Query with aggreg.function on single-column calendar field doesn’t work due to wrong metadata handling
NUCRDBMS-797 - MSSQL OFFSET is not optional when using FETCH
Apr 27th 2014 : Version 4.0 Milestone 3 includes the following changes
NUCEXCEL-74 - Support multicolumn TypeConverters
NUCCASSANDRA-7 - Support in-datastore querying of primary JDOQL/JPQL operations
NUCCASSANDRA-47 - Support schema evolution (new columns, delete columns)
NUCJSON-47 - Support multicolumn TypeConverters
NUCJSON-50 - Supported embedded 1-1 fields stored as nested in the JSON object
NUCODF-55 - Support multicolumn TypeConverters
NUCJAVAEIGHT-9 - Support LocalTime, LocalDate, LocalDateTime getSecond, getMinute, getHour, getDayOfMonth, getMonth, getYear in in-memory query evaluation
NUCJAVAEIGHT-10 - Support getHour, getMinute, getSecond, getYear, getMonthValue, getDayOfMonth method invocation on LocalXXX classes with RDBMS
NUCCORE-922 - JPA : Enhance classes to implement org.datanucleus.enhancer.Persistable to avoid dependency on JDO
NUCCORE-1097 - Genericise ExecutionContext/ObjectProvider interfaces
NUCCORE-1175 - Rename "org.datanucleus.store.types.simple" to "org.datanucleus.store.types.wrappers", and "org.datanucleus.store.types.backed" to "org.datanucleus.store.types.wrappers.backed"
NUCCORE-1176 - Add TypeConverters for converting Boolean to "Y"/"N" and 1,0
NUCCORE-1181 - JDOQL/JPQL : add compiler checks for use of aggregate in result clause with incorrect arguments
NUCCORE-1186 - ValueGeneration class is pointless and should be removed
NUCAPIJDO-73 - Support NUCCORE-922 (change bytecode enhancement contract)
NUCJPA-269 - Support NUCCORE-922 (change bytecode enhancement contract)
NUCJSON-48 - javadoc improvements according to Java8 warning and errors
NUCRDBMS-782 - Add Expression/Literal for handling TypeConverterMapping so we can avoid having to create Expression/Literal (and hence XXXMapping) for more types
NUCJAVAEIGHT-8 - Refactor so that root package is org.datanucleus.store.types.java8
NUCJODATIME-20 - Refactor so that root package is org.datanucleus.store.types.jodatime
NUCGUAVA-8 - Refactor so that root package is org.datanucleus.store.types.guava
NUCCORE-934 - Restrict all references to PersistenceCapable/Detachable to isolated packages
NUCCORE-1173 - Remove checks on "stackmapFrames" since we are using Java7+ now
NUCCORE-1174 - Upgrade to javax.cache v1.0.0 now that final is out
NUCCORE-1177 - Rename "org.datanucleus.query.evaluator.memory" to "org.datanucleus.query.inmemory"
NUCCORE-1178 - Names of in-memory query evaluators are too verbose
NUCCORE-1180 - Add StoreManager.OPTION_ORM_EMBEDDED_PC_NESTED to signify that the store supports embedding an object nested in the owner object (like JSON)
NUCCORE-1182 - Split runReachability out of ObjectProvider so that ReachabilityFieldManager is the only place we provide the pbr-at-commit process
NUCCORE-1183 - Move NullCallbackHandler to org.datanucleus.state
NUCCORE-1184 - Move ObjectProvider.nullifyFields() to ExecutionContextImpl reachability at commit code
NUCCORE-1185 - org.datanucleus.query.node adds no value and should be merged into org.datanucleus.query.compiler
NUCCORE-1187 - ExecutionContext newObjectProviderForEmbedded are simply relays and should be removed; use ObjectProviderFactory direct
NUCCORE-1190 - Change bytecode enhancement of copyKeyFieldsToObjectId to avoid use of JDOHelper
NUCCORE-1191 - Remove EclipsePluginRegistry
NUCCORE-1194 - Drop support for <extension vendor-name="jpox" …>
NUCEXCEL-76 - Support NUCCORE-1097
NUCCASSANDRA-50 - If user specified jdbc-type of "char", override with "varchar" internally (since there is no "char" in Cassandra)
NUCCASSANDRA-51 - IncrementGenerator should use key as "sequence-name" if provided (user input), otherwise "field-name" if for a field, otherwise "root-class-name"
NUCCASSANDRA-52 - Detect members using TypeConverter with datastore type of subclass of java.util.Date, and change to converter with datastoreType=java.util.Date
NUCCASSANDRA-53 - Move to Datastax Cassandra driver v2.0.1
NUCCASSANDRA-54 - Support NUCCORE-1097
NUCHBASE-92 - Support NUCCORE-1097
NUCJSON-49 - Use Base64 under org.datanucleus.util instead of own copy
NUCJSON-51 - Support NUCCORE-1097
NUCLDAP-62 - Support NUCCORE-1097
NUCMONGODB-144 - Support NUCCORE-1097
NUCNEOFORJ-48 - Support NUCCORE-1097
NUCODF-57 - Support NUCCORE-1097
NUCRDBMS-785 - Support NUCCORE-1175
NUCRDBMS-787 - SQLMethod method should have signature getExpression(SQLExpression, List<SQLExpression>) i.e include generics
NUCRDBMS-789 - Support NUCCORE-1097
NUCRDBMS-791 - Drop use of "java-version" on java types
NUCSPATIAL-51 - Add TypeConverter for Rectangle -> x,y,width,height and fix Point -> x,y to use int
NUCSPATIAL-52 - Add multicolumn TypeConverter for Point2D.Double and Point2D.Float
NUCGUAVA-7 - Support NUCCORE-1175
NUCGUAVA-9 - Support NUCCORE-1097
NUCCORE-1188 - PersistenceUnit "exclude-unlisted-classes" is processed incorrectly ignoring the value in the element
NUCCORE-1193 - Bad code in JavaUtils.initialiseJREVersion() [in general] // fails on Android [in concrete]
NUCJPA-268 - inconsistent property name: javax.persistence.sql.load-script-source
NUCRDBMS-783 - AVG on integral number drops decimals on some databases
NUCRDBMS-784 - MapSizeMethod uses wrapper Map rather than java.util.Map!
NUCRDBMS-786 - Catch special case SQL method classes (ARRAY etc) to avoid ClassNotResolvedException
NUCSPATIAL-49 - OSGi manifest is missing some package imports
Apr 1st 2014 : Version 4.0 Milestone 2 includes the following changes
NUCCORE-1147 - Extend datanucleus.readOnlyDatastore so that it can be specified on a PM
NUCCORE-1154 - Add TypeConverter extension for converting object to multiple components, from java type to multiple datastore types
NUCCORE-1160 - Support javax.validation annotations @Size, @NotNull to imply metadata and avoid the need to duplicate that information with JDO/JPA annotations
NUCCORE-1163 - Allow a TypeConverter to define the default length limit of a String column
NUCCASSANDRA-3 - Support optimistic versioning
NUCCASSANDRA-18 - Support non-PC collections, maps
NUCCASSANDRA-28 - Support members (fields/properties) mapped to more than 1 column
NUCCASSANDRA-29 - Default to Session per PMF/EMF, but allow persistence property to set it
NUCCASSANDRA-35 - Support compound identity
NUCCASSANDRA-36 - Support user-defined TypeConverter on field/property
NUCCASSANDRA-37 - Support TypeConverter "autoApply" so user can define default handling for a java type
NUCJSON-27 - Support embedded 1-1 fields
NUCRDBMS-771 - Support HikariCP connection pool
NUCACCECLIPSE-6 - DataNucleus Context Menu does not appear in Project Explorer
NUCJAVAEIGHT-7 - Add support for Duration, Period, Year, Month, DayOfWeek, YearMonth, MonthDay, ZoneId, Instant, OffsetTime, OffsetDateTime, ZonedDateTime
NUCCORE-1144 - Update NamingFactory to take a set of reserved keywords that an identifier has to be quoted to use
NUCCORE-1145 - Provide TypeConverters for byte[], int[], float[], etc to ByteBuffer and clean up TypeConversionHelper type safety
NUCCORE-1157 - Split TypeManager converter helpers out into TypeConverterHelper
NUCCORE-1164 - Add TypeConverters for javax.time LocalDateTime -> Timestamp, LocalTime -> Time, LocalDate -> Date
NUCCORE-1166 - Extend CompleteClassTable to support multiple columns per member
NUCCORE-1172 - Some calls to ObjectProvider.loadUnloadedFields only require relation fields loading
NUCCASSANDRA-25 - Change javaType-datastoreType conversion process to use TypeConverters
NUCCASSANDRA-30 - Support persistence of members of type Locale (or array of Locale)
NUCCASSANDRA-42 - Support cascadePersist/cascadeUpdate for reachability
NUCCASSANDRA-43 - Support interface fields
NUCEXCEL-75 - Adopt Table/Column/CompleteClassTable data structures rather than ad-hoc index/schema control
NUCODF-56 - Adopt Table/Column/CompleteClassTable data structures rather than ad-hoc index/schema control
NUCJSON-46 - Adopt Table/Column/CompleteClassTable data structures rather than ad-hoc index/schema control
NUCRDBMS-775 - UUIDMapping, URLMapping, URIMapping can be removed and just fallback to TypeConverterStringMapping to get the same results
NUCRDBMS-776 - LocaleMapping, CurrencyMapping, TimeZoneMapping, StringBufferMapping, StringBuilderMapping can be removed and just fallback to TypeConverterStringMapping to get the same results
NUCRDBMS-778 - Update mapping/mappingClass lookup process to allow for TypeConverter specified via jdbcType
NUCRDBMS-781 - Support multi column TypeConverter and wrap them in a XXXMapping
NUCJODATIME-18 - Add TypeConverters for DateTime -> Timestamp, LocalTime -> Time, LocalDate -> Date and maybe also Timestamp
NUCCORE-1105 - Upgrade repackaged ASM to v5 when it is released
NUCCORE-1142 - Add TypeConverter for Serializable -> java.nio.ByteBuffer
NUCCORE-1143 - Add StoreManager.OPTION_ORM_FOREIGN_KEYS to signify that the store supports FKs
NUCCORE-1146 - Add StoreManager.OPTION_APPLICATION_COMPOSITE_ID to signify that the store supports multiple PK fields
NUCCORE-1148 - Change "datanucleus.identifier.case" 'PreserveCase' to be 'MixedCase' to be match internal namings
NUCCORE-1151 - In-memory query evaluation : improve ordering support so we can process DyadicExpression, InvokeExpression etc
NUCCORE-1152 - In-memory query evaluation : support for Map.containsEntry(key,val)
NUCCORE-1158 - Change TypeManager to be an interface, and have default implementation
NUCCORE-1159 - Fix NamingFactory index generation to respect user-specified names, and add method for datastore-id, discriminator, multitenancy index
NUCCORE-1161 - Add TypeConverter for converting java.sql.Timestamp -> String
NUCCORE-1162 - Fix MultiMap.remove(Object,Object) method to avoid clash with Java8 new Map method
NUCCORE-1165 - Change javax.time default TypeConverter so we persist as Timestamp/Time/Date wherever possible (hence queryable)
NUCCORE-1168 - Remove default TypeConverter for java.util.Date/java.sql.Date/java.sql.Time/java.sql.Timestamp/BigDecimal/BigInteger since persistable natively
NUCCORE-1169 - Remove references to javax.time now that we use a separate plugin for Java8 time
NUCCORE-1170 - Store Column "jdbcType" with org.datanucleus.store.schema.table.Column so store plugin don’t need to do lookups
NUCCORE-1171 - Add JdbcType enum and change ColumnMetaData.jdbcType to be of that type
NUCCASSANDRA-10 - Support quoted table/column identifiers (i.e case sensitive)
NUCCASSANDRA-23 - Add internal table/column definition, to avoid continual column naming lookups
NUCCASSANDRA-32 - Add list of reserved keywords and prohibit use of them as identifiers
NUCCASSANDRA-33 - Support persistence of Collection<Enum> etc
NUCCASSANDRA-40 - Map BigDecimal to Cassandra "decimal" type
NUCCASSANDRA-41 - Support java.util.Queue as Cassandra "list" type
NUCCASSANDRA-45 - Support null elements in Collection<PC> and null keys in Map<?, PC>
NUCCASSANDRA-46 - Support NUCCORE-1157 (TypeConverterHelper)
NUCHBASE-90 - Support NUCCORE-1157 (TypeConverterHelper)
NUCHBASE-91 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks
NUCMONGODB-143 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks
NUCEXCEL-72 - Support NUCCORE-1157 (TypeConverterHelper)
NUCEXCEL-73 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks
NUCODF-53 - Support NUCCORE-1157 (TypeConverterHelper)
NUCODF-54 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks
NUCJSON-45 - Support NUCCORE-1157 (TypeConverterHelper)
NUCRDBMS-769 - Adopt NamingCase instead of IdentifierCase so we have commonality across all store plugin
NUCRDBMS-772 - Support NUCCORE-1157 (TypeConverterHelper)
NUCRDBMS-773 - Support DBCP2 as connection pool (changed class names from DBCP v1.x)
NUCRDBMS-774 - Support NUCCORE-1162, avoid Java8 naming clash
NUCRDBMS-777 - Drop ObjectAsXXXMapping
NUCRDBMS-780 - Drop javax.time Mapping/Expression/Literal classes now that we have TypeConverters
NUCJODATIME-19 - Drop Mapping/Expression/Literal classes for LocalDate, LocalTime, DateTime since we have TypeConverters now
NUCJAVAEIGHT-1 - Update java.time support to reflect packaging in "Java 8"
NUCCORE-1149 - Initialisation of org.datanucleus.store.types.simple.Properties is incorrect
NUCCORE-1150 - InMemory query evaluation of max/min/avg/sum(arg) when no candidates is returning an integer : should return the type of the arg
NUCCORE-1156 - java.sql.Timestamp SCO wrapper should also preserve nanos when cloning/detaching etc
NUCCORE-1167 - NamingFactory column namer when embedded metadata has <column> but no name generates null column name!
NUCCASSANDRA-31 - Empty collection fields are being stored as null, and then when read back in are null rather than empty
NUCCASSANDRA-39 - User specified table name for "increment" value generator table is not being respected
NUCCASSANDRA-44 - Surrogate version should be long or Timestamp for consistency with RDBMS
NUCRDBMS-770 - Timestamp maximum precision is milliseconds
NUCMAVEN-47 - Exception (Error 87 - commandline too long) when starting the enhancer in forked mode
NUCACCECLIPSE-11 - Exception (Error 87 - commandline too long) during the enhancer is called within eclipse (plugin version 3.0.1)
Mar 1st 2014 : Version 4.0 Milestone 1 includes the following changes
NUCCORE-159 - Support for transaction "savepoints"
NUCCORE-1116 - SchemaTool : support create/delete of schema, and rename the current options to reflect that they only processes it for the input classes
NUCCORE-1124 - Add ability to specify NamingFactory (non-RDBMS datastores)
NUCCORE-1126 - Add support to NamingFactory so that it can provide names for embedded member(s), including nested embedded members
NUCCORE-1129 - Add persistence property to allow single connection to be used for a PM/EM, shared between transactional and nontransactional operations
NUCCORE-1136 - Provide method on StoreManager to remove knowledge of a class, so it can be reloaded (by such as JRebel)
NUCAPIJDO-72 - Add method to PMF to "unmanage" a class, allowing for it to be reloaded by such as JRebel
NUCCASSANDRA-1 - Support basic CRUD operations (CassandraPersistenceHandler)
NUCCASSANDRA-2 - Support datastore-identity
NUCCASSANDRA-4 - Support schema generation of tables/constraints
NUCCASSANDRA-5 - Support schema generation of keyspace (create/drop)
NUCCASSANDRA-8 - Support "increment"/"table" value generator
NUCCASSANDRA-9 - Support execution and in-memory evaluation of queries
NUCCASSANDRA-11 - Support embedded PC fields
NUCCASSANDRA-12 - Support serialised fields
NUCCASSANDRA-13 - Support multitenancy by discriminator
NUCCASSANDRA-14 - Support persistence of Enums
NUCCASSANDRA-15 - Support persistence of Maps
NUCCASSANDRA-19 - Support DDL with SchemaTool
NUCRDBMS-708 - Add ability to create/drop a schema ultimately via SchemaTool
NUCRDBMS-760 - Support transaction savepoint API, relaying call to JDBC Connection object
NUCMAVEN-45 - Support SchemaTool "createSchema" and "deleteSchema" options
NUCCORE-1112 - Make NucleusContext an interface, and have implementation(s) for the different contexts. Move static methods into a NucleusContextUtils
NUCCORE-1113 - Improve efficiency of identity lookups to find class name that it equates to
NUCCORE-1128 - Move store schema management operations to StoreSchemaHandler
NUCCORE-1141 - StoreManager "supportedOptions" should be standardised in core rather than just text strings
NUCCASSANDRA-17 - Make use of "persistable-identity" when storing relations to persistable objects
NUCCASSANDRA-27 - Provide PreparedStatement caching since Cassandra doesn’t
NUCEXCEL-69 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"
NUCEXCEL-71 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)
NUCJSON-43 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"
NUCHBASE-89 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)
NUCMONGODB-139 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"
NUCMONGODB-141 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)
NUCODF-50 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"
NUCODF-52 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)
NUCRDBMS-757 - getClassNameForObjectID should check on number of concrete candidates, and return if just 1
NUCRDBMS-759 - PostgreSQL : support detection of sequence existence using SELECT
NUCRDBMS-763 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)
NUCRDBMS-767 - OSGi manifest should also include new HSQLDB (v2.0+) driver import
NUCCORE-1109 - Extend SchemaAwareStoreManager to allow for create/delete of an actual schema (where supported)
NUCCORE-1110 - Drop deprecated MetaDataManager method
NUCCORE-1111 - Mark any class using "DatastoreUniqueOID" as not being L2 cacheable to avoid problems
NUCCORE-1114 - Change MetaDataManager to be interface, and have MetaDataManagerImpl as implementation, extended by JDO/JPA APIs
NUCCORE-1117 - Clean up MetaDataManager interface
NUCCORE-1118 - Rename StoreManager addClass, addClasses, removeAllClasses to better match their purpose
NUCCORE-1119 - Remove use of persistence property "datanucleus.metadata.validate" - as deprecated some time back
NUCCORE-1120 - NucleusContext should be responsible for loading up default properties appropriate to that context, not Configuration
NUCCORE-1122 - Rename "datanucleus.defaultInheritanceStrategy" to "datanucleus.metadata.defaultInheritanceStrategy"
NUCCORE-1123 - Change IndexMetaData/UniqueMetaData to not have child ColumnMetaData, just String column name
NUCCORE-1125 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)
NUCCORE-1127 - Refactor schema persistence properties to have standard naming "datanucleus.schema.XXX"
NUCCORE-1135 - Change JDOImplementationCreator to use current JRE as default rather than 1.3!
NUCCORE-1137 - Add autoCreateSchema to add database schema if it doesn’t exist (for datastores that support it)
NUCCORE-1139 - Add TypeConverter for BigDecimal-Double and BigInteger-Long for datastores that don’t gave high precision types
NUCCORE-1140 - Add TypeConverter for sql.Date-Date, sql.Time-Date, and sql.Timestamp-Date for datastores that only support java.util.Date
NUCAPIJDO-68 - Support NUCCORE-159
NUCAPIJDO-69 - Support NUCCORE-1112
NUCAPIJDO-70 - Support NUCCORE-1114
NUCAPIJDO-71 - JDO register process (class instantiation and JDOImplHelper) can register metadata but leave uninitialised
NUCJPA-264 - Default "datanucleus.allowAttachOfTransient" to true for JPA
NUCJPA-265 - Support NUCCORE-159
NUCJPA-266 - Support NUCCORE-1112
NUCJPA-267 - Support NUCCORE-1114
NUCREST-15 - Support NUCCORE-1112
NUCCASSANDRA-6 - Update AccessPlatform docs with Cassandra plugin info
NUCCASSANDRA-16 - Add log utility to show CQL statements with ? replaced by value
NUCCASSANDRA-20 - Support NUCCORE-1112
NUCCASSANDRA-22 - Support primitive wrappers
NUCCASSANDRA-26 - Support java.util.TimeZone
NUCEXCEL-68 - Support NUCCORE-1109
NUCEXCEL-70 - Support NUCCORE-1112
NUCJSON-44 - Support NUCCORE-1112
NUCHBASE-87 - Support NUCCORE-1109
NUCHBASE-88 - Support NUCCORE-1112
NUCLDAP-61 - Support NUCCORE-1112
NUCMONGODB-138 - Support NUCCORE-1109
NUCMONGODB-140 - Support NUCCORE-1112
NUCNEOFORJ-47 - Support NUCCORE-1112
NUCNEODATIS-29 - Support NUCCORE-1112
NUCODF-49 - Support NUCCORE-1109
NUCODF-51 - Support NUCCORE-1112
NUCRDBMS-753 - Support NUCCORE-1109
NUCRDBMS-754 - Remove deprecated JDBCUtils code
NUCRDBMS-755 - If DatastoreAdapter doesn’t support catalog/schema then don’t bother trying to find defaults from datastore connection
NUCRDBMS-756 - Support NUCCORE-1112
NUCRDBMS-761 - Move RDBMS plugin point schema definitions from "datanucleus-core" plugin.xml
NUCRDBMS-762 - NuoDB adapter updates
NUCXML-53 - Support NUCCORE-1112
NUCXML-54 - Add flexibility to ConnectionFactory to consider having different XSLT/DOM handlers
NUCSPATIAL-36 - Remove ESRI/ArcGIS and Linar/Jintegra code since was never really ready for release, no docs and no tests
NUCSPATIAL-37 - Drop OracleTypeInfo.SDO_GEOMETRY and move to geospatial
NUCSPATIAL-38 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)
NUCGUAVA-6 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)
NUCJODATIME-17 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)
NUCCACHE-38 - Support NUCCORE-1112
NUCCORE-1115 - TypeManager extraction of datastore type for a TypeConverter can fail when we are using an interface as the member type
NUCCORE-1134 - PrimaryKeyGenerator equals is incorrect in some situations
NUCCORE-1138 - L2 cache configuration not reset when getting ExecutionContext from pool
NUCRDBMS-758 - Wrong SQL generated for bulk fetch for queries with order by
NUCRDBMS-764 - Current handling of "datanucleus.connection.nontx.releaseAfterUse=false" is being applied to schema connections when shouldn’t
NUCRDBMS-765 - H2 DatastoreAdapter should have SEQUENCES as supported but doesn’t currently
NUCRDBMS-766 - ManagedConnection.getXAResource is always returning a new XAResource but should return the current resource
NUCRDBMS-768 - ResultClassROF because of generate field $jacocoData
NUCXML-55 - Setting the 'indent-number' attribute is incompatible with some external XSLT libraries.