Beispiel #1
0
def get_field_default_value(field):
    """Returns the field default value."""

    if field.is_map:
        raise exception.InvalidArgument(field)
    elif field.is_array:
        raise exception.InvalidArgument(field)
    else:
        return get_field_default_base_value(field)
Beispiel #2
0
def get_field_proto_dictionary_class_name(field):
    """Returns the field proto dictionary class name."""

    map_key = base.map_key(field)
    map_key_types = [
        schema.Field.DataType.INT64,
        schema.Field.DataType.UINT64,
        schema.Field.DataType.INT32,
        schema.Field.DataType.UINT32,
        schema.Field.DataType.BOOL,
        schema.Field.DataType.STRING,
    ]
    if map_key.data_type in map_key_types:
        map_value = base.map_value(field)
        map_value_object_types = [
            schema.Field.DataType.STRUCT,
            schema.Field.DataType.STRING,
            schema.Field.DataType.BYTES,
        ]
        if map_value.data_type in map_value_object_types:
            map_value_base_type_name = 'Object'
        else:
            map_value_base_type_name = get_field_proto_base_type_name(
                map_value)
        class_name = [
            CLASS_PREFIX_GPB,
            get_field_proto_base_type_name(map_key),
            map_value_base_type_name,
            'Dictionary',
        ]
        return ''.join(class_name)
    raise exception.InvalidArgument(field)
Beispiel #3
0
def get_field_ownership(field):
    """Returns the field ownership."""

    if field.is_map:
        return 'copy'
    elif field.is_array:
        return 'copy'
    elif field.data_type == schema.Field.DataType.STRUCT:
        if field.metadata.full_name == 'google.protobuf.Duration':
            if field.is_nullable:
                return 'strong'
            else:
                return 'assign'
        elif field.metadata.full_name == 'google.protobuf.Timestamp':
            return 'strong'
        elif field.metadata.full_name == 'weave.common.ResourceId':
            return 'copy'
        elif field.metadata.full_name == 'weave.common.ResourceName':
            return 'copy'
        else:
            return 'strong'
    elif is_primitive(field):
        if field.is_nullable:
            return 'strong'
        else:
            return 'assign'
    elif field.data_type == schema.Field.DataType.STRING:
        return 'copy'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'copy'
    raise exception.InvalidArgument(field)
Beispiel #4
0
def get_field_base_class_name(field, prefix=CLASS_PREFIX_NLK):
    """Returns the field base class name."""

    if field.data_type == schema.Field.DataType.STRUCT:
        if field.metadata.full_name == 'google.protobuf.Duration':
            if field.is_nullable:
                return 'NSNumber'
        elif field.metadata.full_name == 'google.protobuf.Timestamp':
            return 'NSDate'
        elif field.metadata.full_name == 'weave.common.ResourceId':
            return 'NSString'
        elif field.metadata.full_name == 'weave.common.ResourceName':
            return 'NSString'
        else:
            if base.is_protobuf(field):
                return get_proto_class_name(field)
            else:
                return get_class_name(field, prefix)
    elif is_primitive(field):
        if field.is_nullable:
            return 'NSNumber'
    elif field.data_type == schema.Field.DataType.STRING:
        return 'NSString'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'NSData'
    raise exception.InvalidArgument(field)
Beispiel #5
0
def get_field_type_parameter(field, prefix=CLASS_PREFIX_NLK):
    """Returns the field type parameter."""

    if field.data_type == schema.Field.DataType.STRUCT:
        if field.metadata.full_name == 'google.protobuf.Duration':
            return 'NSNumber *'
        elif field.metadata.full_name == 'google.protobuf.Timestamp':
            return 'NSDate *'
        elif field.metadata.full_name == 'weave.common.ResourceId':
            return 'NSString *'
        elif field.metadata.full_name == 'weave.common.ResourceName':
            return 'NSString *'
        else:
            if base.is_protobuf(field):
                class_name = get_proto_class_name(field)
            else:
                class_name = get_class_name(field, prefix)
            return '{} *'.format(class_name)
    elif is_primitive(field):
        return 'NSNumber *'
    elif field.data_type == schema.Field.DataType.STRING:
        return 'NSString *'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'NSData *'
    raise exception.InvalidArgument(field)
