Skip to content

Commit

Permalink
Fixes #149
Browse files Browse the repository at this point in the history
  • Loading branch information
randy-armstrong committed Feb 5, 2024
1 parent e57a8ac commit a815697
Show file tree
Hide file tree
Showing 24 changed files with 1,274 additions and 440 deletions.
2 changes: 2 additions & 0 deletions Opc.Ua.ModelCompiler/CSVs/DemoModel.csv
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ SampleUnionAllowSubtypes_Encoding_DefaultXml,64,Object
SampleStructureAllowSubtypes_Encoding_DefaultXml,65,Object
DemoModel_XmlSchema_Deprecated,66,Variable
DemoModel_XmlSchema_SampleUnion,67,Variable
EnumUnderscoreTest,68,DataType
EnumUnderscoreTest_EnumValues,69,Variable
DemoModel_XmlSchema_SampleStructureWithOptionalFields,70,Variable
TestObject_Blue,71,Method
DemoModel_BinarySchema_DataTypeVersion,72,Variable
Expand Down
3 changes: 3 additions & 0 deletions Opc.Ua.ModelCompiler/Design.v105/DemoModel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@
<opc:Field Name="_x" Identifier="2"/>
<opc:Field Name="x_" Identifier="3"/>
<opc:Field Name="_" Identifier="4"/>
<opc:Field Name="Test5" Identifier="-1">
<opc:DisplayName>Test_5</opc:DisplayName>
</opc:Field>
</opc:Fields>
</opc:DataType>

Expand Down
3 changes: 3 additions & 0 deletions Opc.Ua.ModelCompiler/Design.v105/StandardTypes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1145,6 +1145,9 @@
</opc:Object>
<opc:Object SymbolicName="VendorServerInfo" TypeDefinition="VendorServerInfoType"/>
<opc:Object SymbolicName="ServerRedundancy" TypeDefinition="ServerRedundancyType">
<opc:Children>
<opc:Property SymbolicName="RedundantServerArray" ModellingRule="Mandatory" />
</opc:Children>
</opc:Object>
<opc:Object SymbolicName="Namespaces" ModellingRule="Mandatory">
</opc:Object>
Expand Down
11 changes: 8 additions & 3 deletions Opc.Ua.ModelCompiler/ModelDesignerValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3620,10 +3620,13 @@ private bool ImportParameters(NodeDesign node, ref Parameter[] parameters, strin
}
}

if (index != -1)
if (index > 0)
{
id = parameter.Identifier = Convert.ToInt32(name.Substring(index+1));
parameter.IdentifierInName = true;
if (Int32.TryParse(name.Substring(index+1), out id))
{
parameter.Identifier = id;
parameter.IdentifierSpecified = true;
}
}
}

Expand Down Expand Up @@ -6054,6 +6057,8 @@ private void CreateNodeState(NodeDesign root, NamespaceTable namespaceUris)
}
}

root.State.Extensions = root.Extensions;

if (root.Hierarchy != null && root is TypeDesign)
{
HierarchyNode hierarchyNode;
Expand Down
44 changes: 27 additions & 17 deletions Opc.Ua.ModelCompiler/ModelGenerator2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -790,27 +790,27 @@ private void WriteTemplate_XmlExport(string filePath)
AvailableNodeSets[m_model.TargetNamespace] = Path.Join(filePath, nodeSet + ".xml");
}

GenerateJsonSchema(filePath, nodeSet, false);
GenerateJsonSchema(filePath, nodeSet, true);
GenerateJsonSchema(filePath, m_model.TargetNamespaceInfo.Prefix, false);
GenerateJsonSchema(filePath, m_model.TargetNamespaceInfo.Prefix, true);

