Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
eb6ba2e
refactor: Change public methods to private in SemanticIdHandler for e…
mm-kgi Mar 5, 2026
21cd268
added implementation for refactoring semanticidhandler
mm-kgi Mar 6, 2026
332a6dd
Added Refactored SemanticIdHandler
mm-kgi Mar 12, 2026
23f6f39
git merge with parent branch
mm-kgi Mar 18, 2026
f92778a
git merge from parent barnch
mm-kgi Mar 18, 2026
4ad1241
Refactor the code to remove warnings
mm-kgi Mar 18, 2026
040b9ca
refactor to remove warnings
mm-kgi Mar 18, 2026
c75f9d6
remove internal methods test cases
mm-kgi Mar 18, 2026
91a1d0e
change dataengine image
mm-kgi Mar 18, 2026
1501c54
remove cognitive complexity inside submodel filler
mm-kgi Mar 18, 2026
30fc78e
remove unused using
mm-kgi Mar 18, 2026
b7ee7c5
Added internal semantic id removal logic from submodel qualifiers
mm-kgi Mar 20, 2026
c8df6fe
remove unused var
mm-kgi Mar 20, 2026
9c3cff8
Merge branch 'develop' into feature/128-refactor-semantic-id-handler-…
mm-kgi Mar 20, 2026
dd01f18
remove internal semantic from test data
mm-kgi Mar 20, 2026
f2b9362
Revert "remove internal semantic from test data"
mm-kgi Mar 20, 2026
60432c8
remove internal semantic id from qualifires in testdata
mm-kgi Mar 20, 2026
54fe06d
remove internal semantic ids from testdata of playwrite tests
mm-kgi Mar 20, 2026
d414972
remove extra property added in testdata json
mm-kgi Mar 20, 2026
7d24721
Merge branch 'develop' into feature/128-refactor-semantic-id-handler-…
mm-kgi Mar 20, 2026
a57bd66
Merge branch 'develop' into feature/128-refactor-semantic-id-handler-…
mm-kgi Mar 24, 2026
6461331
Added v2 config file with backward compatibility
mm-kgi Apr 7, 2026
a490ede
remove unused usings
mm-kgi Apr 7, 2026
497f6f2
git merge parent branch
mm-kgi Apr 7, 2026
174a7b6
git merge parent branch
mm-kgi Apr 7, 2026
f9f830a
Added sonarqube suggestions
mm-kgi Apr 7, 2026
850d06d
remove extra new config file added for test
mm-kgi Apr 7, 2026
d77272c
refactor docker compose and logging extenstion to add root level
mm-kgi Apr 7, 2026
3b4703d
refactor Obsolete tags
mm-kgi Apr 8, 2026
b0f0043
Added suppourt for multiple repositories wit backward compebility
mm-kgi Apr 9, 2026
fad381d
Refactor compose to add template repo
mm-kgi Apr 9, 2026
f7c272a
Added change for http clients to use saperate clients for repositories
mm-kgi Apr 9, 2026
f820b65
remove extra usings
mm-kgi Apr 9, 2026
711441e
remove sonarqube warning
mm-kgi Apr 9, 2026
2eb0851
Remove sonarqube warnings for obsolute tag
mm-kgi Apr 9, 2026
2f2fbb7
Refactoration of implementation upon code review
mm-kgi Apr 11, 2026
521d85d
Remove redundant comments from HttpRequestBaseUrlProviderTests
mm-kgi Apr 13, 2026
88d11ea
Added changes to move oold config to legacy
mm-kgi Apr 15, 2026
c46f74d
Add PluginsConfigValidator and refactor namespace for config validators
mm-kgi Apr 15, 2026
3432e94
changes for backward compebility
mm-kgi Apr 15, 2026
f3a7a8d
remove warnings
mm-kgi Apr 15, 2026
1b1a4a2
conflict option refactyor with throwerror
mm-kgi Apr 16, 2026
4eb242d
Move MultiPluginConflictOptions class for handling plugin conflict co…
mm-kgi Apr 16, 2026
66590d7
Refactor configuration handling and remove deprecated classes for v2 …
mm-kgi Apr 16, 2026
6f2862a
Refactor configuration files to improve organization and add Resilien…
mm-kgi Apr 16, 2026
7a4e0ba
Refactor exception message in ShellTemplateMappingProvider for missin…
mm-kgi Apr 16, 2026
dbe7500
Replace PluginInstance with ServiceInstance across the codebase
mm-kgi Apr 16, 2026
7bf491c
removed unsued usings in TemplateProviderTests
mm-kgi Apr 16, 2026
a94fd6f
fix: update expected test data for BaSyx SNAPSHOT compatibility
mm-kgi Apr 16, 2026
7360173
refactor: update template management configuration to support multipl…
mm-kgi Apr 17, 2026
fedc79a
refactor: update template management configuration to support multipl…
mm-kgi Apr 17, 2026
80c6543
Refactor AasIdExtractionRules to support Split strategy and enhance v…
mm-kgi Apr 19, 2026
66e4692
merge with parent branch
mm-kgi Apr 19, 2026
a2e6133
merge with parent branch
mm-kgi Apr 19, 2026
d967891
Enhace var names in module tests
mm-kgi Apr 20, 2026
fffee17
merge with parent branch
mm-kgi Apr 20, 2026
7c34114
Refactor extraction rules handling in configuration and update unit t…
mm-kgi Apr 20, 2026
f7b1268
Refactor validation logic in TemplateMappingRulesValidator for improv…
mm-kgi Apr 20, 2026
f828457
Update extraction rules description and refactor test class names for…
mm-kgi Apr 20, 2026
9d02adc
Add check to skip extraction if identifier matches extracted value
mm-kgi Apr 20, 2026
8293d97
Remove unused using directives and delete IBaseUrlProvider interface …
mm-kgi Apr 20, 2026
24f9591
Remove HttpRequestBaseUrlProviderTests class and associated unit tests
mm-kgi Apr 20, 2026
6f05c53
Refactor exception handling in validation and extraction logic to thr…
mm-kgi Apr 20, 2026
7e97c90
Update exception handling in TemplateMappingRulesValidator to catch A…
mm-kgi Apr 21, 2026
1f0658e
Update AasIdExtractionRules to adjust index for split strategy
mm-kgi Apr 21, 2026
faba9f2
Upgrade JsonSchema.Net to v9, support JSON Schema 2020-12
mm-hsh Apr 24, 2026
6b48418
Refactor contact info structure and update mock data
mm-hsh Apr 24, 2026
c8d418a
Improve null-safety, error logging, and minor optimizations
mm-hsh Apr 24, 2026
cffcda9
Update namespace regex patterns in architecture tests
mm-hsh Apr 24, 2026
8b45ac2
Simplify namespace matching in CleanArchitectureTests
mm-hsh Apr 24, 2026
ca947ff
Support multiple JSON Schema drafts and improve refs
mm-hsh Apr 27, 2026
8987edf
merge develop
mm-hsh Apr 27, 2026
b10ebe2
Refactor JSON schema generation and remove unused template mapping tests
mm-hsh Apr 27, 2026
359d4d8
Add plugin schema fallback & improve JSON schema handling
mm-hsh Apr 29, 2026
1c3f0ce
Refactor schema compatibility handling for plugins
mm-hsh Apr 29, 2026
6b48467
Use null-forgiving operator on schemaNode in validator
mm-hsh Apr 29, 2026
93b52e8
Refactor contact info JSON structure for clarity
mm-hsh Apr 29, 2026
2ae1807
Clean up tests and docs; update exception summary
mm-hsh Apr 29, 2026
36b254e
Merge branch 'develop' into feature/Update-Dependency
mm-hsh May 4, 2026
df7bd8b
Support multiple JSON Schema drafts with extensible handlers
mm-hsh May 6, 2026
f1cbdd4
Refactor JsonSchemaValidator to eliminate unnecessary null checks and…
mm-hsh May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.20" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="coverlet.collector" Version="10.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.26" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
<PackageReference Include="NSubstitute" Version="5.3.0" />
<PackageReference Include="xunit" Version="2.5.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
Expand All @@ -15,12 +15,12 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="coverlet.collector" Version="10.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
<PackageReference Include="NSubstitute" Version="5.3.0" />
<PackageReference Include="TngTech.ArchUnitNET.xUnit" Version="0.11.2" />
<PackageReference Include="xunit" Version="2.5.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
<PackageReference Include="TngTech.ArchUnitNET.xUnit" Version="0.13.3" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

