### Question:
ExampleMetadata implements ConnectorMetadata { @Override public ExampleTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName) { if (!listSchemaNames(session).contains(tableName.getSchemaName())) { return null; } ExampleTable table = exampleClient.getTable(tableName.getSchemaName(), tableName.getTableName()); if (table == null) { return null; } return new ExampleTableHandle(tableName.getSchemaName(), tableName.getTableName()); } @Inject  ExampleMetadata(ExampleClient exampleClient); @Override List<String> listSchemaNames(ConnectorSession session); List<String> listSchemaNames(); @Override ExampleTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName); @Override ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle table); @Override List<SchemaTableName> listTables(ConnectorSession session, Optional<String> optionalSchemaName); @Override Map<String, ColumnHandle> getColumnHandles(ConnectorSession session, ConnectorTableHandle tableHandle); @Override Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSession session, SchemaTablePrefix prefix); @Override ColumnMetadata getColumnMetadata(ConnectorSession session, ConnectorTableHandle tableHandle, ColumnHandle columnHandle); @Override boolean usesLegacyTableLayouts(); @Override ConnectorTableProperties getTableProperties(ConnectorSession session, ConnectorTableHandle table);  }### Answer:
@Test public void testGetTableHandle() { assertEquals(metadata.getTableHandle(SESSION, new SchemaTableName("example", "numbers")), NUMBERS_TABLE_HANDLE); assertNull(metadata.getTableHandle(SESSION, new SchemaTableName("example", "unknown"))); assertNull(metadata.getTableHandle(SESSION, new SchemaTableName("unknown", "numbers"))); assertNull(metadata.getTableHandle(SESSION, new SchemaTableName("unknown", "unknown"))); }