if (m_model.TargetNamespace == DefaultNamespace)
{
var completeNodeSet = $"{m_model.TargetNamespaceInfo.Prefix}.NodeSet2.Services";
AvailableNodeSets[m_model.TargetNamespace] = Path.Join(filePath, completeNodeSet + ".xml");
GenerateJsonSchema(filePath, completeNodeSet, false);
GenerateJsonSchema(filePath, completeNodeSet, true);
GenerateJsonSchema(filePath, m_model.TargetNamespaceInfo.Prefix + ".Services", false);
GenerateJsonSchema(filePath, m_model.TargetNamespaceInfo.Prefix + ".Services", true);

OpenApiExporter openapi = new OpenApiExporter();
var nodeSetFilePath = String.Format(@"{0}{1}{2}.xml", filePath, Path.DirectorySeparatorChar, completeNodeSet);

var nodeSetFilePath = String.Format(@"{0}{1}{2}.NodeSet2.Services.xml", filePath, Path.DirectorySeparatorChar, m_model.TargetNamespaceInfo.Prefix);
OpenApiExporter openapi = new OpenApiExporter(true, false);

using (Stream istrm = File.Open(nodeSetFilePath, FileMode.Open))
{
openapi.Load(istrm);
istrm.Close();
}

var openapiPath = Path.Join(filePath, $"{m_model.TargetNamespaceInfo.Prefix}.Services.OpenApi.json");
var openapiPath = Path.Join(filePath, m_model.TargetNamespaceInfo.Prefix.ToLower() + ".openapi.sessionless.json");

using (Stream istrm = File.Open(openapiPath, FileMode.Create))
{
Expand All @@ -822,17 +822,25 @@ private void WriteTemplate_XmlExport(string filePath)
OpenApiExporter.Verify(istrm);
}

//openapiPath = Path.Join(filePath, $"{m_model.TargetNamespaceInfo.Prefix}.Services.OpenApi.yaml");
openapi = new OpenApiExporter(true, true);

//using (Stream istrm = File.Open(openapiPath, FileMode.Create))
//{
// openapi.Generate(istrm, generateYaml: true);
//}
using (Stream istrm = File.Open(nodeSetFilePath, FileMode.Open))
{
openapi.Load(istrm);
istrm.Close();
}

openapiPath = Path.Join(filePath, m_model.TargetNamespaceInfo.Prefix.ToLower() + ".openapi.allservices.json");

//using (Stream istrm = File.Open(openapiPath, FileMode.Open))
//{
// OpenApiExporter.Verify(istrm);
//}
using (Stream istrm = File.Open(openapiPath, FileMode.Create))
{
openapi.Generate(istrm);
}

using (Stream istrm = File.Open(openapiPath, FileMode.Open))
{
OpenApiExporter.Verify(istrm);
}
}
}
}
Expand All @@ -843,7 +851,7 @@ private void GenerateJsonSchema(string filePath, string baseName, bool useRevers

json.Load(AvailableNodeSets, m_model.TargetNamespace);

string outputFile = Path.Join(filePath, baseName + $"{((!useReversibleEncoding) ? ".nonreversible" : "")}.json");
string outputFile = Path.Join(filePath, $"{baseName.ToLower()}.jsonschema.{((!useReversibleEncoding) ? "nonreversible" : "reversible")}.json");

using (var ostrm = File.Open(outputFile, FileMode.Create, FileAccess.ReadWrite))
{
Expand Down Expand Up @@ -3233,6 +3241,8 @@ private bool WriteTemplate_ListOfTypes(Template template, Context context)

if (dataType != null)
{
template.AddReplacement("_IsAbstract_", (dataType.IsAbstract) ? "abstract ": "");

if (!dataType.IsOptionSet)
{
template.AddReplacement("[Flags]", String.Empty);
Expand Down
25 changes: 23 additions & 2 deletions Opc.Ua.ModelCompiler/Opc.Ua.ModelCompiler.Debug.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,16 @@

<ItemGroup>
<EmbeddedResource Include="CSVs\DemoModel.csv" />
<EmbeddedResource Include="CSVs\MDIS.csv" />
<EmbeddedResource Include="CSVs\MTConnectModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaAdiModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaDiModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaFdiPart5Model.csv" />
<EmbeddedResource Include="CSVs\OpcUaFdiPart7Model.csv" />
<EmbeddedResource Include="CSVs\OpcUaGdsModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaNodeSetModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaPLCopenModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaProvisioningModel.csv" />
<EmbeddedResource Include="CSVs\rec20_latest_a1.csv" />
<EmbeddedResource Include="CSVs\rec20_latest_a2-3.csv" />
<EmbeddedResource Include="CSVs\SercosModel.csv" />
Expand All @@ -289,7 +296,13 @@
<EmbeddedResource Include="CSVs\Status Codes.csv" />
<EmbeddedResource Include="CSVs\UNECE_to_OPCUA.csv" />
<EmbeddedResource Include="Design.v103\BuiltInTypes.xml" />
<EmbeddedResource Include="Design.v103\MDIS.xml" />
<EmbeddedResource Include="Design.v103\MTConnectModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaAdiModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaDiModel.csv" />
<EmbeddedResource Include="Design.v103\OpcUaDiModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaFdiPart5Model.xml" />
<EmbeddedResource Include="Design.v103\OpcUaFdiPart7Model.xml" />
<EmbeddedResource Include="Design.v103\OpcUaGdsModel.csv" />
<EmbeddedResource Include="Design.v103\OpcUaGdsModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaPLCopenModel.xml" />
Expand All @@ -304,16 +317,24 @@
<EmbeddedResource Include="Design.v103\UA Status Codes.xml" />
<EmbeddedResource Include="Design.v104\BuiltInTypes.xml" />
<EmbeddedResource Include="Design.v104\DemoModel.xml" />
<EmbeddedResource Include="Design.v104\MDIS.xml" />
<EmbeddedResource Include="Design.v104\MTConnectModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaAdiModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaDiModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaFdiPart5Model.xml" />
<EmbeddedResource Include="Design.v104\OpcUaFdiPart7Model.xml" />
<EmbeddedResource Include="Design.v104\OpcUaGdsModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaPLCopenModel.xml" />
<EmbeddedResource Include="Design.v104\SercosModel.xml" />
<EmbeddedResource Include="Design.v104\StandardTypes.xml" />
<EmbeddedResource Include="Design.v104\UA Attributes.xml" />
<EmbeddedResource Include="Design.v104\UA Core Services.xml" />
<EmbeddedResource Include="Design.v104\UA Status Codes.xml" />
<EmbeddedResource Include="Design.v105\I4AAS.IRDI.xml" />
<EmbeddedResource Include="Design.v105\BuiltInTypes.xml" />
<EmbeddedResource Include="Design.v105\I4AAS.Submodels.xml" />
<EmbeddedResource Include="Design.v105\DemoModel.xml" />
<EmbeddedResource Include="Design.v105\OpcUaDiModel.xml" />
<EmbeddedResource Include="Design.v105\OpcUaGdsModel.xml" />
<EmbeddedResource Include="Design.v105\OpcUaNodeSetModel.xml" />
<EmbeddedResource Include="Design.v105\StandardTypes.xml" />
Expand Down Expand Up @@ -472,9 +493,9 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="CsvHelper" Version="30.1.0" />
<PackageReference Include="CsvHelper" Version="30.0.1" />
<PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="4.1.0" />
<PackageReference Include="Microsoft.OpenApi" Version="1.6.13" />
<PackageReference Include="Microsoft.OpenApi" Version="1.6.11" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.6.11" />
<PackageReference Include="Newtonsoft.Json.Schema" Version="3.0.15" />
</ItemGroup>
Expand Down
23 changes: 21 additions & 2 deletions Opc.Ua.ModelCompiler/Opc.Ua.ModelCompiler.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -319,16 +319,29 @@

<ItemGroup>
<EmbeddedResource Include="CSVs\DemoModel.csv" />
<EmbeddedResource Include="CSVs\MDIS.csv" />
<EmbeddedResource Include="CSVs\MTConnectModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaAdiModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaDiModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaFdiPart5Model.csv" />
<EmbeddedResource Include="CSVs\OpcUaFdiPart7Model.csv" />
<EmbeddedResource Include="CSVs\OpcUaGdsModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaNodeSetModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaPLCopenModel.csv" />
<EmbeddedResource Include="CSVs\OpcUaProvisioningModel.csv" />
<EmbeddedResource Include="CSVs\rec20_latest_a1.csv" />
<EmbeddedResource Include="CSVs\rec20_latest_a2-3.csv" />
<EmbeddedResource Include="CSVs\SercosModel.csv" />
<EmbeddedResource Include="CSVs\StandardTypes.csv" />
<EmbeddedResource Include="CSVs\UNECE_to_OPCUA.csv" />
<EmbeddedResource Include="Design.v103\BuiltInTypes.xml" />
<EmbeddedResource Include="Design.v103\MDIS.xml" />
<EmbeddedResource Include="Design.v103\MTConnectModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaAdiModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaDiModel.csv" />
<EmbeddedResource Include="Design.v103\OpcUaDiModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaFdiPart5Model.xml" />
<EmbeddedResource Include="Design.v103\OpcUaFdiPart7Model.xml" />
<EmbeddedResource Include="Design.v103\OpcUaGdsModel.csv" />
<EmbeddedResource Include="Design.v103\OpcUaGdsModel.xml" />
<EmbeddedResource Include="Design.v103\OpcUaPLCopenModel.xml" />
Expand All @@ -343,7 +356,12 @@
<EmbeddedResource Include="Design.v103\UA Status Codes.xml" />
<EmbeddedResource Include="Design.v104\BuiltInTypes.xml" />
<EmbeddedResource Include="Design.v104\DemoModel.xml" />
<EmbeddedResource Include="Design.v104\MDIS.xml" />
<EmbeddedResource Include="Design.v104\MTConnectModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaAdiModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaDiModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaFdiPart5Model.xml" />
<EmbeddedResource Include="Design.v104\OpcUaFdiPart7Model.xml" />
<EmbeddedResource Include="Design.v104\OpcUaGdsModel.xml" />
<EmbeddedResource Include="Design.v104\OpcUaPLCopenModel.xml" />
<EmbeddedResource Include="Design.v104\SercosModel.xml" />
Expand All @@ -353,6 +371,7 @@
<EmbeddedResource Include="Design.v104\UA Status Codes.xml" />
<EmbeddedResource Include="Design.v105\BuiltInTypes.xml" />
<EmbeddedResource Include="Design.v105\DemoModel.xml" />
<EmbeddedResource Include="Design.v105\OpcUaDiModel.xml" />
<EmbeddedResource Include="Design.v105\OpcUaGdsModel.xml" />
<EmbeddedResource Include="Design.v105\OpcUaNodeSetModel.xml" />
<EmbeddedResource Include="Design.v105\StandardTypes.xml" />
Expand Down Expand Up @@ -511,10 +530,10 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="CsvHelper" Version="30.1.0" />
<PackageReference Include="CsvHelper" Version="30.0.1" />
<PackageReference Include="Google.Protobuf" Version="3.25.2" />
<PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="4.1.0" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.6.13" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.6.9" />
<PackageReference Include="OPCFoundation.NetStandard.Opc.Ua.Core" Version="1.5.372.1-rc" />
</ItemGroup>

Expand Down
Loading

0 comments on commit a815697

Please sign in to comment.