From 105e2783223dc05b25d298412a295f71693f21b4 Mon Sep 17 00:00:00 2001 From: Hanno Klein Date: Thu, 12 Feb 2026 18:04:30 +0100 Subject: [PATCH 1/2] Limit range of identifiers Fixes #265 --- repository/src/main/resources/xsd/repositorytypes.xsd | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repository/src/main/resources/xsd/repositorytypes.xsd b/repository/src/main/resources/xsd/repositorytypes.xsd index 8abb3b0..c31ce4e 100644 --- a/repository/src/main/resources/xsd/repositorytypes.xsd +++ b/repository/src/main/resources/xsd/repositorytypes.xsd @@ -539,8 +539,11 @@ + - + + + From 6e8dab62d8f9bbb8ce9a1c31558a8379785fb0b1 Mon Sep 17 00:00:00 2001 From: Patrick Lucas Date: Tue, 24 Feb 2026 08:26:15 -0500 Subject: [PATCH 2/2] Use int rather than BigInteger --- .../orchestra/docgen/DocGenerator.java | 14 +++++----- .../transformers/RepositoryCompressor.java | 27 +++++++++---------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/orchestra2doc/src/main/java/io/fixprotocol/orchestra/docgen/DocGenerator.java b/orchestra2doc/src/main/java/io/fixprotocol/orchestra/docgen/DocGenerator.java index bec35b4..17fefd1 100644 --- a/orchestra2doc/src/main/java/io/fixprotocol/orchestra/docgen/DocGenerator.java +++ b/orchestra2doc/src/main/java/io/fixprotocol/orchestra/docgen/DocGenerator.java @@ -571,7 +571,7 @@ private void generateGroupDetail(final Path messagesDocPath, final GroupType gro final ST stGroupStart; stGroupStart = stGroup.getInstanceOf("groupStart"); stGroupStart.add("groupType", group); - final FieldType field = getField(group.getNumInGroup().getId().intValue()); + final FieldType field = getField(group.getNumInGroup().getId()); stGroupStart.add("fieldType", field); final ST stComponentEnd = stGroup.getInstanceOf("componentEnd"); @@ -597,7 +597,7 @@ private void generateMain(final Path baseOutputPath, final String title) throws private void generateMembers(final List members, final STWriter writer) { for (final Object member : members) { if (member instanceof FieldRefType) { - final FieldType field = getField(((FieldRefType) member).getId().intValue()); + final FieldType field = getField(((FieldRefType) member).getId()); final ST stField = stGroup.getInstanceOf("fieldMember"); stField.add("field", field); if (((FieldRefType) member).getSupported() == SupportType.SUPPORTED) { @@ -608,7 +608,7 @@ private void generateMembers(final List members, final STWriter writer) stField.add("assign", ((FieldRefType) member).getAssign()); stField.write(writer, templateErrorListener); } else if (member instanceof GroupRefType) { - final GroupType component = getGroup(((GroupRefType) member).getId().intValue()); + final GroupType component = getGroup(((GroupRefType) member).getId()); final ST stComponent = stGroup.getInstanceOf("componentMember"); stComponent.add("component", component); if (((ComponentRefType) member).getSupported() == SupportType.SUPPORTED) { @@ -619,7 +619,7 @@ private void generateMembers(final List members, final STWriter writer) } stComponent.write(writer, templateErrorListener); } else if (member instanceof ComponentRefType) { - final ComponentType component = getComponent(((ComponentRefType) member).getId().intValue()); + final ComponentType component = getComponent(((ComponentRefType) member).getId()); final ST stComponent = stGroup.getInstanceOf("componentMember"); stComponent.add("component", component); if (((ComponentRefType) member).getSupported() == SupportType.SUPPORTED) { @@ -725,7 +725,7 @@ private void generateResponses(final List responseList, final STWr private ComponentType getComponent(final int componentId) { final List components = repository.getComponents().getComponent(); for (final ComponentType component : components) { - if (component.getId().intValue() == componentId) { + if (component.getId() == componentId) { return component; } } @@ -735,7 +735,7 @@ private ComponentType getComponent(final int componentId) { private FieldType getField(final int id) { final List fields = repository.getFields().getField(); for (final FieldType fieldType : fields) { - if (fieldType.getId().intValue() == id) { + if (fieldType.getId() == id) { return fieldType; } } @@ -780,7 +780,7 @@ private FlowType getFlow(final String name) { private GroupType getGroup(final int componentId) { final List groups = repository.getGroups().getGroup(); for (final GroupType group : groups) { - if (group.getId().intValue() == componentId) { + if (group.getId() == componentId) { return group; } } diff --git a/repository-util/src/main/java/io/fixprotocol/orchestra/transformers/RepositoryCompressor.java b/repository-util/src/main/java/io/fixprotocol/orchestra/transformers/RepositoryCompressor.java index 454c6f9..be6f29f 100644 --- a/repository-util/src/main/java/io/fixprotocol/orchestra/transformers/RepositoryCompressor.java +++ b/repository-util/src/main/java/io/fixprotocol/orchestra/transformers/RepositoryCompressor.java @@ -20,7 +20,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -337,10 +336,10 @@ static Predicate hasFlow() { return m -> m.getFlow() != null; } - private final List componentIdList = new ArrayList<>(); + private final List componentIdList = new ArrayList<>(); private List componentList = new ArrayList<>(); - private final List fieldIdList = new ArrayList<>(); - private final List groupIdList = new ArrayList<>(); + private final List fieldIdList = new ArrayList<>(); + private final List groupIdList = new ArrayList<>(); private List groupList; private final String inputFile; private final Predicate messagePredicate; @@ -424,7 +423,7 @@ private boolean compress(InputStream is, OutputStream os, messageList.stream().filter(messagePredicate).collect(Collectors.toList()); filteredMessages.forEach(m -> walk(m.getStructure().getComponentRefOrGroupRefOrFieldRef())); - final List distinctFieldIds = + final List distinctFieldIds = fieldIdList.stream().distinct().collect(Collectors.toList()); final Fields inFields = (Fields) inRepository.getFields().clone(); final List fieldsWithFlow = inFields.getField().stream() @@ -442,7 +441,7 @@ private boolean compress(InputStream is, OutputStream os, outCodeSets.getCodeSet().addAll(codeSetsWithFlow); outRepository.setCodeSets(outCodeSets); - final List distinctComponentsIds = + final List distinctComponentsIds = componentIdList.stream().distinct().collect(Collectors.toList()); final List componentsWithFlow = componentList.stream() .filter(c -> distinctComponentsIds.contains(c.getId())).collect(Collectors.toList()); @@ -450,7 +449,7 @@ private boolean compress(InputStream is, OutputStream os, outComponents.getComponent().addAll(componentsWithFlow); outRepository.setComponents(outComponents); - final List distinctGroupIds = + final List distinctGroupIds = groupIdList.stream().distinct().collect(Collectors.toList()); final List groupWithFlow = groupList.stream() .filter(c -> distinctGroupIds.contains(c.getId())).collect(Collectors.toList()); @@ -470,16 +469,16 @@ private boolean compress(InputStream is, OutputStream os, } } - private ComponentType getComponent(BigInteger id) { + private ComponentType getComponent(int id) { for (final ComponentType component : componentList) { - if (component.getId().equals(id)) { + if (component.getId() == id) { return component; } } return null; } - private List getComponentMembers(BigInteger id) { + private List getComponentMembers(int id) { final ComponentType component = getComponent(id); if (component != null) { return component.getComponentRefOrGroupRefOrFieldRef(); @@ -488,16 +487,16 @@ private List getComponentMembers(BigInteger id) { } } - private GroupType getGroup(BigInteger id) { + private GroupType getGroup(int id) { for (final GroupType group : groupList) { - if (group.getId().equals(id)) { + if (group.getId() == id) { return group; } } return null; } - private List getGroupMembers(BigInteger id) { + private List getGroupMembers(int id) { final GroupType component = getGroup(id); if (component != null) { return component.getComponentRefOrGroupRefOrFieldRef(); @@ -525,7 +524,7 @@ private void walk(List list) { final GroupRefType groupRef = (GroupRefType) obj; final GroupType group = getGroup(groupRef.getId()); if (group == null) { - logger.error("Group missing for groupRef; ID={}", groupRef.getId().intValue()); + logger.error("Group missing for groupRef; ID={}", groupRef.getId()); return; } fieldIdList.add(group.getNumInGroup().getId());