private PrimitiveValue lookupValueRef(final String valueRef) { final int periodIndex = valueRef.indexOf('.'); final String valueRefType = valueRef.substring(0, periodIndex); final String validValueName = valueRef.substring(periodIndex + 1); final EnumType enumType = (EnumType)schema.getType(valueRefType); final EnumType.ValidValue validValue = enumType.getValidValue(validValueName); return validValue.primitiveValue(); }
private void validateValueRef(final Node node, final Map<String, Type> typeByNameMap) { final int periodIndex = valueRef.indexOf('.'); if (periodIndex < 1 || periodIndex == (valueRef.length() - 1)) { handleError(node, "valueRef format not valid (enum-name.valid-value-name): " + valueRef); } final String valueRefType = valueRef.substring(0, periodIndex); final Type valueType = typeByNameMap.get(valueRefType); if (null == valueType) { handleError(node, "valueRef for enum name not found: " + valueRefType); } if (valueType instanceof EnumType) { final EnumType enumType = (EnumType)valueType; final String validValueName = valueRef.substring(periodIndex + 1); if (null == enumType.getValidValue(validValueName)) { handleError(node, "valueRef for validValue name not found: " + validValueName); } } else { handleError(node, "valueRef for is not of type enum: " + valueRefType); } }
final EnumType.ValidValue validValue = enumType.getValidValue(validValueName);
@Test public void shouldHandleCharEnumEncodingType() throws Exception { final String testXmlString = "<types>" + "<enum name=\"mixed\" encodingType=\"char\">" + " <validValue name=\"Cee\">C</validValue>" + " <validValue name=\"One\">1</validValue>" + " <validValue name=\"Two\">2</validValue>" + " <validValue name=\"Eee\">E</validValue>" + "</enum>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/enum", testXmlString); final EnumType e = (EnumType)map.get("mixed"); assertThat(e.encodingType(), is(PrimitiveType.CHAR)); assertThat(e.getValidValue("Cee").primitiveValue(), is(PrimitiveValue.parse("C", PrimitiveType.CHAR))); assertThat(e.getValidValue("One").primitiveValue(), is(PrimitiveValue.parse("1", PrimitiveType.CHAR))); assertThat(e.getValidValue("Two").primitiveValue(), is(PrimitiveValue.parse("2", PrimitiveType.CHAR))); assertThat(e.getValidValue("Eee").primitiveValue(), is(PrimitiveValue.parse("E", PrimitiveType.CHAR))); }
@Test public void shouldHandleBinaryEnumType() throws Exception { final String testXmlString = "<types>" + "<enum name=\"biOp\" encodingType=\"uint8\">" + " <validValue name=\"off\" description=\"switch is off\">0</validValue>" + " <validValue name=\"on\" description=\"switch is on\">1</validValue>" + "</enum>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/enum", testXmlString); final EnumType e = (EnumType)map.get("biOp"); assertThat(e.name(), is("biOp")); assertThat(e.encodingType(), is(PrimitiveType.UINT8)); assertThat(e.validValues().size(), is(2)); assertThat(e.getValidValue("on").primitiveValue(), is(PrimitiveValue.parse("1", PrimitiveType.UINT8))); assertThat(e.getValidValue("off").primitiveValue(), is(PrimitiveValue.parse("0", PrimitiveType.UINT8))); }
@Test public void shouldHandleBooleanEnumType() throws Exception { final String testXmlString = "<types>" + "<enum name=\"Boolean\" encodingType=\"uint8\" semanticType=\"Boolean\">" + " <validValue name=\"False\">0</validValue>" + " <validValue name=\"True\">1</validValue>" + "</enum>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/enum", testXmlString); final EnumType e = (EnumType)map.get("Boolean"); assertThat(e.name(), is("Boolean")); assertThat(e.encodingType(), is(PrimitiveType.UINT8)); assertThat(e.validValues().size(), is(2)); assertThat(e.getValidValue("True").primitiveValue(), is(PrimitiveValue.parse("1", PrimitiveType.UINT8))); assertThat(e.getValidValue("False").primitiveValue(), is(PrimitiveValue.parse("0", PrimitiveType.UINT8))); }
@Test public void shouldHandleOptionalBooleanEnumType() throws Exception { final String nullValueStr = "255"; final String testXmlString = "<types>" + "<enum name=\"optionalBoolean\" encodingType=\"uint8\" presence=\"optional\"" + " nullValue=\"" + nullValueStr + "\" semanticType=\"Boolean\">" + " <validValue name=\"False\">0</validValue>" + " <validValue name=\"True\">1</validValue>" + "</enum>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/enum", testXmlString); final EnumType e = (EnumType)map.get("optionalBoolean"); assertThat(e.name(), is("optionalBoolean")); assertThat(e.encodingType(), is(PrimitiveType.UINT8)); assertThat(e.validValues().size(), is(2)); assertThat(e.getValidValue("True").primitiveValue(), is(PrimitiveValue.parse("1", PrimitiveType.UINT8))); assertThat(e.getValidValue("False").primitiveValue(), is(PrimitiveValue.parse("0", PrimitiveType.UINT8))); assertThat(e.nullValue(), is(PrimitiveValue.parse(nullValueStr, PrimitiveType.UINT8))); }
private PrimitiveValue lookupValueRef(final String valueRef) { final int periodIndex = valueRef.indexOf('.'); final String valueRefType = valueRef.substring(0, periodIndex); final String validValueName = valueRef.substring(periodIndex + 1); final EnumType enumType = (EnumType)schema.getType(valueRefType); final EnumType.ValidValue validValue = enumType.getValidValue(validValueName); return validValue.primitiveValue(); }
private PrimitiveValue lookupValueRef(final String valueRef) { final int periodIndex = valueRef.indexOf('.'); final String valueRefType = valueRef.substring(0, periodIndex); final String validValueName = valueRef.substring(periodIndex + 1); final EnumType enumType = (EnumType)schema.getType(valueRefType); final EnumType.ValidValue validValue = enumType.getValidValue(validValueName); return validValue.primitiveValue(); }
private void validateValueRef(final Node node, final Map<String, Type> typeByNameMap) { final int periodIndex = valueRef.indexOf('.'); if (periodIndex < 1 || periodIndex == (valueRef.length() - 1)) { handleError(node, "valueRef format not valid (enum-name.valid-value-name): " + valueRef); } final String valueRefType = valueRef.substring(0, periodIndex); final Type valueType = typeByNameMap.get(valueRefType); if (null == valueType) { handleError(node, "valueRef for enum name not found: " + valueRefType); } if (valueType instanceof EnumType) { final EnumType enumType = (EnumType)valueType; final String validValueName = valueRef.substring(periodIndex + 1); if (null == enumType.getValidValue(validValueName)) { handleError(node, "valueRef for validValue name not found: " + validValueName); } } else { handleError(node, "valueRef for is not of type enum: " + valueRefType); } }
private void validateValueRef(final Node node, final Map<String, Type> typeByNameMap) { final int periodIndex = valueRef.indexOf('.'); if (periodIndex < 1 || periodIndex == (valueRef.length() - 1)) { handleError(node, "valueRef format not valid (enum-name.valid-value-name): " + valueRef); } final String valueRefType = valueRef.substring(0, periodIndex); final Type valueType = typeByNameMap.get(valueRefType); if (null == valueType) { handleError(node, "valueRef for enum name not found: " + valueRefType); } if (valueType instanceof EnumType) { final EnumType enumType = (EnumType)valueType; final String validValueName = valueRef.substring(periodIndex + 1); if (null == enumType.getValidValue(validValueName)) { handleError(node, "valueRef for validValue name not found: " + validValueName); } } else { handleError(node, "valueRef for is not of type enum: " + valueRefType); } }
final EnumType.ValidValue validValue = enumType.getValidValue(validValueName);
final EnumType.ValidValue validValue = enumType.getValidValue(validValueName);