From c7614b9c2ab4720c19d519835a45a53d8c743f94 Mon Sep 17 00:00:00 2001
From: Kyle D Kavanagh <kyle.kavanagh@coinbase.com>
Date: Thu, 8 Nov 2018 09:13:23 -0600
Subject: [PATCH] Warn instead of error on signed numInGrp, check for minValue
 < 0

---
 .../uk/co/real_logic/sbe/xml/CompositeType.java     | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/xml/CompositeType.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/xml/CompositeType.java
index b80fc58f0a..681d6569db 100644
--- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/xml/CompositeType.java
+++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/xml/CompositeType.java
@@ -184,7 +184,18 @@ else if (!isUnsigned(blockLengthType.primitiveType()))
         }
         else if (!isUnsigned(numInGroupType.primitiveType()))
         {
-            XmlSchemaParser.handleError(node, "\"numInGroup\" must be unsigned type");
+            XmlSchemaParser.handleWarning(node, "\"numInGroup\" should be unsigned type");
+            final PrimitiveValue numInGroupMinValue = numInGroupType.minValue();
+            if (null == numInGroupMinValue)
+            {
+                XmlSchemaParser.handleError(node, "\"numInGroup\" minValue must be set for signed types");
+            }
+            else if (numInGroupMinValue.longValue() < 0)
+            {
+                XmlSchemaParser.handleError(node, String.format(
+                    "\"numInGroup\" minValue=%s must be greater than zero " +
+                    "for signed \"numInGroup\" types", numInGroupMinValue));
+            }
         }
         else
         {