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