Skip to main content

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 and provide-options goals. So if we want another listener to run before, we can set the timing to before process-base-options or before provide-options, whichever is most applicable.

Changed

  • The PostReadApplicationInstanceOptionCopier listener has been replaced with ApplicationInstanceOptionCopier, 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 to meta.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. (requires meta.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 migrate ioxml.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 than meta.xml.tagname.

2024.4.2 (2024-07-19)

Fixed

  • [NSX-497] Reverted addition of functional key name for TechnologyLexicon. 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 name
    • sortName: name used for sorting of expansion-resources
    • labels: any number of descriptive labels regarding the content and use of the resource
  • Added replaces field to ExpansionResource, which will be used to prune older artifacts during resolution.
  • Added isTransitive field to ExpansionResourceDependency. 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 and isTransitive 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 with isTransitive.

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 be default instead of public.
  • 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.13 (2024-06-12)

Fixed

  • Fixed modelWriter incorrectly writing null fields.

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 of 0.

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 ElementOptions when removeOption(String) is used.
  • Fixed XMLWriters exporting parentReference and domainName.

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 of Options.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.2 (2024-04-24)

Fixed

  • Fixed option merging not working in some circumstances.

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.2 (2024-01-09)

Fixed

  • Fixed issue with model-extensions due to changes in the metamodel

2024.0.1 (2024-01-09)

Fixed

  • existsIn() and where() 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 to true, 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() and asSimpleValueType() 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() and asSimpleValueType() methods from the ValueFieldTypeComposite.
    • ValueType can now be extended by other ontologies.

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 with includeClassPathDependencies 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 and hidden to OptionType.

Changed

  • Cascading options are now resolved recursively. Before only options defined on Program and Module elements would cascade.

2023.5.4 (2023-08-11)

Added

  • Added config elementRole to meta-metamodel.

2023.5.3 (2023-07-13)

Changed

  • Updated nsx-runtime from 2023.4.0 to 2023.5.0

2023.5.2 (2023-06-29)

Added

  • Added TaskOutcome to prime-metamodel.

2023.5.1 (2023-06-29)

Fixed

  • Added missing meta-core dependency to prime-metamodel.

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 to 2023.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 to true, 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 and validUntil 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 name status and type java.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() if buildModel() 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.1 (2023-04-12)

Added

  • Fixed issue with implicit name finder

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.3 (2023-02-08)

Fixed

  • Updated model-transmutations v1.2.4-SNAPSHOT -> v1.4.0

2023.0.2 (2023-02-01)

  • Re-release 2023.0.1

2023.0.1 (2023-02-01)

Fixed

  • Recovered logic defining UniqueConstraint::name

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