code cleanup in prep for next step: loading a namespace that includes a schema with a udt: the one that the Spark connector team needs.

This commit is contained in:
David Noble
2019-09-17 23:59:56 -07:00
parent f976162d8e
commit 68be6f07a3
3 changed files with 58 additions and 20 deletions

View File

@@ -25,9 +25,28 @@ import java.util.PrimitiveIterator;
@Type(value = TaggedPropertyType.class, name="tagged"),
@Type(value = TuplePropertyType.class, name="tuple"),
// Primitive types
@Type(value = PrimitivePropertyType.class, name="null"),
@Type(value = PrimitivePropertyType.class, name="bool"),
@Type(value = PrimitivePropertyType.class, name="int8"),
@Type(value = PrimitivePropertyType.class, name="int16"),
@Type(value = PrimitivePropertyType.class, name="int32"),
@Type(value = PrimitivePropertyType.class, name="int64"),
@Type(value = PrimitivePropertyType.class, name="varint"),
@Type(value = PrimitivePropertyType.class, name="uint8"),
@Type(value = PrimitivePropertyType.class, name="uint16"),
@Type(value = PrimitivePropertyType.class, name="uint32"),
@Type(value = PrimitivePropertyType.class, name="utf8")
@Type(value = PrimitivePropertyType.class, name="uint64"),
@Type(value = PrimitivePropertyType.class, name="varuint"),
@Type(value = PrimitivePropertyType.class, name="float32"),
@Type(value = PrimitivePropertyType.class, name="float64"),
@Type(value = PrimitivePropertyType.class, name="float128"),
@Type(value = PrimitivePropertyType.class, name="decimal"),
@Type(value = PrimitivePropertyType.class, name="datetime"),
@Type(value = PrimitivePropertyType.class, name="unixdatetime"),
@Type(value = PrimitivePropertyType.class, name="binary"),
@Type(value = PrimitivePropertyType.class, name="guid"),
@Type(value = PrimitivePropertyType.class, name="utf8"),
@Type(value = PrimitivePropertyType.class, name="any")
})
public abstract class PropertyType {

View File

@@ -186,7 +186,7 @@ public enum TypeKind {
/**
* An untyped sparse field.
* <p>
* May only be used to define the type within a nested scope.
* May only be used to define the type of a field within a nested scope.
*/
ANY(30, "any");

View File

@@ -4,54 +4,73 @@
package com.azure.data.cosmos.serialization.hybridrow.schemas;
import com.azure.data.cosmos.serialization.hybridrow.SchemaId;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* UDT properties represent nested structures with an independent schema.
* <p>
* UDT properties include a nested row within an existing row as a column. The schema of the
* nested row may be evolved independently of the outer row. Changes to the independent schema affect
* all outer schemas where the UDT is used.
* UDT properties include a nested row within an existing row as a column. The schema of the nested row may be evolved
* independently of the outer row. Changes to the independent schema affect all outer schemas where the UDT is used.
*/
public class UdtPropertyType extends ScopePropertyType {
@JsonProperty(required = true)
private String name;
@JsonProperty(required = true)
private SchemaId schemaId;
/**
* Initializes a new {@link UdtPropertyType}.
*/
public UdtPropertyType() {
this.schemaId(SchemaId.INVALID);
}
/**
* The identifier of the UDT schema defining the structure for the nested row.
* The name of the UDT schema defining the structure of a nested row.
* <p>
* The UDT schema MUST be defined within the same {@link Namespace} as the schema that references it.
*
* @return the identifier of the UDT schema defining the structure of a nested row.
*/
public final String name() {
return this.name;
}
public final void name(String value) {
/**
* Sets the name of the UDT schema defining the structure of a nested row.
* <p>
* The UDT schema MUST be defined within the same {@link Namespace} as the schema that references it.
*
* @param value the name of the UDT schema defining the structure of a nested row.
* @return a reference to this {@link UdtPropertyType}.
*/
public final UdtPropertyType name(String value) {
this.name = value;
return this;
}
/**
* The unique identifier for a schema.
* The unique identifier of the UDT schema defining the structure of a nested row.
* <p>
* Optional uniquifier if multiple versions of {@link #name} appears within the Namespace.
* Optional uniqueifier if multiple versions of {@link #name} appears within the {@link Namespace}.
* <p>
* If multiple versions of a UDT are defined within the {@link Namespace} then the globally
* unique identifier of the specific version referenced MUST be provided.
* </p>
* If multiple versions of a UDT are defined within a {@link Namespace} the globally unique identifier of the
* specific version referenced MUST be provided.
*
* @return the unique identifier of the UDT schema defining the structure of a nested row or {@code null}.
*/
public final SchemaId schemaId() {
return this.schemaId;
}
/**
* Sets the unique identifier of the UDT schema defining the structure of a nested row.
* <p>
* Optional uniqueifier if multiple versions of {@link #name} appears within the {@link Namespace}.
* <p>
* If multiple versions of a UDT are defined within a {@link Namespace} the globally unique identifier of the
* specific version referenced MUST be provided.
*
* @param value the unique identifier of the UDT schema defining the structure of a nested row or {@code null}.
* @return a reference to this {@link UdtPropertyType}.
*/
public final UdtPropertyType schemaId(SchemaId value) {
this.schemaId = value;
return this;
}
}
}