List of usage examples for org.apache.thrift TBase setFieldValue
public void setFieldValue(F field, Object value);
From source file:com.linecorp.armeria.client.thrift.ThriftMethod.java
License:Apache License
@SuppressWarnings("unchecked") TBase createArgs(boolean isAsync, Object[] args) { final TBase newArgs = createArgs(); if (args != null) { final int toFillArgLength = args.length - (isAsync ? 1 : 0); for (int i = 0; i < toFillArgLength; i++) { newArgs.setFieldValue(argsFieldIdEnums[i], args[i]); }/*ww w . j a v a 2 s. c o m*/ } return newArgs; }
From source file:com.linecorp.armeria.internal.thrift.ThriftFunction.java
License:Apache License
/** * Returns a new arguments instance./*from www.j a va2 s. c o m*/ */ public TBase<TBase<?, ?>, TFieldIdEnum> newArgs(List<Object> args) { requireNonNull(args, "args"); final TBase<TBase<?, ?>, TFieldIdEnum> newArgs = newArgs(); final int size = args.size(); for (int i = 0; i < size; i++) { newArgs.setFieldValue(argFields[i], args.get(i)); } return newArgs; }
From source file:com.linecorp.armeria.internal.thrift.ThriftFunction.java
License:Apache License
/** * Sets the success field of the specified {@code result} to the specified {@code value}. *//* w ww .j a v a2 s .c o m*/ public void setSuccess(TBase<?, TFieldIdEnum> result, Object value) { if (successField != null) { result.setFieldValue(successField, value); } }
From source file:com.linecorp.armeria.internal.thrift.ThriftFunction.java
License:Apache License
/** * Sets the exception field of the specified {@code result} to the specified {@code cause}. *///from ww w . ja v a 2 s. c o m public boolean setException(TBase<?, TFieldIdEnum> result, Throwable cause) { Class<?> causeType = cause.getClass(); for (Entry<Class<Throwable>, TFieldIdEnum> e : exceptionFields.entrySet()) { if (e.getKey().isAssignableFrom(causeType)) { result.setFieldValue(e.getValue(), cause); return true; } } return false; }
From source file:com.linecorp.armeria.server.thrift.ThriftFunction.java
License:Apache License
void setSuccess(TBase<?, TFieldIdEnum> result, Object value) { if (successField != null) { result.setFieldValue(successField, value); } }
From source file:com.linecorp.armeria.server.thrift.ThriftFunction.java
License:Apache License
boolean setException(TBase<?, TFieldIdEnum> result, Throwable cause) { Class<?> causeType = cause.getClass(); for (Entry<Class<Throwable>, TFieldIdEnum> e : exceptionFields.entrySet()) { if (e.getKey().isAssignableFrom(causeType)) { result.setFieldValue(e.getValue(), cause); return true; }/*from w w w . j a va2 s.c o m*/ } return false; }
From source file:com.netflix.astyanax.thrift.ThriftUtils.java
License:Apache License
@SuppressWarnings({ "rawtypes", "unchecked" })
private static Object populateObject(Object obj, Map<String, Object> map) throws Exception {
org.apache.thrift.TBase entity = (org.apache.thrift.TBase) obj;
Field field = entity.getClass().getDeclaredField("metaDataMap");
Map<org.apache.thrift.TFieldIdEnum, org.apache.thrift.meta_data.FieldMetaData> fields = (Map<org.apache.thrift.TFieldIdEnum, FieldMetaData>) field
.get(entity);/* w w w .j ava2s . c o m*/
for (Entry<TFieldIdEnum, FieldMetaData> f : fields.entrySet()) {
Object value = map.get(f.getKey().getFieldName());
if (value != null) {
ThriftTypes type = ThriftTypes.values()[f.getValue().valueMetaData.type];
switch (type) {
case VOID:
break;
case BYTE:
case BOOL:
case DOUBLE:
case I16:
case I32:
case I64:
case STRING:
try {
entity.setFieldValue(f.getKey(), valueForBasicType(value, f.getValue().valueMetaData.type));
} catch (ClassCastException e) {
if (e.getMessage().contains(ByteBuffer.class.getCanonicalName())) {
entity.setFieldValue(f.getKey(), ByteBuffer.wrap(Base64.decodeBase64((String) value)));
} else {
throw e;
}
}
break;
case ENUM: {
org.apache.thrift.meta_data.EnumMetaData meta = (org.apache.thrift.meta_data.EnumMetaData) f
.getValue().valueMetaData;
Object e = meta.enumClass;
entity.setFieldValue(f.getKey(), Enum.valueOf((Class<Enum>) e, (String) value));
break;
}
case MAP: {
org.apache.thrift.meta_data.MapMetaData meta = (org.apache.thrift.meta_data.MapMetaData) f
.getValue().valueMetaData;
if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) {
Map<Object, Object> childMap = (Map<Object, Object>) value;
Map<Object, Object> childEntityMap = Maps.newHashMap();
entity.setFieldValue(f.getKey(), childEntityMap);
if (!meta.keyMetaData.isStruct() && !meta.keyMetaData.isContainer()) {
for (Entry<Object, Object> entry : childMap.entrySet()) {
Object childKey = valueForBasicType(entry.getKey(), meta.keyMetaData.type);
Object childValue = valueForBasicType(entry.getValue(), meta.valueMetaData.type);
childEntityMap.put(childKey, childValue);
}
}
} else {
LOG.error(String.format("Unable to serializer field '%s' key type '%s' not supported",
f.getKey().getFieldName(), meta.keyMetaData.getTypedefName()));
}
break;
}
case LIST: {
Map<String, Object> childMap = (Map<String, Object>) value;
org.apache.thrift.meta_data.ListMetaData listMeta = (org.apache.thrift.meta_data.ListMetaData) f
.getValue().valueMetaData;
// Create an empty list and attach to the parent entity
List<Object> childList = Lists.newArrayList();
entity.setFieldValue(f.getKey(), childList);
if (listMeta.elemMetaData instanceof org.apache.thrift.meta_data.StructMetaData) {
org.apache.thrift.meta_data.StructMetaData structMeta = (org.apache.thrift.meta_data.StructMetaData) listMeta.elemMetaData;
for (Entry<String, Object> childElement : childMap.entrySet()) {
org.apache.thrift.TBase childEntity = structMeta.structClass.newInstance();
populateObject(childEntity, (Map<String, Object>) childElement.getValue());
childList.add(childEntity);
}
}
break;
}
case STRUCT: {
break;
}
case SET:
default:
LOG.error("Unhandled value : " + f.getKey().getFieldName() + " " + type);
break;
}
}
}
return entity;
}
From source file:ezbake.deployer.utilities.YamlManifestFileReader.java
License:Apache License
private <T> void updateValue(Map<String, Object> ymlAppManifest, TBase objToSet, TFieldIdEnum fieldToSet, ManifestKey key, Class<T> typeOfValue, Optional<T> defaultValue) { log.debug("Getting manifest value {}", key.getName()); Object value = ymlAppManifest.get(key.getName()); boolean override = true; //This is a bit hacky, but we don't want to override the application id for common services if (fieldToSet == ApplicationInfo._Fields.APPLICATION_ID) { Object currentValue = objToSet.getFieldValue(fieldToSet); if (currentValue != null && currentValue.toString().equals("common_services")) { override = false;/* ww w .j a va2s . c o m*/ } if (value != null && value.equals("common_services")) { override = false; } } if (override && overrides.containsKey(key.getName())) { value = overrides.get(key.getName()); } else if (value == null && defaultValue.isPresent()) { value = defaultValue.get(); } if (value != null) { log.debug("Setting field {} to {}", fieldToSet.getFieldName(), value); if (typeOfValue != null && !typeOfValue.equals(String.class)) { if (typeOfValue.equals(Integer.class)) { objToSet.setFieldValue(fieldToSet, Integer.parseInt(toString(value))); } else if (typeOfValue.equals(Boolean.class)) { objToSet.setFieldValue(fieldToSet, Boolean.parseBoolean(toString(value))); } else if (typeOfValue.equals(Double.class)) { objToSet.setFieldValue(fieldToSet, Double.parseDouble(toString(value))); } } else { objToSet.setFieldValue(fieldToSet, value); } } }