Skip to content

Commit ea52edd

Browse files
committed
[C#] Test package override support compiles.
Co-authored-by: Nate Bradac <[email protected]> We've updated the C# generation tasks to include a schema that uses explicit package names on `types` blocks. We found processing this schema produces some build errors (albeit not affecting the exit code): ``` > Task :generateCSharpTestCodecs [Error] explicit-package-test-schema.xml:17:49: cvc-complex-type.3.2.2: Attribute 'package' is not allowed to appear in element 'types'. [Error] explicit-package-test-schema.xml:30:37: cvc-complex-type.3.2.2: Attribute 'package' is not allowed to appear in element 'types'. > Task :generateCSharpTestDtos [Error] explicit-package-test-schema.xml:17:49: cvc-complex-type.3.2.2: Attribute 'package' is not allowed to appear in element 'types'. [Error] explicit-package-test-schema.xml:30:37: cvc-complex-type.3.2.2: Attribute 'package' is not allowed to appear in element 'types'. ``` Therefore, we've put the new generation under tasks that don't validate against an XSD. We considered creating a new version of the XSD that properly describes what we support; however, the licence on the XSD seems prohibitive.
1 parent 4a31cc0 commit ea52edd

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ csharp/sbe-generated/since-deprecated
9494
csharp/sbe-generated/order_check
9595
csharp/sbe-generated/mktdata/*.cs
9696
csharp/sbe-generated/uk_co_real_logic_sbe_benchmarks_fix
97+
csharp/sbe-generated/test_message_schema
9798
csharp/sbe-tests/*.sbe
9899
csharp/nuget/
99100
csharp/csharp.sln.DotSettings.user

build.gradle

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,8 @@ tasks.register('generateCSharpTestCodecs', JavaExec) {
894894
'sbe.target.language': 'uk.co.real_logic.sbe.generation.csharp.CSharp',
895895
'sbe.xinclude.aware': 'true',
896896
'sbe.validation.xsd': validationXsdPath,
897-
'sbe.generate.precedence.checks': 'true')
897+
'sbe.generate.precedence.checks': 'true',
898+
'sbe.types.package.override': 'true')
898899
args = ['sbe-tool/src/test/resources/FixBinary.xml',
899900
'sbe-tool/src/test/resources/issue435.xml',
900901
'sbe-tool/src/test/resources/issue483.xml',
@@ -912,15 +913,41 @@ tasks.register('generateCSharpTestDtos', JavaExec) {
912913
'sbe.output.dir': 'csharp/sbe-generated',
913914
'sbe.target.language': 'uk.co.real_logic.sbe.generation.csharp.CSharpDtos',
914915
'sbe.xinclude.aware': 'true',
915-
'sbe.validation.xsd': validationXsdPath)
916+
'sbe.validation.xsd': validationXsdPath,
917+
'sbe.types.package.override': 'true')
916918
args = ['sbe-samples/src/main/resources/example-extension-schema.xml']
917919
}
918920

921+
tasks.register('generateCSharpExplicitPackageOverrideCodecs', JavaExec) {
922+
mainClass.set('uk.co.real_logic.sbe.SbeTool')
923+
classpath = project(':sbe-tool').sourceSets.main.runtimeClasspath
924+
systemProperties(
925+
'sbe.output.dir': 'csharp/sbe-generated',
926+
'sbe.target.language': 'uk.co.real_logic.sbe.generation.csharp.CSharp',
927+
'sbe.xinclude.aware': 'true',
928+
'sbe.generate.precedence.checks': 'true',
929+
'sbe.types.package.override': 'true')
930+
args = ['sbe-tool/src/test/resources/explicit-package-test-schema.xml']
931+
}
932+
933+
tasks.register('generateCSharpExplicitPackageOverrideDtos', JavaExec) {
934+
mainClass.set('uk.co.real_logic.sbe.SbeTool')
935+
classpath = project(':sbe-tool').sourceSets.main.runtimeClasspath
936+
systemProperties(
937+
'sbe.output.dir': 'csharp/sbe-generated',
938+
'sbe.target.language': 'uk.co.real_logic.sbe.generation.csharp.CSharpDtos',
939+
'sbe.xinclude.aware': 'true',
940+
'sbe.types.package.override': 'true')
941+
args = ['sbe-tool/src/test/resources/explicit-package-test-schema.xml']
942+
}
943+
919944
tasks.register('generateCSharpCodecs') {
920945
description = 'Generate csharp codecs'
921946
dependsOn 'generateCSharpTestCodecs',
922947
'generateCSharpTestDtos',
923-
'generateCSharpCodecsWithXIncludes'
948+
'generateCSharpCodecsWithXIncludes',
949+
'generateCSharpExplicitPackageOverrideCodecs',
950+
'generateCSharpExplicitPackageOverrideDtos'
924951
}
925952

926953
tasks.register('generateJavaIrCodecs', JavaExec) {

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/csharp/CSharpDtos.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import uk.co.real_logic.sbe.generation.TargetCodeGenerator;
2121
import uk.co.real_logic.sbe.ir.Ir;
2222

23+
import static uk.co.real_logic.sbe.SbeTool.TYPES_PACKAGE_OVERRIDE;
24+
2325
/**
2426
* {@link CodeGenerator} factory for CSharp DTOs.
2527
*/
@@ -30,6 +32,11 @@ public class CSharpDtos implements TargetCodeGenerator
3032
*/
3133
public CodeGenerator newInstance(final Ir ir, final String outputDir)
3234
{
33-
return new CSharpDtoGenerator(ir, false, new CSharpNamespaceOutputManager(outputDir, ir.applicableNamespace()));
35+
final boolean shouldSupportTypesPackageNames = Boolean.getBoolean(TYPES_PACKAGE_OVERRIDE);
36+
return new CSharpDtoGenerator(
37+
ir,
38+
shouldSupportTypesPackageNames,
39+
new CSharpNamespaceOutputManager(outputDir, ir.applicableNamespace())
40+
);
3441
}
3542
}

0 commit comments

Comments
 (0)