using MongoDB.Bson;

using NSubstitute;

using static Xunit.Assert;
Expand Down Expand Up @@ -611,7 +609,7 @@ public void FillOutTemplate_ShouldNotChange_RelationShipElementWhenExternalRefer
Single(result!.SubmodelElements!);
IsType<RelationshipElement>(result!.SubmodelElements![0]);
var relationShipElement = result.SubmodelElements[0] as RelationshipElement;
Equal(TestData.CreateRelationshipElementWithBothExternalReference().ToJson(), relationShipElement!.ToJson());
AssertElementsJsonEquivalent(TestData.CreateRelationshipElementWithBothExternalReference(), relationShipElement!);
}

[Fact]
Expand All @@ -628,7 +626,7 @@ public void FillOutTemplate_RelationShipElementHaveOneModelReference_ProvidesAll
Single(result!.SubmodelElements!);
IsType<RelationshipElement>(result!.SubmodelElements![0]);
var relationShipElement = result.SubmodelElements[0] as RelationshipElement;
Equal(TestData.CreateFilledRelationshipElementWithOneExternalReferenceAndOneModelReference().ToJson(), relationShipElement!.ToJson());
AssertElementsJsonEquivalent(TestData.CreateFilledRelationshipElementWithOneExternalReferenceAndOneModelReference(), relationShipElement!);
}

