incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [11/11] git commit: More changes, blur-core compile and tests pass.
Date Sun, 24 Mar 2013 20:05:28 GMT
More changes, blur-core compile and tests pass.


Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/f4c3cc19
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/f4c3cc19
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/f4c3cc19

Branch: refs/heads/0.1.5
Commit: f4c3cc19e12b04a5ab60870cd3a03614f31660e4
Parents: 8a0b462
Author: Aaron McCurry <amccurry@gmail.com>
Authored: Sun Mar 24 16:04:13 2013 -0400
Committer: Aaron McCurry <amccurry@gmail.com>
Committed: Sun Mar 24 16:04:13 2013 -0400

----------------------------------------------------------------------
 interface/Blur.thrift                              |    7 +-
 interface/gen-html/Blur.html                       |   69 +-
 interface/gen-html/index.html                      |    7 +-
 interface/gen-html/style.css                       |  190 +-
 .../generated/AlternateColumnDefinition.java       |  141 +-
 .../blur/thrift/generated/AnalyzerDefinition.java  |  278 +-
 .../org/apache/blur/thrift/generated/Blur.java     | 9130 ++++++++++-----
 .../blur/thrift/generated/BlurException.java       |  178 +-
 .../apache/blur/thrift/generated/BlurQuery.java    |  738 +-
 .../blur/thrift/generated/BlurQueryStatus.java     |  399 +-
 .../apache/blur/thrift/generated/BlurResult.java   |  227 +-
 .../apache/blur/thrift/generated/BlurResults.java  |  543 +-
 .../org/apache/blur/thrift/generated/Column.java   |  176 +-
 .../blur/thrift/generated/ColumnDefinition.java    |  282 +-
 .../thrift/generated/ColumnFamilyDefinition.java   |  243 +-
 .../blur/thrift/generated/ColumnPreCache.java      |  190 +-
 .../org/apache/blur/thrift/generated/CpuTime.java  |  189 +-
 .../apache/blur/thrift/generated/ExpertQuery.java  |  176 +-
 .../org/apache/blur/thrift/generated/Facet.java    |  186 +-
 .../blur/thrift/generated/FetchRecordResult.java   |  182 +-
 .../apache/blur/thrift/generated/FetchResult.java  |  306 +-
 .../blur/thrift/generated/FetchRowResult.java      |  147 +-
 .../apache/blur/thrift/generated/QueryState.java   |    3 +-
 .../org/apache/blur/thrift/generated/Record.java   |  263 +-
 .../blur/thrift/generated/RecordMutation.java      |  182 +-
 .../blur/thrift/generated/RecordMutationType.java  |    3 +-
 .../org/apache/blur/thrift/generated/Row.java      |  273 +-
 .../apache/blur/thrift/generated/RowMutation.java  |  381 +-
 .../blur/thrift/generated/RowMutationType.java     |    3 +-
 .../org/apache/blur/thrift/generated/Schema.java   |  283 +-
 .../apache/blur/thrift/generated/ScoreType.java    |    3 +-
 .../org/apache/blur/thrift/generated/Selector.java |  520 +-
 .../apache/blur/thrift/generated/SimpleQuery.java  |  291 +-
 .../blur/thrift/generated/TableDescriptor.java     |  823 +-
 .../apache/blur/thrift/generated/TableStats.java   |  300 +-
 interface/gen-perl/Blur/Blur.pm                    |  220 +-
 interface/gen-perl/Blur/Constants.pm               |    2 +-
 interface/gen-perl/Blur/Types.pm                   |   48 +-
 interface/gen-rb/blur.rb                           | 2750 +++---
 interface/gen-rb/blur_constants.rb                 |    5 +-
 interface/gen-rb/blur_types.rb                     | 1262 +-
 .../java/org/apache/blur/manager/IndexManager.java |   42 +-
 .../manager/indexserver/AbstractIndexServer.java   |   21 +-
 .../indexserver/CloseableExecutorService.java      |   20 +
 .../indexserver/DistributedIndexServer.java        |   80 +-
 .../blur/manager/indexserver/LocalIndexServer.java |  138 +-
 .../blur/manager/writer/AbstractBlurIndex.java     |   11 +-
 .../org/apache/blur/manager/writer/BlurIndex.java  |    4 +-
 .../apache/blur/manager/writer/BlurNRTIndex.java   |  239 +-
 .../blur/manager/writer/SharedMergeScheduler.java  |   90 +
 .../blur/manager/writer/TransactionRecorder.java   |   43 +-
 .../apache/blur/server/IndexSearcherClosable.java  |   26 +
 .../java/org/apache/blur/server/ShardContext.java  |    1 +
 .../java/org/apache/blur/server/TableContext.java  |   19 +-
 .../apache/blur/thrift/ThriftBlurShardServer.java  |    2 -
 .../src/test/java/org/apache/blur/MiniCluster.java |    6 +
 .../apache/blur/lucene/search/FacetQueryTest.java  |   21 +-
 .../apache/blur/lucene/search/SuperParserTest.java |   23 +-
 .../org/apache/blur/manager/IndexManagerTest.java  |   25 +-
 .../blur/manager/writer/BlurNRTIndexTest.java      |   88 +-
 .../writer/DirectoryReferenceCounterTest.java      |  125 +-
 .../manager/writer/TransactionRecorderTest.java    |   85 +-
 .../apache/blur/search/RandomSuperQueryTest.java   |    7 +-
 .../org/apache/blur/search/SuperQueryTest.java     |   21 +-
 .../apache/blur/search/TestingPagingCollector.java |    4 +-
 .../org/apache/blur/thrift/BlurClusterTest.java    |   35 +-
 .../blur/thrift/BlurControllerServerTest.java      |    4 +-
 .../apache/blur/thrift/BlurShardServerTest.java    |    2 +-
 .../java/org/apache/blur/utils/BlurUtilsTest.java  |   15 +-
 .../org/apache/blur/utils/TermDocIterableTest.java |   73 +-
 .../org/apache/blur/mapred/BlurRecordReader.java   |    2 +-
 .../org/apache/blur/mapreduce/BlurReducer.java     |    4 +-
 .../blur/mapreduce/lib/BlurInputFormatTest.java    |   11 +-
 .../apache/blur/lucene/LuceneVersionConstant.java  |    2 +-
 .../store/refcounter/DirectoryReferenceFileGC.java |    3 +-
 .../lucene/store/refcounter/IndexInputCloser.java  |    2 +-
 .../org/apache/blur/thrift/generated/Blur.java     |  384 +-
 .../blur/thrift/generated/TableDescriptor.java     |  203 +-
 src/blur-util/pom.xml                              |    5 +
 .../java/org/apache/blur/metrics/HDFSReporter.java |   73 +
 src/pom.xml                                        |    2 +-
 81 files changed, 15523 insertions(+), 8037 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/f4c3cc19/interface/Blur.thrift
