Released on 2022-06-04
-
[NEW] Migrate Wiki Pages to Antora
-
[UPD]
org.eclipse.emf.compare: 3.3 -
[UPD]
hbase.version: 2.4.2 -
[UPD]
hadoop.version: 3.0.3 -
[UPD]
de.flapdoodle.embed.mongo: 3.0.0
Released on 2019-03-21.
IMPORTANT NOTE: Due to significant changes in data mapping, databases created with a previous version are not compatible with this release. No migration helper is provided: the simplest way to transfer the old databases to the new ones, is to export the database into an XMI file and re-import it.
NOTE: The changelog of this version is not exhaustive and regroup only major changes.
-
[NEW] Use
ServiceLoaderand OSGI Services to retrieve implementations ofConfig,BackendFactoryandUriFactory -
[NEW]
Idinstances are created by anIdProviderinstead of static methods -
[UPD]
Id`s use a `longrepresentation, or a 64-bits word. They can be converted to a hexadecimal string and vice versa to maintain compatibility withBackend`s that don’t support `long -
[UPD] The hasher used to generate new
Idfrom a value is now xxHash that provides better performance than MurmurHash3 -
[UPD] Features are identified by their
EStructuralFeature#getFeatureId()instead of their name (seeFeatureBean)
-
[NEW] Introduce the new
DataMapperlayer to manipulate elements as key/value pairs. They are presented as several interfaces and each have their responsibility:-
ContainerMapper: manage the container of elements (represented byContainerBean) -
ClassMapper: manage the meta-class of elements (represented byClassBean) -
ValueMapper: manage single-valued attributes of elements (identified bySingleFeatureBean) -
ReferenceMapper: manage single-valued references between elements (identified bySingleFeatureBean) -
ManyValueMapper: manage multi-valued attributes of elements (identified byManyFeatureBean) -
ManyReferenceMapper: manage multi-valued references between elements (identified byManyFeatureBean)
-
-
[NEW] Several default mappings have been implemented to process references as attributes after a conversion, or to manage data with indices, arrays, lists, or with a custom way. They are presented as interfaces to allow a combination of several mappings. For example, you can combine:
ReferenceAs<String>,MergeManyReferenceAs<String>andManyValueWithLists. These mappings are optional -
[NEW] A generic
DefaultTransientBackendhas been created to handle transient elements in memory: CustomTransientBackend`s are no longer necessary, but this requires the `neoemf-iomodule to transfer the transient content to aPersistentBackend -
[NEW] `URI`s are now created with factories instead of static methods
-
[UPD] Complete optimization of all existing database adapters
-
[UPD] `Backend`s are auto-closed when the JVM is shutting-down
-
[UPD]
StoreAdapterbecome the onlyEStoreimplementation, and provides a bridge between EMF and `DataMapper`s -
[UPD] All
Backend`s and `Store`s inherit from the `DataMapperarchitecture -
[UPD] Back-end configuration have been merged, updated and simplified
-
[UPD] Configuration is now managed with a simple
Propertiesfile (may change in the near future) -
[UPD]
PersistentResourceare no longer linked to their `Backend`s, prefer using `Store`s -
[UPD]
BackendFactory#createBackend()take aURIas parameter instead of aFileto handle distributedPersistentBackend -
[DEL] All backend-specific implementations of
PersistentStorehave been merged with those atcore-level -
[DEL]
InvalidStorehas been replaced byInvalidBackend -
[DEL]
TransientStore`s have been removed and replaced by `BoundInMemoryBackend(a lightweight and shared version of anDefaultInMemoryBackend)
-
[NEW]
BackendFactory`s are automatically registered at runtime (no need to explicitly register them in the `ResourceSetregistry) -
[NEW]
BackendFactory`s are linked to their associated `UriFactoryandConfigwith annotations which are processed at runtime: aUriFactoryorConfigcan be retrieved from their association -
[NEW] Stores and mappings are created by using reflection in
BackendFactoryto allow customizations (defined withConfig) -
[NEW]
URI`s are automatically created according to a common prefix ("neo-") and the lowercase name of their associated `BackendFactory
-
[NEW] The direct-import becomes generic and works with all implementations
-
[NEW] The direct-export is fully implemented, and is possible to an XMI file (compressed or not), or another
DataMapper
-
[NEW] Add batch methods
getAll,setAll,… in addition toget,set,… to avoid multiple call -
[UPD] `BlueprintsBackend`s labels has been simplified by one-letter labels
-
[UPD] The default chunk of
AutoSaveStoreis processed automatically from the total amount of memory -
[UPD] Map-based
Serializer`s have been replaced by generic serializers (the implementation is located in `atlanmod:commons-coreand use FST)
-
[NEW] All mappings have a code coverage of ~100% to ensure the expected behavior of future implementations
-
[NEW] HBase is now integrated in tests by using an Hadoop mini-cluster (requires Cygwin on Windows)
-
[UPD] Test helpers have been merged and simplified: now only a link to
Contextis needed for multi-backend tests -
[UPD] Models used in
iotest-cases are now generated with Maven during the compilation -
[UPD] Tests have been migrated to JUnit5
-
[NEW] Use
NEOEMF_HOMEsystem variable to locate the base benchmark directory -
[UPD] The NeoEMF database are created using the
ioimporter instead of the standard importer -
[NEW]
Store`s can be configured in benchmarks, with the `sparameter -
[UPD]
Adapter`s are configured with the `aparameter (previouslyb)
-
[NEW]
FeatureMapsupport (still not supported by theneoemf-iomodule) -
[NEW] Some methods use
Optionalinstead of a comparison tonull -
[UPD] Complete review of EMF collections to handle massive iterations
-
[FIX] Issue #11: The
LoggingStoreDecoratornow use a dedicatedLoggerfor its associatedBackend -
[FIX] Issue #12: The stores are updated according to the EMF calls, so that the backends are always synchronized. There is no longer custom processing during
set()andadd() -
[FIX] Issue #15: The
blueprints.*.directoryproperty is overwritten in all cases by the current path: If a datastore already exists, then this property is updated with the new path, otherwise, the property stay unchanged. -
[FIX] Issue #27/#28:
Store`s are no longer copied when the associated `Resourceis unloading: AResourceshould not be called if it’s not loaded -
[FIX] Issue #57: The
Cache<Id, PersistentEObject>is now common for all implementations -
[FIX] Issue #58:
guavadependencies are no longer used in the project -
[FIX] Issue #63:
BasicReference`s are first processed as `BasicAttribute`s when reading, then redirected in `EcoreProcessorwhich has access to its real type with theEPackage -
[FIX] Issue #64: If an
Idis not found in `Backend`s, then an empty array is returned -
[FIX] Issue #70: The
LazyMatchEngineclass has been removed -
[FIX] Issue #71:
BoundInMemoryBackendare registered in a local registry to ensure that the features can be retrieved even if the associatedPersistentEObjectis freed from memory -
[FIX] Issue #72: Ignore the uniqueness check of identifiers when creating a new
Vertex -
[FIX] Issue #73: The
neoemf-data-map-coremodule no longer exists -
[FIX] Issue #75: The
iomodule now use theDataMapperstructure, and not a custom implementation -
[FIX] Issue #77: Errors are intercepted and displayed in Eclipse UI
-
[FIX] Issue #78: Improve the
NullPointerExceptionmessage -
[FIX] Issue #80:
DefaultPersistentEObject.toString()throws aStackOverflowErroronEClassinstances -
[FIX] Issue #84: `FeatureMap`s was not supported
-
[UPD]
PersistenceBackendFactorybecomeBackendFactory: they also create `TransientBackend`s -
[UPD]
OptionsBuilderbecomeConfig -
[UPD]
PersistenceURIbecomeUriFactory: static methods have been replaced by this factory -
[UPD]
PersistentStorebecomeStore: they don’t have any state, so the "Persistent" prefix does not make sense -
[UPD]
FeatureKeybecomeSingleFeatureBean -
[UPD]
MultiFeatureKeybecomeManyFeatureBean -
[UPD]
MetaclassValuebecomeClassBean -
[UPD]
ContainerValuehas been merged withSingleFeatureBean
-
[NEW]
chronicle-map:3.17.0 -
[UPD]
com.sleepycat:je:5.0.73to18.3.12(BerkeleyDB) -
[UPD]
mapdb:3.0.5to3.0.7 -
[UPD]
org.eclipse.emf:2.12.0to2.15.0(including associated dependencies) -
[UPD]
cglib:3.2.4to3.2.10 -
[UPD]
log4j:2.7to2.11.1 -
[UPD]
org.neo4j:1.9.6to2.1.8(includeblueprints-neo4j-graphtoblueprints-neo4j2-graph) -
[DEL]
junit: No longer needed, managed byatlanmod:commons-core(5.0.3+) -
[DEL]
assertj: No longer needed, managed byatlanmod:commons-core(3.9.0+) -
[DEL]
mockito: No longer needed, managed byatlanmod:commons-core(2.13.0+) -
[DEL]
caffeine: No longer needed, managed byatlanmod:commons-core(2.6.0+) -
[DEL]
guava: No longer needed -
[DEL]
commons-collections4: No longer needed -
[DEL]
commons-configuration: No longer needed -
[DEL]
commons-io: No longer needed -
[DEL]
commons-lang3: No longer needed
Released on 2017-05-21.
-
[NEW] Add experimental EMF Compare integration (will stay experimental as long as Guava issues remain)
-
[FIX] Issue #53: WildCardType
?in sample (MapDB) throws an exception when accessed in the Editor -
[FIX] Issue #54:
AbstractDirectWrite#toArray()is not efficient -
[FIX] Issue #55:
DefaultPersistentEObject#eContainer()is not efficient -
[FIX] Issue #56: Unnecessary backend lookups in
PersistentStore#eObject(Id) -
[FIX] Issue #68: Creating contained objects with Epsilon does not work
Release on 2017-01-16.
-
[UPD]
datastorepackages becomedata -
[UPD] Back-end implementations are now placed under the
fr.inria.atlanmod.neoemf.datapackage -
[UPD]
graphpackage is replaced bydata: no more structural differentiation in the package structure -
[UPD]
Mapclasses representing the MapDB implementation are replaced byMapDb
-
[UPD] Contextualization of tests: One test-case can be executed by several back-end implementations according to the current
Context -
[UPD] Test-cases are now tagged
-
[UPD] Preparation of tests for a future integration of JUnit 5
-
[UPD] Externalization JUnit `Rule`s
-
[UPD] Reorganization of
@After/@Beforemethods -
[UPD]
Allclasses becomeAbstract -
[DEL] Remove
NeoAssertionsclass and its related custom `Builder`s
-
[NEW] Addition of new JavaDoc tags:
@futureand@note -
[UPD] JavaDoc has been completely revised and completed.
-
[NEW] Addition of new common annotations:
@VisibleForTestingand@Experimental -
[UPD]
ClassInfoandContainerInfohave now static constructor methods:from()andof() -
[UPD]
Loggeris now fully-concurrent and extensible: We can use different parallel `Logger`s. However, these loggers keep the call order. -
[UPD] Generalization of
PersistenceURIand its sub-classes -
[UPD] Generalization `BundleActivator`s
-
[FIX] Issue #51: Concurrent
ExecutorinLoggerdid not stop with the JVM -
[FIX] Issue #52: Partial fix with a
try…catch