JSON 메시지 validation 기능 수정
- 오류발생위치 출력 - type 오류 validation test 추가
This commit is contained in:
@@ -166,10 +166,12 @@ public class JSONMessage extends Message {
|
||||
throw new InvalidAccessException("The number of repetitions is different from the number of repetitions of the actual data. , " + item.getName(), item.getItemPath());
|
||||
}
|
||||
} // validation
|
||||
} catch(InvalidAccessException e) {
|
||||
throw e;
|
||||
} catch(Exception e) {
|
||||
throw new InvalidAccessException("setValue error", getItemPath(), null, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void doSetValue(JsonNode node, HashMap validationTargets, String parentPath) {
|
||||
Item item = null;
|
||||
@@ -255,40 +257,49 @@ public class JSONMessage extends Message {
|
||||
} else if(value == null || value.length() == 0) {
|
||||
setObject( itemPath, value );
|
||||
} else {
|
||||
int itemType = item.getDataTypeId();
|
||||
switch(itemType) {
|
||||
case Types.TYPE_INT :
|
||||
case Types.TYPE_SHORT :
|
||||
setInt( itemPath, new Integer(value) );
|
||||
break;
|
||||
case Types.TYPE_LONG :
|
||||
setLong( itemPath, new Long(value) );
|
||||
break;
|
||||
case Types.TYPE_BIGDECIMAL :
|
||||
if (SystemKeys.isValidationEnabled() && !isValid(value, item.getLength(), item.getDecimalPointLength())) {
|
||||
throw new InvalidAccessException(
|
||||
String.format("Invalid decimal point format Error value=%s,length=%d,pointLength=%d",
|
||||
value, item.getLength(), item.getDecimalPointLength()),
|
||||
itemPath);
|
||||
}
|
||||
setBigDecimal( itemPath, new BigDecimal(value) );
|
||||
break;
|
||||
case Types.TYPE_DOUBLE :
|
||||
setDouble( itemPath, new Double(value) );
|
||||
break;
|
||||
case Types.TYPE_FLOAT :
|
||||
setFloat( itemPath, new Float(value) );
|
||||
break;
|
||||
case Types.TYPE_BOOLEAN :
|
||||
setObject( itemPath, new Boolean(value) );
|
||||
break;
|
||||
case Types.TYPE_STRING :
|
||||
setString(itemPath, value);
|
||||
break;
|
||||
default :
|
||||
setString(itemPath, value);
|
||||
break;
|
||||
}
|
||||
int itemType = item.getDataTypeId();
|
||||
try {
|
||||
switch(itemType) {
|
||||
case Types.TYPE_INT :
|
||||
case Types.TYPE_SHORT :
|
||||
setInt( itemPath, new Integer(value) );
|
||||
break;
|
||||
case Types.TYPE_LONG :
|
||||
setLong( itemPath, new Long(value) );
|
||||
break;
|
||||
case Types.TYPE_BIGDECIMAL :
|
||||
if (SystemKeys.isValidationEnabled() && !isValid(value, item.getLength(), item.getDecimalPointLength())) {
|
||||
throw new InvalidAccessException(
|
||||
String.format("Invalid decimal point format Error value=%s,length=%d,pointLength=%d",
|
||||
value, item.getLength(), item.getDecimalPointLength()),
|
||||
itemPath);
|
||||
}
|
||||
setBigDecimal( itemPath, new BigDecimal(value) );
|
||||
break;
|
||||
case Types.TYPE_DOUBLE :
|
||||
setDouble( itemPath, new Double(value) );
|
||||
break;
|
||||
case Types.TYPE_FLOAT :
|
||||
setFloat( itemPath, new Float(value) );
|
||||
break;
|
||||
case Types.TYPE_BOOLEAN :
|
||||
setObject( itemPath, new Boolean(value) );
|
||||
break;
|
||||
case Types.TYPE_STRING :
|
||||
setString(itemPath, value);
|
||||
break;
|
||||
default :
|
||||
setString(itemPath, value);
|
||||
break;
|
||||
}
|
||||
} catch (InvalidAccessException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
throw new InvalidAccessException(
|
||||
String.format("Type mismatch: value='%s', field='%s', dataType=%s",
|
||||
value, itemPath, Types.getType(itemType)),
|
||||
itemPath, null, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user