Package com.linkedin.data.schema

Examples of com.linkedin.data.schema.DataSchema


  }

  private static boolean checkParameterHasTyperefSchema(Parameter<?> parameter)
  {
    boolean result = false;
    DataSchema dataSchema = parameter.getDataSchema();
    Class<?> dataType = parameter.getType();

    if (dataType.isArray())
    {
      if (dataSchema instanceof ArrayDataSchema)
View Full Code Here


    {
      return null;
    }
    else if (type.isArray())
    {
      DataSchema itemSchema = DataTemplateUtil.getSchema(type.getComponentType());
      return new ArrayDataSchema(itemSchema);
    }
    return DataTemplateUtil.getSchema(type);
  }
View Full Code Here

    }
    else
    {
      try
      {
        DataSchema inferredSchema = DataTemplateUtil.getSchema(type);
        DataSchema derefSchema = typerefSchema.getDereferencedDataSchema();
        if (inferredSchema.equals(derefSchema))
        {
          return null;
        }
        return "typeref " + typerefSchema + " is not compatible with (" + type
View Full Code Here

  @Override
  public void validate(ValidatorContext context)
  {
    DataElement dataElement = context.dataElement();
    Object value = dataElement.getValue();
    DataSchema schema = dataElement.getSchema();
    if (schema.getType() != DataSchema.Type.RECORD ||
        (((RecordDataSchema) schema).getFullName()).equals(SCHEMA_NAME) == false)
    {
      context.addResult(new Message(context.dataElement().path(),
                                    "%1$s invoked on schema that is not %2$s",
                                    AnyRecordValidator.class.getName(), SCHEMA_NAME));
    }
    else if (value.getClass() != DataMap.class)
    {
      context.addResult(new Message(context.dataElement().path(),
                                    "%1$s expects data to be a DataMap, data is %2$s",
                                    AnyRecordValidator.class.getName(), value));

    }
    else
    {
      DataMap dataMap = (DataMap) value;
      if (dataMap.size() != 1)
      {
        context.addResult(new Message(context.dataElement().path(),
                                      "%1$s expects data to be a DataMap with one entry, data is %2$s",
                                      AnyRecordValidator.class.getName(), value));
      }
      else
      {
        Map.Entry<String, Object> entry = dataMap.entrySet().iterator().next();
        String anySchemaName = entry.getKey();
        Object anyValue = entry.getValue();
        DataSchema anySchema = schemaFromName(context, anySchemaName);
        if (anySchema != null)
        {
          DataElement anyElement = new SimpleDataElement(anyValue, entry.getKey(), anySchema, dataElement);
          // do we want to have cache for anySchemaName to validator
          // do we care about classMap argument to DataSchemaAnnotationValidator
View Full Code Here

  @Override
  protected void encodeProperties(DataSchema schema) throws IOException
  {
    if (_options.getEmbeddedSchema() == EmbedSchemaMode.ROOT_ONLY)
    {
      DataSchema dereferencedSchema = _rootSchema.getDereferencedDataSchema();
      if (schema == dereferencedSchema && schema.getType() != DataSchema.Type.UNION)
      {
        encodePropertiesWithEmbeddedSchema(schema);
        return;
      }
View Full Code Here

   */
  @Override
  protected void encodeFieldType(RecordDataSchema.Field field) throws IOException
  {
    boolean optional = field.getOptional();
    DataSchema fieldSchema = field.getType();
    UnionDataSchema unionDataSchema =
      (fieldSchema.getDereferencedType() == DataSchema.Type.UNION ?
        (UnionDataSchema) fieldSchema.getDereferencedDataSchema() :
        null);
    _builder.writeFieldName(TYPE_KEY);

    if (optional == false && unionDataSchema == null)
    {
      encode(fieldSchema);
    }
    else
    {
      // special handling for unions
      // output will be an union if the field is optional or its type is a union

      // whether to add null to translated union,
      // set to true for optional non-union type or optional union without null member
      boolean addNullMemberType;
      // DataSchema of default value, null if there is no default value.
      DataSchema defaultValueSchema;
      // members of the union (excluding null introduced by optional)
      List<DataSchema> resultMemberTypes;

      Object defaultValue = field.getDefault();
      if (optional)
      {
        if (unionDataSchema == null)
        {
          addNullMemberType = true;
          resultMemberTypes = new ArrayList<DataSchema>(1);
          resultMemberTypes.add(fieldSchema);
          defaultValueSchema = (
            defaultValue != null && _options.getOptionalDefaultMode() == OptionalDefaultMode.TRANSLATE_DEFAULT ?
              fieldSchema :
              DataSchemaConstants.NULL_DATA_SCHEMA);
        }
        else
        {
          addNullMemberType = unionDataSchema.getType(DataSchemaConstants.NULL_TYPE) == null;
          resultMemberTypes = unionDataSchema.getTypes();
          defaultValueSchema = (
            defaultValue != null && _options.getOptionalDefaultMode() == OptionalDefaultMode.TRANSLATE_DEFAULT ?
              unionValueDataSchema(unionDataSchema, defaultValue) :
              DataSchemaConstants.NULL_DATA_SCHEMA);
        }
        assert(_options.getOptionalDefaultMode() != OptionalDefaultMode.TRANSLATE_TO_NULL ||
               defaultValueSchema == DataSchemaConstants.NULL_DATA_SCHEMA);
      }
      else
      {
        // must be union
        addNullMemberType = false;
        resultMemberTypes = unionDataSchema.getTypes();
        defaultValueSchema = unionValueDataSchema(unionDataSchema, defaultValue);
      }

      // encode the member types
      // add null member type if addNullMemberType is present
      _builder.writeStartArray();
      // this variable keeps track of whether null member type has been emitted
      boolean emittedNull = false;
      // if field has a default, defaultValueSchema != null, always encode it 1st
      if (defaultValueSchema != null)
      {
        emittedNull |= (defaultValueSchema.getDereferencedType() == DataSchema.Type.NULL);
        encode(defaultValueSchema);
      }
      for (DataSchema type : resultMemberTypes)
      {
        if (defaultValueSchema == type)
View Full Code Here

    }
  }

  private static DataSchema unionValueDataSchema(UnionDataSchema unionDataSchema, Object value)
  {
    DataSchema schema;
    if (value == null)
    {
      schema = null;
    }
    else if (value == Data.NULL)
View Full Code Here

          asList(Mode.PARENT_AND_SET, "/bar/baz", "/bar/baz/bazInt"),
          asList(Mode.ANCESTOR_AND_SET, "", "/bar", "/bar/baz", "/bar/baz/bazInt"),
        },
      };

    DataSchema schema = dataSchemaFromString(schemaText);
    ValidationOptions options = new ValidationOptions(RequiredMode.CAN_BE_ABSENT_IF_HAS_DEFAULT, CoercionMode.NORMAL);
    for (Object[] row : inputs)
    {
      String value = (String) row[0];
      String patch = (String) row[1];
View Full Code Here

          _log.error("Error parsing " + sourceFile.getPath() + ": " + schemaParser.errorMessageBuilder().toString());
          exitCode = 1;
          continue;
        }

        final DataSchema originalSchema = schemaParser.topLevelDataSchemas().get(0);
        if (!(originalSchema instanceof NamedDataSchema))
        {
          _log.error(sourceFile.getPath() + " does not contain valid NamedDataSchema");
          exitCode = 1;
          continue;
View Full Code Here

    {
      for (ParameterSchema parameter : parameters)
      {
        if (!parameter.hasItems()) // ignoring legacy case where items was used for arrays
        {
          DataSchema dataSchema = RestSpecCodec.textToSchema(parameter.getType(), _schemaResolver);
          Object value = _dataGenerator.buildData(parameter.getName(), dataSchema);
          builder.setParam(parameter.getName(), value);
        }
      }
    }
View Full Code Here

TOP

Related Classes of com.linkedin.data.schema.DataSchema

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.