--- HBase.rb.old 2008-07-22 18:23:38.000000000 +0000 +++ HBase.rb 2008-07-22 18:38:46.000000000 +0000 @@ -141,28 +141,34 @@ def hcd(arg) # Return a new HColumnDescriptor made of passed args - # TODO: This is brittle code. - # Here is current HCD constructor: - # public HColumnDescriptor(final byte [] columnName, final int maxVersions, - # final CompressionType compression, final boolean inMemory, - # final boolean blockCacheEnabled, - # final int maxValueLength, final int timeToLive, - # BloomFilterDescriptor bloomFilter) name = arg[NAME] raise ArgumentError.new("Column family " + arg + " must have a name") \ unless name name = makeColumnName(name) # TODO: What encoding are Strings in jruby? - return HColumnDescriptor.new(name.to_java_bytes, - # JRuby uses longs for ints. Need to convert. Also constants are String - arg[VERSIONS]? arg[VERSIONS]: HColumnDescriptor::DEFAULT_VERSIONS, - arg[HColumnDescriptor::COMPRESSION]? HColumnDescriptor::CompressionType::valueOf(arg[HColumnDescriptor::COMPRESSION]): - HColumnDescriptor::DEFAULT_COMPRESSION, - arg[HColumnDescriptor::IN_MEMORY]? arg[HColumnDescriptor::IN_MEMORY]: HColumnDescriptor::DEFAULT_IN_MEMORY, - arg[HColumnDescriptor::BLOCKCACHE]? arg[HColumnDescriptor::BLOCKCACHE]: HColumnDescriptor::DEFAULT_BLOCKCACHE, - arg[HColumnDescriptor::LENGTH]? arg[HColumnDescriptor::LENGTH]: HColumnDescriptor::DEFAULT_LENGTH, - arg[HColumnDescriptor::TTL]? arg[HColumnDescriptor::TTL]: HColumnDescriptor::DEFAULT_TTL, - arg[HColumnDescriptor::BLOOMFILTER]? arg[HColumnDescriptor::BLOOMFILTER]: HColumnDescriptor::DEFAULT_BLOOMFILTER) + d = HColumnDescriptor.new(name.to_java_bytes) + if arg[HColumnDescriptor::VERSIONS] + d.setValue(HColumnDescriptor::VERSIONS, arg[HColumnDescriptor::VERSIONS]) + end + if arg[HColumnDescriptor::LENGTH] + d.setValue(HColumnDescriptor::LENGTH, arg[HColumnDescriptor::LENGTH]) + end + if arg[HColumnDescriptor::TTL] + d.setValue(HColumnDescriptor::TTL, arg[HColumnDescriptor::TTL]) + end + if arg[HColumnDescriptor::COMPRESSION] + d.setValue(HColumnDescriptor::COMPRESSION, arg[HColumnDescriptor::COMPRESSION]) + end + if arg[HColumnDescriptor::IN_MEMORY] + d.setValue(HColumnDescriptor::IN_MEMORY, arg[HColumnDescriptor::IN_MEMORY]) + end + if arg[HColumnDescriptor::BLOCKCACHE] + d.setValue(HColumnDescriptor::BLOCKCACHE, arg[HColumnDescriptor::BLOCKCACHE]) + end + if arg[HColumnDescriptor::BLOOMFILTER] + d.setValue(HColumnDescriptor::BLOOMFILTER, arg[HColumnDescriptor::BLOOMFILTER]) + end + return d end end