Beispiel #6
0
def get_field_test_base_value(field):
    """Returns the field test base value."""

    if field.data_type == schema.Field.DataType.STRUCT:
        if field.metadata.full_name == 'google.protobuf.Duration':
            return '1'
        elif field.metadata.full_name == 'google.protobuf.Timestamp':
            return 'Date(timeIntervalSince1970: 1)'
        elif field.metadata.full_name == 'weave.common.ResourceId':
            return '"test-resource-id"'
        elif field.metadata.full_name == 'weave.common.ResourceName':
            return '"test-resource-name"'
        else:
            class_name = get_class_name(field)
            return '{}()'.format(class_name)
    elif field.data_type == schema.Field.DataType.ENUM:
        if field.is_map or field.is_array:
            return 1
        else:
            enum_pair = field.metadata.pair_list[1]
            name = get_enum_pair_swift_name(enum_pair)
            if name is None:
                name = get_enum_pair_value_name(enum_pair)
                name = inflection.camelize(name, False)
            return '.{}'.format(name)
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'true'
    elif is_primitive(field):
        return '1'
    elif field.data_type == schema.Field.DataType.STRING:
        return '"test-string"'
    elif field.data_type == schema.Field.DataType.BYTES:
        return '"test-data".data(using: String.Encoding.utf8)!'
    raise exception.InvalidArgument(field)
Beispiel #7
0
def get_field_proto_base_type_name(field):
    """Returns the field proto base type name."""

    if field.data_type == schema.Field.DataType.ENUM:
        return 'Enum'
    elif field.data_type == schema.Field.DataType.FLOAT:
        return 'Float'
    elif field.data_type == schema.Field.DataType.DOUBLE:
        return 'Double'
    elif field.data_type == schema.Field.DataType.INT64:
        return 'Int64'
    elif field.data_type == schema.Field.DataType.UINT64:
        return 'UInt64'
    elif field.data_type == schema.Field.DataType.INT32:
        return 'Int32'
    elif field.data_type == schema.Field.DataType.UINT32:
        return 'UInt32'
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'Bool'
    elif field.data_type == schema.Field.DataType.STRING:
        return 'String'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'Data'
    elif field.data_type == schema.Field.DataType.STRUCT:
        return 'Message'
    raise exception.InvalidArgument(field)
Beispiel #8
0
def field_is_primitive(field):
    """Returns the True if the field is primitive, else returns False.

  Args:
    field: Any schema field object.

  Returns:
    Boolean
  """

    if not isinstance(field, schema.Field):
        raise exception.InvalidArgument(
            "Invalid argument to field_is_primitive: %s, %s" %
            (type(field).__name__, field))

    if isinstance(field, schema.Struct):
        return False

    data_type_map = schema.Field.DataType
    if (field.data_type == data_type_map.FLOAT
            or field.data_type == data_type_map.INT64
            or field.data_type == data_type_map.UINT64
            or field.data_type == data_type_map.INT32
            or field.data_type == data_type_map.UINT32
            or field.data_type == data_type_map.DOUBLE
            or field.data_type == data_type_map.BOOL
            or field.data_type == data_type_map.STRING
            or field.data_type == data_type_map.BYTES
            or field.data_type == data_type_map.ENUM):
        return True
    else:
        return False
Beispiel #9
0
def get_field_proto_base_class_name(field):
    """Returns the field proto base class name."""

    if field.data_type == schema.Field.DataType.STRUCT:
        return get_proto_class_name(field)
    elif field.data_type == schema.Field.DataType.STRING:
        return 'NSString'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'NSData'
    raise exception.InvalidArgument(field)
