public SymbolTableMetadata extractMetadata(String fullName)
  {
    int index = fullName.indexOf(SERVER_NODE_URI_PREFIX_TABLENAME_SEPARATOR);

    // If no separator char was found, we assume it's a local table.
    if (index == -1)
    {
      return new SymbolTableMetadata(null, fullName, false);
    }

    if (index == 0 || index == fullName.length() - 1)
    {
      throw new RuntimeException("Unexpected name format for name: " + fullName);
    }

    String serverNodeUri = fullName.substring(0, index);
    String tableName = fullName.substring(index + 1);
    return createMetadata(serverNodeUri, tableName);
  }
@Test
  public void testExtractTableInfoRemoteTable()
  {
    SymbolTableMetadata metadata =
        new SymbolTableMetadataExtractor().extractMetadata("https://Host:100/service|Prefix-1000");
    Assert.assertEquals(metadata.getServerNodeUri(), "https://Host:100/service");
    Assert.assertEquals(metadata.getSymbolTableName(), "Prefix-1000");
    Assert.assertTrue(metadata.isRemote());
  }