Example usage for org.apache.thrift TBase setFieldValue

List of usage examples for org.apache.thrift TBase setFieldValue

Introduction

In this page you can find the example usage for org.apache.thrift TBase setFieldValue.

Prototype

public void setFieldValue(F field, Object value);

Source Link

Document

Set a field's value by field variable.

Usage

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);
        }
    }
}