in src/main/java/org/apache/uima/json/jsoncas2/ser/FeatureStructureSerializer.java [61:111]
protected void writeFeature(SerializerProvider aProvider, ReferenceCache aRefCache,
JsonGenerator aJg, FeatureStructure aFs, Feature aFeature) throws IOException {
if (!aFeature.getRange().isPrimitive()) {
FeatureStructure target = aFs.getFeatureValue(aFeature);
if (target != null) {
aJg.writeNumberField(REF_FEATURE_PREFIX + aFeature.getShortName(),
aRefCache.fsRef(aFs.getFeatureValue(aFeature)));
}
return;
}
if (aFeature.getRange().isStringOrStringSubtype()) {
String value = aFs.getStringValue(aFeature);
if (value != null) {
aJg.writeStringField(aFeature.getShortName(), value);
}
return;
}
String rangeTypeName = aFeature.getRange().getName();
switch (rangeTypeName) {
case CAS.TYPE_NAME_BOOLEAN:
aJg.writeBooleanField(aFeature.getShortName(), aFs.getBooleanValue(aFeature));
break;
case CAS.TYPE_NAME_BYTE:
aJg.writeNumberField(aFeature.getShortName(), aFs.getByteValue(aFeature));
break;
case CAS.TYPE_NAME_DOUBLE:
writeFloatingPointField(aJg, aFeature.getShortName(), aFs.getDoubleValue(aFeature));
break;
case CAS.TYPE_NAME_FLOAT:
writeFloatingPointField(aJg, aFeature.getShortName(), aFs.getFloatValue(aFeature));
break;
case CAS.TYPE_NAME_INTEGER: {
aJg.writeFieldName(aFeature.getShortName());
int value = aFs.getIntValue(aFeature);
value = convertOffsetsIfNecessary(aProvider, aFs, aFeature, value);
aJg.writeNumber(value);
break;
}
case CAS.TYPE_NAME_LONG:
aJg.writeNumberField(aFeature.getShortName(), aFs.getLongValue(aFeature));
break;
case CAS.TYPE_NAME_SHORT:
aJg.writeNumberField(aFeature.getShortName(), aFs.getShortValue(aFeature));
break;
default:
throw new IOException("Unsupported primitive type [" + rangeTypeName + "]");
}
}