[Fact]
Expand All @@ -645,7 +643,7 @@ public void FillOutTemplate_RelationShipElementBothModelReference_HandlesMissing
Single(result!.SubmodelElements!);
IsType<RelationshipElement>(result!.SubmodelElements![0]);
var relationShipElement = result.SubmodelElements[0] as RelationshipElement;
Equal(TestData.CreateFilledRelationshipElementWithBothModelReference().ToJson(), relationShipElement!.ToJson());
AssertElementsJsonEquivalent(TestData.CreateFilledRelationshipElementWithBothModelReference(), relationShipElement!);
}

[Fact]
Expand Down Expand Up @@ -889,5 +887,12 @@ private static IOptions<PluginsConfig> CreatePluginsConfigWithMlp(List<string>?
SubmodelElementIndexContextPrefix = "_aastwinengineindex_"
});
}

private static void AssertElementsJsonEquivalent(IClass expected, IClass actual)
{
var expectedJson = Jsonization.Serialize.ToJsonObject(expected).ToJsonString();
var actualJson = Jsonization.Serialize.ToJsonObject(actual).ToJsonString();
Equal(expectedJson, actualJson);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -14,33 +14,25 @@ public class CleanArchitectureTests
{
private const string BaseNamespace = "AAS.TwinEngine.DataEngine";

private readonly Architecture _architecture;
private readonly IObjectProvider<IType> _apiLayer;
private readonly IObjectProvider<IType> _applicationLogicLayer;
private readonly IObjectProvider<IType> _domainModelLayer;
private readonly IObjectProvider<IType> _infrastructureLayer;

public CleanArchitectureTests()
{
_architecture = new ArchLoader().LoadAssemblies(System.Reflection.Assembly.Load(BaseNamespace)).Build();

_apiLayer = Types().That().ResideInNamespace($"{BaseNamespace}.Api.*", true).As("Api");
_applicationLogicLayer = Types().That().ResideInNamespace($"{BaseNamespace}.ApplicationLogic.*", true).As("ApplicationLogic");
_domainModelLayer = Types().That().ResideInNamespace($"{BaseNamespace}.DomainModel*", true).As("DomainModel");
_infrastructureLayer = Types().That().ResideInNamespace($"{BaseNamespace}.Infrastructure.*", true).As("Infrastructure");
}
private readonly Architecture _architecture = new ArchLoader().LoadAssemblies(System.Reflection.Assembly.Load(BaseNamespace)).Build();
private readonly IObjectProvider<IType> _apiLayer = Types().That().ResideInNamespaceMatching($"{BaseNamespace}.Api.*").As("Api");
private readonly IObjectProvider<IType> _applicationLogicLayer = Types().That().ResideInNamespaceMatching($"{BaseNamespace}.ApplicationLogic.*").As("ApplicationLogic");
private readonly IObjectProvider<IType> _domainModelLayer = Types().That().ResideInNamespaceMatching($"{BaseNamespace}.DomainModel*").As("DomainModel");
private readonly IObjectProvider<IType> _infrastructureLayer = Types().That().ResideInNamespaceMatching($"{BaseNamespace}.Infrastructure.*").As("Infrastructure");

[Fact]
public void DomainModelShallNotHaveExternalDependencies()
{
var forbiddenTypes = new List<IType>();

forbiddenTypes.AddRange(_infrastructureLayer.GetObjects(_architecture));
forbiddenTypes.AddRange(_apiLayer.GetObjects(_architecture));
forbiddenTypes.AddRange(_applicationLogicLayer.GetObjects(_architecture));

Types().That().Are(_domainModelLayer)
.Should()
.NotDependOnAny(Types().That().Are(forbiddenTypes))
.WithoutRequiringPositiveResults()
.Check(_architecture);
}

Expand All @@ -50,6 +42,7 @@ public void ApplicationLogicShallNotHaveDependenciesToInfrastructure()
Types().That().Are(_applicationLogicLayer)
.Should()
.NotDependOnAny(Types().That().Are(_infrastructureLayer))
.WithoutRequiringPositiveResults()
.Check(_architecture);
}

Expand All @@ -59,6 +52,7 @@ public void ApplicationLogicShallNotHaveDependenciesToApi()
Types().That().Are(_applicationLogicLayer)
.Should()
.NotDependOnAny(Types().That().Are(_apiLayer))
.WithoutRequiringPositiveResults()
.Check(_architecture);
}

