Package com.netflix.astyanax.entitystore

Source Code of com.netflix.astyanax.entitystore.LeafColumnMapper

package com.netflix.astyanax.entitystore;

import java.lang.reflect.Field;
import java.util.Iterator;

import com.netflix.astyanax.ColumnListMutation;
import com.netflix.astyanax.Serializer;

class LeafColumnMapper extends AbstractColumnMapper {
 
  private final Serializer<?> serializer;

  LeafColumnMapper(final Field field) {
      super(field);
    this.serializer = MappingUtils.getSerializerForField(field);
  }

  @Override
  public String getColumnName() {
    return columnName;
  }
 
  Serializer<?> getSerializer() {
      return serializer;
  }
 
  @SuppressWarnings("unchecked")
  @Override
  public boolean fillMutationBatch(Object entity, ColumnListMutation<String> clm, String prefix) throws Exception {
    Object value = field.get(entity);
    if(value == null) {
      if(columnAnnotation.nullable())
        return false; // skip
      else
        throw new IllegalArgumentException("cannot write non-nullable column with null value: " + columnName);
    }
    @SuppressWarnings("rawtypes")
    final Serializer valueSerializer = serializer;
    // TODO: suppress the unchecked raw type now.
    // we have to use the raw type to avoid compiling error
    clm.putColumn(prefix + columnName, value, valueSerializer, null);
    return true;
  }
 
    @Override
    public boolean setField(Object entity, Iterator<String> name, com.netflix.astyanax.model.Column<String> column) throws Exception {
        if (name.hasNext())
            return false;
        final Object fieldValue = column.getValue(serializer);
        field.set(entity, fieldValue);
        return true;
    }

    @Override
    public void validate(Object entity) throws Exception {
        if (field.get(entity) == null && !columnAnnotation.nullable())
            throw new IllegalArgumentException("cannot find non-nullable column: " + columnName);
    }
}
TOP

Related Classes of com.netflix.astyanax.entitystore.LeafColumnMapper

TOP
Copyright © 2018 www.massapi.com. 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.