----------------------------------------------------------------------
diff --git a/interface/Blur.thrift b/interface/Blur.thrift
index 32ecc42..cca1c80 100644
--- a/interface/Blur.thrift
+++ b/interface/Blur.thrift
@@ -632,7 +632,12 @@ struct TableDescriptor {
   /**
    * Sets what column families and columns to prefetch into block cache on shard open.
    */
-  13:ColumnPreCache columnPreCache
+  13:ColumnPreCache columnPreCache,
+
+  /**
+   * Properties, used to override default settings on a per table basis.
+   */
+  14:map<string,string> tableProperties
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/f4c3cc19/interface/gen-html/Blur.html
----------------------------------------------------------------------
diff --git a/interface/gen-html/Blur.html b/interface/gen-html/Blur.html
index 55b6296..dcf1bcd 100644
--- a/interface/gen-html/Blur.html
+++ b/interface/gen-html/Blur.html
@@ -5,8 +5,9 @@
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <link href="style.css" rel="stylesheet" type="text/css"/>
 <title>Thrift module: Blur</title></head><body>
+<div class="container-fluid">
 <h1>Thrift module: Blur</h1>
-<table><tr><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
 <tr>
 <td>Blur</td><td><a href="Blur.html#Svc_Blur">Blur</a><br/>
 <ul>
@@ -70,7 +71,7 @@
 <a href="Blur.html#Struct_TableDescriptor">TableDescriptor</a><br/>
 <a href="Blur.html#Struct_TableStats">TableStats</a><br/>
 </td>
-<td><code></code></td>
+<td></code></td>
 </tr></table>
 <hr/><h2 id="Enumerations">Enumerations</h2>
 <div class="definition"><h3 id="Enum_ScoreType">Enumeration: ScoreType</h3>
@@ -79,7 +80,7 @@ SUPER - During a multi Record match, a calculation of the best match Record plus
 AGGREGATE - During a multi Record match, the aggregate score of all the Records within a ColumnFamily is used in the scoring of the SuperQuery.<br/><br/>
 BEST - During a multi Record match, the best score of all the Records within a ColumnFamily is used in the scoring of the SuperQuery.<br/><br/>
 CONSTANT - A constant score of 1 is used in the scoring of the SuperQuery.<br/>
-<br/><br/><table>
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>SUPER</code></td><td><code>0</code></td></tr>
 <tr><td><code>AGGREGATE</code></td><td><code>1</code></td></tr>
 <tr><td><code>BEST</code></td><td><code>2</code></td></tr>
@@ -90,7 +91,7 @@ The state of a query.<br/><br/>
 RUNNING - Query is running.<br/><br/>
 INTERRUPTED - Query has been interrupted.<br/><br/>
 COMPLETE - Query is complete.<br/>
-<br/><br/><table>
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>RUNNING</code></td><td><code>0</code></td></tr>
 <tr><td><code>INTERRUPTED</code></td><td><code>1</code></td></tr>
 <tr><td><code>COMPLETE</code></td><td><code>2</code></td></tr>
@@ -100,7 +101,7 @@ Specifies the type of Row mutation that should occur during a mutation of a give
 DELETE_ROW - Indicates that the entire Row is to be deleted.  No changes are made if the specified row does not exist.<br/><br/>
 REPLACE_ROW - Indicates that the entire Row is to be deleted, and then a new Row with the same id is to be added.  If the specified row does not exist, the new row will still be created.<br/><br/>
 UPDATE_ROW - Indicates that mutations of the underlying Records will be processed individually.  Mutation will result in a BlurException if the specified row does not exist.<br/>
-<br/><br/><table>
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>DELETE_ROW</code></td><td><code>0</code></td></tr>
 <tr><td><code>REPLACE_ROW</code></td><td><code>1</code></td></tr>
 <tr><td><code>UPDATE_ROW</code></td><td><code>2</code></td></tr>
@@ -111,7 +112,7 @@ DELETE_ENTIRE_RECORD -  Indicates the Record with the given recordId in the give
 REPLACE_ENTIRE_RECORD - Indicates the Record with the given recordId in the given Row is to be deleted, and a new Record with the same id is to be added. If the specified record does not exist the new record is still added.<br/><br/>
 REPLACE_COLUMNS - Replace the columns that are specified in the Record mutation.  If the target record does not exist then this mutation will result in a BlurException.<br/><br/>
 APPEND_COLUMN_VALUES - Append the columns in the Record mutation to the Record that could already exist.  If the target record does not exist then this mutation will result in a BlurException.<br/>
-<br/><br/><table>
+<br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>DELETE_ENTIRE_RECORD</code></td><td><code>0</code></td></tr>
 <tr><td><code>REPLACE_ENTIRE_RECORD</code></td><td><code>1</code></td></tr>
 <tr><td><code>REPLACE_COLUMNS</code></td><td><code>2</code></td></tr>
@@ -119,7 +120,7 @@ APPEND_COLUMN_VALUES - Append the columns in the Record mutation to the Record t
 </table></div>
 <hr/><h2 id="Structs">Data structures</h2>
 <div class="definition"><h3 id="Struct_BlurException">Exception: BlurException</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>message</td><td><code>string</code></td><td>The message in the exception.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>stackTraceStr</td><td><code>string</code></td><td>The original stack trace (if any).
@@ -127,14 +128,14 @@ APPEND_COLUMN_VALUES - Append the columns in the Record mutation to the Record t
 </table><br/>BlurException that carries a message plus the original stack
 trace (if any).
 <br/></div><div class="definition"><h3 id="Struct_Column">Struct: Column</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>name</td><td><code>string</code></td><td>The name of the column.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>value</td><td><code>string</code></td><td>The value to be indexed and stored.
 </td><td>default</td><td></td></tr>
 </table><br/>Column is the lowest storage element in Blur, it stores a single name and value pair.
 <br/></div><div class="definition"><h3 id="Struct_Record">Struct: Record</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>recordId</td><td><code>string</code></td><td>Record id uniquely identifies a record within a single row.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>family</td><td><code>string</code></td><td>The family in which this record resides.
@@ -143,7 +144,7 @@ trace (if any).
 </td><td>default</td><td></td></tr>
 </table><br/>Records contain a list of columns, multiple columns with the same name are allowed.
 <br/></div><div class="definition"><h3 id="Struct_Row">Struct: Row</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>id</td><td><code>string</code></td><td>The row id.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>records</td><td><code>list&lt;<code><a href="Blur.html#Struct_Record">Record</a></code>&gt;</code></td><td>The list records within the row.  If paging is used this list will only
@@ -154,7 +155,7 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/>Rows contain a list of records.
 <br/></div><div class="definition"><h3 id="Struct_Selector">Struct: Selector</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>recordOnly</td><td><code>bool</code></td><td>Fetch the Record only, not the entire Row.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>locationId</td><td><code>string</code></td><td>The location id of the Record or Row to be fetched.
@@ -171,19 +172,19 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/>Select carries the request for information to be retrieved from the stored columns.
 <br/></div><div class="definition"><h3 id="Struct_FetchRowResult">Struct: FetchRowResult</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>row</td><td><code><a href="Blur.html#Struct_Row">Row</a></code></td><td>The row fetched.
 </td><td>default</td><td></td></tr>
 </table><br/>FetchRowResult contains row result from a fetch.
 <br/></div><div class="definition"><h3 id="Struct_FetchRecordResult">Struct: FetchRecordResult</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>rowid</td><td><code>string</code></td><td>The row id of the record being fetched.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>record</td><td><code><a href="Blur.html#Struct_Record">Record</a></code></td><td>The record fetched.
 </td><td>default</td><td></td></tr>
 </table><br/>FetchRecordResult contains rowid of the record and the record result from a fetch.
 <br/></div><div class="definition"><h3 id="Struct_FetchResult">Struct: FetchResult</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>exists</td><td><code>bool</code></td><td>True if the result exists, false if it doesn't.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>deleted</td><td><code>bool</code></td><td>If the row was marked as deleted.
@@ -196,7 +197,7 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/>FetchResult contains the row or record fetch result based if the Selector was going to fetch the entire row or a single record.
 <br/></div><div class="definition"><h3 id="Struct_SimpleQuery">Struct: SimpleQuery</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>queryStr</td><td><code>string</code></td><td>A Lucene syntax based query.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>superQueryOn</td><td><code>bool</code></td><td>If the super query is on, meaning the query will be perform against all the records (joining records in some cases) and the result will be Rows (groupings of Record).
@@ -209,19 +210,19 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/>The SimpleQuery object holds the query string (normal Lucene syntax), filters and type of scoring (used when super query is on).
 <br/></div><div class="definition"><h3 id="Struct_ExpertQuery">Struct: ExpertQuery</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>query</td><td><code>binary</code></td><td>The serialized query.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>filter</td><td><code>binary</code></td><td>The serialized filter.
 </td><td>default</td><td></td></tr>
 </table><br/>The expert query allows for submission of a serialized query and filter object to be executed against all the queries.
 <br/></div><div class="definition"><h3 id="Struct_Facet">Struct: Facet</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>queryStr</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
 <tr><td>2</td><td>minimumNumberOfBlurResults</td><td><code>i64</code></td><td></td><td>default</td><td>9223372036854775807</td></tr>
 </table><br/>Blur facet.
 <br/></div><div class="definition"><h3 id="Struct_BlurQuery">Struct: BlurQuery</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>simpleQuery</td><td><code><a href="Blur.html#Struct_SimpleQuery">SimpleQuery</a></code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>expertQuery</td><td><code><a href="Blur.html#Struct_ExpertQuery">ExpertQuery</a></code></td><td>
@@ -254,7 +255,7 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td>1</td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_BlurResult">Struct: BlurResult</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>locationId</td><td><code>string</code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>score</td><td><code>double</code></td><td>
@@ -263,7 +264,7 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_BlurResults">Struct: BlurResults</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>totalResults</td><td><code>i64</code></td><td>
 </td><td>default</td><td>0</td></tr>
 <tr><td>2</td><td>shardInfo</td><td><code>map&lt;<code>string</code>, <code>i64</code>&gt;</code></td><td>
@@ -278,14 +279,14 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_RecordMutation">Struct: RecordMutation</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>recordMutationType</td><td><code><a href="Blur.html#Enum_RecordMutationType">RecordMutationType</a></code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>record</td><td><code><a href="Blur.html#Struct_Record">Record</a></code></td><td>
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_RowMutation">Struct: RowMutation</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>table</td><td><code>string</code></td><td>The that that the row mutation is to act upon.
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>rowId</td><td><code>string</code></td><td>The row id that the row mutation is to act upon.
@@ -298,14 +299,14 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td>0</td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_CpuTime">Struct: CpuTime</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>cpuTime</td><td><code>i64</code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>realTime</td><td><code>i64</code></td><td>
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_BlurQueryStatus">Struct: BlurQueryStatus</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>query</td><td><code><a href="Blur.html#Struct_BlurQuery">BlurQuery</a></code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>cpuTimes</td><td><code>map&lt;<code>string</code>, <code><a href="Blur.html#Struct_CpuTime">CpuTime</a></code>&gt;</code></td><td>
@@ -320,7 +321,7 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_TableStats">Struct: TableStats</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>tableName</td><td><code>string</code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>bytes</td><td><code>i64</code></td><td>
@@ -333,32 +334,32 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_Schema">Struct: Schema</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>table</td><td><code>string</code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>columnFamilies</td><td><code>map&lt;<code>string</code>, <code>set&lt;<code>string</code>&gt;</code>&gt;</code></td><td>
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_AlternateColumnDefinition">Struct: AlternateColumnDefinition</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>analyzerClassName</td><td><code>string</code></td><td>
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_ColumnDefinition">Struct: ColumnDefinition</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>analyzerClassName</td><td><code>string</code></td><td></td><td>default</td><td>"org.apache.lucene.analysis.standard.StandardAnalyzer"</td></tr>
 <tr><td>2</td><td>fullTextIndex</td><td><code>bool</code></td><td></td><td>default</td><td></td></tr>
 <tr><td>3</td><td>alternateColumnDefinitions</td><td><code>map&lt;<code>string</code>, <code><a href="Blur.html#Struct_AlternateColumnDefinition">AlternateColumnDefinition</a></code>&gt;</code></td><td></td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_ColumnFamilyDefinition">Struct: ColumnFamilyDefinition</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>defaultDefinition</td><td><code><a href="Blur.html#Struct_ColumnDefinition">ColumnDefinition</a></code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>columnDefinitions</td><td><code>map&lt;<code>string</code>, <code><a href="Blur.html#Struct_ColumnDefinition">ColumnDefinition</a></code>&gt;</code></td><td>
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_AnalyzerDefinition">Struct: AnalyzerDefinition</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>defaultDefinition</td><td><code><a href="Blur.html#Struct_ColumnDefinition">ColumnDefinition</a></code></td><td>
 </td><td>default</td><td></td></tr>
 <tr><td>2</td><td>fullTextAnalyzerClassName</td><td><code>string</code></td><td>
@@ -367,12 +368,12 @@ through records of a row, this count will reflect the entire row.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_ColumnPreCache">Struct: ColumnPreCache</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>preCacheCols</td><td><code>list&lt;<code>string</code>&gt;</code></td><td>This map sets what column families and columns to prefetch into block cache on shard open.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><div class="definition"><h3 id="Struct_TableDescriptor">Struct: TableDescriptor</h3>
-<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>isEnabled</td><td><code>bool</code></td><td>
 </td><td>default</td><td>1</td></tr>
 <tr><td>2</td><td>analyzerDefinition</td><td><code><a href="Blur.html#Struct_AnalyzerDefinition">AnalyzerDefinition</a></code></td><td>
@@ -400,6 +401,8 @@ updates through MapReduce are allowed and in fact they are only allowed if the t
 </td><td>default</td><td>0</td></tr>
 <tr><td>13</td><td>columnPreCache</td><td><code><a href="Blur.html#Struct_ColumnPreCache">ColumnPreCache</a></code></td><td>Sets what column families and columns to prefetch into block cache on shard open.
 </td><td>default</td><td></td></tr>
+<tr><td>14</td><td>tableProperties</td><td><code>map&lt;<code>string</code>, <code>string</code>&gt;</code></td><td>Properties, used to override default settings on a per table basis.
+</td><td>default</td><td></td></tr>
 </table><br/><p/>
 <br/></div><hr/><h2 id="Services">Services</h2>
 <h3 id="Svc_Blur">Service: Blur</h3>
@@ -522,4 +525,4 @@ updates through MapReduce are allowed and in fact they are only allowed if the t
 </pre></div><div class="definition"><h4 id="Fn_Blur_configuration">Function: Blur.configuration</h4>
 <pre><code>map&lt;<code>string</code>, <code>string</code>&gt;</code> configuration()
     throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
-</pre></div></body></html>
+</pre></div></div></body></html>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/f4c3cc19/interface/gen-html/index.html
----------------------------------------------------------------------
diff --git a/interface/gen-html/index.html b/interface/gen-html/index.html
index 04bd944..78d436d 100644
--- a/interface/gen-html/index.html
+++ b/interface/gen-html/index.html
@@ -1,8 +1,9 @@
 <html><head>
 <link href="style.css" rel="stylesheet" type="text/css"/>
 <title>All Thrift declarations</title></head><body>
+<div class="container-fluid">
 <h1>All Thrift declarations</h1>
-<table><tr><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></tr>
+<table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
 <tr>
 <td>Blur</td><td><a href="Blur.html#Svc_Blur">Blur</a><br/>
 <ul>
@@ -66,6 +67,6 @@
 <a href="Blur.html#Struct_TableDescriptor">TableDescriptor</a><br/>
 <a href="Blur.html#Struct_TableStats">TableStats</a><br/>
 </td>
-<td><code></code></td>
+<td></code></td>
 </tr></table>
-</body></html>
+</div></body></html>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/f4c3cc19/interface/gen-html/style.css
----------------------------------------------------------------------
diff --git a/interface/gen-html/style.css b/interface/gen-html/style.css
index 6dc2f22..34fd9d7 100644
--- a/interface/gen-html/style.css
+++ b/interface/gen-html/style.css
@@ -1,10 +1,184 @@
+/*!
+ * Bootstrap v2.0.3
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
+.clearfix:after{clear:both;}
+.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
+.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
+audio:not([controls]){display:none;}
+html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+a:hover,a:active{outline:0;}
+sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
+sup{top:-0.5em;}
+sub{bottom:-0.25em;}
+img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
+button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
+button,input{*overflow:visible;line-height:normal;}
+button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
+input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
+textarea{overflow:auto;vertical-align:top;}
+body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
+a{color:#0088cc;text-decoration:none;}
+a:hover{color:#005580;text-decoration:underline;}
+.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
+.row:after{clear:both;}
+[class*="span"]{float:left;margin-left:20px;}
+.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
+.span12{width:940px;}
+.span11{width:860px;}
+.span10{width:780px;}
+.span9{width:700px;}
+.span8{width:620px;}
+.span7{width:540px;}
+.span6{width:460px;}
+.span5{width:380px;}
+.span4{width:300px;}
+.span3{width:220px;}
+.span2{width:140px;}
+.span1{width:60px;}
+.offset12{margin-left:980px;}
+.offset11{margin-left:900px;}
+.offset10{margin-left:820px;}
+.offset9{margin-left:740px;}
+.offset8{margin-left:660px;}
+.offset7{margin-left:580px;}
+.offset6{margin-left:500px;}
+.offset5{margin-left:420px;}
+.offset4{margin-left:340px;}
+.offset3{margin-left:260px;}
+.offset2{margin-left:180px;}
+.offset1{margin-left:100px;}
+.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
+.row-fluid:after{clear:both;}
+.row-fluid [class*="span"]{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574%;*margin-left:2.0744680846382977%;}
+.row-fluid [class*="span"]:first-child{margin-left:0;}
+.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%;}
+.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%;}
+.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%;}
+.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%;}
+.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%;}
+.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%;}
+.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%;}
+.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%;}
+.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%;}
+.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%;}
+.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%;}
+.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%;}
+.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
+.container:after{clear:both;}
+.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
+.container-fluid:after{clear:both;}
+p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
+.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
+h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
+h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
+h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
+h3{font-size:18px;line-height:27px;}h3 small{font-size:14px;}
+h4,h5,h6{line-height:18px;}
+h4{font-size:14px;}h4 small{font-size:12px;}
+h5{font-size:12px;}
+h6{font-size:11px;color:#999999;text-transform:uppercase;}
+.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
+.page-header h1{line-height:1;}
+ul,ol{padding:0;margin:0 0 9px 25px;}
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
+ul{list-style:disc;}
+ol{list-style:decimal;}
+li{line-height:18px;}
+ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
+dl{margin-bottom:18px;}
+dt,dd{line-height:18px;}
+dt{font-weight:bold;line-height:17px;}
+dd{margin-left:9px;}
+.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
+.dl-horizontal dd{margin-left:130px;}
+hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
+strong{font-weight:bold;}
+em{font-style:italic;}
+.muted{color:#999999;}
+abbr[title]{cursor:help;border-bottom:1px dotted #ddd;}
+abbr.initialism{font-size:90%;text-transform:uppercase;}
+blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
+blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
+blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
+address{display:block;margin-bottom:18px;font-style:normal;line-height:18px;}
+small{font-size:100%;}
+cite{font-style:normal;}
+code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
+pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:18px;}
+pre code{padding:0;color:inherit;background-color:transparent;border:0;}
+.pre-scrollable{max-height:340px;overflow-y:scroll;}
+.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
+.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
+a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}
+.label-important,.badge-important{background-color:#b94a48;}
+.label-important[href],.badge-important[href]{background-color:#953b39;}
+.label-warning,.badge-warning{background-color:#f89406;}
+.label-warning[href],.badge-warning[href]{background-color:#c67605;}
+.label-success,.badge-success{background-color:#468847;}
+.label-success[href],.badge-success[href]{background-color:#356635;}
+.label-info,.badge-info{background-color:#3a87ad;}
+.label-info[href],.badge-info[href]{background-color:#2d6987;}
+.label-inverse,.badge-inverse{background-color:#333333;}
+.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
+table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
+.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
+.table th{font-weight:bold;}
+.table thead th{vertical-align:bottom;}
+.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
+.table tbody+tbody{border-top:2px solid #dddddd;}
+.table-condensed th,.table-condensed td{padding:4px 5px;}
+.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
+.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
+.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;}
+.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;}
+.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;}
+.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;}
+.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
+.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;}
+table .span1{float:none;width:44px;margin-left:0;}
+table .span2{float:none;width:124px;margin-left:0;}
+table .span3{float:none;width:204px;margin-left:0;}
+table .span4{float:none;width:284px;margin-left:0;}
+table .span5{float:none;width:364px;margin-left:0;}
+table .span6{float:none;width:444px;margin-left:0;}
+table .span7{float:none;width:524px;margin-left:0;}
+table .span8{float:none;width:604px;margin-left:0;}
+table .span9{float:none;width:684px;margin-left:0;}
+table .span10{float:none;width:764px;margin-left:0;}
+table .span11{float:none;width:844px;margin-left:0;}
+table .span12{float:none;width:924px;margin-left:0;}
+table .span13{float:none;width:1004px;margin-left:0;}
+table .span14{float:none;width:1084px;margin-left:0;}
+table .span15{float:none;width:1164px;margin-left:0;}
+table .span16{float:none;width:1244px;margin-left:0;}
+table .span17{float:none;width:1324px;margin-left:0;}
+table .span18{float:none;width:1404px;margin-left:0;}
+table .span19{float:none;width:1484px;margin-left:0;}
+table .span20{float:none;width:1564px;margin-left:0;}
+table .span21{float:none;width:1644px;margin-left:0;}
+table .span22{float:none;width:1724px;margin-left:0;}
+table .span23{float:none;width:1804px;margin-left:0;}
+table .span24{float:none;width:1884px;margin-left:0;}
 /* Auto-generated CSS for generated Thrift docs */
-body { font-family: Tahoma, sans-serif; }
-pre { background-color: #dddddd; padding: 6px; }
-h3,h4 { padding-top: 0px; margin-top: 0px; }
-div.definition { border: 1px solid gray; margin: 10px; padding: 10px; }
+h3, h4 { margin-bottom: 6px; }
+div.definition { border: 1px solid #CCC; margin-bottom: 10px; padding: 10px; }
 div.extends { margin: -0.5em 0 1em 5em }
-table { border: 1px solid grey; border-collapse: collapse; }
-td { border: 1px solid grey; padding: 1px 6px; vertical-align: top; }
-th { border: 1px solid black; background-color: #bbbbbb;
-     text-align: left; padding: 1px 6px; }
+td { vertical-align: top; }
+table { empty-cells: show; }
+code { line-height: 20px; }
+.table-bordered th, .table-bordered td { border-bottom: 1px solid #DDDDDD; }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/f4c3cc19/interface/gen-java/org/apache/blur/thrift/generated/AlternateColumnDefinition.java
----------------------------------------------------------------------
diff --git a/interface/gen-java/org/apache/blur/thrift/generated/AlternateColumnDefinition.java b/interface/gen-java/org/apache/blur/thrift/generated/AlternateColumnDefinition.java
index 4818510..ae347fb 100644
--- a/interface/gen-java/org/apache/blur/thrift/generated/AlternateColumnDefinition.java
+++ b/interface/gen-java/org/apache/blur/thrift/generated/AlternateColumnDefinition.java
@@ -1,7 +1,8 @@
 /**
- * Autogenerated by Thrift Compiler (0.7.0)
+ * Autogenerated by Thrift Compiler (0.9.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
  */
 package org.apache.blur.thrift.generated;
 
@@ -24,6 +25,15 @@ package org.apache.blur.thrift.generated;
 
 
 
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
@@ -47,6 +57,12 @@ public class AlternateColumnDefinition implements org.apache.thrift.TBase<Altern
 
   private static final org.apache.thrift.protocol.TField ANALYZER_CLASS_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("analyzerClassName", org.apache.thrift.protocol.TType.STRING, (short)1);
 
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new AlternateColumnDefinitionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new AlternateColumnDefinitionTupleSchemeFactory());
+  }
+
   /**
    * 
    */
@@ -114,7 +130,6 @@ public class AlternateColumnDefinition implements org.apache.thrift.TBase<Altern
   }
 
   // isset id assignments
-
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -273,44 +288,11 @@ public class AlternateColumnDefinition implements org.apache.thrift.TBase<Altern
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    org.apache.thrift.protocol.TField field;
-    iprot.readStructBegin();
-    while (true)
-    {
-      field = iprot.readFieldBegin();
-      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
-        break;
-      }
-      switch (field.id) {
-        case 1: // ANALYZER_CLASS_NAME
-          if (field.type == org.apache.thrift.protocol.TType.STRING) {
-            this.analyzerClassName = iprot.readString();
-          } else { 
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-          }
-          break;
-        default:
-          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-      }
-      iprot.readFieldEnd();
-    }
-    iprot.readStructEnd();
-
-    // check for required fields of primitive type, which can't be checked in the validate method
-    validate();
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    validate();
-
-    oprot.writeStructBegin(STRUCT_DESC);
-    if (this.analyzerClassName != null) {
-      oprot.writeFieldBegin(ANALYZER_CLASS_NAME_FIELD_DESC);
-      oprot.writeString(this.analyzerClassName);
-      oprot.writeFieldEnd();
-    }
-    oprot.writeFieldStop();
-    oprot.writeStructEnd();
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
   }
 
   @Override