Expand All @@ -68,23 +62,25 @@ public void InfrastructureShallNotHaveDependenciesToApi()
Types().That().Are(_infrastructureLayer)
.Should()
.NotDependOnAny(Types().That().Are(_apiLayer))
.WithoutRequiringPositiveResults()
.Check(_architecture);
}

[Fact]
public void ApiShallNotHaveDependenciesToInfrastructure()
{
Types().That().Are(_apiLayer)
.Should()
.NotDependOnAny(Types().That().Are(_infrastructureLayer))
.Check(_architecture);
.Should()
.NotDependOnAny(Types().That().Are(_infrastructureLayer))
.WithoutRequiringPositiveResults()
.Check(_architecture);
}

[Fact]
public void RepositoryClassesShallBeInCorrectNamespace()
{
Classes().That().HaveNameEndingWith("Repository").Should()
.ResideInNamespace($"{BaseNamespace}.Infrastructure.Providers*", true)
.ResideInNamespaceMatching($"{BaseNamespace}.Infrastructure.Providers*")
.WithoutRequiringPositiveResults()
.Check(_architecture);
}
Expand All @@ -97,7 +93,7 @@ public void RepositoryInterfacesShallBeInCorrectNamespace()
.And()
.DoNotHaveFullName($"{BaseNamespace}.Infrastructure.DataAccess.GenericRepository.IMongoDbRepository")
.Should()
.ResideInNamespace($"{BaseNamespace}.ApplicationLogic.*", true)
.ResideInNamespaceMatching($"{BaseNamespace}.ApplicationLogic.*")
.WithoutRequiringPositiveResults()
Comment thread
mm-hsh marked this conversation as resolved.
.Check(_architecture);
}
Expand All @@ -106,7 +102,7 @@ public void RepositoryInterfacesShallBeInCorrectNamespace()
public void ServicesShallBeInCorrectNamespace()
{
Classes().That().HaveNameEndingWith("Service").Should()
.ResideInNamespace($"{BaseNamespace}.ApplicationLogic.Service.*", true)
.ResideInNamespaceMatching($"{BaseNamespace}.ApplicationLogic.Service.*")
.Check(_architecture);
Comment thread
mm-hsh marked this conversation as resolved.
}

Expand All @@ -115,15 +111,16 @@ public void ServiceInterfacesShallBeInCorrectNamespace()
{
Interfaces().That().HaveNameEndingWith("Service")
.Should()
.ResideInNamespace($"{BaseNamespace}.ApplicationLogic.Service.*", true)
.ResideInNamespaceMatching($"{BaseNamespace}.ApplicationLogic.Service.*")
.Check(_architecture);
}

[Fact]
public void ControllerShallBeInCorrectNamespace()
{
Classes().That().HaveNameEndingWith("Controller").Should()
.ResideInNamespace($"{BaseNamespace}.Api.*", true)
.ResideInNamespaceMatching($"{BaseNamespace}.Api.*")
.Check(_architecture);
Comment thread
mm-hsh marked this conversation as resolved.
}
}

Loading
Loading