Beispiel #10
0
def get_object_type_url(schema_obj):
    """Gets the object type url."""

    if (isinstance(schema_obj, schema.Command)
            or isinstance(schema_obj, schema.CommandResponse)
            or isinstance(schema_obj, schema.Event)
            or isinstance(schema_obj, schema.Trait)):
        return TYPE_URL_PREFIX + get_object_type(schema_obj)
    else:
        raise exception.InvalidArgument(schema_obj)
Beispiel #11
0
def get_field_proto_type_parameter(field):
    """Returns the field proto type parameter."""

    if field.data_type == schema.Field.DataType.STRUCT:
        class_name = get_proto_class_name(field)
        return '{} *'.format(class_name)
    elif field.data_type == schema.Field.DataType.STRING:
        return 'NSString *'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'NSData *'
    raise exception.InvalidArgument(field)
Beispiel #12
0
def java_base_field_type(field):
    """Returns the base Java type for a field object.

  Args:
    field: Any schema field object.

  Returns:
    The Java type as a string.
  """

    if not isinstance(field, schema.Field):
        raise exception.InvalidArgument(
            'Invalid argument to java_type: %s, %s' %
            (type(field).__name__, field))

    if field.data_type == schema.Field.DataType.FLOAT:
        return 'Float' if field.is_nullable else 'float'
    elif field.data_type == schema.Field.DataType.DOUBLE:
        return 'Double' if field.is_nullable else 'double'
    elif (field.data_type == schema.Field.DataType.INT64
          or field.data_type == schema.Field.DataType.UINT64):
        return 'Long' if field.is_nullable else 'long'
    elif field.data_type == schema.Field.DataType.INT32:
        return 'Integer' if field.is_nullable else 'int'
    elif field.data_type == schema.Field.DataType.UINT32:
        return 'Integer' if field.is_nullable else 'int'
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'Boolean' if field.is_nullable else 'boolean'
    elif field.data_type == schema.Field.DataType.STRING:
        return 'String'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'byte[]'
    elif field.data_type == schema.Field.DataType.STRUCT:
        return field.metadata.full_name
    elif field.data_type == schema.Field.DataType.ENUM:
        return field.metadata.full_name
    else:
        raise exception.InvalidArgument(
            'Invalid field type to java_type: %s, %s' %
            (field, field.data_type))
Beispiel #13
0
def proto_wrapped_field_type(field):
    """Returns the protobuf wrapped type for a field object.

  Args:
    field: Any schema field object.

  Returns:
    The protobuf wrapped type as a string.
  """

    if not isinstance(field, schema.Field):
        raise exception.InvalidArgument(
            'Invalid argument to java_type: %s, %s' %
            (type(field).__name__, field))
    if field.data_type == schema.Field.DataType.FLOAT:
        return 'google.protobuf.FloatValue'
    elif field.data_type == schema.Field.DataType.DOUBLE:
        return 'google.protobuf.DoubleValue'
    elif field.data_type == schema.Field.DataType.INT64:
        return 'google.protobuf.Int64Value'
    elif field.data_type == schema.Field.DataType.UINT64:
        return 'google.protobuf.UInt64Value'
    elif field.data_type == schema.Field.DataType.INT32:
        return 'google.protobuf.Int32Value'
    elif field.data_type == schema.Field.DataType.UINT32:
        return 'google.protobuf.UInt32Value'
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'google.protobuf.BoolValue'
    elif field.data_type == schema.Field.DataType.STRING:
        return 'google.protobuf.StringValue'
    elif field.data_type == schema.Field.DataType.BYTES:
        return 'google.protobuf.BytesValue'
    else:
        raise exception.InvalidArgument(
            'Invalid field type to java_type: %s, %s' %
            (field, field.data_type))
