add neo4j persistance for documentation graph#134
Conversation
…y inversion (ardoco.core.common does not depend on neo4j-schema, only the other way around)
…aused some problems)
…celinks don't match yet
…gh successfully, but is still very slow.
…est for the TransArcPipeline
… ConnectionStateImpl.java vs. CodeTraceabilityStateImpl.java when running the Arcotl pipeline. In this version persistence of the Tracelinks generated in the pipelines ArDoCode, Swattr, TransArc and Arcotl is working according to TraceLinkPersistenceTest.java
…fault value false to be able to run the ardoco pipeline without needing to store the models, tracelinks and inconsistencies in the neo4j database
|
There was a problem hiding this comment.
Pull request overview
This PR adds a Neo4j-backed persistence layer for ARDoCo models, documentation graphs, trace links, and inconsistencies, and wires it into selected TLR/ID pipelines through a shared persistence bridge.
Changes:
- Adds a new
core/neo4j-schemamodule with Neo4j entities, repositories, mappers, services, Spring Boot activation, and tests. - Extends core model APIs with reconstruction constructors and adds
PersistenceBridge/PersistenceHandlerintegration in shared state/helper classes. - Adds integration tests and pipeline setup changes for Neo4j-backed persistence across documentation, architecture, code, trace link, and inconsistency flows.
Reviewed changes
Copilot reviewed 124 out of 131 changed files in this pull request and generated 17 comments.
Show a summary per file
| File | Description |
|---|---|
pom.xml |
Adds Spring Boot and Testcontainers BOM management. |
sample.env |
Adds Neo4j connection and persistence toggle variables. |
core/pom.xml |
Includes the new neo4j-schema module in core profiles. |
core/neo4j-schema/pom.xml |
Defines the new Neo4j schema module and dependencies. |
core/neo4j-schema/src/main/resources/application.properties |
Adds Neo4j/Spring Data configuration defaults. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/Main.java |
Adds Spring Boot entry point for Neo4j schema context. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/Neo4jBridgeActivator.java |
Registers the Neo4j persistence handler with the static bridge. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/Neo4jInitializer.java |
Creates Neo4j indexes on startup. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/Neo4jPersistenceHandler.java |
Implements persistence handler operations via Neo4j services. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/adapter/Neo4jPhrase.java |
Adds Neo4j-backed Phrase adapter. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/adapter/Neo4jSentence.java |
Adds Neo4j-backed Sentence adapter. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/adapter/Neo4jText.java |
Adds Neo4j-backed Text adapter. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/adapter/Neo4jTextInconsistency.java |
Adds adapter for persisted text inconsistencies. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/adapter/Neo4jWord.java |
Adds Neo4j-backed Word adapter. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/ModelEntityNode.java |
Adds base model entity node structure. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/architectureModel/ArchitectureComponentNode.java |
Adds architecture component node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/architectureModel/ArchitectureInterfaceNode.java |
Adds architecture interface node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/architectureModel/ArchitectureItemNode.java |
Adds base architecture traceable node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/architectureModel/ArchitectureMethodNode.java |
Adds architecture method node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/architectureModel/ArchitectureModelNode.java |
Adds architecture model aggregate node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/ClassUnitNode.java |
Adds class unit node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/CodeAssemblyNode.java |
Adds code assembly node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/CodeCompilationUnitNode.java |
Adds compilation unit node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/CodeItemNode.java |
Adds base code item traceable node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/CodeModelNode.java |
Adds code model aggregate node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/CodeModuleNode.java |
Adds code module node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/CodePackageNode.java |
Adds code package node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/ControlElementNode.java |
Adds control element node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/DatatypeNode.java |
Adds datatype relationship node base. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/codeModel/InterfaceUnitNode.java |
Adds interface unit node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/documentation/DependencyRelationship.java |
Adds word dependency relationship properties. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/documentation/PhraseNode.java |
Adds documentation phrase node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/documentation/SentenceNode.java |
Adds sentence traceable node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/documentation/TextNode.java |
Adds text aggregate node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/documentation/WordNode.java |
Adds word node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/inconsistencies/ArchitectureType.java |
Adds persisted traceable type enum. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/inconsistencies/InconsistencyNode.java |
Adds base inconsistency node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/inconsistencies/InconsistencyNodeVisitor.java |
Adds inconsistency node visitor contract. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/inconsistencies/ModelInconsistencyNode.java |
Adds model inconsistency node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/inconsistencies/TextInconsistencyNode.java |
Adds text inconsistency node. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/tracelink/TraceableNode.java |
Adds base traceable node with trace links/inconsistencies. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/tracelink/TraceLinkRelationship.java |
Adds trace link relationship properties. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/tracelink/TraceLinkType.java |
Adds persisted trace link type enum. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/entities/tracelink/TransitiveChainQueryResult.java |
Adds projection for transitive trace link chains. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/mapper/ArchitectureModelMapper.java |
Maps architecture models between domain and Neo4j nodes. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/mapper/CodeModelMapper.java |
Maps code models between domain and Neo4j nodes. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/TraceableNodeRepository.java |
Adds traceable node lookup repository. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/architectureModel/ArchitectureModelRepository.java |
Adds architecture model repository. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/codeModel/CodeItemRepository.java |
Adds code item repository. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/codeModel/CodeModelRepository.java |
Adds code model deletion repository queries. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/documentation/SentenceNodeRepository.java |
Adds sentence lookup repository. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/documentation/TextNodeRepository.java |
Adds text lookup and deletion repository. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/inconsistencies/InconsistencyNodeRepository.java |
Adds inconsistency persistence queries. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/repository/tracelink/TraceLinkRepository.java |
Adds trace link persistence queries. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/service/ArchitecturePersistenceService.java |
Adds architecture model persistence service. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/service/CodePersistenceService.java |
Adds code model persistence service. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/service/DocumentationPersistenceService.java |
Adds documentation text persistence service. |
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/service/InconsistencyPersistenceService.java |
Adds inconsistency persistence service. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/AbstractNeo4jTest.java |
Adds shared Neo4j Testcontainers base test. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/DebuggingNeo4jTests.md |
Adds Neo4j test debugging notes. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/InconsistencyPersistenceTest.java |
Tests inconsistency persistence. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/IndexTest.java |
Tests index initialization. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/FakeArchitectureEntity.java |
Adds test fake architecture entity. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/models/ArchitectureModelEqualityHelper.java |
Adds architecture model test equality helper. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/models/ArchitectureModelFactory.java |
Adds architecture model test factory. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/models/CodeModelEqualityHelper.java |
Adds code model test equality helper. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/models/CodeModelFactory.java |
Adds code model test factory. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/models/TextEqualityHelper.java |
Adds text test equality helper. |
core/neo4j-schema/src/test/java/io/github/ardoco/core/neo4jschema/util/models/TextFactory.java |
Adds text test factory. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ArchitectureComponentModel.java |
Adds ID-aware constructor and ID behavior changes. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ArchitectureModel.java |
Adds ID-aware base constructors. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ArchitectureModelWithComponentsAndInterfaces.java |
Adds ID-aware reconstruction constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/CodeModel.java |
Adds ID-aware code model constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/CodeModelWithCompilationUnits.java |
Adds ID-aware constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/CodeModelWithCompilationUnitsAndPackages.java |
Adds ID-aware constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/Metamodel.java |
Adds isCodeModel() helper. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/Model.java |
Allows explicit model IDs for reconstruction. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/ModelStates.java |
Integrates model storage/loading with persistence bridge. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/architecture/ArchitectureMethod.java |
Adds explicit-ID constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/ClassUnit.java |
Adds explicit-ID constructor and content mutation helper. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/CodeAssembly.java |
Adds explicit-ID constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/CodeCompilationUnit.java |
Adds explicit-ID constructor and extension accessor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/CodeItem.java |
Adds explicit-ID base constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/CodeItemRepository.java |
Makes repository accessors public for mapping. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/CodeModule.java |
Adds explicit-ID constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/CodePackage.java |
Adds explicit-ID constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/ComputationalObject.java |
Adds explicit-ID constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/ControlElement.java |
Adds explicit-ID constructor. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/Datatype.java |
Adds explicit-ID constructor and null-safe reference lookup. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/models/code/InterfaceUnit.java |
Adds explicit-ID constructor and content mutation helper. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/stage/connectiongenerator/ConnectionState.java |
Loads persisted sentence-model links in connection state. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/tracelink/TransitiveTraceLink.java |
Adjusts transitive trace link equality. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/persistence/PersistenceBridge.java |
Adds static persistence bridge and configuration toggle. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/persistence/PersistenceHandler.java |
Adds persistence handler API. |
core/framework/common/src/main/java/edu/kit/kastel/mcse/ardoco/core/common/util/DataRepositoryHelper.java |
Persists/loads annotated text through persistence bridge. |
core/pipeline-core/src/main/java/edu/kit/kastel/mcse/ardoco/core/api/output/ArdocoResult.java |
Reads text through DataRepositoryHelper. |
inconsistency-detection/pipeline-id/src/main/java/edu/kit/kastel/mcse/ardoco/id/execution/runner/InconsistencyDetection.java |
Applies persistence bridge configuration in setup. |
inconsistency-detection/stages-id/inconsistency-detection/src/main/java/edu/kit/kastel/mcse/ardoco/id/InconsistencyStateImpl.java |
Persists and loads inconsistencies via bridge. |
tlr/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/execution/Arcotl.java |
Applies persistence bridge configuration. |
tlr/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/execution/Ardocode.java |
Applies persistence bridge configuration. |
tlr/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/execution/Artemis.java |
Applies persistence bridge configuration. |
tlr/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/execution/Swattr.java |
Applies persistence bridge configuration. |
tlr/pipeline-tlr/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/execution/Transarc.java |
Applies persistence bridge configuration. |
tlr/stages-tlr/code-traceability/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/codetraceability/CodeTraceabilityStateImpl.java |
Persists/loads code traceability links. |
tlr/stages-tlr/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/connectiongenerator/ConnectionStateImpl.java |
Persists sentence-architecture links from recommendations. |
tlr/stages-tlr/connection-generator/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/connectiongenerator/informants/NameTypeConnectionInformant.java |
Minor formatting/license update. |
tlr/stages-tlr/model-provider/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/models/informants/ModelProviderInformant.java |
Adds persistence-related TODO comment. |
tlr/stages-tlr/recommendation-generator/src/main/java/edu/kit/kastel/mcse/ardoco/tlr/recommendationgenerator/informants/NameTypeInformant.java |
Caches metamodel-to-model lookups before processing words. |
tlr/tests-tlr/pom.xml |
Adds Neo4j/Spring/Testcontainers test dependencies and Surefire config. |
tlr/tests-tlr/src/test/resources/application.properties |
Adds test Neo4j/Spring Data properties. |
tlr/tests-tlr/src/test/resources/teastore/inconsistencyConfig.txt |
Adds/updates inconsistency test configuration resource. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/AbstractPersistenceTest.java |
Adds shared Neo4j-backed TLR persistence test base. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/ArchitecturePersistenceTest.java |
Adds architecture persistence integration tests. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/CodePersistenceTest.java |
Adds code persistence integration test. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/DocumentationPersistenceTest.java |
Adds documentation persistence integration tests. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/InconsistencyPersistenceTest.java |
Adds inconsistency pipeline persistence tests. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/README_TEST_DEBUG.md |
Adds Neo4j test debugging note. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/TraceLinkPersistenceTest.java |
Adds trace link pipeline persistence tests. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/util/ArchitectureModelEqualityHelper.java |
Adds architecture model equality test helper. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/util/CodeModelEqualityHelper.java |
Adds code model equality test helper. |
tlr/tests-tlr/src/test/java/edu/kit/kastel/mcse/ardoco/tlr/tests/neo4jschema/util/TextEqualityHelper.java |
Adds text equality test helper. |
Comments suppressed due to low confidence (2)
core/neo4j-schema/pom.xml:78
- This Testcontainers dependency is used only by tests but is added without
testscope, so consumers of theneo4j-schemamodule inherit Testcontainers artifacts on their main classpath. Mark it astestscope like theorg.testcontainers:neo4jdependency above.
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
</dependency>
core/neo4j-schema/src/main/java/io/github/ardoco/core/neo4jschema/Neo4jPersistenceHandler.java:186
- Deleting one preprocessed text removes all sentence-based trace links and all text inconsistencies before deleting the requested document. In a database containing multiple persisted texts, removing one identifier will wipe links/inconsistencies for the others as well. Scope the cleanup to sentences belonging to the given
identifierinstead of deleting by relationship type globally.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| id: randomUUID(), | ||
| modelArdocoId: $uid, | ||
| reason: $reason, | ||
| type: "TextEntityAbsentFromModel" |
| OPTIONAL MATCH (s)-[:CONTAINS_WORD|HAS_ROOT_PHRASE|DEPENDENCY|HAS_CHILD_PHRASE*0..3]->(child) | ||
| DETACH DELETE t, s, child |
| @Query("MATCH (m:CodeModel {metamodel: $mt})" + "OPTIONAL MATCH (m)-[:CONTAINS_CODE_ITEM|CONTAINS_CODE_ROOT|HAS_REPOSITORY_ITEM|EXTENDS|IMPLEMENTS|REFERENCES_DATATYPE*0..]->(child)" + "DETACH DELETE m, child") | ||
| void deleteByMetamodel(@Param("mt") String metamodel); |
| spring.neo4j.authentication.username=${NEO4J_USERNAME:neo4j} | ||
| spring.neo4j.authentication.password=${NEO4J_PASSWORD:password} | ||
|
|
||
| ardoco.neo4j.enabled=${NEO4J_ENABLED:true} |
| assertWordsEqual(expected.getWords().get(i).getNextWord(), expected.getWords().get(i).getNextWord(), "Next word"); | ||
| assertWordsEqual(expected.getWords().get(i).getPreWord(), expected.getWords().get(i).getPreWord(), "Previous word"); |
| <dependency> | ||
| <groupId>org.testcontainers</groupId> | ||
| <artifactId>junit-jupiter</artifactId> | ||
| </dependency> |
| for (String id : itemsActual.keySet()) { | ||
| assertTrue(itemsActual.containsKey(id), () -> "Restored model missing item with ID: " + id); | ||
|
|
||
| ArchitectureItem itemExpected = itemsExpected.get(id); |
| for (String id : itemsActual.keySet()) { | ||
| assertTrue(itemsActual.containsKey(id), () -> "Restored model missing item with ID: " + id); | ||
|
|
||
| ArchitectureItem itemExpected = itemsExpected.get(id); |
| public ArchitectureComponentModel(String id, ArchitectureModel architectureModel) { | ||
| super(id); | ||
| this.architectureModel = Objects.requireNonNull(architectureModel); | ||
| } |
| public void deleteModel(Metamodel metamodel) { | ||
| logger.info("Starting deletion for model: {}", metamodel); | ||
| if (metamodel.isArchitectureModel()) { | ||
| inconsistencyService.deleteInconsistenciesOfArchitectureItems(); | ||
| traceLinkService.deleteTraceLinksByType(TraceLinkType.ARCHITECTURE_CODE); | ||
| traceLinkService.deleteTraceLinksByType(TraceLinkType.SENTENCE_ARCHITECTURE); | ||
| architectureService.deleteArchitectureModel(metamodel); | ||
| } else if (metamodel.isCodeModel()) { | ||
| inconsistencyService.deleteInconsistenciesOfCodeItems(); | ||
| traceLinkService.deleteTraceLinksByType(TraceLinkType.ARCHITECTURE_CODE); | ||
| traceLinkService.deleteTraceLinksByType(TraceLinkType.SENTENCE_CODE); | ||
| codeService.deleteCodeModel(metamodel); | ||
| } |



This pull request introduces several enhancements to the model classes for architecture and code models, primarily to support improved persistence and reconstruction from storage (e.g., Neo4j). The main changes include adding constructors that accept explicit IDs for restoring objects, integrating persistence logic in
ModelStates, and minor API.