@@ -331,6 +313,7 @@ public class AlternateColumnDefinition implements org.apache.thrift.TBase<Altern
 
   public void validate() throws org.apache.thrift.TException {
     // check for required fields
+    // check for sub-struct validity
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -349,5 +332,89 @@ public class AlternateColumnDefinition implements org.apache.thrift.TBase<Altern
     }
   }
 
+  private static class AlternateColumnDefinitionStandardSchemeFactory implements SchemeFactory {
+    public AlternateColumnDefinitionStandardScheme getScheme() {
+      return new AlternateColumnDefinitionStandardScheme();
+    }
+  }
+
+  private static class AlternateColumnDefinitionStandardScheme extends StandardScheme<AlternateColumnDefinition> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, AlternateColumnDefinition struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // ANALYZER_CLASS_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.analyzerClassName = iprot.readString();
+              struct.setAnalyzerClassNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, AlternateColumnDefinition struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.analyzerClassName != null) {
+        oprot.writeFieldBegin(ANALYZER_CLASS_NAME_FIELD_DESC);
+        oprot.writeString(struct.analyzerClassName);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class AlternateColumnDefinitionTupleSchemeFactory implements SchemeFactory {
+    public AlternateColumnDefinitionTupleScheme getScheme() {
+      return new AlternateColumnDefinitionTupleScheme();
+    }
+  }
+
+  private static class AlternateColumnDefinitionTupleScheme extends TupleScheme<AlternateColumnDefinition> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, AlternateColumnDefinition struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetAnalyzerClassName()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetAnalyzerClassName()) {
+        oprot.writeString(struct.analyzerClassName);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, AlternateColumnDefinition struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.analyzerClassName = iprot.readString();
+        struct.setAnalyzerClassNameIsSet(true);
+      }
+    }
+  }
+
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/f4c3cc19/interface/gen-java/org/apache/blur/thrift/generated/AnalyzerDefinition.java
----------------------------------------------------------------------
diff --git a/interface/gen-java/org/apache/blur/thrift/generated/AnalyzerDefinition.java b/interface/gen-java/org/apache/blur/thrift/generated/AnalyzerDefinition.java
index 4d453f8..9a83d30 100644
--- a/interface/gen-java/org/apache/blur/thrift/generated/AnalyzerDefinition.java
+++ b/interface/gen-java/org/apache/blur/thrift/generated/AnalyzerDefinition.java
@@ -1,7 +1,8 @@
 /**
- * Autogenerated by Thrift Compiler (0.7.0)
+ * Autogenerated by Thrift Compiler (0.9.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
  */
 package org.apache.blur.thrift.generated;
 
