All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bazaarvoice.emodb.table.db.astyanax.AbstractPlacementFactory Maven / Gradle / Ivy

package com.bazaarvoice.emodb.table.db.astyanax;

import com.bazaarvoice.emodb.sor.api.UnknownPlacementException;
import com.netflix.astyanax.Serializer;
import com.netflix.astyanax.ddl.ColumnFamilyDefinition;
import com.netflix.astyanax.ddl.KeyspaceDefinition;
import com.netflix.astyanax.model.ColumnFamily;
import com.netflix.astyanax.serializers.ByteBufferSerializer;

import java.nio.ByteBuffer;

import static java.lang.String.format;

public abstract class AbstractPlacementFactory implements PlacementFactory {

    protected  ColumnFamily getColumnFamily(KeyspaceDefinition keyspaceDef,
                                                              String prefix, String suffix, String placement,
                                                              Serializer columnSerializer) throws IllegalArgumentException {
        // Create the column family object.  It must be keyed by a ByteBuffer because that's what
        // the AstyanaxTable.getRowKey() method returns.
        ColumnFamily cf = new ColumnFamily<>(prefix + "_" + suffix,
                ByteBufferSerializer.get(), columnSerializer);

        // Verify that the column family exists in the Cassandra schema.
        ColumnFamilyDefinition cfDef = keyspaceDef.getColumnFamily(cf.getName());
        if (cfDef == null) {
            throw new UnknownPlacementException(format(
                    "Placement string '%s' refers to unknown Cassandra %s column family in keyspace '%s': %s",
                    placement, suffix, keyspaceDef.getName(), cf.getName()), placement);
        }
        return cf;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy