use of com.linkedin.data.schema.Name in project rest.li by linkedin.
the class RestLiDataValidator method buildRecordDataSchemaByProjection.
/**
* Build a new {@link RecordDataSchema} schema that contains only the masked fields.
*/
private static RecordDataSchema buildRecordDataSchemaByProjection(RecordDataSchema originalSchema, DataMap maskMap) {
RecordDataSchema newRecordSchema = new RecordDataSchema(new Name(originalSchema.getFullName()), RecordDataSchema.RecordType.RECORD);
List<RecordDataSchema.Field> newFields = new ArrayList<RecordDataSchema.Field>();
for (Map.Entry<String, Object> maskEntry : maskMap.entrySet()) {
RecordDataSchema.Field originalField = originalSchema.getField(maskEntry.getKey());
DataSchema fieldSchemaToUse = reuseOrBuildDataSchema(originalField.getType(), maskEntry.getValue());
RecordDataSchema.Field newField = buildRecordField(originalField, fieldSchemaToUse, newRecordSchema);
newFields.add(newField);
}
// Fields from 'include' are no difference from other fields from original schema,
// therefore, we are not calling newRecordSchema.setInclude() here.
// No errors are expected here, as the new schema is merely subset of the original
newRecordSchema.setFields(newFields, new StringBuilder());
if (originalSchema.getAliases() != null) {
newRecordSchema.setAliases(originalSchema.getAliases());
}
if (originalSchema.getDoc() != null) {
newRecordSchema.setDoc(originalSchema.getDoc());
}
if (originalSchema.getProperties() != null) {
newRecordSchema.setProperties(originalSchema.getProperties());
}
return newRecordSchema;
}
use of com.linkedin.data.schema.Name in project rest.li by linkedin.
the class RestLiDataValidator method buildTyperefDataSchemaByProjection.
/**
* Build a new {@link TyperefDataSchema} schema that contains only the masked fields.
*/
private static TyperefDataSchema buildTyperefDataSchemaByProjection(TyperefDataSchema originalSchema, DataMap maskMap) {
TyperefDataSchema newSchema = new TyperefDataSchema(new Name(originalSchema.getFullName()));
if (originalSchema.getProperties() != null) {
newSchema.setProperties(originalSchema.getProperties());
}
if (originalSchema.getDoc() != null) {
newSchema.setDoc(originalSchema.getDoc());
}
if (originalSchema.getAliases() != null) {
newSchema.setAliases(originalSchema.getAliases());
}
DataSchema newRefSchema = buildSchemaByProjection(originalSchema.getRef(), maskMap);
newSchema.setReferencedType(newRefSchema);
return newSchema;
}
use of com.linkedin.data.schema.Name in project rest.li by linkedin.
the class BatchCreateIdEntityResponse method generateSchema.
private static RecordDataSchema generateSchema() {
StringBuilder errorMessageBuilder = new StringBuilder(10);
ArrayDataSchema arraySchema = new ArrayDataSchema(new RecordDataSchema(new Name(CreateStatus.class.getSimpleName()), RecordDataSchema.RecordType.RECORD));
RecordDataSchema.Field arrayField = new RecordDataSchema.Field(arraySchema);
arrayField.setName(CollectionResponse.ELEMENTS, errorMessageBuilder);
RecordDataSchema schema = new RecordDataSchema(new Name(BatchCreateIdEntityResponse.class.getSimpleName()), RecordDataSchema.RecordType.RECORD);
schema.setFields(Arrays.asList(arrayField), errorMessageBuilder);
return schema;
}
use of com.linkedin.data.schema.Name in project rest.li by linkedin.
the class BatchCreateIdResponse method generateSchema.
private static RecordDataSchema generateSchema() {
StringBuilder errorMessageBuilder = new StringBuilder(10);
ArrayDataSchema arraySchema = new ArrayDataSchema(new RecordDataSchema(new Name(CreateStatus.class.getSimpleName()), RecordDataSchema.RecordType.RECORD));
RecordDataSchema.Field arrayField = new RecordDataSchema.Field(arraySchema);
arrayField.setName(CollectionResponse.ELEMENTS, errorMessageBuilder);
RecordDataSchema schema = new RecordDataSchema(new Name(BatchCreateIdResponse.class.getSimpleName()), RecordDataSchema.RecordType.RECORD);
schema.setFields(Arrays.asList(arrayField), errorMessageBuilder);
return schema;
}
use of com.linkedin.data.schema.Name in project rest.li by linkedin.
the class RestLiSnapshotCompatibilityChecker method createResolverFromSnapshot.
private static DataSchemaResolver createResolverFromSnapshot(AbstractSnapshot snapshot, String resolverPath) {
final DataSchemaResolver resolver = CompatibilityUtil.getDataSchemaResolver(resolverPath);
for (Map.Entry<String, NamedDataSchema> entry : snapshot.getModels().entrySet()) {
Name name = new Name(entry.getKey());
NamedDataSchema schema = entry.getValue();
resolver.bindNameToSchema(name, schema, DataSchemaLocation.NO_LOCATION);
}
return resolver;
}
Aggregations