# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Define all component libraries' names and IDs, used in monitored application.
# This is a bothway mapping, agent or SDK could use the value(ID) to represent the component name in uplink data.
#
# ######
#   id
# ######
# We highly recommend DO NOT change the IDs in these file, just append new one, and make sure the ID unique.
# Any replacement will cause visualization and aggregation error.
#
# All IDs in this files are reserved, even some IDs removed by some reasons, those IDs will be abandoned.
#
# ######
# languages
# ######
# Languages declare which languages are using this component. Multi languages should be separated by `,`

Tomcat:
  id: 1
  languages: Java
HttpClient:
  id: 2
  languages: Java,C#,Node.js
Dubbo:
  id: 3
  languages: Java
H2:
  id: 4
  languages: Java
Mysql:
  id: 5
  languages: Java,C#,Node.js
ORACLE:
  id: 6
  languages: Java
Redis:
  id: 7
  languages: Java,C#,Node.js
Motan:
  id: 8
  languages: Java
MongoDB:
  id: 9
  languages: Java,C#,Node.js
Resin:
  id: 10
  languages: Java
Feign:
  id: 11
  languages: Java
OKHttp:
  id: 12
  languages: Java
SpringRestTemplate:
  id: 13
  languages: Java
SpringMVC:
  id: 14
  languages: Java
Struts2:
  id: 15
  languages: Java
NutzMVC:
  id: 16
  languages: Java
NutzHttp:
  id: 17
  languages: Java
JettyClient:
  id: 18
  languages: Java
JettyServer:
  id: 19
  languages: Java
Memcached:
  id: 20
  languages: Java
ShardingJDBC:
  id: 21
  languages: Java
PostgreSQL:
  id: 22
  languages: Java,C#,Node.js
GRPC:
  id: 23
  languages: Java
ElasticJob:
  id: 24
  languages: Java
RocketMQ:
  id: 25
  languages: Java
httpasyncclient:
  id: 26
  languages: Java
Kafka:
  id: 27
  languages: Java
ServiceComb:
  id: 28
  languages: Java
Hystrix:
  id: 29
  languages: Java
Jedis:
  id: 30
  languages: Java
SQLite:
  id: 31
  languages: Java,C#
h2-jdbc-driver:
  id: 32
  languages: Java
mysql-connector-java:
  id: 33
  languages: Java
ojdbc:
  id: 34
  languages: Java
Spymemcached:
  id: 35
  languages: Java
Xmemcached:
  id: 36
  languages: Java
postgresql-jdbc-driver:
  id: 37
  languages: Java
rocketMQ-producer:
  id: 38
  languages: Java
rocketMQ-consumer:
  id: 39
  languages: Java
kafka-producer:
  id: 40
  languages: Java
kafka-consumer:
  id: 41
  languages: Java
mongodb-driver:
  id: 42
  languages: Java
SOFARPC:
  id: 43
  languages: Java
ActiveMQ:
  id: 44
  languages: Java
activemq-producer:
  id: 45
  languages: Java
activemq-consumer:
  id: 46
  languages: Java
Elasticsearch:
  id: 47
  languages: Java
transport-client:
  id: 48
  languages: Java
Undertow:
  id: 49
  languages: Java
Redisson:
  id: 56
  languages: Java
Lettuce:
  id: 57
  languages: Java
Zookeeper:
  id: 58
  languages: Java
Vertx:
  id: 59
  languages: Java
ShardingSphere:
  id: 60
  languages: Java
spring-cloud-gateway:
  id: 61
  languages: Java
RESTEasy:
  id: 62
  languages: Java
SolrJ:
  id: 63
  languages: Java
Solr:
  id: 64
  languages: Java
SpringAsync:
  id: 65
  languages: Java
JdkHttp:
  id: 66
  languages: Java
spring-webflux:
  id: 67
  languages: Java
Play:
  id: 68
  languages: Java,Scala
cassandra-java-driver:
  id: 69
  languages: Java
Cassandra:
  id: 70
  languages: Java
Light4J:
  id: 71
  languages: Java
Ehcache:
  id: 75
  languages: Java
SocketIO:
  id: 76
  languages: Java
rest-high-level-client:
  id: 77
  languages: Java
spring-tx:
  id: 78
  languages: Java
Armeria:
  id: 79
  languages: Java
JdkThreading:
  id: 80
  languages: Java
AvroServer:
  id: 82
  languages: Java
AvroClient:
  id: 83
  languages: Java
Finagle:
  id: 85
  languages: Java,Scala
Mariadb:
  id: 86
  languages: Java
mariadb-jdbc:
  id: 87
  languages: Java


# .NET/.NET Core components
# [3000, 4000) for C#/.NET only
AspNetCore:
  id: 3001
  languages: C#
EntityFrameworkCore:
  id: 3002
  languages: C#
SqlClient:
  id: 3003
  languages: C#
CAP:
  id: 3004
  languages: C#
StackExchange.Redis:
  id: 3005
  languages: C#
SqlServer:
  id: 3006
  languages: C#
Npgsql:
  id: 3007
  languages: C#
MySqlConnector:
  id: 3008
  languages: C#
EntityFrameworkCore.InMemory:
  id: 3009
  languages: C#
EntityFrameworkCore.SqlServer:
  id: 3010
  languages: C#
EntityFrameworkCore.Sqlite:
  id: 3011
  languages: C#
Pomelo.EntityFrameworkCore.MySql:
  id: 3012
  languages: C#
Npgsql.EntityFrameworkCore.PostgreSQL:
  id: 3013
  languages: C#
InMemoryDatabase:
  id: 3014
  languages: C#
AspNet:
  id: 3015
  languages: C#
SmartSql:
  id: 3016
  languages: C#

# NoeJS components
# [4000, 5000) for Node.js agent
HttpServer:
  id: 4001
  languages: Node.js
express:
  id: 4002
  languages: Node.js
Egg:
  id: 4003
  languages: Node.js
Koa:
  id: 4004
  languages: Node.js

# Component Server mapping defines the server display names of some components
# e.g.
# Jedis is a client library in Java for Redis server
Component-Server-Mappings:
  mongodb-driver: MongoDB
  rocketMQ-producer: RocketMQ
  rocketMQ-consumer: RocketMQ
  kafka-producer: Kafka
  kafka-consumer: Kafka
  activemq-producer: ActiveMQ
  activemq-consumer: ActiveMQ
  postgresql-jdbc-driver: PostgreSQL
  Xmemcached: Memcached
  Spymemcached: Memcached
  h2-jdbc-driver: H2
  mysql-connector-java: Mysql
  Jedis: Redis
  Redisson: Redis
  Lettuce: Redis
  Zookeeper: Zookeeper
  StackExchange.Redis: Redis
  SqlClient: SqlServer
  Npgsql: PostgreSQL
  MySqlConnector: Mysql
  EntityFrameworkCore.InMemory: InMemoryDatabase
  EntityFrameworkCore.SqlServer: SqlServer
  EntityFrameworkCore.Sqlite: SQLite
  Pomelo.EntityFrameworkCore.MySql: Mysql
  Npgsql.EntityFrameworkCore.PostgreSQL: PostgreSQL
  transport-client: Elasticsearch
  rest-high-level-client: Elasticsearch
  SolrJ: Solr
  cassandra-java-driver: Cassandra
  mariadb-jdbc: Mariadb