@@ -24,6 +25,15 @@ package org.apache.blur.thrift.generated;
 
 
 
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
@@ -49,6 +59,12 @@ public class AnalyzerDefinition implements org.apache.thrift.TBase<AnalyzerDefin
   private static final org.apache.thrift.protocol.TField FULL_TEXT_ANALYZER_CLASS_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("fullTextAnalyzerClassName", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField COLUMN_FAMILY_DEFINITIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("columnFamilyDefinitions", org.apache.thrift.protocol.TType.MAP, (short)3);
 
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new AnalyzerDefinitionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new AnalyzerDefinitionTupleSchemeFactory());
+  }
+
   /**
    * 
    */
@@ -136,7 +152,6 @@ public class AnalyzerDefinition implements org.apache.thrift.TBase<AnalyzerDefin
   }
 
   // isset id assignments
-
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -463,90 +478,11 @@ public class AnalyzerDefinition implements org.apache.thrift.TBase<AnalyzerDefin
   }
 
   public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    org.apache.thrift.protocol.TField field;
-    iprot.readStructBegin();
-    while (true)
-    {
-      field = iprot.readFieldBegin();
-      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
-        break;
-      }
-      switch (field.id) {
-        case 1: // DEFAULT_DEFINITION
-          if (field.type == org.apache.thrift.protocol.TType.STRUCT) {
-            this.defaultDefinition = new ColumnDefinition();
-            this.defaultDefinition.read(iprot);
-          } else { 
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-          }
-          break;
-        case 2: // FULL_TEXT_ANALYZER_CLASS_NAME
-          if (field.type == org.apache.thrift.protocol.TType.STRING) {
-            this.fullTextAnalyzerClassName = iprot.readString();
-          } else { 
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-          }
-          break;
-        case 3: // COLUMN_FAMILY_DEFINITIONS
-          if (field.type == org.apache.thrift.protocol.TType.MAP) {
-            {
-              org.apache.thrift.protocol.TMap _map70 = iprot.readMapBegin();
-              this.columnFamilyDefinitions = new HashMap<String,ColumnFamilyDefinition>(2*_map70.size);
-              for (int _i71 = 0; _i71 < _map70.size; ++_i71)
-              {
-                String _key72; // required
-                ColumnFamilyDefinition _val73; // required
-                _key72 = iprot.readString();
-                _val73 = new ColumnFamilyDefinition();
-                _val73.read(iprot);
-                this.columnFamilyDefinitions.put(_key72, _val73);
-              }
-              iprot.readMapEnd();
-            }
-          } else { 
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-          }
-          break;
-        default:
-          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
-      }
-      iprot.readFieldEnd();
-    }
-    iprot.readStructEnd();
-
-    // check for required fields of primitive type, which can't be checked in the validate method
-    validate();
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
   }
 
   public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    validate();