Beispiel #14
0
def get_field_proto_primitive_type(field):
    """Returns the field proto primitive type."""

    if field.data_type == schema.Field.DataType.ENUM:
        return get_enum_proto_name(field)
    elif field.data_type == schema.Field.DataType.FLOAT:
        return 'float'
    elif field.data_type == schema.Field.DataType.DOUBLE:
        return 'double'
    elif field.data_type == schema.Field.DataType.INT64:
        return 'int64_t'
    elif field.data_type == schema.Field.DataType.UINT64:
        return 'uint64_t'
    elif field.data_type == schema.Field.DataType.INT32:
        return 'int32_t'
    elif field.data_type == schema.Field.DataType.UINT32:
        return 'uint32_t'
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'BOOL'
    raise exception.InvalidArgument(field)
Beispiel #15
0
def java_field_type(obj):
    """Returns the base Java type for a schema object.

  Args:
    obj: A Field or InterfaceComponent.

  Returns:
    The Java type as a string.
  """

    if isinstance(obj, schema.Field):
        base_type = java_base_field_type(obj)
        if obj.is_array:
            return 'List<%s>' % base_type
        return base_type
    elif isinstance(obj, schema.InterfaceComponent):
        return obj.trait.full_name
    else:
        raise exception.InvalidArgument("java_field_type doesn't support %r" %
                                        obj)
Beispiel #16
0
def get_field_proto_array_class_name(field):
    """Returns the field proto array class name."""

    array_types = [
        schema.Field.DataType.ENUM,
        schema.Field.DataType.FLOAT,
        schema.Field.DataType.DOUBLE,
        schema.Field.DataType.INT64,
        schema.Field.DataType.UINT64,
        schema.Field.DataType.INT32,
        schema.Field.DataType.UINT32,
        schema.Field.DataType.BOOL,
    ]
    if field.data_type in array_types:
        class_name = [
            CLASS_PREFIX_GPB,
            get_field_proto_base_type_name(field),
            'Array',
        ]
        return ''.join(class_name)
    raise exception.InvalidArgument(field)
Beispiel #17
0
def get_field_value_method(field):
    """Returns the field value method."""

    if field.data_type == schema.Field.DataType.STRUCT:
        if field.metadata.full_name == 'google.protobuf.Duration':
            return 'doubleValue'
    elif field.data_type == schema.Field.DataType.ENUM:
        return 'intValue'
    elif field.data_type == schema.Field.DataType.FLOAT:
        return 'floatValue'
    elif field.data_type == schema.Field.DataType.DOUBLE:
        return 'doubleValue'
    elif field.data_type == schema.Field.DataType.INT64:
        return 'longLongValue'
    elif field.data_type == schema.Field.DataType.UINT64:
        return 'unsignedLongLongValue'
    elif field.data_type == schema.Field.DataType.INT32:
        return 'intValue'
    elif field.data_type == schema.Field.DataType.UINT32:
        return 'unsignedIntValue'
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'boolValue'
    raise exception.InvalidArgument(field)
Beispiel #18
0
def get_field_primitive_type(field, prefix=CLASS_PREFIX_NLK):
    """Returns the field primitive type."""

    if field.data_type == schema.Field.DataType.STRUCT:
        if field.metadata.full_name == 'google.protobuf.Duration':
            return 'NSTimeInterval'
    elif field.data_type == schema.Field.DataType.ENUM:
        return get_enum_name(field, prefix)
    elif field.data_type == schema.Field.DataType.FLOAT:
        return 'float'
    elif field.data_type == schema.Field.DataType.DOUBLE:
        return 'double'
    elif field.data_type == schema.Field.DataType.INT64:
        return 'int64_t'
    elif field.data_type == schema.Field.DataType.UINT64:
        return 'uint64_t'
    elif field.data_type == schema.Field.DataType.INT32:
        return 'int32_t'
    elif field.data_type == schema.Field.DataType.UINT32:
        return 'uint32_t'
    elif field.data_type == schema.Field.DataType.BOOL:
        return 'BOOL'
    raise exception.InvalidArgument(field)
Beispiel #19
0
def get_object_type(schema_obj):
    """Gets the object type."""

    if isinstance(schema_obj, schema.Field):
        raise exception.InvalidArgument(schema_obj)
    return schema_obj.full_name