ConfigurationAdapter(JsConfiguration config2) {
    this.config = config2;
    processEditors(config.getEditors());
    addSchema(getDatabase(), config.getMeta());

    processFrom(config.getFrom());
  }
 @Override
 public void fireEnumerate(EnumerateRequest er, final AsyncCallback<Response> callback) {
   config.fireEnumerate(
       er.getTableName(),
       er.getColumnName(),
       er.getColumnTypeName(),
       new EnumerateCallback(callback));
 }
 @Override
 public void fireSuggest(SuggestRequest sr, final AsyncCallback<Response> callback) {
   config.fireSuggest(
       sr.getTableName(),
       sr.getColumnName(),
       sr.getColumnTypeName(),
       sr.getQuery(),
       sr.getLimit(),
       new EnumerateCallback(callback));
 }
 @Override
 public void fireOnSqlChange(String sql, List<Object> args) {
   JsArrayMixed jarg = (JsArrayMixed) JavaScriptObject.createArray();
   for (Object o : args) {
     if (o == null) {
       jarg.push((JavaScriptObject) null);
     } else if (o instanceof String) {
       jarg.push((String) o);
     } else if (o instanceof Date) {
       jarg.push(JsDate.create(((Date) o).getTime()));
     } else {
       throw new IllegalArgumentException("Don't know how to handle " + o);
     }
   }
   config.fireOnSqlChange(sql, jarg);
 }
 @Override
 public final void fireOnTableChange(ObjectArray<TableFilter> filters) {
   config.fireOnTableChange(filters);
 }