-
-    oprot.writeStructBegin(STRUCT_DESC);
-    if (this.defaultDefinition != null) {
-      oprot.writeFieldBegin(DEFAULT_DEFINITION_FIELD_DESC);
-      this.defaultDefinition.write(oprot);
-      oprot.writeFieldEnd();
-    }
-    if (this.fullTextAnalyzerClassName != null) {
-      oprot.writeFieldBegin(FULL_TEXT_ANALYZER_CLASS_NAME_FIELD_DESC);
-      oprot.writeString(this.fullTextAnalyzerClassName);
-      oprot.writeFieldEnd();
-    }
-    if (this.columnFamilyDefinitions != null) {
-      oprot.writeFieldBegin(COLUMN_FAMILY_DEFINITIONS_FIELD_DESC);
-      {
-        oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, this.columnFamilyDefinitions.size()));
-        for (Map.Entry<String, ColumnFamilyDefinition> _iter74 : this.columnFamilyDefinitions.entrySet())
-        {
-          oprot.writeString(_iter74.getKey());
-          _iter74.getValue().write(oprot);
-        }
-        oprot.writeMapEnd();
-      }
-      oprot.writeFieldEnd();
-    }
-    oprot.writeFieldStop();
-    oprot.writeStructEnd();
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
   }
 
   @Override
