nsx-metamodels
2024.8.0 (2024-11-08)
Added
- ModelLoadingListeners can now define goals.
- ModelLoadingListeners can also define timing restrictions to run before or after a specific goal. When defined,
the listener will be placed before or after each listener with the target goal.
E.g. the OptionCascade listener has the
process-base-options
andprovide-options
goals. So if we want another listener to run before, we can set the timing tobefore process-base-options
orbefore provide-options
, whichever is most applicable.
Changed
- The
PostReadApplicationInstanceOptionCopier
listener has been replaced withApplicationInstanceOptionCopier
, which runs after the ConvertModelStep instead of the ReadModelStep. This means that ApplicationInstance options are no longer copied to the ApplicationTree. Instead, they will only appear on the ApplicationComposite.
Fixed
- Fixed a bug that caused the options of an ApplicationInstance to be copied to the Application when written.
This occurred mostly when using the
set-model-version
mojo of the expanders-maven-plugin.
2024.7.0 (2024-11-05)
Changed
- [ontology-metamodel-expanders] Renamed the
meta.element.extendable
option tometa.composite.extendable
to remain consistent with previous versions.
Fixed
- [ontology-metamodel-expanders] Fixed ExtendableComposite not correctly implementing its interface.
- [ontology-metamodel-expanders] Fixed extendable XmlWriter using File api instead of Path.
- [ontology-metamodel-expanders] Fixed various issues related to the
meta.*.extendable
option. - [ontology-metamodel-expanders] Fixed compile error in CompositeTree for
0..1
composition references. - [ontology-metamodel-expanders] Fixed XML containing
null
as text-content.
2024.6.0 (2024-09-25)
Added
- [ontology-metamodel-expanders] Added modelVersion field to Ontology. XSD namespaces now use modelVersion if it is defined.
Fixed
- [ontology-metamodel-expanders] Fixed DataResource type field in xsd, which was missing the ontology.
- [ontology-metamodel-expanders] Fixed issue causing non-persistent elements to not be filtered in CompositeToTree.
Changed
- [io-xml-runtime] ModelXmlWriter will now skip writing model files where the content hasn't changed to avoid introducing changes each time the version is updated.
2024.5.0 (2024-08-26)
Added
- [META-50] Reference has a dependsOn field that can list 1 or more other References. References are sorted so that References that depend on others are resolved after their dependencies.
Fixed
- Add backwards compatible logic for the
ioxml.ref.simple
option. (requiresmeta.compatibility.xml.legacyRefs
)
2024.4.5 (2024-08-07)
Changed
- DataResourceLoader can now use
origin.expansionResource.path
on the DataResource to load a file relative from a source directory, which is useful when running tests from IntelliJ.
2024.4.4 (2024-08-05)
Fixed
MigrateMetamodelApplication
transmutation did not migrateioxml.tagname
.- [NSX-505] Fixed sorting when one of the dependencies is replaced with a newer version.
2024.4.3 (2024-07-29)
Fixed
- Fixed concurrency issues with CompositeScannerFactory cache.
- Updated ontology expanders to use
meta.xml.tagName
as defined in option types rather thanmeta.xml.tagname
.
2024.4.2 (2024-07-19)
Fixed
- [NSX-497] Reverted addition of functional key
name
forTechnologyLexicon
. This was used without an explicit name historically, resulting in backwards compatibility issues.
2024.4.1 (2024-07-15)
Changed
- Changed
aggregate
references within the same ontology to be parent-child relations (for backwards compatability).
Fixed
- Fixed compile-issue in SpecBuilder for multivalued associations.
2024.4.0 (2024-07-12)
Added
- Added several descriptive fields to
ExpansionResource
:title
: human-friendly namesortName
: name used for sorting of expansion-resourceslabels
: any number of descriptive labels regarding the content and use of the resource
- Added
replaces
field toExpansionResource
, which will be used to prune older artifacts during resolution. - Added
isTransitive
field toExpansionResourceDependency
. Transitive dependencies can be pruned if it appears they are not needed.
Changed
- Improved dependency resolution algorithm to minimize the amount of resources that need to be fetched.
- The resolution algorithm now uses the
replaces
andisTransitive
fields to optimize the expansion-resource set. This should make it possible to start removing dependencies that are no longer needed. However, for this to work, each related expansion-resource will need to be updated to mark transitive dependencies withisTransitive
.
Fixed
- ElementClassCompositeToTree now removes several properties that were meant to be transient.
2024.3.15 (2024-07-03)
Fixed
- Fixed TreeInternal interface for abstract classes not defining 'extension' relations.
- Fixed ExtensionAdapter being expanded for abstract extensions for which no adapter should exist.
- Fixed missing getter for implicit name field on the Tree projection.
- Fixed XmlWriter compile issue when ElementClass has an implicit name.
- Fixed
getExtensionName()
method on abstract extensions to bedefault
instead ofpublic
. - Fixed abstract types in XSD to allow the
type
attribute to be added. - Added missing options on meta-metamodel and extendable elements, needed by plugin expansion and other metamodels.
2024.3.14 (2024-06-17)
Added
- Added profile
Metamodel Without Transmuters
for metamodels that do not require transmuters.
Changed
Fixed an issue where some expansion steps would run, even if the expansion does not use the new expanders.
- Introduced 2 new tags:
#meta.harvest.migrateFromApplication
: Activates migration of harvest code.#meta.harvest.mixedSourceFiles
: Activates ext file harvesting. Without this tag, ext files will not be harvested or expanded.
These tags have been added to the profiles Standard Metamodel
and Metamodel Without Transmuters
.
warning If you have any custom profiles, you need to add these 2 tags to keep the behaviour the same.
Fixed
- Fixed NPE in tag functions on root.
- Added loop detection to ElementTagResolver to prevent issue with recursive definitions.
2024.3.12 (2024-06-11)
Added
- Added XSD files to exported resources.
- Added xmlns to imported xsd types.
Fixed
- Fixed Extensions not having modelWriters.
2024.3.11 (2024-06-10)
Fixed
- Fixed issue where XML of abstract elements would be exported with a redundant namespace attribute for the type attribute.
Changed
- DataRefXmlReader classes now only expand if the class has any identifiers. This fixes a compile issue for
ElementClasses without identifiers when
meta.compatibility.xml.legacyRefs
is enabled. - ElementClass.parentReference is now set, even when the ElementClass has isGloballyUnique. This fixes some expansion issues for ElementClasses with isGloballyUnique.
2024.3.10 (2024-06-07)
Added
- Added some missing tasks for modules to the README expander.
Fixed
- Fixed compile-time issue in CompositeBuilders.
- Reverted default value of integers in metamodels to
null
instead of0
.
2024.3.9 (2024-06-07)
Added
- Added support for abstract non-collection fields to model builders.
- Added OptionType for
meta.xml.namespace
. - Added
group
attribute to ontology, which needs to be provided if it is to be imported in other metamodels.
Fixed
- Fixed model builders not removing
ElementOption
s whenremoveOption(String)
is used. - Fixed XMLWriters exporting
parentReference
anddomainName
.
2024.3.8 (2024-05-30)
- Re-release 2024.3.7 due to broken jenkins build.
2024.3.7 (2024-05-30)
- Re-release 2024.3.6 due to broken jenkins build.
2024.3.6 (2024-05-30)
Fixed
- Update model-transmutations to 2.4.1 to fix an issue with maven dependencies in metamodel projects.
2024.3.5 (2024-05-30)
Fixed
- Fixed issue with reading DataRefs to prime-core element in XML files of metamodels expanded with ontology-metamodel-expanders.
2024.3.4 (2024-05-29)
Fixed
- Moved prime-(core|test-support) dependencies up in expanded pom.xml files to prevent issues with class conflicts.
2024.3.3 (2024-05-28)
Fixed
- Fixed issue with extensions in
getDataRef()
method of Tree/Composite. - Fixed issue in CompositeFinder.
- Improved error message of DataRef parsing.
- Fixed dataRef specs when the specification is not a valid functional key.
- Fixed elementType of ModelExtension.
2024.3.2 (2024-05-27)
Added
- Added
export
element role, which is data that can also be written.
Fixed
- Fixed compatibility issue with elements model
- Fixed duplicate references in CompositeToTree and TreeToComposite
- Fixed issues with DataRef for extensions
- Fixed issues with DataRef methods for some edge-cases
- Fixed issues with extensions in XmlReader and XmlWriter
- Fixed XML Readers to be namespace aware. This also fixes an issue where the readers couldn't read XML with prefixes.
2024.3.1 (2024-05-24)
Fixed
- Set minimum java version for metamodels to 17.
- Fixed an issue with meta options on DataElement.
- Fixed a missing import for ModelLoadingContext in ElementSpecBuilder classes.
2024.3.0 (2024-05-23)
Changed
Added ontology-metamodel-expanders, which serves as a new iteration of the metamodel expanders. Several changes have been made from the metamodel-expanders:
- Expanders run directly on the ontology model. This means the GenerateMetamodelApplication transmuter is no longer required.
- As a result of the previous change, the expansion directory has changed to the name of the ExpansionMetamodel.
- Ontologies can now have versions. Imported ontologies without versions are interpreted as being expanded with the previous expanders versions.
- Ext file harvesting has been changed. There are no longer separate ext and gen directories. Instead, files are harvested if they were not expanded. A list of expanded artifacts is used to see which files were added after expansion.
- The expanded project has been simplified to reduce the number of maven modules.
- MappingContext has been changed to use
Optional
instead ofOptions.Option
. - Support for ValueFieldTypes in metamodels has been dropped.
- DataRefConverter classes for ElementClasses have been dropped in favor of method on the DataRef class.
- Support for creating specific Option elements, like DataOption, has been dropped.
- Most DataResources in the expanded project now use the new notation.
2024.2.3 (2024-04-30)
Fixed
- Fixed CompositeFactories not resolving for elementClasses with 'Composite' or 'Tree' in their name.
2024.2.1 (2024-04-24)
Fixed
- Fixed CompositeMerger so options are now merged correctly for DataResources.
2024.2.0 (2024-04-19)
Added
- Added
TestModelBuilder#buildProgram(ElementSpec, ProgramTypeSpec)
, which allows you to define the programType for your test.
2024.1.1 (2024-03-27)
Fixed
- Fixed NullPointerException in
ExpandableElementComposite.isInstance()
when ElementType is undefined.
2024.1.0 (2024-03-15)
Added
- Added ExpanderRelocation. This allows you to rename an Expander and/or change the artifactPath. Features and harvest will be remapped to the new locations.
Fixed
- Improved XSD's of Expanders, Features and ExpansionSteps by making several fields optional.
2024.0.4 (2024-01-11)
Added
- Extendable composites will now be provisioned with empty lists for ModelExtensions that were not initialized.
This prevents issues with null values when using
composite.extensions['MyExtension']
. Only works for ModelExtensions that are known to the DataRegistry.
Fixed
- Moved reading of settings directories to ExtractResourcesStep, so it can be referenced in the expansionSettings.xml.
- Fixed an issue where technologies in a TechnologyStack would not be merged with technologies from DataResources.
2024.0.3 (2024-01-10)
Fixed
- Revert change in TechnologyLexicon which caused it to require a name, causing it to be ignored in some cases if it does not have a name.
2024.0.1 (2024-01-09)
Fixed
existsIn()
andwhere()
now resolve to false instead of throwing an exception if the property does not exist- Updated xsd's of Expander, Feature and AdditionalExpansionStep
2024.0.0 (2024-01-09)
Added
- Added ElementTag, ElementTagType and ElementTagRule to elements.
Fixed
- [NSX-403] Fixed issue with writing SimpleValueTypes, which could cause transmuters to fail.
2023.12.0 (2023-12-12)
Changed
- PrimeDataLoader will now throw an Exception if the same expansion-resource is found twice in the classPath. These cases are probably caused by accidental inclusion of an expansionResource.xml in the wrong jar.
2023.11.1 (2023-12-06)
Merge with 2023.4.0.2
2023.11.0 (2023-12-06)
Added
- Added System property
expanders.model.force
. When set totrue
, issues with OptionTypes will be ignored. This feature is provided to support expansion of an earlier project version, it should not be used in day-to-day use. - Added parameter manifestFile to ExpansionResourceManifestGenerator to export to a different file.
- Added constructor to TestModelBuilder which takes a ModelLoaderFactory. This provides a way for expander test libraries to control how the ModelLoader is built.
2023.10.1 (2023-11-29)
Reverted
- Returned
isSimpleValueType()
andasSimpleValueType()
methods to ValueFieldTypeComposite, since it was already used in some expansion-resources.
2023.10.0 (2023-11-29)
Added
- Added compatability to make abstract element types expandable.
- Added implementation for abstract types to be an extension.
- Added spec extension support for model extensions.
- Added OptionType definitions for several metamodel options.
- Added elementType reference to AdditionalExpansionStep. Resolved similarly to
Expander.elementType
.
Changed
- Prime-core now targets java 17
- Option hasParentElement is now an alias for
meta.element.parent
. - Expander composites now resolve both elementTypeName and elementType.
- ValueType is now no longer sealed.
- This removed the
isSimpleValueType()
andasSimpleValueType()
methods from the ValueFieldTypeComposite. - ValueType can now be extended by other ontologies.
- This removed the
Fixed
- ReferenceToParentRule now takes inherited attributes into account.
2023.9.6 (2023-11-22)
Fixed
- The
GenerateMetamodelApplication
transmutation did not retain descriptions when converting attributes to fields. - Fixed an issue where options used within data-resources would not resolve correctly, causing warnings about alias and disappearing options.
2023.9.5 (2023-11-15)
Fixed
- [VEGA-358] Added linkFieldTypes to prime-core, with correct dataType and updated description.
2023.9.4 (2023-11-15)
Erroneous release
2023.9.3 (2023-11-08)
Changed
- Replaced
metamodel-runtime
library withincludeClassPathDependencies
functionality.
2023.9.2 (2023-10-23)
Fixed
- Cleaned up elements and expansionControl ontologies to use them in the new micro-radiant expansion.
2023.9.1 (2023-10-11)
Revert
- Revert removing
SchemaOptionsCompleter
. This change does not work with expander versions < 5.36.0.
2023.9.0 (2023-10-11)
Added
- Added
getAllAttributes()
to ElementClass, which includes inherited attributes. - References and OppositeReferences of an ElementClass now include inherited properties.
Removed
- Removed uses of deprecated methods in expander templates:
net.palver.util.StringUtil.join()
net.palver.util.StringUtil.split()
Fixed
- Added option
meta.component.imports
to define which metamodel components are imported. These are then not expanded.
2023.8.0 (2023-09-22)
Removed
- Removed SchemaOptionsCompleter, database option consolidation is handled in a ModelLoadingListener instead.
2023.7.1 (2023-09-22)
Fixed
- Explicitly added JAVA_EE and JAKARTA_EE technologies, so Applications can be loaded even without the latest nsx-default-stack.
Added
- Added ontologies to meta-metamodel expansion-resource.
2023.7.0 (2023-09-21)
Added
- Added logic to provide JAKARTA_EE or JAVA_EE logic depending on the jeeVersion (resp.
>=9
or<9
) in TechnicalInfrastructure.
2023.6.1 (2023-09-09)
- Re-release of
2023.6.0
.
2023.6.0 (2023-09-07)
Added
- Added ArtifactImportStrategy. This strategy can be referenced in expander mapping files to decide how imports are resolved.
- Added TechnologyLexicon element, which contains a number of CoordinateRedirections. These are used to redirect imports in artifacts towards a new coordinate. E.g. when a library changes the packages of classes, this can be used to map them correctly.
- Added attributes
redundant
,documentationLink
andhidden
to OptionType.
Changed
- Cascading options are now resolved recursively. Before only options defined on Program and Module elements would cascade.
2023.5.0 (2023-06-28)
Added
- Added missing optionTypes for valueType migration.
Added metadata to Composites of Module elements:
module.model.path
: the location of the root file.module.model.modelDirectory
: the modelDirectory of the modules.module.model.modelResource
: present if they were loaded from a modelResource.
Changed
- Replaced elements-metamodel with prime-metamodel, which now includes the elements and expansionControl ontologies. Before this version, elements-metamodel contained ontologies designed solely to model against. But prime-metamodel is now stable enough to use instead and is actually related to the content of prime-core.
2023.4.1 (2023-06-19)
Fixed
- [metamodel-expanders] Removed rootDirectory configuration in expansionResource builds.
- [metamodel-expanders] Added exclusion for prime-core in test-support jars.
Changed
- Renamed DataClassShouldHaveIdentifier to DataClassShouldHaveIdentifierRule
- Updated nsx-runtime from
2023.1.1
to2023.3.0
2023.4.0.2 (2023-12-06)
[VEGA-354] Backport fix from 2023.11.0:
- Added System property
expanders.model.force
. When set totrue
, issues with OptionTypes will be ignored. This feature is provided to support expansion of an earlier project version, it should not be used in day-to-day use.
2023.4.0.1 (2023-12-05)
nothing changed
2023.4.0 (2023-05-31)
Fixed
- [important] Fixed a bug that causes options with
alwaysEnabled
andvalidUntil
to be added, but also be checked for expiration. This combination can cause projects to not be able to expand after the deadline, regardless of setting.
Changed
- Applied the flatten plugin to primeMetamodel and metaMetamodel projects to provide cleaner pom.xml files.
Removed
- Removed logic that automatically added the option
isStatusField
to fields with the namestatus
and typejava.lang.String
. The option now needs to be explicitly added.
Added
- Added SCM information to deployed pom.xml artifacts.
2023.3.4 (2023-05-25)
Added
- Added several validation rules for ontologies
Fixed
- Fixed test model builder for ontologies (couldn't find ontology in expansionMetaModel)
- Fixed ExtractClasspathResourcesStep for multiple DataResources with the same Classpath location (used in tests)
2023.3.3 (2023-05-23)
Changed
- Changed PrimeDataLoader so that it loads DataResources directly from their source jar instead of the classpath. This prevents issues with DataResources that overlap in the classpath.
2023.3.2 (2023-05-17)
Changed
- Moved ValueType prototype resolution to convertModel step. This should fix some warnings during expansion.
2023.3.1 (2023-05-11)
Added
- Added warning for expanders when retrieving nativeTypes or restrictions when inheritance has not been resolved.
Fixed
- Fixed an issue in SimpleValueTypeCompositeToTree when inheritance was not resolved (e.g. in Micro-Radiant)
2023.3.0 (2023-05-10)
Added
- Added DataResource registration that does not require a
_data.xml
file, instead it looks for files with dataResource as root tag. - Added DataResourceValidator to validate data-resources.
Fixed
- Fixed NullPointerException in
TestModelBuilder#extendModel()
ifbuildModel()
was not used.
2023.2.3 (2023-04-20)
Removed
- Removed options that expired on 2023-04-07:
legacy.valueFieldType.hashCodeMethod.disable
2023.2.2 (2023-04-20)
Fixed
- Fixed issue in DelegatingDataResourceLoader that caused data to start leaking in tests./
2023.2.0 (2023-04-12)
Added
- Added ArtifactListener element. ArtifactListeners can be registered to add logic before/after writing each Artifact.
- DataResources can now skip the elementTypeCanonicalName and instead define a type attribute on the root XML.
The type should be the elementType reference (e.g.
elements::Technology
).
Fixed
- Removed Time ValueType
- Added Text ValueType for creating String types that have no limit
2023.1.2 (2023-03-31)
Added
- Added CustomRestriction for ValueTypes
- Added find logic in TestModelBuilder that uses CompositeScanners. This means
buildModelAndFind()
now supports elements that do not reference their composition parent in their functional key (globallyUnique)
Fixed
ValueTypes
- Fixed SimpleValueType CompositeToTree so that inherited properties aren't exported.
- Fixed an issue causing String SimpleValueType to be missing nativeTypes.
Metamodels
- Fixed issues with elements that have a composition Reference to themselves.
- Fixed import from directory causing elements from within the file to be overwritten
2023.1.1 (2023-03-20)
Fixed
- Fix export of ValueField so that it only exports type if that was the original representation in the file
- Fix NullPointerException in FieldCompositeEnricher
2023.1.0 (2023-03-20)
Added
Added ValueType to replace ValueFieldType
- ValueType currently has a single subclass SimpleValueType
- SimpleValueTypes have NativeTypes to represent specific types native to a technology
- SimpleValueTypes also have Restrictions to represent constraints, such as string length etc.
ModelLoadingListeners ValueTypeToValueFieldTypeConverter and ValueFieldTypeToValueTypeConverter keep ValueFieldTypes and ValueTypes synchronized. This should keep both expanders based on ValueFieldTypes and on ValueTypes running.
2023.0.2 (2023-02-01)
- Re-release 2023.0.1
2023.0.0 (2023-01-31)
- merged prime-core 2022.11.x changes
2022.12.0-alpha-2 (2022-12-07)
Added
- Added ElementType methods on TreeProjection
- Added superType and isAbstract to ElementType Data Resources
- Added
oppositeField
to LinkField
Fixed
- Added missing implementation for
newCompositeEnricher()
on CompositeFactories - Implemented multi-level inheritance of attributes and references
2022.12.0-alpha-1 (2022-11-30)
Changed
- merged prime-core, metamodel-stack and meta-metamodel into nsx-metamodels repository
- merged several metamodel-stack expansion-resources into metamodel-expanders
Added
- Added support for inheritance in metamodels. You can assign a superClass for each ElementClass. That superClass needs to have isAbstract enabled
- Added isSealed. Sealed ElementClasses can be inherited from, but only from within the same Ontology.
Removed
- Removed id field from Composites and Trees
- Removed element-stubs expansion-resource