package context

// javaEquivalenceClasses returns equivalence classes for java.
func javaEquivalenceClasses() []EquivalenceClass {
	return []EquivalenceClass{
		{
		Concept:    "JAVA_CONTROLLER",
		Phrases:    []string{"controller", "endpoint", "api", "rest", "handler", "mapping"},
		Targets:    []string{"Controller", "RestController", "GetMapping", "PostMapping", "PutMapping", "DeleteMapping", "RequestMapping", "PathVariable", "RequestBody"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "JAVA_SERVICE",
		Phrases:    []string{"service", "business logic", "component", "bean", "inject"},
		Targets:    []string{"Service", "Component", "Bean", "Autowired", "Inject", "Transactional", "Repository"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "JAVA_DATA",
		Phrases:    []string{"repository", "database", "jpa", "entity", "query", "persistence"},
		Targets:    []string{"Repository", "JpaRepository", "CrudRepository", "Entity", "Table", "Column", "Query", "EntityManager", "Specification"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "KAFKA_PRODUCER",
		Phrases:    []string{"kafka producer", "produce message", "send record", "producer record", "delivery callback", "custom headers", "idempotent producer", "sequence number"},
		Targets:    []string{"KafkaProducer", "ProducerRecord", "Callback", "RecordMetadata", "Serializer", "ProducerInterceptor", "Headers", "Header", "RecordHeaders", "Sender", "ProducerBatch", "RecordAccumulator", "TransactionManager"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_CONSUMER",
		Phrases:    []string{"kafka consumer", "consumer group", "consume message", "poll records", "offset commit", "auto-commit", "offset reset", "dead letter", "commit sync", "commit async", "exactly-once"},
		Targets:    []string{"KafkaConsumer", "ConsumerRecord", "ConsumerRebalanceListener", "OffsetCommitCallback", "ConsumerInterceptor", "Deserializer", "ConsumerConfig", "OffsetAndMetadata", "TopicPartition"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_STREAMS",
		Phrases:    []string{"kafka streams", "stream topology", "stream processor", "ktable", "windowed aggregation", "state store", "changelog topic", "rocksdb store", "streams builder"},
		Targets:    []string{"StreamsBuilder", "KStream", "KTable", "Topology", "ProcessorSupplier", "Materialized", "WindowedBy", "KafkaStreams", "TimeWindows", "KeyValueStore", "StateStore", "ProcessorStateManager", "StoreChangelogReader", "RocksDBStore"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_ADMIN",
		Phrases:    []string{"kafka admin", "create topic", "admin client", "topic configuration"},
		Targets:    []string{"AdminClient", "NewTopic", "CreateTopicsResult", "DescribeTopicsResult", "ConfigResource"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_CONNECT",
		Phrases:    []string{"kafka connect", "source connector", "sink connector", "connector task"},
		Targets:    []string{"SourceConnector", "SinkConnector", "SourceTask", "SinkTask", "ConnectorConfig", "SourceRecord"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_NETWORK",
		Phrases:    []string{"network client", "broker connection", "selector", "connection state", "heartbeat"},
		Targets:    []string{"NetworkClient", "Selector", "KafkaChannel", "HeartbeatThread", "AbstractCoordinator", "ConsumerCoordinator"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_PARTITIONER",
		Phrases:    []string{"partitioner", "partition assignment", "partition strategy", "rebalance", "rack awareness"},
		Targets:    []string{"Partitioner", "PartitionAssignor", "AbstractPartitionAssignor", "ConsumerPartitionAssignor", "StickyAssignor", "RangeAssignor", "Cluster"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_LOG",
		Phrases:    []string{"log compaction", "log segment", "log cleaner", "offset map", "duplicate keys"},
		Targets:    []string{"LogCleaner", "Cleaner", "OffsetMap", "LogSegment", "CleanerConfig", "Log"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "KAFKA_SSL",
		Phrases:    []string{"ssl encryption", "tls encryption", "ssl factory", "secured broker", "ssl config"},
		Targets:    []string{"SslFactory", "SslConfigs", "ChannelBuilders", "CommonClientConfigs", "SslTransportLayer"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "SPRING_CONTROLLER",
		Phrases:    []string{"spring controller", "rest controller", "request mapping", "endpoint"},
		Targets:    []string{"RestController", "RequestMapping", "GetMapping", "PostMapping", "ResponseEntity", "RequestBody"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "SPRING_SERVICE",
		Phrases:    []string{"spring service", "service layer", "autowired", "bean"},
		Targets:    []string{"Service", "Autowired", "Bean", "Component", "Configuration", "ComponentScan"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "SPRING_DATA",
		Phrases:    []string{"spring data", "jpa repository", "crud repository", "query method"},
		Targets:    []string{"JpaRepository", "CrudRepository", "Repository", "Query", "Entity", "EntityManager"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
		{
		Concept:    "SPRING_SECURITY",
		Phrases:    []string{"spring security", "security filter", "authentication provider", "authorization"},
		Targets:    []string{"SecurityFilterChain", "AuthenticationProvider", "UserDetailsService", "SecurityContext", "GrantedAuthority"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "java",
		},
	}
}