@@ -583,6 +519,10 @@ public class AnalyzerDefinition implements org.apache.thrift.TBase<AnalyzerDefin
 
   public void validate() throws org.apache.thrift.TException {
     // check for required fields
+    // check for sub-struct validity
+    if (defaultDefinition != null) {
+      defaultDefinition.validate();
+    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -601,5 +541,177 @@ public class AnalyzerDefinition implements org.apache.thrift.TBase<AnalyzerDefin
     }
   }
 
+  private static class AnalyzerDefinitionStandardSchemeFactory implements SchemeFactory {
+    public AnalyzerDefinitionStandardScheme getScheme() {
+      return new AnalyzerDefinitionStandardScheme();
+    }
+  }
+
+  private static class AnalyzerDefinitionStandardScheme extends StandardScheme<AnalyzerDefinition> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, AnalyzerDefinition struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // DEFAULT_DEFINITION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.defaultDefinition = new ColumnDefinition();
+              struct.defaultDefinition.read(iprot);
+              struct.setDefaultDefinitionIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // FULL_TEXT_ANALYZER_CLASS_NAME
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.fullTextAnalyzerClassName = iprot.readString();
+              struct.setFullTextAnalyzerClassNameIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // COLUMN_FAMILY_DEFINITIONS
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map140 = iprot.readMapBegin();
+                struct.columnFamilyDefinitions = new HashMap<String,ColumnFamilyDefinition>(2*_map140.size);
+                for (int _i141 = 0; _i141 < _map140.size; ++_i141)
+                {
+                  String _key142; // required
+                  ColumnFamilyDefinition _val143; // optional
+                  _key142 = iprot.readString();
+                  _val143 = new ColumnFamilyDefinition();
+                  _val143.read(iprot);
+                  struct.columnFamilyDefinitions.put(_key142, _val143);
+                }
+                iprot.readMapEnd();
+              }
+              struct.setColumnFamilyDefinitionsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, AnalyzerDefinition struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.defaultDefinition != null) {
+        oprot.writeFieldBegin(DEFAULT_DEFINITION_FIELD_DESC);
+        struct.defaultDefinition.write(oprot);
+        oprot.writeFieldEnd();
+      }
+      if (struct.fullTextAnalyzerClassName != null) {
+        oprot.writeFieldBegin(FULL_TEXT_ANALYZER_CLASS_NAME_FIELD_DESC);
+        oprot.writeString(struct.fullTextAnalyzerClassName);
+        oprot.writeFieldEnd();
+      }
+      if (struct.columnFamilyDefinitions != null) {
+        oprot.writeFieldBegin(COLUMN_FAMILY_DEFINITIONS_FIELD_DESC);
+        {
+          oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, struct.columnFamilyDefinitions.size()));
+          for (Map.Entry<String, ColumnFamilyDefinition> _iter144 : struct.columnFamilyDefinitions.entrySet())
+          {
+            oprot.writeString(_iter144.getKey());
+            _iter144.getValue().write(oprot);
+          }
+          oprot.writeMapEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class AnalyzerDefinitionTupleSchemeFactory implements SchemeFactory {
+    public AnalyzerDefinitionTupleScheme getScheme() {
+      return new AnalyzerDefinitionTupleScheme();
+    }
+  }
+
+  private static class AnalyzerDefinitionTupleScheme extends TupleScheme<AnalyzerDefinition> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, AnalyzerDefinition struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetDefaultDefinition()) {
+        optionals.set(0);
+      }
+      if (struct.isSetFullTextAnalyzerClassName()) {
+        optionals.set(1);
+      }
+      if (struct.isSetColumnFamilyDefinitions()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetDefaultDefinition()) {
+        struct.defaultDefinition.write(oprot);
+      }
+      if (struct.isSetFullTextAnalyzerClassName()) {
+        oprot.writeString(struct.fullTextAnalyzerClassName);
+      }
+      if (struct.isSetColumnFamilyDefinitions()) {
+        {
+          oprot.writeI32(struct.columnFamilyDefinitions.size());
+          for (Map.Entry<String, ColumnFamilyDefinition> _iter145 : struct.columnFamilyDefinitions.entrySet())
+          {
+            oprot.writeString(_iter145.getKey());
+            _iter145.getValue().write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, AnalyzerDefinition struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.defaultDefinition = new ColumnDefinition();
+        struct.defaultDefinition.read(iprot);
+        struct.setDefaultDefinitionIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.fullTextAnalyzerClassName = iprot.readString();
+        struct.setFullTextAnalyzerClassNameIsSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TMap _map146 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.columnFamilyDefinitions = new HashMap<String,ColumnFamilyDefinition>(2*_map146.size);
+          for (int _i147 = 0; _i147 < _map146.size; ++_i147)
+          {
+            String _key148; // required
+            ColumnFamilyDefinition _val149; // optional
+            _key148 = iprot.readString();
+            _val149 = new ColumnFamilyDefinition();
+            _val149.read(iprot);
+            struct.columnFamilyDefinitions.put(_key148, _val149);
+          }
+        }
+        struct.setColumnFamilyDefinitionsIsSet(true);
+      }
+    }
+  }
+
 }
 


Mime
View raw message