Search in sources :

Example 11 with Name

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;
}
Also used : UnionDataSchema(com.linkedin.data.schema.UnionDataSchema) TyperefDataSchema(com.linkedin.data.schema.TyperefDataSchema) RecordDataSchema(com.linkedin.data.schema.RecordDataSchema) ArrayDataSchema(com.linkedin.data.schema.ArrayDataSchema) DataSchema(com.linkedin.data.schema.DataSchema) MapDataSchema(com.linkedin.data.schema.MapDataSchema) RecordDataSchema(com.linkedin.data.schema.RecordDataSchema) ArrayList(java.util.ArrayList) Map(java.util.Map) HashMap(java.util.HashMap) DataMap(com.linkedin.data.DataMap) Name(com.linkedin.data.schema.Name)

Example 12 with Name

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;
}
Also used : UnionDataSchema(com.linkedin.data.schema.UnionDataSchema) TyperefDataSchema(com.linkedin.data.schema.TyperefDataSchema) RecordDataSchema(com.linkedin.data.schema.RecordDataSchema) ArrayDataSchema(com.linkedin.data.schema.ArrayDataSchema) DataSchema(com.linkedin.data.schema.DataSchema) MapDataSchema(com.linkedin.data.schema.MapDataSchema) TyperefDataSchema(com.linkedin.data.schema.TyperefDataSchema) Name(com.linkedin.data.schema.Name)

Example 13 with Name

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;
}
Also used : ArrayDataSchema(com.linkedin.data.schema.ArrayDataSchema) RecordDataSchema(com.linkedin.data.schema.RecordDataSchema) Name(com.linkedin.data.schema.Name)

Example 14 with Name

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;
}
Also used : ArrayDataSchema(com.linkedin.data.schema.ArrayDataSchema) RecordDataSchema(com.linkedin.data.schema.RecordDataSchema) Name(com.linkedin.data.schema.Name)

Example 15 with Name

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;
}
Also used : NamedDataSchema(com.linkedin.data.schema.NamedDataSchema) DataSchemaResolver(com.linkedin.data.schema.DataSchemaResolver) CompatibilityInfoMap(com.linkedin.restli.tools.compatibility.CompatibilityInfoMap) Map(java.util.Map) Name(com.linkedin.data.schema.Name)

Aggregations

Name (com.linkedin.data.schema.Name)16 RecordDataSchema (com.linkedin.data.schema.RecordDataSchema)10 ArrayDataSchema (com.linkedin.data.schema.ArrayDataSchema)5 TyperefDataSchema (com.linkedin.data.schema.TyperefDataSchema)5 UnionDataSchema (com.linkedin.data.schema.UnionDataSchema)5 DataSchema (com.linkedin.data.schema.DataSchema)4 EnumDataSchema (com.linkedin.data.schema.EnumDataSchema)4 MapDataSchema (com.linkedin.data.schema.MapDataSchema)4 ArrayList (java.util.ArrayList)4 DataMap (com.linkedin.data.DataMap)3 HashMap (java.util.HashMap)3 DataSchemaResolver (com.linkedin.data.schema.DataSchemaResolver)2 FixedDataSchema (com.linkedin.data.schema.FixedDataSchema)2 NamedDataSchema (com.linkedin.data.schema.NamedDataSchema)2 UnionTemplateSpec (com.linkedin.pegasus.generator.spec.UnionTemplateSpec)2 Map (java.util.Map)2 Test (org.testng.annotations.Test)2 EnumSymbolDeclarationContext (com.linkedin.data.grammar.PdlParser.EnumSymbolDeclarationContext)1 ImportDeclarationContext (com.linkedin.data.grammar.PdlParser.ImportDeclarationContext)1 PropDeclarationContext (com.linkedin.data.grammar.PdlParser.PropDeclarationContext)1