提交 d559839e 编写于 作者: F Frankie Wu

make desc <table> work

上级 7614b225
......@@ -53,11 +53,12 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(TableHelper.class, MultiTableStatement.class, RowFilter.class));
all.add(C(SimpleShowHandler.class));
all.add(C(SimpleDescHandler.class));
all.add(C(SimpleDescHandler.class)//
.req(TableProviderManager.class));
all.add(C(SimpleSelectHandler.class) //
.req(StatementManager.class));
all.add(C(SimpleServerQueryHandler.class).is(PER_LOOKUP) //
.req(SimpleSelectHandler.class, SimpleShowHandler.class));
.req(SimpleSelectHandler.class, SimpleShowHandler.class, SimpleDescHandler.class));
return all;
}
......
package com.dianping.bee.engine.spi;
public interface DatabaseProvider {
public String getName();
public TableProvider[] getTables();
......
......@@ -24,7 +24,7 @@ public class DefaultTableProviderManager implements TableProviderManager, Initia
@Override
public TableProvider getTableProvider(String table) {
return m_tables.get(table);
return m_tables.get(table.toUpperCase());
}
@Override
......
......@@ -16,8 +16,6 @@ package com.dianping.bee.server;
import java.nio.ByteBuffer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import com.alibaba.cobar.CobarServer;
import com.alibaba.cobar.ErrorCode;
import com.alibaba.cobar.Fields;
......@@ -29,15 +27,17 @@ import com.alibaba.cobar.protocol.mysql.ResultSetHeaderPacket;
import com.alibaba.cobar.protocol.mysql.RowDataPacket;
import com.alibaba.cobar.server.ServerConnection;
import com.alibaba.cobar.util.StringUtil;
import com.dianping.bee.engine.spi.DatabaseProvider;
import com.dianping.bee.engine.spi.TableProvider;
import com.dianping.bee.engine.spi.TableProviderManager;
import com.dianping.bee.engine.spi.meta.ColumnMeta;
import com.site.lookup.ContainerLoader;
import com.site.lookup.annotation.Inject;
/**
* @author <a href="mailto:yiming.liu@dianping.com">Yiming Liu</a>
*/
public class SimpleDescHandler {
@Inject
private TableProviderManager m_manager;
/**
* @param stmt
......@@ -53,28 +53,17 @@ public class SimpleDescHandler {
c.writeErrMessage(ErrorCode.ER_NO_DB_ERROR, "No database selected");
return;
}
SchemaConfig schema = CobarServer.getInstance().getConfig().getSchemas().get(db);
if (schema == null) {
c.writeErrMessage(ErrorCode.ER_BAD_DB_ERROR, "Unknown database '" + db + "'");
return;
}
DatabaseProvider provider = null;
try {
provider = ContainerLoader.getDefaultContainer().lookup(DatabaseProvider.class, db);
} catch (ComponentLookupException e) {
c.writeErrMessage(ErrorCode.ER_BAD_DB_ERROR, "Can not load database '" + db + "'");
return;
}
if (provider == null) {
c.writeErrMessage(ErrorCode.ER_BAD_DB_ERROR, "Can not load database '" + db + "'");
return;
}
TableProvider table = m_manager.getTableProvider(tableName);
//FIXME: why abstractmethod exception
TableProvider table = provider.getTable(tableName);
if (table == null) {
c.writeErrMessage(ErrorCode.ER_BAD_TABLE_ERROR, "Can not load table '" + tableName + "'");
c.writeErrMessage(ErrorCode.ER_BAD_TABLE_ERROR, "Unknown table '" + tableName + "'");
return;
}
......
......@@ -87,6 +87,15 @@
<role>com.dianping.bee.server.SimpleShowHandler</role>
<implementation>com.dianping.bee.server.SimpleShowHandler</implementation>
</component>
<component>
<role>com.dianping.bee.server.SimpleDescHandler</role>
<implementation>com.dianping.bee.server.SimpleDescHandler</implementation>
<requirements>
<requirement>
<role>com.dianping.bee.engine.spi.TableProviderManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.bee.server.SimpleSelectHandler</role>
<implementation>com.dianping.bee.server.SimpleSelectHandler</implementation>
......@@ -107,6 +116,9 @@
<requirement>
<role>com.dianping.bee.server.SimpleShowHandler</role>
</requirement>
<requirement>
<role>com.dianping.bee.server.SimpleDescHandler</role>
</requirement>
</requirements>
</component>
</components>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册