Full Code of provectus/kafka-ui for AI

master 83b5a60cc085 cached
1068 files
2.9 MB
839.4k tokens
3235 symbols
1 requests
Download .txt
Showing preview only (3,336K chars total). Download the full file or copy to clipboard to get everything.
Repository: provectus/kafka-ui
Branch: master
Commit: 83b5a60cc085
Files: 1068
Total size: 2.9 MB

Directory structure:
gitextract_kz4bsw12/

├── .devcontainer/
│   └── devcontainer.json
├── .editorconfig
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yml
│   │   ├── config.yml
│   │   └── feature.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── release_drafter.yaml
│   └── workflows/
│       ├── aws_publisher.yaml
│       ├── backend.yml
│       ├── block_merge.yml
│       ├── branch-deploy.yml
│       ├── branch-remove.yml
│       ├── build-public-image.yml
│       ├── codeql-analysis.yml
│       ├── cve.yaml
│       ├── delete-public-image.yml
│       ├── documentation.yaml
│       ├── e2e-automation.yml
│       ├── e2e-checks.yaml
│       ├── e2e-manual.yml
│       ├── e2e-weekly.yml
│       ├── frontend.yaml
│       ├── master.yaml
│       ├── pr-checks.yaml
│       ├── release-serde-api.yaml
│       ├── release.yaml
│       ├── release_drafter.yml
│       ├── separate_env_public_create.yml
│       ├── separate_env_public_remove.yml
│       ├── stale.yaml
│       ├── terraform-deploy.yml
│       ├── triage_issues.yml
│       ├── triage_prs.yml
│       ├── welcome-first-time-contributors.yml
│       └── workflow_linter.yaml
├── .gitignore
├── .mvn/
│   └── wrapper/
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── documentation/
│   └── compose/
│       ├── DOCKER_COMPOSE.md
│       ├── connectors/
│       │   ├── github-source.json
│       │   ├── s3-sink.json
│       │   ├── sink-activities.json
│       │   ├── source-activities.json
│       │   └── start.sh
│       ├── data/
│       │   ├── message.json
│       │   └── proxy.conf
│       ├── e2e-tests.yaml
│       ├── jaas/
│       │   ├── client.properties
│       │   ├── kafka_connect.jaas
│       │   ├── kafka_connect.password
│       │   ├── kafka_server.conf
│       │   ├── schema_registry.jaas
│       │   ├── schema_registry.password
│       │   └── zookeeper_jaas.conf
│       ├── jmx/
│       │   ├── clientkeystore
│       │   ├── clienttruststore
│       │   ├── jmxremote.access
│       │   ├── jmxremote.password
│       │   ├── serverkeystore
│       │   └── servertruststore
│       ├── jmx-exporter/
│       │   ├── kafka-broker.yml
│       │   └── kafka-prepare-and-run
│       ├── kafka-cluster-sr-auth.yaml
│       ├── kafka-connect/
│       │   └── Dockerfile
│       ├── kafka-ssl-components.yaml
│       ├── kafka-ssl.yml
│       ├── kafka-ui-acl-with-zk.yaml
│       ├── kafka-ui-arm64.yaml
│       ├── kafka-ui-auth-context.yaml
│       ├── kafka-ui-connectors-auth.yaml
│       ├── kafka-ui-jmx-secured.yml
│       ├── kafka-ui-sasl.yaml
│       ├── kafka-ui-serdes.yaml
│       ├── kafka-ui-with-jmx-exporter.yaml
│       ├── kafka-ui.yaml
│       ├── kafka-with-zookeeper.yaml
│       ├── ldap.yaml
│       ├── nginx-proxy.yaml
│       ├── postgres/
│       │   ├── Dockerfile
│       │   └── data.sql
│       ├── proto/
│       │   ├── key-types.proto
│       │   └── values.proto
│       ├── scripts/
│       │   ├── clusterID
│       │   ├── create_cluster_id.sh
│       │   ├── update_run.sh
│       │   └── update_run_cluster.sh
│       ├── ssl/
│       │   ├── creds
│       │   ├── generate_certs.sh
│       │   ├── kafka.keystore.jks
│       │   ├── kafka.truststore.jks
│       │   └── san.cnf
│       ├── traefik/
│       │   └── kafkaui.yaml
│       └── traefik-proxy.yaml
├── etc/
│   └── checkstyle/
│       ├── apache-header.txt
│       ├── checkstyle-e2e.xml
│       └── checkstyle.xml
├── kafka-ui-api/
│   ├── Dockerfile
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── antlr4/
│       │   │   └── ksql/
│       │   │       └── KsqlGrammar.g4
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── provectus/
│       │   │           └── kafka/
│       │   │               └── ui/
│       │   │                   ├── KafkaUiApplication.java
│       │   │                   ├── client/
│       │   │                   │   └── RetryingKafkaConnectClient.java
│       │   │                   ├── config/
│       │   │                   │   ├── ClustersProperties.java
│       │   │                   │   ├── Config.java
│       │   │                   │   ├── CorsGlobalConfiguration.java
│       │   │                   │   ├── CustomWebFilter.java
│       │   │                   │   ├── ReadOnlyModeFilter.java
│       │   │                   │   ├── WebclientProperties.java
│       │   │                   │   └── auth/
│       │   │                   │       ├── AbstractAuthSecurityConfig.java
│       │   │                   │       ├── AuthenticatedUser.java
│       │   │                   │       ├── BasicAuthSecurityConfig.java
│       │   │                   │       ├── DisabledAuthSecurityConfig.java
│       │   │                   │       ├── LdapProperties.java
│       │   │                   │       ├── LdapSecurityConfig.java
│       │   │                   │       ├── OAuthProperties.java
│       │   │                   │       ├── OAuthPropertiesConverter.java
│       │   │                   │       ├── OAuthSecurityConfig.java
│       │   │                   │       ├── RbacLdapUser.java
│       │   │                   │       ├── RbacOAuth2User.java
│       │   │                   │       ├── RbacOidcUser.java
│       │   │                   │       ├── RbacUser.java
│       │   │                   │       ├── RoleBasedAccessControlProperties.java
│       │   │                   │       ├── condition/
│       │   │                   │       │   ├── ActiveDirectoryCondition.java
│       │   │                   │       │   └── CognitoCondition.java
│       │   │                   │       └── logout/
│       │   │                   │           ├── CognitoLogoutSuccessHandler.java
│       │   │                   │           ├── LogoutSuccessHandler.java
│       │   │                   │           └── OAuthLogoutSuccessHandler.java
│       │   │                   ├── controller/
│       │   │                   │   ├── AbstractController.java
│       │   │                   │   ├── AccessController.java
│       │   │                   │   ├── AclsController.java
│       │   │                   │   ├── ApplicationConfigController.java
│       │   │                   │   ├── AuthController.java
│       │   │                   │   ├── BrokersController.java
│       │   │                   │   ├── ClustersController.java
│       │   │                   │   ├── ConsumerGroupsController.java
│       │   │                   │   ├── KafkaConnectController.java
│       │   │                   │   ├── KsqlController.java
│       │   │                   │   ├── MessagesController.java
│       │   │                   │   ├── SchemasController.java
│       │   │                   │   ├── StaticController.java
│       │   │                   │   └── TopicsController.java
│       │   │                   ├── emitter/
│       │   │                   │   ├── AbstractEmitter.java
│       │   │                   │   ├── BackwardEmitter.java
│       │   │                   │   ├── ConsumingStats.java
│       │   │                   │   ├── EnhancedConsumer.java
│       │   │                   │   ├── ForwardEmitter.java
│       │   │                   │   ├── MessageFilters.java
│       │   │                   │   ├── MessagesProcessing.java
│       │   │                   │   ├── OffsetsInfo.java
│       │   │                   │   ├── PolledRecords.java
│       │   │                   │   ├── PollingSettings.java
│       │   │                   │   ├── PollingThrottler.java
│       │   │                   │   ├── RangePollingEmitter.java
│       │   │                   │   ├── ResultSizeLimiter.java
│       │   │                   │   ├── SeekOperations.java
│       │   │                   │   └── TailingEmitter.java
│       │   │                   ├── exception/
│       │   │                   │   ├── ClusterNotFoundException.java
│       │   │                   │   ├── ConnectNotFoundException.java
│       │   │                   │   ├── CustomBaseException.java
│       │   │                   │   ├── DuplicateEntityException.java
│       │   │                   │   ├── ErrorCode.java
│       │   │                   │   ├── FileUploadException.java
│       │   │                   │   ├── GlobalErrorWebExceptionHandler.java
│       │   │                   │   ├── IllegalEntityStateException.java
│       │   │                   │   ├── InvalidRequestApiException.java
│       │   │                   │   ├── JsonAvroConversionException.java
│       │   │                   │   ├── KafkaConnectConflictReponseException.java
│       │   │                   │   ├── KsqlApiException.java
│       │   │                   │   ├── KsqlDbNotFoundException.java
│       │   │                   │   ├── LogDirNotFoundApiException.java
│       │   │                   │   ├── NotFoundException.java
│       │   │                   │   ├── ReadOnlyModeException.java
│       │   │                   │   ├── SchemaCompatibilityException.java
│       │   │                   │   ├── SchemaFailedToDeleteException.java
│       │   │                   │   ├── SchemaNotFoundException.java
│       │   │                   │   ├── TopicAnalysisException.java
│       │   │                   │   ├── TopicMetadataException.java
│       │   │                   │   ├── TopicNotFoundException.java
│       │   │                   │   ├── TopicOrPartitionNotFoundException.java
│       │   │                   │   ├── TopicRecreationException.java
│       │   │                   │   ├── UnprocessableEntityException.java
│       │   │                   │   └── ValidationException.java
│       │   │                   ├── mapper/
│       │   │                   │   ├── ClusterMapper.java
│       │   │                   │   ├── ConsumerGroupMapper.java
│       │   │                   │   ├── DescribeLogDirsMapper.java
│       │   │                   │   ├── KafkaConnectMapper.java
│       │   │                   │   └── KafkaSrMapper.java
│       │   │                   ├── model/
│       │   │                   │   ├── BrokerMetrics.java
│       │   │                   │   ├── CleanupPolicy.java
│       │   │                   │   ├── ClusterFeature.java
│       │   │                   │   ├── ConsumerPosition.java
│       │   │                   │   ├── InternalBroker.java
│       │   │                   │   ├── InternalBrokerConfig.java
│       │   │                   │   ├── InternalBrokerDiskUsage.java
│       │   │                   │   ├── InternalClusterMetrics.java
│       │   │                   │   ├── InternalClusterState.java
│       │   │                   │   ├── InternalConsumerGroup.java
│       │   │                   │   ├── InternalLogDirStats.java
│       │   │                   │   ├── InternalPartition.java
│       │   │                   │   ├── InternalPartitionsOffsets.java
│       │   │                   │   ├── InternalReplica.java
│       │   │                   │   ├── InternalSegmentSizeDto.java
│       │   │                   │   ├── InternalTopic.java
│       │   │                   │   ├── InternalTopicConfig.java
│       │   │                   │   ├── InternalTopicConsumerGroup.java
│       │   │                   │   ├── KafkaCluster.java
│       │   │                   │   ├── Metrics.java
│       │   │                   │   ├── MetricsConfig.java
│       │   │                   │   ├── PartitionDistributionStats.java
│       │   │                   │   ├── PartitionsStats.java
│       │   │                   │   ├── Statistics.java
│       │   │                   │   ├── connect/
│       │   │                   │   │   └── InternalConnectInfo.java
│       │   │                   │   ├── rbac/
│       │   │                   │   │   ├── AccessContext.java
│       │   │                   │   │   ├── Permission.java
│       │   │                   │   │   ├── Resource.java
│       │   │                   │   │   ├── Role.java
│       │   │                   │   │   ├── Subject.java
│       │   │                   │   │   ├── permission/
│       │   │                   │   │   │   ├── AclAction.java
│       │   │                   │   │   │   ├── ApplicationConfigAction.java
│       │   │                   │   │   │   ├── AuditAction.java
│       │   │                   │   │   │   ├── ClusterConfigAction.java
│       │   │                   │   │   │   ├── ConnectAction.java
│       │   │                   │   │   │   ├── ConsumerGroupAction.java
│       │   │                   │   │   │   ├── KsqlAction.java
│       │   │                   │   │   │   ├── PermissibleAction.java
│       │   │                   │   │   │   ├── SchemaAction.java
│       │   │                   │   │   │   └── TopicAction.java
│       │   │                   │   │   └── provider/
│       │   │                   │   │       └── Provider.java
│       │   │                   │   └── schemaregistry/
│       │   │                   │       ├── ErrorResponse.java
│       │   │                   │       ├── InternalCompatibilityCheck.java
│       │   │                   │       ├── InternalCompatibilityLevel.java
│       │   │                   │       ├── InternalNewSchema.java
│       │   │                   │       └── SubjectIdResponse.java
│       │   │                   ├── serdes/
│       │   │                   │   ├── BuiltInSerde.java
│       │   │                   │   ├── ClassloaderUtil.java
│       │   │                   │   ├── ClusterSerdes.java
│       │   │                   │   ├── ConsumerRecordDeserializer.java
│       │   │                   │   ├── CustomSerdeLoader.java
│       │   │                   │   ├── ProducerRecordCreator.java
│       │   │                   │   ├── PropertyResolverImpl.java
│       │   │                   │   ├── RecordHeaderImpl.java
│       │   │                   │   ├── RecordHeadersImpl.java
│       │   │                   │   ├── SerdeInstance.java
│       │   │                   │   ├── SerdesInitializer.java
│       │   │                   │   └── builtin/
│       │   │                   │       ├── AvroEmbeddedSerde.java
│       │   │                   │       ├── Base64Serde.java
│       │   │                   │       ├── ConsumerOffsetsSerde.java
│       │   │                   │       ├── HexSerde.java
│       │   │                   │       ├── Int32Serde.java
│       │   │                   │       ├── Int64Serde.java
│       │   │                   │       ├── ProtobufFileSerde.java
│       │   │                   │       ├── ProtobufRawSerde.java
│       │   │                   │       ├── StringSerde.java
│       │   │                   │       ├── UInt32Serde.java
│       │   │                   │       ├── UInt64Serde.java
│       │   │                   │       ├── UuidBinarySerde.java
│       │   │                   │       └── sr/
│       │   │                   │           ├── MessageFormatter.java
│       │   │                   │           ├── SchemaRegistrySerde.java
│       │   │                   │           ├── SchemaType.java
│       │   │                   │           └── Serialize.java
│       │   │                   ├── service/
│       │   │                   │   ├── AdminClientService.java
│       │   │                   │   ├── AdminClientServiceImpl.java
│       │   │                   │   ├── ApplicationInfoService.java
│       │   │                   │   ├── BrokerService.java
│       │   │                   │   ├── ClusterService.java
│       │   │                   │   ├── ClustersStatisticsScheduler.java
│       │   │                   │   ├── ClustersStorage.java
│       │   │                   │   ├── ConsumerGroupService.java
│       │   │                   │   ├── DeserializationService.java
│       │   │                   │   ├── FeatureService.java
│       │   │                   │   ├── KafkaClusterFactory.java
│       │   │                   │   ├── KafkaConfigSanitizer.java
│       │   │                   │   ├── KafkaConnectService.java
│       │   │                   │   ├── MessagesService.java
│       │   │                   │   ├── OffsetsResetService.java
│       │   │                   │   ├── ReactiveAdminClient.java
│       │   │                   │   ├── SchemaRegistryService.java
│       │   │                   │   ├── StatisticsCache.java
│       │   │                   │   ├── StatisticsService.java
│       │   │                   │   ├── TopicsService.java
│       │   │                   │   ├── acl/
│       │   │                   │   │   ├── AclCsv.java
│       │   │                   │   │   └── AclsService.java
│       │   │                   │   ├── analyze/
│       │   │                   │   │   ├── AnalysisTasksStore.java
│       │   │                   │   │   ├── TopicAnalysisService.java
│       │   │                   │   │   ├── TopicAnalysisStats.java
│       │   │                   │   │   └── TopicIdentity.java
│       │   │                   │   ├── audit/
│       │   │                   │   │   ├── AuditRecord.java
│       │   │                   │   │   ├── AuditService.java
│       │   │                   │   │   └── AuditWriter.java
│       │   │                   │   ├── integration/
│       │   │                   │   │   └── odd/
│       │   │                   │   │       ├── ConnectorInfo.java
│       │   │                   │   │       ├── ConnectorsExporter.java
│       │   │                   │   │       ├── OddExporter.java
│       │   │                   │   │       ├── OddExporterScheduler.java
│       │   │                   │   │       ├── OddIntegrationConfig.java
│       │   │                   │   │       ├── OddIntegrationProperties.java
│       │   │                   │   │       ├── Oddrn.java
│       │   │                   │   │       ├── SchemaReferencesResolver.java
│       │   │                   │   │       ├── TopicsExporter.java
│       │   │                   │   │       └── schema/
│       │   │                   │   │           ├── AvroExtractor.java
│       │   │                   │   │           ├── DataSetFieldsExtractors.java
│       │   │                   │   │           ├── JsonSchemaExtractor.java
│       │   │                   │   │           └── ProtoExtractor.java
│       │   │                   │   ├── ksql/
│       │   │                   │   │   ├── KsqlApiClient.java
│       │   │                   │   │   ├── KsqlGrammar.java
│       │   │                   │   │   ├── KsqlServiceV2.java
│       │   │                   │   │   └── response/
│       │   │                   │   │       ├── DynamicParser.java
│       │   │                   │   │       └── ResponseParser.java
│       │   │                   │   ├── masking/
│       │   │                   │   │   ├── DataMasking.java
│       │   │                   │   │   └── policies/
│       │   │                   │   │       ├── FieldsSelector.java
│       │   │                   │   │       ├── Mask.java
│       │   │                   │   │       ├── MaskingPolicy.java
│       │   │                   │   │       ├── Remove.java
│       │   │                   │   │       └── Replace.java
│       │   │                   │   ├── metrics/
│       │   │                   │   │   ├── JmxMetricsFormatter.java
│       │   │                   │   │   ├── JmxMetricsRetriever.java
│       │   │                   │   │   ├── JmxSslSocketFactory.java
│       │   │                   │   │   ├── MetricsCollector.java
│       │   │                   │   │   ├── MetricsRetriever.java
│       │   │                   │   │   ├── PrometheusEndpointMetricsParser.java
│       │   │                   │   │   ├── PrometheusMetricsRetriever.java
│       │   │                   │   │   ├── RawMetric.java
│       │   │                   │   │   └── WellKnownMetrics.java
│       │   │                   │   └── rbac/
│       │   │                   │       ├── AbstractProviderCondition.java
│       │   │                   │       ├── AccessControlService.java
│       │   │                   │       └── extractor/
│       │   │                   │           ├── CognitoAuthorityExtractor.java
│       │   │                   │           ├── GithubAuthorityExtractor.java
│       │   │                   │           ├── GoogleAuthorityExtractor.java
│       │   │                   │           ├── OauthAuthorityExtractor.java
│       │   │                   │           ├── ProviderAuthorityExtractor.java
│       │   │                   │           └── RbacLdapAuthoritiesExtractor.java
│       │   │                   └── util/
│       │   │                       ├── ApplicationMetrics.java
│       │   │                       ├── ApplicationRestarter.java
│       │   │                       ├── DynamicConfigOperations.java
│       │   │                       ├── EmptyRedirectStrategy.java
│       │   │                       ├── GithubReleaseInfo.java
│       │   │                       ├── KafkaServicesValidation.java
│       │   │                       ├── KafkaVersion.java
│       │   │                       ├── ReactiveFailover.java
│       │   │                       ├── ResourceUtil.java
│       │   │                       ├── SslPropertiesUtil.java
│       │   │                       ├── WebClientConfigurator.java
│       │   │                       ├── annotation/
│       │   │                       │   └── KafkaClientInternalsDependant.java
│       │   │                       └── jsonschema/
│       │   │                           ├── AnyFieldSchema.java
│       │   │                           ├── ArrayFieldSchema.java
│       │   │                           ├── AvroJsonSchemaConverter.java
│       │   │                           ├── EnumJsonType.java
│       │   │                           ├── FieldSchema.java
│       │   │                           ├── JsonAvroConversion.java
│       │   │                           ├── JsonSchema.java
│       │   │                           ├── JsonSchemaConverter.java
│       │   │                           ├── JsonType.java
│       │   │                           ├── MapFieldSchema.java
│       │   │                           ├── ObjectFieldSchema.java
│       │   │                           ├── OneOfFieldSchema.java
│       │   │                           ├── ProtobufSchemaConverter.java
│       │   │                           ├── RefFieldSchema.java
│       │   │                           ├── SimpleFieldSchema.java
│       │   │                           └── SimpleJsonType.java
│       │   └── resources/
│       │       ├── application-local.yml
│       │       ├── application.yml
│       │       ├── banner.txt
│       │       ├── logback-spring.xml
│       │       └── static/
│       │           └── static/
│       │               └── css/
│       │                   ├── bootstrap.min.css
│       │                   └── signin.css
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── provectus/
│           │           └── kafka/
│           │               └── ui/
│           │                   ├── AbstractIntegrationTest.java
│           │                   ├── KafkaConnectServiceTests.java
│           │                   ├── KafkaConsumerGroupTests.java
│           │                   ├── KafkaConsumerTests.java
│           │                   ├── KafkaTopicCreateTests.java
│           │                   ├── ReadOnlyModeTests.java
│           │                   ├── SchemaRegistryServiceTests.java
│           │                   ├── config/
│           │                   │   └── ClustersPropertiesTest.java
│           │                   ├── container/
│           │                   │   ├── KafkaConnectContainer.java
│           │                   │   ├── KsqlDbContainer.java
│           │                   │   └── SchemaRegistryContainer.java
│           │                   ├── controller/
│           │                   │   └── ApplicationConfigControllerTest.java
│           │                   ├── emitter/
│           │                   │   ├── MessageFiltersTest.java
│           │                   │   ├── MessagesProcessingTest.java
│           │                   │   ├── OffsetsInfoTest.java
│           │                   │   ├── SeekOperationsTest.java
│           │                   │   └── TailingEmitterTest.java
│           │                   ├── model/
│           │                   │   └── PartitionDistributionStatsTest.java
│           │                   ├── producer/
│           │                   │   └── KafkaTestProducer.java
│           │                   ├── serdes/
│           │                   │   ├── ConsumerRecordDeserializerTest.java
│           │                   │   ├── PropertyResolverImplTest.java
│           │                   │   ├── SerdesInitializerTest.java
│           │                   │   └── builtin/
│           │                   │       ├── AvroEmbeddedSerdeTest.java
│           │                   │       ├── Base64SerdeTest.java
│           │                   │       ├── ConsumerOffsetsSerdeTest.java
│           │                   │       ├── HexSerdeTest.java
│           │                   │       ├── Int32SerdeTest.java
│           │                   │       ├── Int64SerdeTest.java
│           │                   │       ├── ProtobufFileSerdeTest.java
│           │                   │       ├── ProtobufRawSerdeTest.java
│           │                   │       ├── UInt32SerdeTest.java
│           │                   │       ├── UInt64SerdeTest.java
│           │                   │       ├── UuidBinarySerdeTest.java
│           │                   │       └── sr/
│           │                   │           └── SchemaRegistrySerdeTest.java
│           │                   ├── service/
│           │                   │   ├── BrokerServiceTest.java
│           │                   │   ├── ConfigTest.java
│           │                   │   ├── KafkaConfigSanitizerTest.java
│           │                   │   ├── LogDirsTest.java
│           │                   │   ├── MessagesServiceTest.java
│           │                   │   ├── OffsetsResetServiceTest.java
│           │                   │   ├── ReactiveAdminClientTest.java
│           │                   │   ├── RecordEmitterTest.java
│           │                   │   ├── SchemaRegistryPaginationTest.java
│           │                   │   ├── SendAndReadTests.java
│           │                   │   ├── TopicsServicePaginationTest.java
│           │                   │   ├── acl/
│           │                   │   │   ├── AclCsvTest.java
│           │                   │   │   └── AclsServiceTest.java
│           │                   │   ├── analyze/
│           │                   │   │   └── TopicAnalysisServiceTest.java
│           │                   │   ├── audit/
│           │                   │   │   ├── AuditIntegrationTest.java
│           │                   │   │   ├── AuditServiceTest.java
│           │                   │   │   └── AuditWriterTest.java
│           │                   │   ├── integration/
│           │                   │   │   └── odd/
│           │                   │   │       ├── ConnectorsExporterTest.java
│           │                   │   │       ├── SchemaReferencesResolverTest.java
│           │                   │   │       ├── TopicsExporterTest.java
│           │                   │   │       └── schema/
│           │                   │   │           ├── AvroExtractorTest.java
│           │                   │   │           ├── JsonSchemaExtractorTest.java
│           │                   │   │           └── ProtoExtractorTest.java
│           │                   │   ├── ksql/
│           │                   │   │   ├── KsqlApiClientTest.java
│           │                   │   │   ├── KsqlServiceV2Test.java
│           │                   │   │   └── response/
│           │                   │   │       └── ResponseParserTest.java
│           │                   │   ├── masking/
│           │                   │   │   ├── DataMaskingTest.java
│           │                   │   │   └── policies/
│           │                   │   │       ├── FieldsSelectorTest.java
│           │                   │   │       ├── MaskTest.java
│           │                   │   │       ├── RemoveTest.java
│           │                   │   │       └── ReplaceTest.java
│           │                   │   └── metrics/
│           │                   │       ├── JmxMetricsFormatterTest.java
│           │                   │       ├── PrometheusEndpointMetricsParserTest.java
│           │                   │       ├── PrometheusMetricsRetrieverTest.java
│           │                   │       └── WellKnownMetricsTest.java
│           │                   └── util/
│           │                       ├── AccessControlServiceMock.java
│           │                       ├── DynamicConfigOperationsTest.java
│           │                       ├── GithubReleaseInfoTest.java
│           │                       ├── PollingThrottlerTest.java
│           │                       ├── ReactiveFailoverTest.java
│           │                       └── jsonschema/
│           │                           ├── AvroJsonSchemaConverterTest.java
│           │                           ├── JsonAvroConversionTest.java
│           │                           └── ProtobufSchemaConverterTest.java
│           └── resources/
│               ├── application-test.yml
│               ├── fileForUploadTest.txt
│               └── protobuf-serde/
│                   ├── address-book.proto
│                   ├── lang-description.proto
│                   ├── language/
│                   │   └── language.proto
│                   └── sensor.proto
├── kafka-ui-contract/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── resources/
│               └── swagger/
│                   ├── kafka-connect-api.yaml
│                   ├── kafka-sr-api.yaml
│                   └── kafka-ui-api.yaml
├── kafka-ui-e2e-checks/
│   ├── .gitignore
│   ├── QASE.md
│   ├── README.md
│   ├── docker/
│   │   ├── selenoid-git.yaml
│   │   └── selenoid-local.yaml
│   ├── pom.xml
│   ├── selenoid/
│   │   └── config/
│   │       ├── browsersGit.json
│   │       └── browsersLocal.json
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── provectus/
│       │   │           └── kafka/
│       │   │               └── ui/
│       │   │                   ├── models/
│       │   │                   │   ├── Connector.java
│       │   │                   │   ├── Schema.java
│       │   │                   │   └── Topic.java
│       │   │                   ├── pages/
│       │   │                   │   ├── BasePage.java
│       │   │                   │   ├── brokers/
│       │   │                   │   │   ├── BrokersConfigTab.java
│       │   │                   │   │   ├── BrokersDetails.java
│       │   │                   │   │   └── BrokersList.java
│       │   │                   │   ├── connectors/
│       │   │                   │   │   ├── ConnectorCreateForm.java
│       │   │                   │   │   ├── ConnectorDetails.java
│       │   │                   │   │   └── KafkaConnectList.java
│       │   │                   │   ├── consumers/
│       │   │                   │   │   ├── ConsumersDetails.java
│       │   │                   │   │   └── ConsumersList.java
│       │   │                   │   ├── ksqldb/
│       │   │                   │   │   ├── KsqlDbList.java
│       │   │                   │   │   ├── KsqlQueryForm.java
│       │   │                   │   │   ├── enums/
│       │   │                   │   │   │   ├── KsqlMenuTabs.java
│       │   │                   │   │   │   └── KsqlQueryConfig.java
│       │   │                   │   │   └── models/
│       │   │                   │   │       ├── Stream.java
│       │   │                   │   │       └── Table.java
│       │   │                   │   ├── panels/
│       │   │                   │   │   ├── NaviSideBar.java
│       │   │                   │   │   ├── TopPanel.java
│       │   │                   │   │   └── enums/
│       │   │                   │   │       └── MenuItem.java
│       │   │                   │   ├── schemas/
│       │   │                   │   │   ├── SchemaCreateForm.java
│       │   │                   │   │   ├── SchemaDetails.java
│       │   │                   │   │   └── SchemaRegistryList.java
│       │   │                   │   └── topics/
│       │   │                   │       ├── ProduceMessagePanel.java
│       │   │                   │       ├── TopicCreateEditForm.java
│       │   │                   │       ├── TopicDetails.java
│       │   │                   │       ├── TopicSettingsTab.java
│       │   │                   │       ├── TopicsList.java
│       │   │                   │       └── enums/
│       │   │                   │           ├── CleanupPolicyValue.java
│       │   │                   │           ├── CustomParameterType.java
│       │   │                   │           ├── MaxSizeOnDisk.java
│       │   │                   │           └── TimeToRetain.java
│       │   │                   ├── services/
│       │   │                   │   └── ApiService.java
│       │   │                   ├── settings/
│       │   │                   │   ├── BaseSource.java
│       │   │                   │   ├── configs/
│       │   │                   │   │   ├── Config.java
│       │   │                   │   │   └── Profiles.java
│       │   │                   │   ├── drivers/
│       │   │                   │   │   └── WebDriver.java
│       │   │                   │   └── listeners/
│       │   │                   │       ├── AllureListener.java
│       │   │                   │       ├── LoggerListener.java
│       │   │                   │       ├── QaseCreateListener.java
│       │   │                   │       └── QaseResultListener.java
│       │   │                   ├── utilities/
│       │   │                   │   ├── FileUtils.java
│       │   │                   │   ├── StringUtils.java
│       │   │                   │   ├── TimeUtils.java
│       │   │                   │   ├── WebUtils.java
│       │   │                   │   └── qase/
│       │   │                   │       ├── QaseSetup.java
│       │   │                   │       ├── annotations/
│       │   │                   │       │   ├── Automation.java
│       │   │                   │       │   ├── Status.java
│       │   │                   │       │   └── Suite.java
│       │   │                   │       └── enums/
│       │   │                   │           ├── State.java
│       │   │                   │           └── Status.java
│       │   │                   └── variables/
│       │   │                       ├── Browser.java
│       │   │                       ├── Expected.java
│       │   │                       ├── Suite.java
│       │   │                       └── Url.java
│       │   └── resources/
│       │       ├── allure.properties
│       │       └── testData/
│       │           ├── connectors/
│       │           │   ├── config_for_create_connector.json
│       │           │   ├── config_for_create_connector_via_api.json
│       │           │   ├── config_for_update_connector.json
│       │           │   └── delete_connector_config.json
│       │           ├── schemas/
│       │           │   ├── schema_avro_for_update.json
│       │           │   ├── schema_avro_value.json
│       │           │   ├── schema_json_Value.json
│       │           │   └── schema_protobuf_value.txt
│       │           └── topics/
│       │               └── message_content_create_topic.json
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── provectus/
│           │           └── kafka/
│           │               └── ui/
│           │                   ├── BaseTest.java
│           │                   ├── Facade.java
│           │                   ├── manualsuite/
│           │                   │   ├── BaseManualTest.java
│           │                   │   ├── backlog/
│           │                   │   │   ├── SanityBacklog.java
│           │                   │   │   └── SmokeBacklog.java
│           │                   │   └── suite/
│           │                   │       ├── DataMaskingTest.java
│           │                   │       ├── RbacTest.java
│           │                   │       ├── TopicsTest.java
│           │                   │       └── WizardTest.java
│           │                   ├── qasesuite/
│           │                   │   ├── BaseQaseTest.java
│           │                   │   └── Template.java
│           │                   ├── sanitysuite/
│           │                   │   └── TopicsTest.java
│           │                   └── smokesuite/
│           │                       ├── SmokeTest.java
│           │                       ├── brokers/
│           │                       │   └── BrokersTest.java
│           │                       ├── connectors/
│           │                       │   └── ConnectorsTest.java
│           │                       ├── ksqldb/
│           │                       │   └── KsqlDbTest.java
│           │                       ├── schemas/
│           │                       │   └── SchemasTest.java
│           │                       └── topics/
│           │                           ├── MessagesTest.java
│           │                           └── TopicsTest.java
│           └── resources/
│               ├── manual.xml
│               ├── qase.xml
│               ├── regression.xml
│               ├── sanity.xml
│               └── smoke.xml
├── kafka-ui-react-app/
│   ├── .editorconfig
│   ├── .eslintignore
│   ├── .eslintrc.json
│   ├── .gitignore
│   ├── .jest/
│   │   ├── cssTransform.js
│   │   └── resolver.js
│   ├── .nvmrc
│   ├── .prettierrc
│   ├── README.md
│   ├── index.html
│   ├── jest.config.ts
│   ├── openapitools.json
│   ├── package.json
│   ├── public/
│   │   ├── manifest.json
│   │   └── robots.txt
│   ├── sonar-project.properties
│   ├── src/
│   │   ├── components/
│   │   │   ├── ACLPage/
│   │   │   │   ├── ACLPage.tsx
│   │   │   │   └── List/
│   │   │   │       ├── List.styled.ts
│   │   │   │       ├── List.tsx
│   │   │   │       └── __test__/
│   │   │   │           └── List.spec.tsx
│   │   │   ├── App.styled.ts
│   │   │   ├── App.tsx
│   │   │   ├── Brokers/
│   │   │   │   ├── Broker/
│   │   │   │   │   ├── Broker.tsx
│   │   │   │   │   ├── BrokerLogdir/
│   │   │   │   │   │   ├── BrokerLogdir.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── BrokerLogdir.spec.tsx
│   │   │   │   │   ├── BrokerMetrics/
│   │   │   │   │   │   ├── BrokerMetrics.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── BrokerMetrics.spec.tsx
│   │   │   │   │   ├── Configs/
│   │   │   │   │   │   ├── Configs.styled.ts
│   │   │   │   │   │   ├── Configs.tsx
│   │   │   │   │   │   ├── InputCell.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── Configs.spec.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── Broker.spec.tsx
│   │   │   │   ├── Brokers.tsx
│   │   │   │   ├── BrokersList/
│   │   │   │   │   ├── BrokersList.styled.ts
│   │   │   │   │   ├── BrokersList.tsx
│   │   │   │   │   ├── SkewHeader/
│   │   │   │   │   │   ├── SkewHeader.styled.ts
│   │   │   │   │   │   └── SkewHeader.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── BrokersList.spec.tsx
│   │   │   │   ├── __test__/
│   │   │   │   │   └── Brokers.spec.tsx
│   │   │   │   └── utils/
│   │   │   │       ├── __test__/
│   │   │   │       │   ├── fixtures.ts
│   │   │   │       │   └── getEditorText.spec.tsx
│   │   │   │       └── getEditorText.ts
│   │   │   ├── ClusterPage/
│   │   │   │   ├── ClusterConfigPage.tsx
│   │   │   │   ├── ClusterPage.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── ClusterPage.spec.tsx
│   │   │   ├── Connect/
│   │   │   │   ├── Connect.tsx
│   │   │   │   ├── Details/
│   │   │   │   │   ├── Actions/
│   │   │   │   │   │   ├── Action.styled.ts
│   │   │   │   │   │   ├── Actions.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── Actions.spec.tsx
│   │   │   │   │   ├── Config/
│   │   │   │   │   │   ├── Config.styled.ts
│   │   │   │   │   │   ├── Config.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── Config.spec.tsx
│   │   │   │   │   ├── DetailsPage.tsx
│   │   │   │   │   ├── Overview/
│   │   │   │   │   │   ├── Overview.tsx
│   │   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   │   ├── Overview.spec.tsx
│   │   │   │   │   │   │   └── getTaskMetrics.spec.ts
│   │   │   │   │   │   └── getTaskMetrics.ts
│   │   │   │   │   ├── Tasks/
│   │   │   │   │   │   ├── ActionsCellTasks.tsx
│   │   │   │   │   │   ├── Tasks.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── Tasks.spec.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── DetailsPage.spec.tsx
│   │   │   │   ├── List/
│   │   │   │   │   ├── ActionsCell.tsx
│   │   │   │   │   ├── List.styled.ts
│   │   │   │   │   ├── List.tsx
│   │   │   │   │   ├── ListPage.tsx
│   │   │   │   │   ├── RunningTasksCell.tsx
│   │   │   │   │   ├── TopicsCell.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       ├── List.spec.tsx
│   │   │   │   │       └── ListPage.spec.tsx
│   │   │   │   ├── New/
│   │   │   │   │   ├── New.styled.ts
│   │   │   │   │   ├── New.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── New.spec.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── Connect.spec.tsx
│   │   │   ├── ConsumerGroups/
│   │   │   │   ├── ConsumerGroups.tsx
│   │   │   │   ├── Details/
│   │   │   │   │   ├── Details.tsx
│   │   │   │   │   ├── ListItem.styled.ts
│   │   │   │   │   ├── ListItem.tsx
│   │   │   │   │   ├── ResetOffsets/
│   │   │   │   │   │   ├── Form.tsx
│   │   │   │   │   │   ├── ResetOffsets.styled.ts
│   │   │   │   │   │   └── ResetOffsets.tsx
│   │   │   │   │   └── TopicContents/
│   │   │   │   │       ├── TopicContent.styled.ts
│   │   │   │   │       ├── TopicContents.tsx
│   │   │   │   │       └── __test__/
│   │   │   │   │           └── TopicContents.spec.tsx
│   │   │   │   ├── List.tsx
│   │   │   │   └── __test__/
│   │   │   │       └── ConsumerGroups.spec.tsx
│   │   │   ├── Dashboard/
│   │   │   │   ├── ClusterName.tsx
│   │   │   │   ├── ClusterTableActionsCell.tsx
│   │   │   │   ├── Dashboard.styled.ts
│   │   │   │   └── Dashboard.tsx
│   │   │   ├── ErrorPage/
│   │   │   │   ├── ErrorPage.styled.ts
│   │   │   │   ├── ErrorPage.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── ErrorPage.spec.tsx
│   │   │   ├── KsqlDb/
│   │   │   │   ├── KsqlDb.tsx
│   │   │   │   ├── Query/
│   │   │   │   │   ├── Query.tsx
│   │   │   │   │   ├── QueryForm/
│   │   │   │   │   │   ├── QueryForm.styled.ts
│   │   │   │   │   │   └── QueryForm.tsx
│   │   │   │   │   └── renderer/
│   │   │   │   │       └── TableRenderer/
│   │   │   │   │           ├── TableRenderer.styled.tsx
│   │   │   │   │           └── TableRenderer.tsx
│   │   │   │   └── TableView.tsx
│   │   │   ├── Nav/
│   │   │   │   ├── ClusterMenu.tsx
│   │   │   │   ├── ClusterMenuItem.tsx
│   │   │   │   ├── ClusterTab/
│   │   │   │   │   ├── ClusterTab.styled.ts
│   │   │   │   │   ├── ClusterTab.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       ├── ClusterTab.spec.tsx
│   │   │   │   │       └── ClusterTab.styled.spec.tsx
│   │   │   │   ├── Nav.styled.ts
│   │   │   │   ├── Nav.tsx
│   │   │   │   └── __tests__/
│   │   │   │       ├── ClusterMenu.spec.tsx
│   │   │   │       ├── ClusterMenuItem.spec.tsx
│   │   │   │       └── Nav.spec.tsx
│   │   │   ├── NavBar/
│   │   │   │   ├── NavBar.styled.ts
│   │   │   │   ├── NavBar.tsx
│   │   │   │   ├── UserInfo/
│   │   │   │   │   ├── UserInfo.styled.ts
│   │   │   │   │   ├── UserInfo.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── UserInfo.spec.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── NavBar.spec.tsx
│   │   │   ├── PageContainer/
│   │   │   │   ├── PageContainer.styled.ts
│   │   │   │   ├── PageContainer.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── PageContainer.spec.tsx
│   │   │   ├── Schemas/
│   │   │   │   ├── Details/
│   │   │   │   │   ├── Details.tsx
│   │   │   │   │   ├── LatestVersion/
│   │   │   │   │   │   ├── LatestVersionItem.styled.tsx
│   │   │   │   │   │   └── LatestVersionItem.tsx
│   │   │   │   │   ├── SchemaVersion/
│   │   │   │   │   │   └── SchemaVersion.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       ├── Details.spec.tsx
│   │   │   │   │       ├── LatestVersionItem.spec.tsx
│   │   │   │   │       ├── SchemaVersion.spec.tsx
│   │   │   │   │       └── fixtures.ts
│   │   │   │   ├── Diff/
│   │   │   │   │   ├── Diff.styled.ts
│   │   │   │   │   ├── Diff.tsx
│   │   │   │   │   ├── DiffContainer.ts
│   │   │   │   │   └── __test__/
│   │   │   │   │       ├── Diff.spec.tsx
│   │   │   │   │       └── fixtures.ts
│   │   │   │   ├── Edit/
│   │   │   │   │   ├── Edit.styled.ts
│   │   │   │   │   ├── Edit.tsx
│   │   │   │   │   ├── Form.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Edit.spec.tsx
│   │   │   │   ├── List/
│   │   │   │   │   ├── GlobalSchemaSelector/
│   │   │   │   │   │   ├── GlobalSchemaSelector.styled.ts
│   │   │   │   │   │   ├── GlobalSchemaSelector.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── GlobalSchemaSelector.spec.tsx
│   │   │   │   │   ├── List.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       ├── List.spec.tsx
│   │   │   │   │       └── fixtures.ts
│   │   │   │   ├── New/
│   │   │   │   │   ├── New.styled.ts
│   │   │   │   │   ├── New.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── New.spec.tsx
│   │   │   │   ├── Schemas.tsx
│   │   │   │   └── __test__/
│   │   │   │       └── Schemas.spec.tsx
│   │   │   ├── Topics/
│   │   │   │   ├── List/
│   │   │   │   │   ├── ActionsCell.tsx
│   │   │   │   │   ├── BatchActionsBar.tsx
│   │   │   │   │   ├── ListPage.tsx
│   │   │   │   │   ├── TopicTable.tsx
│   │   │   │   │   ├── TopicTitleCell.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       ├── ListPage.spec.tsx
│   │   │   │   │       └── TopicTable.spec.tsx
│   │   │   │   ├── New/
│   │   │   │   │   ├── New.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── New.spec.tsx
│   │   │   │   ├── Topic/
│   │   │   │   │   ├── ConsumerGroups/
│   │   │   │   │   │   ├── TopicConsumerGroups.styled.ts
│   │   │   │   │   │   ├── TopicConsumerGroups.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── TopicConsumerGroups.spec.tsx
│   │   │   │   │   ├── Edit/
│   │   │   │   │   │   ├── DangerZone/
│   │   │   │   │   │   │   ├── DangerZone.styled.tsx
│   │   │   │   │   │   │   ├── DangerZone.tsx
│   │   │   │   │   │   │   └── __test__/
│   │   │   │   │   │   │       └── DangerZone.spec.tsx
│   │   │   │   │   │   ├── Edit.tsx
│   │   │   │   │   │   ├── __test__/
│   │   │   │   │   │   │   ├── Edit.spec.tsx
│   │   │   │   │   │   │   └── topicParamsTransformer.spec.ts
│   │   │   │   │   │   └── topicParamsTransformer.ts
│   │   │   │   │   ├── Messages/
│   │   │   │   │   │   ├── Filters/
│   │   │   │   │   │   │   ├── AddEditFilterContainer.tsx
│   │   │   │   │   │   │   ├── AddFilter.tsx
│   │   │   │   │   │   │   ├── EditFilter.tsx
│   │   │   │   │   │   │   ├── FilterModal.tsx
│   │   │   │   │   │   │   ├── Filters.styled.ts
│   │   │   │   │   │   │   ├── Filters.tsx
│   │   │   │   │   │   │   ├── FiltersContainer.ts
│   │   │   │   │   │   │   ├── InfoModal.tsx
│   │   │   │   │   │   │   ├── SavedFilters.tsx
│   │   │   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   │   │   ├── AddEditFilterContainer.spec.tsx
│   │   │   │   │   │   │   │   ├── AddFilter.spec.tsx
│   │   │   │   │   │   │   │   ├── EditFilter.spec.tsx
│   │   │   │   │   │   │   │   ├── FilterModal.spec.tsx
│   │   │   │   │   │   │   │   ├── Filters.spec.tsx
│   │   │   │   │   │   │   │   ├── Filters.styled.spec.tsx
│   │   │   │   │   │   │   │   ├── InfoModal.spec.tsx
│   │   │   │   │   │   │   │   └── SavedFilters.spec.tsx
│   │   │   │   │   │   │   └── utils.ts
│   │   │   │   │   │   ├── Message.tsx
│   │   │   │   │   │   ├── MessageContent/
│   │   │   │   │   │   │   ├── MessageContent.styled.ts
│   │   │   │   │   │   │   ├── MessageContent.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── MessageContent.spec.tsx
│   │   │   │   │   │   ├── Messages.styled.ts
│   │   │   │   │   │   ├── Messages.tsx
│   │   │   │   │   │   ├── MessagesTable.tsx
│   │   │   │   │   │   ├── PreviewModal.styled.ts
│   │   │   │   │   │   ├── PreviewModal.tsx
│   │   │   │   │   │   ├── __test__/
│   │   │   │   │   │   │   ├── FiltersContainer.spec.tsx
│   │   │   │   │   │   │   ├── Message.spec.tsx
│   │   │   │   │   │   │   ├── Messages.spec.tsx
│   │   │   │   │   │   │   ├── MessagesTable.spec.tsx
│   │   │   │   │   │   │   ├── PreviewModal.spec.tsx
│   │   │   │   │   │   │   └── utils.spec.ts
│   │   │   │   │   │   └── getDefaultSerdeName.ts
│   │   │   │   │   ├── Overview/
│   │   │   │   │   │   ├── ActionsCell.tsx
│   │   │   │   │   │   ├── Overview.styled.ts
│   │   │   │   │   │   ├── Overview.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── Overview.spec.tsx
│   │   │   │   │   ├── SendMessage/
│   │   │   │   │   │   ├── SendMessage.styled.tsx
│   │   │   │   │   │   ├── SendMessage.tsx
│   │   │   │   │   │   ├── __test__/
│   │   │   │   │   │   │   ├── SendMessage.spec.tsx
│   │   │   │   │   │   │   └── utils.spec.ts
│   │   │   │   │   │   └── utils.ts
│   │   │   │   │   ├── Settings/
│   │   │   │   │   │   ├── Settings.styled.ts
│   │   │   │   │   │   ├── Settings.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── Settings.spec.tsx
│   │   │   │   │   ├── Statistics/
│   │   │   │   │   │   ├── Indicators/
│   │   │   │   │   │   │   ├── SizeStats.tsx
│   │   │   │   │   │   │   └── Total.tsx
│   │   │   │   │   │   ├── Metrics.tsx
│   │   │   │   │   │   ├── PartitionInfoRow.tsx
│   │   │   │   │   │   ├── PartitionTable.tsx
│   │   │   │   │   │   ├── Statistics.styles.ts
│   │   │   │   │   │   ├── Statistics.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       ├── Metrics.spec.tsx
│   │   │   │   │   │       └── Statistics.spec.tsx
│   │   │   │   │   ├── Topic.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── Topic.spec.tsx
│   │   │   │   ├── Topics.tsx
│   │   │   │   ├── __tests__/
│   │   │   │   │   └── Topics.spec.tsx
│   │   │   │   └── shared/
│   │   │   │       └── Form/
│   │   │   │           ├── CustomParams/
│   │   │   │           │   ├── CustomParamField.tsx
│   │   │   │           │   ├── CustomParams.styled.ts
│   │   │   │           │   ├── CustomParams.tsx
│   │   │   │           │   └── __test__/
│   │   │   │           │       ├── CustomParamField.spec.tsx
│   │   │   │           │       ├── CustomParams.spec.tsx
│   │   │   │           │       └── fixtures.ts
│   │   │   │           ├── TimeToRetain.tsx
│   │   │   │           ├── TimeToRetainBtn.tsx
│   │   │   │           ├── TimeToRetainBtns.tsx
│   │   │   │           ├── TopicForm.styled.ts
│   │   │   │           ├── TopicForm.tsx
│   │   │   │           └── __tests__/
│   │   │   │               ├── TimeToRetainBtn.spec.tsx
│   │   │   │               ├── TimeToRetainBtns.spec.tsx
│   │   │   │               ├── TopicForm.spec.tsx
│   │   │   │               └── TopicForm.styled.spec.tsx
│   │   │   ├── Version/
│   │   │   │   ├── Version.styled.ts
│   │   │   │   ├── Version.tsx
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── Version.spec.tsx
│   │   │   │   │   └── compareVersions.spec.ts
│   │   │   │   └── compareVersions.ts
│   │   │   ├── __tests__/
│   │   │   │   └── App.spec.tsx
│   │   │   ├── common/
│   │   │   │   ├── ActionComponent/
│   │   │   │   │   ├── ActionButton/
│   │   │   │   │   │   ├── ActionButton.tsx
│   │   │   │   │   │   ├── ActionCanButton/
│   │   │   │   │   │   │   ├── ActionCanButton.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── ActionCanButton.spec.tsx
│   │   │   │   │   │   ├── ActionCreateButton/
│   │   │   │   │   │   │   ├── ActionCreateButton.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── ActionCreateButton.spec.tsx
│   │   │   │   │   │   ├── ActionPermissionButton/
│   │   │   │   │   │   │   ├── ActionPermissionButton.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── ActionPermissionButton.spec.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── ActionButton.spec.tsx
│   │   │   │   │   ├── ActionComponent.styled.ts
│   │   │   │   │   ├── ActionComponent.ts
│   │   │   │   │   ├── ActionDropDownItem/
│   │   │   │   │   │   └── ActionDropdownItem.tsx
│   │   │   │   │   ├── ActionNavLink/
│   │   │   │   │   │   ├── ActionNavLink.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── ActionNavLink.spec.tsx
│   │   │   │   │   ├── ActionSelect/
│   │   │   │   │   │   ├── ActionSelect.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── ActionSelect.spec.tsx
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   └── fixtures.ts
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Alert/
│   │   │   │   │   ├── Alert.styled.ts
│   │   │   │   │   ├── Alert.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Alert.spec.tsx
│   │   │   │   ├── Button/
│   │   │   │   │   ├── Button.styled.ts
│   │   │   │   │   ├── Button.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Button.spec.tsx
│   │   │   │   ├── BytesFormatted/
│   │   │   │   │   ├── BytesFormatted.styled.ts
│   │   │   │   │   ├── BytesFormatted.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── BytesFormatted.spec.tsx
│   │   │   │   ├── Checkbox/
│   │   │   │   │   └── Checkbox.tsx
│   │   │   │   ├── ConfirmationModal/
│   │   │   │   │   ├── ConfirmationModal.styled.tsx
│   │   │   │   │   └── ConfirmationModal.tsx
│   │   │   │   ├── ControlPanel/
│   │   │   │   │   └── ControlPanel.styled.ts
│   │   │   │   ├── DiffViewer/
│   │   │   │   │   ├── DiffViewer.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── DiffViewer.spec.tsx
│   │   │   │   ├── Dropdown/
│   │   │   │   │   ├── Dropdown.styled.ts
│   │   │   │   │   ├── Dropdown.tsx
│   │   │   │   │   ├── DropdownItem.tsx
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Editor/
│   │   │   │   │   └── Editor.tsx
│   │   │   │   ├── EditorViewer/
│   │   │   │   │   ├── EditorViewer.styled.ts
│   │   │   │   │   ├── EditorViewer.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── EditorViewer.spec.tsx
│   │   │   │   ├── Ellipsis/
│   │   │   │   │   ├── Ellipsis.styled.ts
│   │   │   │   │   └── Ellipsis.tsx
│   │   │   │   ├── Form/
│   │   │   │   │   └── Form.styled.ts
│   │   │   │   ├── Icons/
│   │   │   │   │   ├── ArrowDownIcon.tsx
│   │   │   │   │   ├── AutoIcon.tsx
│   │   │   │   │   ├── CancelIcon.tsx
│   │   │   │   │   ├── CheckMarkRoundIcon.tsx
│   │   │   │   │   ├── CheckmarkIcon.tsx
│   │   │   │   │   ├── ChevronDownIcon.tsx
│   │   │   │   │   ├── ClockIcon.tsx
│   │   │   │   │   ├── CloseCircleIcon.tsx
│   │   │   │   │   ├── CloseIcon.tsx
│   │   │   │   │   ├── DeleteIcon.tsx
│   │   │   │   │   ├── DiscordIcon.tsx
│   │   │   │   │   ├── DropdownArrowIcon.tsx
│   │   │   │   │   ├── EditIcon.tsx
│   │   │   │   │   ├── FileIcon.tsx
│   │   │   │   │   ├── GitIcon.tsx
│   │   │   │   │   ├── IconButtonWrapper.ts
│   │   │   │   │   ├── InfoIcon.tsx
│   │   │   │   │   ├── MessageToggleIcon.styled.ts
│   │   │   │   │   ├── MessageToggleIcon.tsx
│   │   │   │   │   ├── MoonIcon.tsx
│   │   │   │   │   ├── PlusIcon.tsx
│   │   │   │   │   ├── QuestionIcon.tsx
│   │   │   │   │   ├── SavedIcon.tsx
│   │   │   │   │   ├── SearchIcon.tsx
│   │   │   │   │   ├── SpinnerIcon.tsx
│   │   │   │   │   ├── StarIcon.tsx
│   │   │   │   │   ├── SunIcon.tsx
│   │   │   │   │   ├── UserIcon.tsx
│   │   │   │   │   ├── VerticalElipsisIcon.tsx
│   │   │   │   │   ├── WarningIcon.tsx
│   │   │   │   │   └── WarningRedIcon.tsx
│   │   │   │   ├── IndeterminateCheckbox/
│   │   │   │   │   └── IndeterminateCheckbox.tsx
│   │   │   │   ├── Input/
│   │   │   │   │   ├── Input.styled.ts
│   │   │   │   │   ├── Input.tsx
│   │   │   │   │   ├── InputLabel.styled.ts
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Input.spec.tsx
│   │   │   │   ├── Logo/
│   │   │   │   │   └── Logo.tsx
│   │   │   │   ├── Metrics/
│   │   │   │   │   ├── Indicator.tsx
│   │   │   │   │   ├── Metrics.styled.tsx
│   │   │   │   │   ├── Section.tsx
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── Indicator.spec.tsx
│   │   │   │   │   │   └── Section.spec.tsx
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── MultiSelect/
│   │   │   │   │   └── MultiSelect.styled.ts
│   │   │   │   ├── Navigation/
│   │   │   │   │   └── Navbar.styled.ts
│   │   │   │   ├── NewTable/
│   │   │   │   │   ├── ColoredCell.tsx
│   │   │   │   │   ├── ExpanderCell.tsx
│   │   │   │   │   ├── LinkCell.tsx
│   │   │   │   │   ├── SelectRowCell.tsx
│   │   │   │   │   ├── SelectRowHeader.tsx
│   │   │   │   │   ├── SizeCell.tsx
│   │   │   │   │   ├── Table.styled.ts
│   │   │   │   │   ├── Table.tsx
│   │   │   │   │   ├── TagCell.tsx
│   │   │   │   │   ├── TimestampCell.tsx
│   │   │   │   │   ├── __test__/
│   │   │   │   │   │   └── Table.spec.tsx
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── __test__/
│   │   │   │   │       │   └── updateSortingState.spec.ts
│   │   │   │   │       ├── updatePaginationState.ts
│   │   │   │   │       └── updateSortingState.ts
│   │   │   │   ├── PageHeading/
│   │   │   │   │   ├── PageHeading.styled.ts
│   │   │   │   │   └── PageHeading.tsx
│   │   │   │   ├── PageLoader/
│   │   │   │   │   ├── PageLoader.styled.ts
│   │   │   │   │   ├── PageLoader.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── PageLoader.spec.tsx
│   │   │   │   ├── ProgressBar/
│   │   │   │   │   ├── ProgressBar.styled.ts
│   │   │   │   │   ├── ProgressBar.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── ProgressBar.spec.tsx
│   │   │   │   ├── PropertiesList/
│   │   │   │   │   └── PropertiesList.styled.tsx
│   │   │   │   ├── SQLEditor/
│   │   │   │   │   ├── SQLEditor.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── SQLEditor.spec.tsx
│   │   │   │   ├── Search/
│   │   │   │   │   ├── Search.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Search.spec.tsx
│   │   │   │   ├── Select/
│   │   │   │   │   ├── ControlledSelect.tsx
│   │   │   │   │   ├── LiveIcon.styled.tsx
│   │   │   │   │   ├── Select.styled.ts
│   │   │   │   │   ├── Select.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Select.spec.tsx
│   │   │   │   ├── SlidingSidebar/
│   │   │   │   │   ├── SlidingSidebar.styled.ts
│   │   │   │   │   ├── SlidingSidebar.tsx
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Spinner/
│   │   │   │   │   ├── Spinner.styled.ts
│   │   │   │   │   ├── Spinner.tsx
│   │   │   │   │   └── types.ts
│   │   │   │   ├── SuspenseQueryComponent/
│   │   │   │   │   ├── SuspenseQueryComponent.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── SuspenseQueryComponent.spec.tsx
│   │   │   │   ├── Switch/
│   │   │   │   │   ├── Switch.styled.ts
│   │   │   │   │   └── Switch.tsx
│   │   │   │   ├── Tag/
│   │   │   │   │   ├── Tag.styled.tsx
│   │   │   │   │   └── getTagColor.ts
│   │   │   │   ├── Textbox/
│   │   │   │   │   └── Textarea.styled.ts
│   │   │   │   ├── Tooltip/
│   │   │   │   │   ├── Tooltip.styled.ts
│   │   │   │   │   ├── Tooltip.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Tooltip.spec.tsx
│   │   │   │   ├── heading/
│   │   │   │   │   └── Heading.styled.tsx
│   │   │   │   └── table/
│   │   │   │       ├── Table/
│   │   │   │       │   ├── Table.styled.ts
│   │   │   │       │   └── TableKeyLink.styled.ts
│   │   │   │       ├── TableHeaderCell/
│   │   │   │       │   ├── TableHeaderCell.styled.ts
│   │   │   │       │   ├── TableHeaderCell.tsx
│   │   │   │       │   └── __test__/
│   │   │   │       │       └── TableHeaderCell.styled.spec.tsx
│   │   │   │       ├── TableTitle/
│   │   │   │       │   └── TableTitle.styled.tsx
│   │   │   │       └── __tests__/
│   │   │   │           └── TableHeaderCell.spec.tsx
│   │   │   ├── contexts/
│   │   │   │   ├── ClusterContext.ts
│   │   │   │   ├── ConfirmContext.tsx
│   │   │   │   ├── GlobalSettingsContext.tsx
│   │   │   │   ├── ThemeModeContext.tsx
│   │   │   │   ├── TopicMessagesContext.ts
│   │   │   │   └── UserInfoRolesAccessContext.tsx
│   │   │   └── globalCss.ts
│   │   ├── index.tsx
│   │   ├── lib/
│   │   │   ├── __test__/
│   │   │   │   ├── dateTimeHelpers.spec.ts
│   │   │   │   ├── paths.spec.ts
│   │   │   │   ├── permission.spec.ts
│   │   │   │   └── yupExtended.spec.ts
│   │   │   ├── api.ts
│   │   │   ├── constants.ts
│   │   │   ├── dateTimeHelpers.ts
│   │   │   ├── errorHandling.tsx
│   │   │   ├── fixtures/
│   │   │   │   ├── acls.ts
│   │   │   │   ├── brokers.ts
│   │   │   │   ├── clusters.ts
│   │   │   │   ├── consumerGroups.ts
│   │   │   │   ├── kafkaConnect.ts
│   │   │   │   ├── latestVersion.ts
│   │   │   │   ├── topicMessages.ts
│   │   │   │   └── topics.ts
│   │   │   ├── hooks/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── dateTimeHelpers.spec.ts
│   │   │   │   │   ├── fixtures.ts
│   │   │   │   │   ├── useBoolean.spec.ts
│   │   │   │   │   ├── useCreatePermission.spec.tsx
│   │   │   │   │   ├── useDataSaver.spec.tsx
│   │   │   │   │   └── usePermission.spec.tsx
│   │   │   │   ├── api/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── brokers.spec.ts
│   │   │   │   │   │   ├── clusters.spec.ts
│   │   │   │   │   │   ├── kafkaConnect.spec.ts
│   │   │   │   │   │   ├── latestVersion.spec.ts
│   │   │   │   │   │   ├── topicMessages.spec.ts
│   │   │   │   │   │   └── topics.spec.ts
│   │   │   │   │   ├── acl.ts
│   │   │   │   │   ├── appConfig.ts
│   │   │   │   │   ├── brokers.ts
│   │   │   │   │   ├── clusters.ts
│   │   │   │   │   ├── consumers.ts
│   │   │   │   │   ├── kafkaConnect.ts
│   │   │   │   │   ├── ksqlDb.tsx
│   │   │   │   │   ├── latestVersion.ts
│   │   │   │   │   ├── roles.ts
│   │   │   │   │   ├── topicMessages.tsx
│   │   │   │   │   └── topics.ts
│   │   │   │   ├── redux.ts
│   │   │   │   ├── useActionTooltip.ts
│   │   │   │   ├── useAppParams.tsx
│   │   │   │   ├── useBoolean.ts
│   │   │   │   ├── useClickOutside.ts
│   │   │   │   ├── useConfirm.ts
│   │   │   │   ├── useCreatePermisson.ts
│   │   │   │   ├── useDataSaver.ts
│   │   │   │   ├── useLocalStorage.ts
│   │   │   │   ├── useMessageFiltersStore.ts
│   │   │   │   ├── usePermission.ts
│   │   │   │   └── useUserInfo.ts
│   │   │   ├── paths.ts
│   │   │   ├── permissions.ts
│   │   │   ├── testHelpers.tsx
│   │   │   └── yupExtended.ts
│   │   ├── react-app-env.d.ts
│   │   ├── redux/
│   │   │   ├── interfaces/
│   │   │   │   ├── cluster.ts
│   │   │   │   ├── consumerGroup.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── loader.ts
│   │   │   │   ├── schema.ts
│   │   │   │   └── topic.ts
│   │   │   ├── reducers/
│   │   │   │   ├── index.ts
│   │   │   │   ├── loader/
│   │   │   │   │   ├── loaderSlice.ts
│   │   │   │   │   └── selectors.ts
│   │   │   │   ├── schemas/
│   │   │   │   │   ├── __test__/
│   │   │   │   │   │   └── fixtures.ts
│   │   │   │   │   └── schemasSlice.ts
│   │   │   │   └── topicMessages/
│   │   │   │       ├── __test__/
│   │   │   │       │   ├── fixtures.ts
│   │   │   │       │   ├── reducer.spec.ts
│   │   │   │       │   └── selectors.spec.ts
│   │   │   │       ├── selectors.ts
│   │   │   │       └── topicMessagesSlice.ts
│   │   │   └── store/
│   │   │       └── index.ts
│   │   ├── setupTests.ts
│   │   ├── styled.d.ts
│   │   ├── theme/
│   │   │   ├── index.scss
│   │   │   ├── minireset.css
│   │   │   └── theme.ts
│   │   └── widgets/
│   │       └── ClusterConfigForm/
│   │           ├── ClusterConfigForm.styled.ts
│   │           ├── Sections/
│   │           │   ├── Authentication/
│   │           │   │   ├── Authentication.tsx
│   │           │   │   └── AuthenticationMethods.tsx
│   │           │   ├── CustomAuthentication.tsx
│   │           │   ├── KSQL.tsx
│   │           │   ├── KafkaCluster.tsx
│   │           │   ├── KafkaConnect.tsx
│   │           │   ├── Metrics.tsx
│   │           │   └── SchemaRegistry.tsx
│   │           ├── common/
│   │           │   ├── Credentials.tsx
│   │           │   ├── Fileupload.tsx
│   │           │   ├── SSLForm.tsx
│   │           │   └── SectionHeader.tsx
│   │           ├── index.tsx
│   │           ├── schema.ts
│   │           ├── types.ts
│   │           └── utils/
│   │               ├── convertFormKeyToPropsKey.ts
│   │               ├── convertPropsKeyToFormKey.ts
│   │               ├── getInitialFormData.ts
│   │               ├── getIsValidConfig.ts
│   │               ├── getJaasConfig.ts
│   │               └── transformFormDataToPayload.ts
│   ├── tsconfig.dev.json
│   ├── tsconfig.json
│   └── vite.config.ts
├── kafka-ui-serde-api/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── provectus/
│                       └── kafka/
│                           └── ui/
│                               └── serde/
│                                   └── api/
│                                       ├── DeserializeResult.java
│                                       ├── PropertyResolver.java
│                                       ├── RecordHeader.java
│                                       ├── RecordHeaders.java
│                                       ├── SchemaDescription.java
│                                       └── Serde.java
├── mvnw
├── mvnw.cmd
├── pom.xml
└── settings.xml

================================================
FILE CONTENTS
================================================

================================================
FILE: .devcontainer/devcontainer.json
================================================
{
	"name": "Java",

	"image": "mcr.microsoft.com/devcontainers/java:0-17",

	"features": {
		"ghcr.io/devcontainers/features/java:1": {
			"version": "none",
			"installMaven": "true",
			"installGradle": "false"
		},
		"ghcr.io/devcontainers/features/docker-in-docker:2": {}
	},

	// Use 'forwardPorts' to make a list of ports inside the container available locally.
	// "forwardPorts": [],

	// Use 'postCreateCommand' to run commands after the container is created.
	// "postCreateCommand": "java -version",

	"customizations": {
		"vscode": {
			"extensions" : [
				"vscjava.vscode-java-pack",
				"vscjava.vscode-maven",
				"vscjava.vscode-java-debug",
				"EditorConfig.EditorConfig",
				"ms-azuretools.vscode-docker",
				"antfu.vite",
				"ms-kubernetes-tools.vscode-kubernetes-tools",
                "github.vscode-pull-request-github"
			]
		}
	}

}


================================================
FILE: .editorconfig
================================================
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = true
ij_smart_tabs = false
ij_visual_guides = none
ij_wrap_on_typing = false
trim_trailing_whitespace = true

[*.java]
indent_size = 2
ij_continuation_indent_size = 4
ij_java_align_consecutive_assignments = false
ij_java_align_consecutive_variable_declarations = false
ij_java_align_group_field_declarations = false
ij_java_align_multiline_annotation_parameters = false
ij_java_align_multiline_array_initializer_expression = false
ij_java_align_multiline_assignment = false
ij_java_align_multiline_binary_operation = false
ij_java_align_multiline_chained_methods = false
ij_java_align_multiline_extends_list = false
ij_java_align_multiline_for = true
ij_java_align_multiline_method_parentheses = false
ij_java_align_multiline_parameters = true
ij_java_align_multiline_parameters_in_calls = false
ij_java_align_multiline_parenthesized_expression = false
ij_java_align_multiline_records = true
ij_java_align_multiline_resources = true
ij_java_align_multiline_ternary_operation = false
ij_java_align_multiline_text_blocks = false
ij_java_align_multiline_throws_list = false
ij_java_align_subsequent_simple_methods = false
ij_java_align_throws_keyword = false
ij_java_align_types_in_multi_catch = true
ij_java_annotation_parameter_wrap = off
ij_java_array_initializer_new_line_after_left_brace = false
ij_java_array_initializer_right_brace_on_new_line = false
ij_java_array_initializer_wrap = normal
ij_java_assert_statement_colon_on_next_line = false
ij_java_assert_statement_wrap = normal
ij_java_assignment_wrap = normal
ij_java_binary_operation_sign_on_next_line = false
ij_java_binary_operation_wrap = normal
ij_java_blank_lines_after_anonymous_class_header = 0
ij_java_blank_lines_after_class_header = 0
ij_java_blank_lines_after_imports = 1
ij_java_blank_lines_after_package = 1
ij_java_blank_lines_around_class = 1
ij_java_blank_lines_around_field = 0
ij_java_blank_lines_around_field_in_interface = 0
ij_java_blank_lines_around_initializer = 1
ij_java_blank_lines_around_method = 1
ij_java_blank_lines_around_method_in_interface = 1
ij_java_blank_lines_before_class_end = 0
ij_java_blank_lines_before_imports = 1
ij_java_blank_lines_before_method_body = 0
ij_java_blank_lines_before_package = 1
ij_java_block_brace_style = end_of_line
ij_java_block_comment_add_space = false
ij_java_block_comment_at_first_column = true
ij_java_builder_methods = none
ij_java_call_parameters_new_line_after_left_paren = false
ij_java_call_parameters_right_paren_on_new_line = false
ij_java_call_parameters_wrap = normal
ij_java_case_statement_on_separate_line = true
ij_java_catch_on_new_line = false
ij_java_class_annotation_wrap = split_into_lines
ij_java_class_brace_style = end_of_line
ij_java_class_count_to_use_import_on_demand = 999
ij_java_class_names_in_javadoc = 1
ij_java_do_not_indent_top_level_class_members = false
ij_java_do_not_wrap_after_single_annotation = false
ij_java_do_not_wrap_after_single_annotation_in_parameter = false
ij_java_do_while_brace_force = always
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = true
ij_java_doc_align_exception_comments = true
ij_java_doc_align_param_comments = true
ij_java_doc_do_not_wrap_if_one_line = false
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = false
ij_java_doc_keep_empty_lines = true
ij_java_doc_keep_empty_parameter_tag = true
ij_java_doc_keep_empty_return_tag = true
ij_java_doc_keep_empty_throws_tag = true
ij_java_doc_keep_invalid_tags = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_preserve_line_breaks = false
ij_java_doc_use_throws_not_exception_tag = true
ij_java_else_on_new_line = false
ij_java_entity_dd_suffix = EJB
ij_java_entity_eb_suffix = Bean
ij_java_entity_hi_suffix = Home
ij_java_entity_lhi_prefix = Local
ij_java_entity_lhi_suffix = Home
ij_java_entity_li_prefix = Local
ij_java_entity_pk_class = java.lang.String
ij_java_entity_vo_suffix = VO
ij_java_enum_constants_wrap = normal
ij_java_extends_keyword_wrap = normal
ij_java_extends_list_wrap = normal
ij_java_field_annotation_wrap = split_into_lines
ij_java_finally_on_new_line = false
ij_java_for_brace_force = always
ij_java_for_statement_new_line_after_left_paren = false
ij_java_for_statement_right_paren_on_new_line = false
ij_java_for_statement_wrap = normal
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false
ij_java_if_brace_force = always
ij_java_imports_layout = $*,|,*
ij_java_indent_case_from_switch = true
ij_java_insert_inner_class_imports = false
ij_java_insert_override_annotation = true
ij_java_keep_blank_lines_before_right_brace = 2
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
ij_java_keep_blank_lines_in_code = 2
ij_java_keep_blank_lines_in_declarations = 2
ij_java_keep_builder_methods_indents = false
ij_java_keep_control_statement_in_one_line = true
ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = false
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_classes_in_one_line = false
ij_java_keep_simple_lambdas_in_one_line = false
ij_java_keep_simple_methods_in_one_line = false
ij_java_label_indent_absolute = false
ij_java_label_indent_size = 0
ij_java_lambda_brace_style = end_of_line
ij_java_layout_static_imports_separately = true
ij_java_line_comment_add_space = false
ij_java_line_comment_add_space_on_reformat = false
ij_java_line_comment_at_first_column = true
ij_java_message_dd_suffix = EJB
ij_java_message_eb_suffix = Bean
ij_java_method_annotation_wrap = split_into_lines
ij_java_method_brace_style = end_of_line
ij_java_method_call_chain_wrap = normal
ij_java_method_parameters_new_line_after_left_paren = false
ij_java_method_parameters_right_paren_on_new_line = false
ij_java_method_parameters_wrap = normal
ij_java_modifier_list_wrap = false
ij_java_multi_catch_types_wrap = normal
ij_java_names_count_to_use_import_on_demand = 999
ij_java_new_line_after_lparen_in_annotation = false
ij_java_new_line_after_lparen_in_record_header = false
ij_java_parameter_annotation_wrap = normal
ij_java_parentheses_expression_new_line_after_left_paren = false
ij_java_parentheses_expression_right_paren_on_new_line = false
ij_java_place_assignment_sign_on_next_line = false
ij_java_prefer_longer_names = true
ij_java_prefer_parameters_wrap = false
ij_java_record_components_wrap = normal
ij_java_repeat_synchronized = true
ij_java_replace_instanceof_and_cast = false
ij_java_replace_null_check = true
ij_java_replace_sum_lambda_with_method_ref = true
ij_java_resource_list_new_line_after_left_paren = false
ij_java_resource_list_right_paren_on_new_line = false
ij_java_resource_list_wrap = normal
ij_java_rparen_on_new_line_in_annotation = false
ij_java_rparen_on_new_line_in_record_header = false
ij_java_session_dd_suffix = EJB
ij_java_session_eb_suffix = Bean
ij_java_session_hi_suffix = Home
ij_java_session_lhi_prefix = Local
ij_java_session_lhi_suffix = Home
ij_java_session_li_prefix = Local
ij_java_session_si_suffix = Service
ij_java_space_after_closing_angle_bracket_in_type_argument = false
ij_java_space_after_colon = true
ij_java_space_after_comma = true
ij_java_space_after_comma_in_type_arguments = true
ij_java_space_after_for_semicolon = true
ij_java_space_after_quest = true
ij_java_space_after_type_cast = true
ij_java_space_before_annotation_array_initializer_left_brace = false
ij_java_space_before_annotation_parameter_list = false
ij_java_space_before_array_initializer_left_brace = true
ij_java_space_before_catch_keyword = true
ij_java_space_before_catch_left_brace = true
ij_java_space_before_catch_parentheses = true
ij_java_space_before_class_left_brace = true
ij_java_space_before_colon = true
ij_java_space_before_colon_in_foreach = true
ij_java_space_before_comma = false
ij_java_space_before_do_left_brace = true
ij_java_space_before_else_keyword = true
ij_java_space_before_else_left_brace = true
ij_java_space_before_finally_keyword = true
ij_java_space_before_finally_left_brace = true
ij_java_space_before_for_left_brace = true
ij_java_space_before_for_parentheses = true
ij_java_space_before_for_semicolon = false
ij_java_space_before_if_left_brace = true
ij_java_space_before_if_parentheses = true
ij_java_space_before_method_call_parentheses = false
ij_java_space_before_method_left_brace = true
ij_java_space_before_method_parentheses = false
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
ij_java_space_before_quest = true
ij_java_space_before_switch_left_brace = true
ij_java_space_before_switch_parentheses = true
ij_java_space_before_synchronized_left_brace = true
ij_java_space_before_synchronized_parentheses = true
ij_java_space_before_try_left_brace = true
ij_java_space_before_try_parentheses = true
ij_java_space_before_type_parameter_list = false
ij_java_space_before_while_keyword = true
ij_java_space_before_while_left_brace = true
ij_java_space_before_while_parentheses = true
ij_java_space_inside_one_line_enum_braces = false
ij_java_space_within_empty_array_initializer_braces = false
ij_java_space_within_empty_method_call_parentheses = false
ij_java_space_within_empty_method_parentheses = false
ij_java_spaces_around_additive_operators = true
ij_java_spaces_around_annotation_eq = true
ij_java_spaces_around_assignment_operators = true
ij_java_spaces_around_bitwise_operators = true
ij_java_spaces_around_equality_operators = true
ij_java_spaces_around_lambda_arrow = true
ij_java_spaces_around_logical_operators = true
ij_java_spaces_around_method_ref_dbl_colon = false
ij_java_spaces_around_multiplicative_operators = true
ij_java_spaces_around_relational_operators = true
ij_java_spaces_around_shift_operators = true
ij_java_spaces_around_type_bounds_in_type_parameters = true
ij_java_spaces_around_unary_operator = false
ij_java_spaces_within_angle_brackets = false
ij_java_spaces_within_annotation_parentheses = false
ij_java_spaces_within_array_initializer_braces = false
ij_java_spaces_within_braces = false
ij_java_spaces_within_brackets = false
ij_java_spaces_within_cast_parentheses = false
ij_java_spaces_within_catch_parentheses = false
ij_java_spaces_within_for_parentheses = false
ij_java_spaces_within_if_parentheses = false
ij_java_spaces_within_method_call_parentheses = false
ij_java_spaces_within_method_parentheses = false
ij_java_spaces_within_parentheses = false
ij_java_spaces_within_record_header = false
ij_java_spaces_within_switch_parentheses = false
ij_java_spaces_within_synchronized_parentheses = false
ij_java_spaces_within_try_parentheses = false
ij_java_spaces_within_while_parentheses = false
ij_java_special_else_if_treatment = true
ij_java_subclass_name_suffix = Impl
ij_java_ternary_operation_signs_on_next_line = false
ij_java_ternary_operation_wrap = normal
ij_java_test_name_suffix = Test
ij_java_throws_keyword_wrap = normal
ij_java_throws_list_wrap = normal
ij_java_use_external_annotations = false
ij_java_use_fq_class_names = false
ij_java_use_relative_indents = false
ij_java_use_single_class_imports = true
ij_java_variable_annotation_wrap = normal
ij_java_visibility = public
ij_java_while_brace_force = always
ij_java_while_on_new_line = false
ij_java_wrap_comments = false
ij_java_wrap_first_method_in_call_chain = false
ij_java_wrap_long_lines = false

[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

[*.yaml]
indent_size = 2
[*.yml]
indent_size = 2



================================================
FILE: .github/CODEOWNERS
================================================
*                           @Haarolean


# BACKEND
/pom.xml                    @provectus/kafka-backend

/kafka-ui-contract/         @provectus/kafka-backend

/kafka-ui-api/              @provectus/kafka-backend

# FRONTEND
/kafka-ui-react-app/        @provectus/kafka-frontend

# TESTS
/kafka-ui-e2e-checks/       @provectus/kafka-qa

# INFRA
/.github/workflows/         @provectus/kafka-devops


================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: "\U0001F41E  Bug report"
description: File a bug report
labels: ["status/triage", "type/bug"]
assignees: []

body:
  - type: markdown
    attributes:
      value: |
        Hi, thanks for raising the issue(-s), all contributions really matter!
        Please, note that we'll close the issue without further explanation if you don't follow
        this template and don't provide the information requested within this template.

  - type: checkboxes
    id: terms
    attributes:
      label: Issue submitter TODO list
      description: By you checking these checkboxes we can be sure you've done the essential things.
      options:
        - label: I've looked up my issue in [FAQ](https://docs.kafka-ui.provectus.io/faq/common-problems)
          required: true
        - label: I've searched for an already existing issues [here](https://github.com/provectus/kafka-ui/issues)
          required: true
        - label: I've tried running `master`-labeled docker image and the issue still persists there
          required: true
        - label: I'm running a supported version of the application which is listed [here](https://github.com/provectus/kafka-ui/blob/master/SECURITY.md)
          required: true

  - type: textarea
    attributes:
      label: Describe the bug (actual behavior)
      description: A clear and concise description of what the bug is. Use a list, if there is more than one problem
    validations:
      required: true

  - type: textarea
    attributes:
      label: Expected behavior
      description: A clear and concise description of what you expected to happen
    validations:
      required: false

  - type: textarea
    attributes:
      label: Your installation details
      description: |
        How do you run the app? Please provide as much info as possible:
        1. App version (commit hash in the top left corner of the UI)
        2. Helm chart version, if you use one
        3. Your application config. Please remove the sensitive info like passwords or API keys.
        4. Any IAAC configs
    validations:
      required: true

  - type: textarea
    attributes:
      label: Steps to reproduce
      description: |
        Please write down the order of the actions required to reproduce the issue.
        For the advanced setups/complicated issue, we might need you to provide
        a minimal [reproducible example](https://stackoverflow.com/help/minimal-reproducible-example).
    validations:
      required: true

  - type: textarea
    attributes:
      label: Screenshots
      description: |
        If applicable, add screenshots to help explain your problem
    validations:
      required: false

  - type: textarea
    attributes:
      label: Logs
      description: |
        If applicable, *upload* screenshots to help explain your problem
    validations:
      required: false

  - type: textarea
    attributes:
      label: Additional context
      description: |
        Add any other context about the problem here. E.G.:
        1. Are there any alternative scenarios (different data/methods/configuration/setup) you have tried?
          Were they successful or the same issue occurred? Please provide steps as well.
        2. Related issues (if there are any).
        3. Logs (if available)
        4. Is there any serious impact or behaviour on the end-user because of this issue, that can be overlooked?
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Report helm issue
    url: https://github.com/provectus/kafka-ui-charts
    about: Our helm charts are located in another repo. Please raise issues/PRs regarding charts in that repo.
  - name: Official documentation
    url: https://docs.kafka-ui.provectus.io/
    about: Before reaching out for support, please refer to our documentation. Read "FAQ" and "Common problems", also try using search there.
  - name: Community Discord
    url: https://discord.gg/4DWzD7pGE5
    about: Chat with other users, get some support or ask questions.
  - name: GitHub Discussions
    url: https://github.com/provectus/kafka-ui/discussions
    about: An alternative place to ask questions or to get some support.


================================================
FILE: .github/ISSUE_TEMPLATE/feature.yml
================================================
name: "\U0001F680 Feature request"
description: Propose a new feature
labels: ["status/triage", "type/feature"]
assignees: []

body:
  - type: markdown
    attributes:
      value: |
        Hi, thanks for raising the issue(-s), all contributions really matter!
        Please, note that we'll close the issue without further explanation if you don't follow
        this template and don't provide the information requested within this template.

  - type: checkboxes
    id: terms
    attributes:
      label: Issue submitter TODO list
      description: By you checking these checkboxes we can be sure you've done the essential things.
      options:
        - label: I've searched for an already existing issues [here](https://github.com/provectus/kafka-ui/issues)
          required: true
        - label: I'm running a supported version of the application which is listed [here](https://github.com/provectus/kafka-ui/blob/master/SECURITY.md) and the feature is not present there
          required: true

  - type: textarea
    attributes:
      label: Is your proposal related to a problem?
      description: |
        Provide a clear and concise description of what the problem is.
        For example, "I'm always frustrated when..."
    validations:
      required: false

  - type: textarea
    attributes:
      label: Describe the feature you're interested in
      description: |
        Provide a clear and concise description of what you want to happen.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Describe alternatives you've considered
      description: |
        Let us know about other solutions you've tried or researched.
    validations:
      required: false

  - type: input
    attributes:
      label: Version you're running
      description: |
        Please provide the app version you're currently running:
        1. App version (commit hash in the top left corner of the UI)
    validations:
      required: true

  - type: textarea
    attributes:
      label: Additional context
      description: |
        Is there anything else you can add about the proposal?
        You might want to link to related issues here, if you haven't already.
    validations:
      required: false


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- ignore-task-list-start -->
- [ ] **Breaking change?** (if so, please describe the impact and migration path for existing application instances)


<!-- ignore-task-list-end -->
**What changes did you make?** (Give an overview)

**Is there anything you'd like reviewers to focus on?**


**How Has This Been Tested?** (put an "x" (case-sensitive!) next to an item)
<!-- ignore-task-list-start -->
- [ ] No need to
- [ ] Manually (please, describe, if necessary)
- [ ] Unit checks
- [ ] Integration checks
- [ ] Covered by existing automation
<!-- ignore-task-list-end -->

**Checklist** (put an "x" (case-sensitive!) next to all the items, otherwise the build will fail)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation (e.g. **ENVIRONMENT VARIABLES**)
- [ ] My changes generate no new warnings (e.g. Sonar is happy)
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

Check out [Contributing](https://github.com/provectus/kafka-ui/blob/master/CONTRIBUTING.md) and [Code of Conduct](https://github.com/provectus/kafka-ui/blob/master/CODE-OF-CONDUCT.md)

**A picture of a cute animal (not mandatory but encouraged)**


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: maven
  directory: "/"
  schedule:
    interval: daily
    time: "10:00"
    timezone: Europe/Moscow
  reviewers:
    - "Haarolean"
  labels:
    - "scope/backend"
    - "type/dependencies"
- package-ecosystem: npm
  directory: "/kafka-ui-react-app"
  schedule:
    interval: weekly
    time: "10:00"
    timezone: Europe/Moscow
  open-pull-requests-limit: 10
  versioning-strategy: increase-if-necessary
  labels:
    - "scope/frontend"
    - "type/dependencies"
  ignore:
  - dependency-name: react-hook-form
    versions:
    - 6.15.5
    - 7.0.0
    - 7.0.6
  - dependency-name: "@hookform/error-message"
    versions:
    - 1.1.0
  - dependency-name: use-debounce
    versions:
    - 6.0.0
    - 6.0.1
  - dependency-name: "@rooks/use-outside-click-ref"
    versions:
    - 4.10.1
  - dependency-name: react-multi-select-component
    versions:
    - 3.1.6
    - 4.0.0
  - dependency-name: husky
    versions:
    - 5.1.3
    - 5.2.0
    - 6.0.0
  - dependency-name: "@types/node-fetch"
    versions:
    - 2.5.9
  - dependency-name: "@testing-library/jest-dom"
    versions:
    - 5.11.10
  - dependency-name: "@typescript-eslint/eslint-plugin"
    versions:
    - 4.20.0
  - dependency-name: "@openapitools/openapi-generator-cli"
    versions:
    - 2.2.5
  - dependency-name: "@typescript-eslint/parser"
    versions:
    - 4.20.0
  - dependency-name: react-datepicker
    versions:
    - 3.7.0
  - dependency-name: eslint
    versions:
    - 7.23.0
  - dependency-name: "@testing-library/user-event"
    versions:
    - 13.0.6
  - dependency-name: immer
    versions:
    - 9.0.1
  - dependency-name: react-scripts
    versions:
    - 4.0.3
  - dependency-name: eslint-config-prettier
    versions:
    - 8.1.0
  - dependency-name: "@testing-library/react"
    versions:
    - 11.2.5
  - dependency-name: lodash
    versions:
    - 4.17.21
  - dependency-name: react-json-tree
    versions:
    - 0.15.0
- package-ecosystem: "github-actions"
  directory: "/"
  schedule:
    interval: weekly
    time: "10:00"
    timezone: Europe/Moscow
  reviewers:
    - "Haarolean"
  labels:
    - "scope/infrastructure"
    - "type/dependencies"


================================================
FILE: .github/release_drafter.yaml
================================================
name-template: '$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
template: |
  ## Changes
  $CHANGES
  ## Contributors
  $CONTRIBUTORS

exclude-labels:
  - 'scope/infrastructure'
  - 'scope/QA'
  - 'scope/AQA'
  - 'type/dependencies'
  - 'type/chore'
  - 'type/documentation'
  - 'type/refactoring'

categories:
  - title: '🚩 Breaking Changes'
    labels:
      - 'impact/changelog'

  - title: '⚙️Features'
    labels:
      - 'type/feature'

  - title: '🪛Enhancements'
    labels:
      - 'type/enhancement'

  - title: '🔨Bug Fixes'
    labels:
      - 'type/bug'

  - title: 'Security'
    labels:
      - 'type/security'

  - title: '⎈ Helm/K8S Changes'
    labels:
      - 'scope/k8s'

change-template: '- $TITLE @$AUTHOR (#$NUMBER)'

version-resolver:
  major:
    labels:
      - 'major'
  minor:
    labels:
      - 'minor'
  patch:
    labels:
      - 'patch'
  default: patch


================================================
FILE: .github/workflows/aws_publisher.yaml
================================================
name: "Infra: Release: AWS Marketplace Publisher"
on:
  workflow_dispatch:
    inputs:
      KafkaUIInfraBranch:
        description: 'Branch name of Kafka-UI-Infra repo, build commands will be executed from this branch'
        required: true
        default: 'master'
      KafkaUIReleaseVersion:
        description: 'Version of KafkaUI'
        required: true
        default: '0.3.2'
      PublishOnMarketplace:
        description: 'If set to true, the request to update AWS Server product version will be raised'
        required: true
        default: false
        type: boolean

jobs:
  build-ami:
    name: Build AMI
    runs-on: ubuntu-latest
    steps:
      - name: Clone infra repo
        run: |
          echo "Cloning repo..."
          git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch ${{ github.event.inputs.KafkaUIInfraBranch }}
          echo "Cd to packer DIR..."
          cd kafka-ui-infra/ami
          echo "WORK_DIR=$(pwd)" >> $GITHUB_ENV
          echo "Packer will be triggered in this dir $WORK_DIR"

      - name: Configure AWS credentials for Kafka-UI account
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_AMI_PUBLISH_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_AMI_PUBLISH_KEY_SECRET }}
          aws-region: us-east-1

      # validate templates
      - name: Validate Template
        uses: hashicorp/packer-github-actions@master
        with:
          command: validate
          arguments: -syntax-only
          target: kafka-ui-infra/ami/kafka-ui.pkr.hcl

      # build artifact
      - name: Build Artifact
        uses: hashicorp/packer-github-actions@master
        with:
          command: build
          arguments: "-color=false -on-error=abort -var=kafka_ui_release_version=${{ github.event.inputs.KafkaUIReleaseVersion }}"
          target: kafka-ui.pkr.hcl
          working_directory: ${{ env.WORK_DIR }}
        env:
          PACKER_LOG: 1

      # add fresh AMI to AWS Marketplace
      - name: Publish Artifact at Marketplace
        if: ${{ github.event.inputs.PublishOnMarketplace == 'true' }}
        env:
          PRODUCT_ID: ${{ secrets.AWS_SERVER_PRODUCT_ID }}
          RELEASE_VERSION: "${{ github.event.inputs.KafkaUIReleaseVersion }}"
          RELEASE_NOTES: "https://github.com/provectus/kafka-ui/releases/tag/v${{ github.event.inputs.KafkaUIReleaseVersion }}"
          MP_ROLE_ARN: ${{ secrets.AWS_MARKETPLACE_AMI_ACCESS_ROLE }} # https://docs.aws.amazon.com/marketplace/latest/userguide/ami-single-ami-products.html#single-ami-marketplace-ami-access
          AMI_OS_VERSION: "amzn2-ami-kernel-5.10-hvm-*-x86_64-gp2"
        run: |
          set -x
          pwd
          ls -la kafka-ui-infra/ami
          echo $WORK_DIR/manifest.json
          export AMI_ID=$(jq -r '.builds[-1].artifact_id' kafka-ui-infra/ami/manifest.json | cut -d ":" -f2)
          /bin/bash kafka-ui-infra/aws-marketplace/prepare_changeset.sh > changeset.json
          aws marketplace-catalog start-change-set \
            --catalog "AWSMarketplace" \
            --change-set "$(cat changeset.json)"


================================================
FILE: .github/workflows/backend.yml
================================================
name: "Backend: PR/master build & test"
on:
  push:
    branches:
      - master
  pull_request_target:
    types: ["opened", "edited", "reopened", "synchronize"]
    paths:
      - "kafka-ui-api/**"
      - "pom.xml"
permissions:
  checks: write
  pull-requests: write
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Cache SonarCloud packages
        uses: actions/cache@v3
        with:
          path: ~/.sonar/cache
          key: ${{ runner.os }}-sonar
          restore-keys: ${{ runner.os }}-sonar
      - name: Build and analyze pull request target
        if: ${{ github.event_name == 'pull_request' }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_BACKEND }}
          HEAD_REF: ${{ github.head_ref }}
          BASE_REF: ${{ github.base_ref }}
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.pull_request.head.sha }}
          ./mvnw -B -V -ntp verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
          -Dsonar.projectKey=com.provectus:kafka-ui_backend \
          -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \
          -Dsonar.pullrequest.branch=$HEAD_REF \
          -Dsonar.pullrequest.base=$BASE_REF
      - name: Build and analyze push master
        if: ${{ github.event_name == 'push' }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_BACKEND }}
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
          ./mvnw -B -V -ntp verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
          -Dsonar.projectKey=com.provectus:kafka-ui_backend


================================================
FILE: .github/workflows/block_merge.yml
================================================
name: "Infra: PR block merge"
on:
  pull_request:
    types: [opened, labeled, unlabeled, synchronize]
jobs:
  block_merge:
    runs-on: ubuntu-latest
    steps:
      - uses: mheap/github-action-required-labels@v5
        with:
          mode: exactly
          count: 0
          labels: "status/blocked, status/needs-attention, status/on-hold, status/pending, status/triage, status/pending-backend, status/pending-frontend, status/pending-QA"


================================================
FILE: .github/workflows/branch-deploy.yml
================================================
name: "Infra: Feature Testing: Init env"
on:
  workflow_dispatch:

  pull_request:
    types: ['labeled']
jobs:
  build:
    if: ${{ github.event.label.name == 'status/feature_testing' || github.event.label.name == 'status/feature_testing_public' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - name: get branch name
        id: extract_branch
        run: |
          tag='pr${{ github.event.pull_request.number }}'
          echo "tag=${tag}" >> $GITHUB_OUTPUT
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build
        id: build
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
          ./mvnw -B -V -ntp clean package -Pprod -DskipTests
          export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          echo "version=${VERSION}" >> $GITHUB_OUTPUT
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v2
      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Configure AWS credentials for Kafka-UI account
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-central-1
      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1
      - name: Build and push
        id: docker_build_and_push
        uses: docker/build-push-action@v4
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: kafka-ui-api
          push: true
          tags: 297478128798.dkr.ecr.eu-central-1.amazonaws.com/kafka-ui:${{ steps.extract_branch.outputs.tag }}
          build-args: |
            JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache
    outputs:
      tag: ${{ steps.extract_branch.outputs.tag }}
  make-branch-env:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: clone
        run: |
          git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
      - name: create deployment
        run: |
          cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
          echo "Branch:${{ needs.build.outputs.tag }}"
          ./kafka-ui-deployment-from-branch.sh ${{ needs.build.outputs.tag }} ${{ github.event.label.name }} ${{ secrets.FEATURE_TESTING_UI_PASSWORD }}
          git config --global user.email "infra-tech@provectus.com"
          git config --global user.name "infra-tech"
          git add ../kafka-ui-from-branch/
          git commit -m "added env:${{ needs.build.outputs.deploy }}" && git push || true

      - name: update status check for private deployment
        if: ${{ github.event.label.name == 'status/feature_testing' }}
        uses: Sibz/github-status-action@v1.1.6
        with:
          authToken: ${{secrets.GITHUB_TOKEN}}
          context: "Click Details button to open custom deployment page"
          state: "success"
          sha: ${{ github.event.pull_request.head.sha  || github.sha }}
          target_url: "http://${{ needs.build.outputs.tag }}.internal.kafka-ui.provectus.io"

      - name: update status check for public deployment
        if: ${{ github.event.label.name == 'status/feature_testing_public' }}
        uses: Sibz/github-status-action@v1.1.6
        with:
          authToken: ${{secrets.GITHUB_TOKEN}}
          context: "Click Details button to open custom deployment page"
          state: "success"
          sha: ${{ github.event.pull_request.head.sha  || github.sha }}
          target_url: "http://${{ needs.build.outputs.tag }}.internal.kafka-ui.provectus.io"


================================================
FILE: .github/workflows/branch-remove.yml
================================================
name: "Infra: Feature Testing: Destroy env"
on:
  workflow_dispatch:
  pull_request:
    types: ['unlabeled', 'closed']
jobs:
  remove:
    runs-on: ubuntu-latest
    if: ${{ (github.event.label.name == 'status/feature_testing' || github.event.label.name == 'status/feature_testing_public') || (github.event.action == 'closed' && (contains(github.event.pull_request.labels.*.name, 'status/feature_testing') || contains(github.event.pull_request.labels.*.name, 'status/feature_testing_public'))) }}
    steps:
      - uses: actions/checkout@v3
      - name: clone
        run: |
          git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
      - name: remove env
        run: |
          cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
          ./delete-env.sh pr${{ github.event.pull_request.number }} || true
          git config --global user.email "infra-tech@provectus.com"
          git config --global user.name "infra-tech"
          git add ../kafka-ui-from-branch/
          git commit -m "removed env:${{ needs.build.outputs.deploy }}" && git push || true


================================================
FILE: .github/workflows/build-public-image.yml
================================================
name: "Infra: Image Testing: Deploy"
on:
  workflow_dispatch:
  pull_request:
    types: ['labeled']
jobs:
  build:
    if: ${{ github.event.label.name == 'status/image_testing' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - name: get branch name
        id: extract_branch
        run: |
          tag='${{ github.event.pull_request.number }}'
          echo "tag=${tag}" >> $GITHUB_OUTPUT
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build
        id: build
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
          ./mvnw -B -V -ntp clean package -Pprod -DskipTests
          export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          echo "version=${VERSION}" >> $GITHUB_OUTPUT
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v2
      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Configure AWS credentials for Kafka-UI account
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1
        with:
          registry-type: 'public'
      - name: Build and push
        id: docker_build_and_push
        uses: docker/build-push-action@v4
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: kafka-ui-api
          push: true
          tags: public.ecr.aws/provectus/kafka-ui-custom-build:${{ steps.extract_branch.outputs.tag }}
          build-args: |
            JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache
      - name: make comment with private deployment link
        uses: peter-evans/create-or-update-comment@v3
        with:
          issue-number: ${{ github.event.pull_request.number }}
          body: |
            Image published at public.ecr.aws/provectus/kafka-ui-custom-build:${{ steps.extract_branch.outputs.tag }}
    outputs:
      tag: ${{ steps.extract_branch.outputs.tag }}


================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
  push:
    branches: [ master ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ master ]
    paths:
    - 'kafka-ui-contract/**'
    - 'kafka-ui-react-app/**'
    - 'kafka-ui-api/**'
    - 'kafka-ui-serde-api/**'
  schedule:
    - cron: '39 15 * * 6'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        language: [ 'javascript', 'java' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
        # Learn more:
        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: ${{ matrix.language }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.
        # queries: ./path/to/local/query, your-org/your-repo/queries@main

    - name: Set up JDK
      uses: actions/setup-java@v3
      with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'

    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
    # If this step fails, then you should remove it and run the build manually (see below)
    - name: Autobuild
      uses: github/codeql-action/autobuild@v2

    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 https://git.io/JvXDl

    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
    #    and modify them (or add more) to build your code if your project
    #    uses a compiled language

    #- run: |
    #   make bootstrap
    #   make release

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2


================================================
FILE: .github/workflows/cve.yaml
================================================
name: CVE checks docker master
on:
  workflow_dispatch:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '0 8 15 * *'
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'

      - name: Build project
        id: build
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
          ./mvnw -B -V -ntp clean package -DskipTests
          export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          echo "version=${VERSION}" >> $GITHUB_OUTPUT

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Build docker image
        uses: docker/build-push-action@v4
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: kafka-ui-api
          platforms: linux/amd64
          push: false
          load: true
          tags: |
            provectuslabs/kafka-ui:${{ steps.build.outputs.version }}
          build-args: |
            JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache

      - name: Run CVE checks
        uses: aquasecurity/trivy-action@0.12.0
        with:
          image-ref: "provectuslabs/kafka-ui:${{ steps.build.outputs.version }}"
          format: "table"
          exit-code: "1"


================================================
FILE: .github/workflows/delete-public-image.yml
================================================
name: "Infra: Image Testing: Delete"
on:
  workflow_dispatch:
  pull_request:
    types: ['unlabeled', 'closed']
jobs:
  remove:
    if: ${{ github.event.label.name == 'status/image_testing' || ( github.event.action == 'closed' && (contains(github.event.pull_request.labels, 'status/image_testing'))) }}
    runs-on: ubuntu-latest
    steps:
      - name: get branch name
        id: extract_branch
        run: |
          echo
          tag='${{ github.event.pull_request.number }}'
          echo "tag=${tag}" >> $GITHUB_OUTPUT
      - name: Configure AWS credentials for Kafka-UI account
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1
        with:
          registry-type: 'public'
      - name: Remove from ECR
        id: remove_from_ecr
        run: |
          aws ecr-public batch-delete-image \
                --repository-name kafka-ui-custom-build \
                --image-ids imageTag=${{ steps.extract_branch.outputs.tag }} \
                --region us-east-1


================================================
FILE: .github/workflows/documentation.yaml
================================================
name: "Infra: Docs: URL linter"
on:
  pull_request:
    types:
      - opened
      - labeled
      - reopened
      - synchronize
    paths:
      - 'documentation/**'
      - '**.md'
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check URLs in files
        uses: urlstechie/urlchecker-action@0.0.34
        with:
          exclude_patterns: localhost,127.0.,192.168.
          exclude_urls: https://api.server,https://graph.microsoft.com/User.Read,https://dev-a63ggcut.auth0.com/,http://main-schema-registry:8081,http://schema-registry:8081,http://another-yet-schema-registry:8081,http://another-schema-registry:8081
          print_all: false
          file_types: .md


================================================
FILE: .github/workflows/e2e-automation.yml
================================================
name: "E2E: Automation suite"
on:
  workflow_dispatch:
    inputs:
      test_suite:
        description: 'Select test suite to run'
        default: 'regression'
        required: true
        type: choice
        options:
          - regression
          - sanity
          - smoke
      qase_token:
        description: 'Set Qase token to enable integration'
        required: false
        type: string

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.sha }}
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-central-1
      - name: Set up environment
        id: set_env_values
        run: |
          cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
      - name: Pull with Docker
        id: pull_chrome
        run: |
          docker pull selenoid/vnc_chrome:103.0
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build with Maven
        id: build_app
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
          ./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
      - name: Compose with Docker
        id: compose_app
        # use the following command until #819 will be fixed
        run: |
          docker-compose -f kafka-ui-e2e-checks/docker/selenoid-git.yaml up -d
          docker-compose -f ./documentation/compose/e2e-tests.yaml up -d
      - name: Run test suite
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
          ./mvnw -B -V -ntp -DQASEIO_API_TOKEN=${{ github.event.inputs.qase_token }} -Dsurefire.suiteXmlFiles='src/test/resources/${{ github.event.inputs.test_suite }}.xml' -Dsuite=${{ github.event.inputs.test_suite }} -f 'kafka-ui-e2e-checks' test -Pprod
      - name: Generate Allure report
        uses: simple-elf/allure-report-action@master
        if: always()
        id: allure-report
        with:
          allure_results: ./kafka-ui-e2e-checks/allure-results
          gh_pages: allure-results
          allure_report: allure-report
          subfolder: allure-results
          report_url: "http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com"
      - uses: jakejarvis/s3-sync-action@master
        if: always()
        env:
          AWS_S3_BUCKET: 'kafkaui-allure-reports'
          AWS_REGION: 'eu-central-1'
          SOURCE_DIR: 'allure-history/allure-results'
      - name: Deploy report to Amazon S3
        if: always()
        uses: Sibz/github-status-action@v1.1.6
        with:
          authToken: ${{secrets.GITHUB_TOKEN}}
          context: "Click Details button to open Allure report"
          state: "success"
          sha: ${{ github.sha }}
          target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }}
      - name: Dump Docker logs on failure
        if: failure()
        uses: jwalton/gh-docker-logs@v2.2.1


================================================
FILE: .github/workflows/e2e-checks.yaml
================================================
name: "E2E: PR healthcheck"
on:
  pull_request_target:
    types: [ "opened", "edited", "reopened", "synchronize" ]
    paths:
      - "kafka-ui-api/**"
      - "kafka-ui-contract/**"
      - "kafka-ui-react-app/**"
      - "kafka-ui-e2e-checks/**"
      - "pom.xml"
permissions:
  statuses: write
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.S3_AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.S3_AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-central-1
      - name: Set up environment
        id: set_env_values
        run: |
          cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
      - name: Pull with Docker
        id: pull_chrome
        run: |
          docker pull selenoid/vnc_chrome:103.0
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build with Maven
        id: build_app
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.pull_request.head.sha }}
          ./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
      - name: Compose with Docker
        id: compose_app
        # use the following command until #819 will be fixed
        run: |
          docker-compose -f kafka-ui-e2e-checks/docker/selenoid-git.yaml up -d
          docker-compose -f ./documentation/compose/e2e-tests.yaml up -d && until [ "$(docker exec  kafka-ui wget --spider  --server-response  http://localhost:8080/actuator/health 2>&1 |  grep -c 'HTTP/1.1 200 OK')" == "1" ]; do echo "Waiting for kafka-ui ..." && sleep 1; done
      - name: Run test suite
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.pull_request.head.sha }}
          ./mvnw -B -V -ntp -Dsurefire.suiteXmlFiles='src/test/resources/smoke.xml' -f 'kafka-ui-e2e-checks' test -Pprod
      - name: Generate allure report
        uses: simple-elf/allure-report-action@master
        if: always()
        id: allure-report
        with:
          allure_results: ./kafka-ui-e2e-checks/allure-results
          gh_pages: allure-results
          allure_report: allure-report
          subfolder: allure-results
          report_url: "http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com"
      - uses: jakejarvis/s3-sync-action@master
        if: always()
        env:
          AWS_S3_BUCKET: 'kafkaui-allure-reports'
          AWS_REGION: 'eu-central-1'
          SOURCE_DIR: 'allure-history/allure-results'
      - name: Deploy report to Amazon S3
        if: always()
        uses: Sibz/github-status-action@v1.1.6
        with:
          authToken: ${{secrets.GITHUB_TOKEN}}
          context: "Click Details button to open Allure report"
          state: "success"
          sha: ${{ github.event.pull_request.head.sha  || github.sha }}
          target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }}
      - name: Dump docker logs on failure
        if: failure()
        uses: jwalton/gh-docker-logs@v2.2.1


================================================
FILE: .github/workflows/e2e-manual.yml
================================================
name: "E2E: Manual suite"
on:
  workflow_dispatch:
    inputs:
      test_suite:
        description: 'Select test suite to run'
        default: 'manual'
        required: true
        type: choice
        options:
          - manual
          - qase
      qase_token:
        description: 'Set Qase token to enable integration'
        required: true
        type: string

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.sha }}
      - name: Set up environment
        id: set_env_values
        run: |
          cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build with Maven
        id: build_app
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
          ./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
      - name: Run test suite
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
          ./mvnw -B -V -ntp -DQASEIO_API_TOKEN=${{ github.event.inputs.qase_token }} -Dsurefire.suiteXmlFiles='src/test/resources/${{ github.event.inputs.test_suite }}.xml' -Dsuite=${{ github.event.inputs.test_suite }} -f 'kafka-ui-e2e-checks' test -Pprod


================================================
FILE: .github/workflows/e2e-weekly.yml
================================================
name: "E2E: Weekly suite"
on:
  schedule:
    - cron: '0 1 * * 1'

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.sha }}
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-central-1
      - name: Set up environment
        id: set_env_values
        run: |
          cat "./kafka-ui-e2e-checks/.env.ci" >> "./kafka-ui-e2e-checks/.env"
      - name: Pull with Docker
        id: pull_chrome
        run: |
          docker pull selenoid/vnc_chrome:103.0
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build with Maven
        id: build_app
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
          ./mvnw -B -V -ntp clean install -Pprod -Dmaven.test.skip=true ${{ github.event.inputs.extraMavenOptions }}
      - name: Compose with Docker
        id: compose_app
        # use the following command until #819 will be fixed
        run: |
          docker-compose -f kafka-ui-e2e-checks/docker/selenoid-git.yaml up -d
          docker-compose -f ./documentation/compose/e2e-tests.yaml up -d
      - name: Run test suite
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.sha }}
          ./mvnw -B -V -ntp -DQASEIO_API_TOKEN=${{ secrets.QASEIO_API_TOKEN }} -Dsurefire.suiteXmlFiles='src/test/resources/sanity.xml' -Dsuite=weekly -f 'kafka-ui-e2e-checks' test -Pprod
      - name: Generate Allure report
        uses: simple-elf/allure-report-action@master
        if: always()
        id: allure-report
        with:
          allure_results: ./kafka-ui-e2e-checks/allure-results
          gh_pages: allure-results
          allure_report: allure-report
          subfolder: allure-results
          report_url: "http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com"
      - uses: jakejarvis/s3-sync-action@master
        if: always()
        env:
          AWS_S3_BUCKET: 'kafkaui-allure-reports'
          AWS_REGION: 'eu-central-1'
          SOURCE_DIR: 'allure-history/allure-results'
      - name: Deploy report to Amazon S3
        if: always()
        uses: Sibz/github-status-action@v1.1.6
        with:
          authToken: ${{secrets.GITHUB_TOKEN}}
          context: "Click Details button to open Allure report"
          state: "success"
          sha: ${{ github.sha }}
          target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }}
      - name: Dump Docker logs on failure
        if: failure()
        uses: jwalton/gh-docker-logs@v2.2.1


================================================
FILE: .github/workflows/frontend.yaml
================================================
name: "Frontend: PR/master build & test"
on:
  push:
    branches:
      - master
  pull_request_target:
    types: ["opened", "edited", "reopened", "synchronize"]
    paths:
      - "kafka-ui-contract/**"
      - "kafka-ui-react-app/**"
permissions:
  checks: write
  pull-requests: write
jobs:
  build-and-test:
    env:
      CI: true
      NODE_ENV: dev
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          # Disabling shallow clone is recommended for improving relevancy of reporting
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}
      - uses: pnpm/action-setup@v2.4.0
        with:
          version: 8.6.12
      - name: Install node
        uses: actions/setup-node@v3.8.1
        with:
          node-version: "18.17.1"
          cache: "pnpm"
          cache-dependency-path: "./kafka-ui-react-app/pnpm-lock.yaml"
      - name: Install Node dependencies
        run: |
          cd kafka-ui-react-app/
          pnpm install --frozen-lockfile
      - name: Generate sources
        run: |
          cd kafka-ui-react-app/
          pnpm gen:sources
      - name: Linter
        run: |
          cd kafka-ui-react-app/
          pnpm lint:CI
      - name: Tests
        run: |
          cd kafka-ui-react-app/
          pnpm test:CI
      - name: SonarCloud Scan
        uses: sonarsource/sonarcloud-github-action@master
        with:
          projectBaseDir: ./kafka-ui-react-app
          args: -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} -Dsonar.pullrequest.branch=${{ github.head_ref }} -Dsonar.pullrequest.base=${{ github.base_ref }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_FRONTEND }}


================================================
FILE: .github/workflows/master.yaml
================================================
name: "Master: Build & deploy"
on:
  workflow_dispatch:
  push:
    branches: [ "master" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'

      - name: Build
        id: build
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
          ./mvnw -V -B -ntp clean package -Pprod -DskipTests
          export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          echo "version=${VERSION}" >> $GITHUB_OUTPUT
#################
#               #
# Docker images #
#               #
#################
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        id: docker_build_and_push
        uses: docker/build-push-action@v4
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: kafka-ui-api
          platforms: linux/amd64,linux/arm64
          provenance: false
          push: true
          tags: |
            provectuslabs/kafka-ui:${{ steps.build.outputs.version }}
            provectuslabs/kafka-ui:master
          build-args: |
            JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache
#################################
#                               #
#   Master image digest update  #
#                               #
#################################
      - name: update-master-deployment
        run: |
          git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch master
          cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
          echo "Image digest is:${{ steps.docker_build_and_push.outputs.digest }}"
          ./kafka-ui-update-master-digest.sh ${{ steps.docker_build_and_push.outputs.digest }}
          git config --global user.email "infra-tech@provectus.com"
          git config --global user.name "infra-tech"
          git add ../kafka-ui/*
          git commit -m "updated master image digest: ${{ steps.docker_build_and_push.outputs.digest }}" && git push


================================================
FILE: .github/workflows/pr-checks.yaml
================================================
name: "PR: Checklist linter"
on:
  pull_request_target:
    types: [opened, edited, synchronize, reopened]
permissions:
  checks: write
jobs:
  task-check:
    runs-on: ubuntu-latest
    steps:
      - uses: kentaro-m/task-completed-checker-action@v0.1.2
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"
      - uses: dekinderfiets/pr-description-enforcer@0.0.1
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"


================================================
FILE: .github/workflows/release-serde-api.yaml
================================================
name: "Infra: Release: Serde API"
on: workflow_dispatch

jobs:
  release-serde-api:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - run: |
          git config user.name github-actions
          git config user.email github-actions@github.com

      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: "17"
          distribution: "zulu"
          cache: "maven"

      - id: install-secret-key
        name: Install GPG secret key
        run: |
          cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import

      - name: Publish to Maven Central
        run: |
          mvn source:jar  javadoc:jar  package  gpg:sign -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} -Dserver.username=${{ secrets.NEXUS_USERNAME }} -Dserver.password=${{ secrets.NEXUS_PASSWORD }} nexus-staging:deploy   -pl kafka-ui-serde-api  -s settings.xml


================================================
FILE: .github/workflows/release.yaml
================================================
name: "Infra: Release"
on:
  release:
    types: [published]

jobs:
  release:
    runs-on: ubuntu-latest
    outputs:
      version: ${{steps.build.outputs.version}}
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}

      - run: |
          git config user.name github-actions
          git config user.email github-actions@github.com

      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'

      - name: Build with Maven
        id: build
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=${{ github.event.release.tag_name }}
          ./mvnw -B -V -ntp clean package -Pprod -DskipTests
          export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          echo "version=${VERSION}" >> $GITHUB_OUTPUT

      - name: Upload files to a GitHub release
        uses: svenstaro/upload-release-action@2.7.0
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: kafka-ui-api/target/kafka-ui-api-${{ steps.build.outputs.version }}.jar
          tag: ${{ github.event.release.tag_name }}

      - name: Archive JAR
        uses: actions/upload-artifact@v3
        with:
          name: kafka-ui-${{ steps.build.outputs.version }}
          path: kafka-ui-api/target/kafka-ui-api-${{ steps.build.outputs.version }}.jar
#################
#               #
# Docker images #
#               #
#################
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        id: docker_build_and_push
        uses: docker/build-push-action@v4
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: kafka-ui-api
          platforms: linux/amd64,linux/arm64
          provenance: false
          push: true
          tags: |
            provectuslabs/kafka-ui:${{ steps.build.outputs.version }}
            provectuslabs/kafka-ui:latest
          build-args: |
            JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache

  charts:
    runs-on: ubuntu-latest
    needs: release
    steps:
      - name: Repository Dispatch
        uses: peter-evans/repository-dispatch@v2
        with:
          token: ${{ secrets.CHARTS_ACTIONS_TOKEN }}
          repository: provectus/kafka-ui-charts
          event-type: prepare-helm-release
          client-payload: '{"appversion": "${{ needs.release.outputs.version }}"}'


================================================
FILE: .github/workflows/release_drafter.yml
================================================
name: "Infra: Release Drafter run"

on:
  push:
    branches:
      - master
  workflow_dispatch:
    inputs:
      version:
        description: 'Release version'
        required: false
      branch:
        description: 'Target branch'
        required: false
        default: 'master'

permissions:
  contents: read

jobs:
  update_release_draft:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: release-drafter/release-drafter@v5
        with:
          config-name: release_drafter.yaml
          disable-autolabeler: true
          version: ${{ github.event.inputs.version }}
          commitish: ${{ github.event.inputs.branch }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/separate_env_public_create.yml
================================================
name: "Infra: Feature Testing Public: Init env"
on:
  workflow_dispatch:
    inputs:
      ENV_NAME:
        description: 'Will be used as subdomain in the public URL.'
        required: true
        default: 'demo'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - name: get branch name
        id: extract_branch
        run: |
          tag="${{ github.event.inputs.ENV_NAME }}-$(date '+%F-%H-%M-%S')"
          echo "tag=${tag}" >> $GITHUB_OUTPUT
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'zulu'
          cache: 'maven'
      - name: Build
        id: build
        run: |
          ./mvnw -B -ntp versions:set -DnewVersion=$GITHUB_SHA
          ./mvnw -B -V -ntp clean package -Pprod -DskipTests
          export VERSION=$(./mvnw -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          echo "version=${VERSION}" >> $GITHUB_OUTPUT
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v2
      - name: Cache Docker layers
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Configure AWS credentials for Kafka-UI account
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-central-1
      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1
      - name: Build and push
        id: docker_build_and_push
        uses: docker/build-push-action@v4
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: kafka-ui-api
          push: true
          tags: 297478128798.dkr.ecr.eu-central-1.amazonaws.com/kafka-ui:${{ steps.extract_branch.outputs.tag }}
          build-args: |
            JAR_FILE=kafka-ui-api-${{ steps.build.outputs.version }}.jar
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache
    outputs:
      tag: ${{ steps.extract_branch.outputs.tag }}

  separate-env-create:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: clone
        run: |
          git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs

      - name: separate env create
        run: |
          cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
          bash separate_env_create.sh ${{ github.event.inputs.ENV_NAME }} ${{ secrets.FEATURE_TESTING_UI_PASSWORD }} ${{ needs.build.outputs.tag }}
          git config --global user.email "infra-tech@provectus.com"
          git config --global user.name "infra-tech"
          git add -A
          git commit -m "separate env added: ${{ github.event.inputs.ENV_NAME }}" && git push || true

      - name: echo separate environment public link
        run: |
          echo "Please note, separate environment creation takes up to 5-10 minutes."
          echo "Separate environment will be available at http://${{ github.event.inputs.ENV_NAME }}.kafka-ui.provectus.io"
          echo "Username: admin"


================================================
FILE: .github/workflows/separate_env_public_remove.yml
================================================
name: "Infra: Feature Testing Public: Destroy env"
on:
  workflow_dispatch:
    inputs:
      ENV_NAME:
        description: 'Will be used to remove previously deployed separate environment.'
        required: true
        default: 'demo'

jobs:
  separate-env-remove:
    runs-on: ubuntu-latest
    steps:
      - name: clone
        run: |
          git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/provectus/kafka-ui-infra.git --branch envs
      - name: separate environment remove
        run: |
          cd kafka-ui-infra/aws-infrastructure4eks/argocd/scripts
          bash separate_env_remove.sh ${{ github.event.inputs.ENV_NAME }}
          git config --global user.email "infra-tech@provectus.com"
          git config --global user.name "infra-tech"
          git add -A
          git commit -m "separate env removed: ${{ github.event.inputs.ENV_NAME }}" && git push || true


================================================
FILE: .github/workflows/stale.yaml
================================================
name: 'Infra: Close stale issues'
on:
  schedule:
    - cron: '30 1 * * *'

jobs:
  stale:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v8
        with:
          days-before-issue-stale: 7
          days-before-issue-close: 3
          days-before-pr-stale: 7
          days-before-pr-close: 7
          stale-issue-message: 'This issue has been automatically marked as stale because no requested feedback has been provided. It will be closed if no further activity occurs. Thank you for your contributions.'
          stale-pr-message: 'This PR has been automatically marked as stale because no requested changes have been applied. It will be closed if no further activity occurs. Thank you for your contributions.'
          stale-issue-label: 'status/stale'
          stale-pr-label: 'status/stale'
          only-labels: 'status/pending'
          remove-issue-stale-when-updated: true
          labels-to-remove-when-unstale: 'status/pending'


================================================
FILE: .github/workflows/terraform-deploy.yml
================================================
name: "Infra: Terraform deploy"
on:
  workflow_dispatch:
    inputs:
      applyTerraform:
        description: 'Do you want to apply the infra-repo terraform? Possible values [plan/apply].'
        required: true
        default: 'plan'
      KafkaUIInfraBranch:
        description: 'Branch name of Kafka-UI-Infra repo, tf will be executed from this branch'
        required: true
        default: 'master'

jobs:
  terraform:
    name: Terraform
    runs-on: ubuntu-latest
    steps:
      - name: Clone infra repo
        run: |
          echo "Cloning repo..."
          git clone https://kafka-ui-infra:${{ secrets.KAFKA_UI_INFRA_TOKEN }}@gitlab.provectus.com/provectus-internals/kafka-ui-infra.git --branch ${{ github.event.inputs.KafkaUIInfraBranch }}
          echo "Cd to deployment..."
          cd kafka-ui-infra/aws-infrastructure4eks/deployment
          echo "TF_DIR=$(pwd)" >> $GITHUB_ENV
          echo "Terraform will be triggered in this dir $TF_DIR"

      - name: Configure AWS credentials for Kafka-UI account
        uses: aws-actions/configure-aws-credentials@v3
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-central-1

      - name: Terraform Install
        uses: hashicorp/setup-terraform@v2

      - name: Terraform init
        id: init
        run: cd $TF_DIR && terraform init --backend-config="../envs/pro/terraform-backend.tfvars"

      - name: Terraform validate
        id: validate
        run: cd $TF_DIR && terraform validate -no-color

      - name: Terraform plan
        id: plan
        run: |
          cd $TF_DIR
          export TF_VAR_github_connector_access_token=${{ secrets.SOURCE_CONNECTOR_GITHUB_TOKEN }}
          export TF_VAR_repo_secret=${{ secrets.KAFKA_UI_INFRA_TOKEN }}
          terraform plan --var-file="../envs/pro/eks.tfvars"

      - name: Terraform apply
        id: apply
        if: ${{ github.event.inputs.applyTerraform == 'apply' }}
        run: |
          cd $TF_DIR
          export TF_VAR_github_connector_access_token=${{ secrets.SOURCE_CONNECTOR_GITHUB_TOKEN }}
          export TF_VAR_repo_secret=${{ secrets.KAFKA_UI_INFRA_TOKEN }}
          terraform apply --var-file="../envs/pro/eks.tfvars" -auto-approve


================================================
FILE: .github/workflows/triage_issues.yml
================================================
name: "Infra: Triage: Apply triage label for issues"
on:
  issues:
    types:
      - opened
jobs:
  triage_issues:
    runs-on: ubuntu-latest
    steps:
      - name: Label issue
        uses: andymckay/labeler@master
        with:
          add-labels: "status/triage"
          ignore-if-assigned: true


================================================
FILE: .github/workflows/triage_prs.yml
================================================
name: "Infra: Triage: Apply triage label for PRs"
on:
  pull_request:
    types:
      - opened
jobs:
  triage_prs:
    runs-on: ubuntu-latest
    steps:
      - name: Label PR
        uses: andymckay/labeler@master
        with:
          add-labels: "status/triage"
          ignore-if-labeled: true


================================================
FILE: .github/workflows/welcome-first-time-contributors.yml
================================================
name: Welcome first time contributors

on:
  pull_request_target:
    types:
      - opened
  issues:
    types:
      - opened
permissions:
  issues: write
  pull-requests: write
jobs:
  welcome:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/first-interaction@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          issue-message: |
            Hello there ${{ github.actor }}! 👋

            Thank you and congratulations 🎉 for opening your very first issue in this project! 💖

            In case you want to claim this issue, please comment down below! We will try to get back to you as soon as we can. 👀

          pr-message: |
            Hello there ${{ github.actor }}! 👋

            Thank you and congrats 🎉 for opening your first PR on this project! ✨ 💖

            We will try to review it soon!


================================================
FILE: .github/workflows/workflow_linter.yaml
================================================
name: "Infra: Workflow linter"
on:
  pull_request:
    types:
      - "opened"
      - "reopened"
      - "synchronize"
      - "edited"
    paths:
      - ".github/workflows/**"
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Install yamllint
        run: sudo apt install -y yamllint
      - name: Validate workflow yaml files
        run: yamllint .github/workflows/. -d relaxed -f github --no-warnings


================================================
FILE: .gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/
/kafka-ui-api/app/node

### SDKMAN ###
.sdkmanrc

.DS_Store
*.code-workspace


*.tar.gz
*.tgz

/docker/*.override.yaml


================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# 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
#
#   https://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.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar


================================================
FILE: CODE-OF-CONDUCT.md
================================================

# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
  advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
  address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at email kafkaui@provectus.com.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior,  harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].

Community Impact Guidelines were inspired by 
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available 
at [https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: CONTRIBUTING.md
================================================
This guide is an exact copy of the same documented located [in our official docs](https://docs.kafka-ui.provectus.io/development/contributing). If there are any differences between the documents, the one located in our official docs should prevail.

This guide aims to walk you through the process of working on issues and Pull Requests (PRs).

Bear in mind that you will not be able to complete some steps on your own if you do not have a “write” permission. Feel free to reach out to the maintainers to help you unlock these activities.

# General recommendations

Please note that we have a code of conduct (`CODE-OF-CONDUCT.md`). Make sure that you follow it in all of your interactions with the project.

# Issues

## Choosing an issue

There are two options to look for the issues to contribute to. <br/>
The first is our ["Up for grabs"](https://github.com/provectus/kafka-ui/projects/11) board. There the issues are sorted by a required experience level (beginner, intermediate, expert).

The second option is to search for ["good first issue"](https://github.com/provectus/kafka-ui/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)-labeled issues. Some of them might not be displayed on the aforementioned board, or vice versa.

You also need to consider labels. You can sort the issues by scope labels, such as `scope/backend`, `scope/frontend` or even `scope/k8s`. If any issue covers several specific areas, and you do not have a required expertise for one of them, just do your part of work — others will do the rest.

## Grabbing the issue

There is a bunch of criteria that make an issue feasible for development. <br/>
The implementation of any features and/or their enhancements should be reasonable, must be backed by justified requirements (demanded by the community, [roadmap](https://docs.kafka-ui.provectus.io/project/roadmap) plans, etc.). The final decision is left for the maintainers' discretion.

All bugs should be confirmed as such (i.e. the behavior is unintended).

Any issue should be properly triaged by the maintainers beforehand, which includes:
1. Having a proper milestone set
2. Having required labels assigned: accepted label, scope labels, etc.

Formally, if these triage conditions are met, you can start to work on the issue.

With all these requirements met, feel free to pick the issue you want. Reach out to the maintainers if you have any questions.

## Working on the issue

Every issue “in-progress” needs to be assigned to a corresponding person.
To keep the status of the issue clear to everyone, please keep the card's status updated ("project" card to the right of the issue should match the milestone’s name).

## Setting up a local development environment

Please refer to [this guide](https://docs.kafka-ui.provectus.io/development/contributing).

# Pull Requests

## Branch naming

In order to keep branch names uniform and easy-to-understand, please use the following conventions for branch naming.

Generally speaking, it is a good idea to add a group/type prefix to a branch; e.g.,
if you are working on a specific branch, you could name it `issues/xxx`.

Here is a list of good examples:<br/>
`issues/123`<br/>
`feature/feature_name`<br/>
`bugfix/fix_thing`<br/>

## Code style

Java: There is a file called `checkstyle.xml` in project root under `etc` directory.<br/>
You can import it into IntelliJ IDEA via Checkstyle plugin.

## Naming conventions

REST paths should be written in **lowercase** and consist of **plural** nouns only.<br/>
Also, multiple words that are placed in a single path segment should be divided by a hyphen (`-`).<br/>

Query variable names should be formatted in `camelCase`.

Model names should consist of **plural** nouns only and should be formatted in `camelCase` as well.

## Creating a PR

When creating a PR please do the following:
1. In commit messages use these [closing keywords](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword).
2. Link an issue(-s) via "linked issues" block.
3. Set the PR labels. Ensure that you set only the same set of labels that is present in the issue, and ignore yellow `status/` labels.
4. If the PR does not close any of the issues, the PR itself might need to have a milestone set. Reach out to the maintainers to consult.
5. Assign the PR to yourself. A PR assignee is someone whose goal is to get the PR merged.
6. Add reviewers. As a rule, reviewers' suggestions are pretty good; please use them.
7. Upon merging the PR, please use a meaningful commit message, task name should be fine in this case.

### Pull Request checklist

1. When composing a build, ensure that any install or build dependencies have been removed before the end of the layer.
2. Update the `README.md` with the details of changes made to the interface. This includes new environment variables, 
exposed ports, useful file locations, and container parameters.

## Reviewing a PR

WIP

### Pull Request reviewer checklist

WIP


================================================
FILE: LICENSE
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2020 CloudHut

   Licensed 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.

================================================
FILE: README.md
================================================
![UI for Apache Kafka logo](documentation/images/kafka-ui-logo.png) UI for Apache Kafka&nbsp;
------------------
#### Versatile, fast and lightweight web UI for managing Apache Kafka® clusters. Built by developers, for developers.
<br/>

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/provectus/kafka-ui/blob/master/LICENSE)
![UI for Apache Kafka Price Free](documentation/images/free-open-source.svg)
[![Release version](https://img.shields.io/github/v/release/provectus/kafka-ui)](https://github.com/provectus/kafka-ui/releases)
[![Chat with us](https://img.shields.io/discord/897805035122077716)](https://discord.gg/4DWzD7pGE5)
[![Docker pulls](https://img.shields.io/docker/pulls/provectuslabs/kafka-ui)](https://hub.docker.com/r/provectuslabs/kafka-ui)

<p align="center">
    <a href="https://docs.kafka-ui.provectus.io/">DOCS</a> • 
    <a href="https://docs.kafka-ui.provectus.io/configuration/quick-start">QUICK START</a> • 
    <a href="https://discord.gg/4DWzD7pGE5">COMMUNITY DISCORD</a>
    <br/>
    <a href="https://aws.amazon.com/marketplace/pp/prodview-ogtt5hfhzkq6a">AWS Marketplace</a>  •
    <a href="https://www.producthunt.com/products/ui-for-apache-kafka/reviews/new">ProductHunt</a>
</p>

<p align="center">
  <img src="https://repobeats.axiom.co/api/embed/2e8a7c2d711af9daddd34f9791143e7554c35d0f.svg" />
</p>

#### UI for Apache Kafka is a free, open-source web UI to monitor and manage Apache Kafka clusters.

UI for Apache Kafka is a simple tool that makes your data flows observable, helps find and troubleshoot issues faster and deliver optimal performance. Its lightweight dashboard makes it easy to track key metrics of your Kafka clusters - Brokers, Topics, Partitions, Production, and Consumption.

### DISCLAIMER
<em>UI for Apache Kafka is a free tool built and supported by the open-source community. Curated by Provectus, it will remain free and open-source, without any paid features or subscription plans to be added in the future.
Looking for the help of Kafka experts? Provectus can help you design, build, deploy, and manage Apache Kafka clusters and streaming applications. Discover [Professional Services for Apache Kafka](https://provectus.com/professional-services-apache-kafka/), to unlock the full potential of Kafka in your enterprise! </em>

Set up UI for Apache Kafka with just a couple of easy commands to visualize your Kafka data in a comprehensible way. You can run the tool locally or in
the cloud.

![Interface](documentation/images/Interface.gif)

# Features
* **Multi-Cluster Management** — monitor and manage all your clusters in one place
* **Performance Monitoring with Metrics Dashboard** —  track key Kafka metrics with a lightweight dashboard
* **View Kafka Brokers** — view topic and partition assignments, controller status
* **View Kafka Topics** — view partition count, replication status, and custom configuration
* **View Consumer Groups** — view per-partition parked offsets, combined and per-partition lag
* **Browse Messages** — browse messages with JSON, plain text, and Avro encoding
* **Dynamic Topic Configuration** — create and configure new topics with dynamic configuration
* **Configurable Authentification** — [secure](https://docs.kafka-ui.provectus.io/configuration/authentication) your installation with optional Github/Gitlab/Google OAuth 2.0
* **Custom serialization/deserialization plugins** - [use](https://docs.kafka-ui.provectus.io/configuration/serialization-serde) a ready-to-go serde for your data like AWS Glue or Smile, or code your own!
* **Role based access control** - [manage permissions](https://docs.kafka-ui.provectus.io/configuration/rbac-role-based-access-control) to access the UI with granular precision
* **Data masking** - [obfuscate](https://docs.kafka-ui.provectus.io/configuration/data-masking) sensitive data in topic messages

# The Interface
UI for Apache Kafka wraps major functions of Apache Kafka with an intuitive user interface.

![Interface](documentation/images/Interface.gif)

## Topics
UI for Apache Kafka makes it easy for you to create topics in your browser by several clicks,
pasting your own parameters, and viewing topics in the list.

![Create Topic](documentation/images/Create_topic_kafka-ui.gif)

It's possible to jump from connectors view to corresponding topics and from a topic to consumers (back and forth) for more convenient navigation.
connectors, overview topic settings.

![Connector_Topic_Consumer](documentation/images/Connector_Topic_Consumer.gif)

### Messages
Let's say we want to produce messages for our topic. With the UI for Apache Kafka we can send or write data/messages to the Kafka topics without effort by specifying parameters, and viewing messages in the list.

![Produce Message](documentation/images/Create_message_kafka-ui.gif)

## Schema registry
There are 3 supported types of schemas: Avro®, JSON Schema, and Protobuf schemas.

![Create Schema Registry](documentation/images/Create_schema.gif)

Before producing avro/protobuf encoded messages, you have to add a schema for the topic in Schema Registry. Now all these steps are easy to do
with a few clicks in a user-friendly interface.

![Avro Schema Topic](documentation/images/Schema_Topic.gif)

# Getting Started

To run UI for Apache Kafka, you can use either a pre-built Docker image or build it (or a jar file) yourself.

## Quick start (Demo run)

```
docker run -it -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui
```

Then access the web UI at [http://localhost:8080](http://localhost:8080)

The command is sufficient to try things out. When you're done trying things out, you can proceed with a [persistent installation](https://docs.kafka-ui.provectus.io/quick-start/persistent-start)

## Persistent installation

```
services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    environment:
      DYNAMIC_CONFIG_ENABLED: 'true'
    volumes:
      - ~/kui/config.yml:/etc/kafkaui/dynamic_config.yaml
```

Please refer to our [configuration](https://docs.kafka-ui.provectus.io/configuration/quick-start) page to proceed with further app configuration.

## Some useful configuration related links

[Web UI Cluster Configuration Wizard](https://docs.kafka-ui.provectus.io/configuration/configuration-wizard)

[Configuration file explanation](https://docs.kafka-ui.provectus.io/configuration/configuration-file)

[Docker Compose examples](https://docs.kafka-ui.provectus.io/configuration/compose-examples)

[Misc configuration properties](https://docs.kafka-ui.provectus.io/configuration/misc-configuration-properties)

## Helm charts

[Quick start](https://docs.kafka-ui.provectus.io/configuration/helm-charts/quick-start)

## Building from sources

[Quick start](https://docs.kafka-ui.provectus.io/development/building/prerequisites) with building

## Liveliness and readiness probes
Liveliness and readiness endpoint is at `/actuator/health`.<br/>
Info endpoint (build info) is located at `/actuator/info`.

# Configuration options

All of the environment variables/config properties could be found [here](https://docs.kafka-ui.provectus.io/configuration/misc-configuration-properties).

# Contributing

Please refer to [contributing guide](https://docs.kafka-ui.provectus.io/development/contributing), we'll guide you from there.


================================================
FILE: SECURITY.md
================================================
# Security Policy

## Supported Versions

Following versions of the project are currently being supported with security updates.

| Version | Supported          |
| ------- | ------------------ |
| 0.7.x   | :white_check_mark: |
| 0.6.x   | :x:                |
| 0.5.x   | :x:                |
| 0.4.x   | :x:                |
| 0.3.x   | :x:                |
| 0.2.x   | :x:                |
| 0.1.x   | :x:                |

## Reporting a Vulnerability

Please **DO NOT** file a publicly available github issues regarding security vulnerabilities.
Send us details via email (maintainers.kafka-ui "at" provectus.com).
Consider adding something like "security vulnerability report" in the title of an email.


================================================
FILE: documentation/compose/DOCKER_COMPOSE.md
================================================
# Descriptions of docker-compose configurations (*.yaml)

1. [kafka-ui.yaml](./kafka-ui.yaml) - Default configuration with 2 kafka clusters with two nodes of Schema Registry, one kafka-connect and a few dummy topics.
2. [kafka-ui-arm64.yaml](./kafka-ui-arm64.yaml) - Default configuration for ARM64(Mac M1) architecture with 1 kafka cluster without zookeeper with one node of Schema Registry, one kafka-connect and a few dummy topics.
3. [kafka-clusters-only.yaml](./kafka-clusters-only.yaml) - A configuration for development purposes, everything besides `kafka-ui` itself (to be run locally).
4. [kafka-ui-ssl.yml](./kafka-ssl.yml) - Connect to Kafka via TLS/SSL
5. [kafka-cluster-sr-auth.yaml](./kafka-cluster-sr-auth.yaml) - Schema registry with authentication.
6. [kafka-ui-auth-context.yaml](./kafka-ui-auth-context.yaml) - Basic (username/password) authentication with custom path (URL) (issue 861).
7. [e2e-tests.yaml](./e2e-tests.yaml) - Configuration with different connectors (github-source, s3, sink-activities, source-activities) and Ksql functionality.
8. [kafka-ui-jmx-secured.yml](./kafka-ui-jmx-secured.yml) - Kafka’s JMX with SSL and authentication.
9. [kafka-ui-reverse-proxy.yaml](./nginx-proxy.yaml) - An example for using the app behind a proxy (like nginx).
10. [kafka-ui-sasl.yaml](./kafka-ui-sasl.yaml) - SASL auth for Kafka.
11. [kafka-ui-traefik-proxy.yaml](./traefik-proxy.yaml) - Traefik specific proxy configuration.
12. [oauth-cognito.yaml](./oauth-cognito.yaml) - OAuth2 with Cognito
13. [kafka-ui-with-jmx-exporter.yaml](./kafka-ui-with-jmx-exporter.yaml) - A configuration with 2 kafka clusters with enabled prometheus jmx exporters instead of jmx.
14. [kafka-with-zookeeper.yaml](./kafka-with-zookeeper.yaml) - An example for using kafka with zookeeper

================================================
FILE: documentation/compose/connectors/github-source.json
================================================
{
  "name": "github-source",
  "config":
  {
    "connector.class": "io.confluent.connect.github.GithubSourceConnector",
    "confluent.topic.bootstrap.servers": "kafka0:29092, kafka1:29092",
    "confluent.topic.replication.factor": "1",
    "tasks.max": "1",
    "github.service.url": "https://api.github.com",
    "github.access.token": "",
    "github.repositories": "provectus/kafka-ui",
    "github.resources": "issues,commits,pull_requests",
    "github.since": "2019-01-01",
    "topic.name.pattern": "github-${resourceName}",
    "key.converter": "org.apache.kafka.connect.json.JsonConverter",
    "key.converter.schema.registry.url": "http://schemaregistry0:8085",
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter.schema.registry.url": "http://schemaregistry0:8085"
  }
}

================================================
FILE: documentation/compose/connectors/s3-sink.json
================================================
{
  "name": "s3-sink",
  "config":
  {
    "connector.class": "io.confluent.connect.s3.S3SinkConnector",
    "topics": "github-issues, github-pull_requests, github-commits",
    "tasks.max": "1",
    "s3.region": "eu-central-1",
    "s3.bucket.name": "kafka-ui-s3-sink-connector",
    "s3.part.size": "5242880",
    "flush.size": "3",
    "storage.class": "io.confluent.connect.s3.storage.S3Storage",
    "format.class": "io.confluent.connect.s3.format.json.JsonFormat",
    "schema.generator.class": "io.confluent.connect.storage.hive.schema.DefaultSchemaGenerator",
    "partitioner.class": "io.confluent.connect.storage.partitioner.DefaultPartitioner",
    "schema.compatibility": "BACKWARD"
  }
}

================================================
FILE: documentation/compose/connectors/sink-activities.json
================================================
{
  "name": "sink_postgres_activities",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "connection.url": "jdbc:postgresql://postgres-db:5432/test",
    "connection.user": "dev_user",
    "connection.password": "12345",
    "topics": "source-activities",
    "table.name.format": "sink_activities",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "key.converter.schema.registry.url": "http://schemaregistry0:8085",
    "value.converter": "io.confluent.connect.avro.AvroConverter",
    "value.converter.schema.registry.url": "http://schemaregistry0:8085",
    "auto.create": "true",
    "pk.mode": "record_value",
    "pk.fields": "id",
    "insert.mode": "upsert"
  }
}

================================================
FILE: documentation/compose/connectors/source-activities.json
================================================
{
  "name": "source_postgres_activities",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
    "connection.url": "jdbc:postgresql://postgres-db:5432/test",
    "connection.user": "dev_user",
    "connection.password": "12345",
    "topic.prefix": "source-",
    "poll.interval.ms": 3600000,
    "table.whitelist": "public.activities",
    "mode": "bulk",
    "transforms": "extractkey",
    "transforms.extractkey.type": "org.apache.kafka.connect.transforms.ExtractField$Key",
    "transforms.extractkey.field": "id",
    "key.converter": "org.apache.kafka.connect.storage.StringConverter",
    "key.converter.schema.registry.url": "http://schemaregistry0:8085",
    "value.converter": "io.confluent.connect.avro.AvroConverter",
    "value.converter.schema.registry.url": "http://schemaregistry0:8085"
  }
}

================================================
FILE: documentation/compose/connectors/start.sh
================================================
#! /bin/bash
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' kafka-connect0:8083)" != "200" ]]
    do sleep 5
done

echo "\n --------------Creating connectors..."
for filename in /connectors/*.json; do
  curl -X POST -H "Content-Type: application/json" -d @$filename http://kafka-connect0:8083/connectors
done


================================================
FILE: documentation/compose/data/message.json
================================================
{}

================================================
FILE: documentation/compose/data/proxy.conf
================================================
server {
    listen       80;
    server_name  localhost;

    location /kafka-ui {
#        rewrite /kafka-ui/(.*) /$1  break;
        proxy_pass   http://kafka-ui:8080;
    }
}


================================================
FILE: documentation/compose/e2e-tests.yaml
================================================
---
version: '3.5'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    healthcheck:
      test: wget --no-verbose --tries=1 --spider  http://localhost:8080/actuator/health
      interval: 30s
      timeout: 10s
      retries: 10
    depends_on:
      kafka0:
        condition: service_healthy
      schemaregistry0:
        condition: service_healthy
      kafka-connect0:
        condition: service_healthy
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
      KAFKA_CLUSTERS_0_KSQLDBSERVER: http://ksqldb:8088

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    healthcheck:
      test: unset JMX_PORT && KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9999" && kafka-broker-api-versions --bootstrap-server=localhost:9092
      interval: 30s
      timeout: 10s
      retries: 10
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  schemaregistry0:
    image: confluentinc/cp-schema-registry:7.2.1
    ports:
      - 8085:8085
    depends_on:
      kafka0:
        condition: service_healthy
    healthcheck:
      test: [ "CMD", "timeout", "1", "curl", "--silent", "--fail", "http://schemaregistry0:8085/subjects" ]
      interval: 30s
      timeout: 10s
      retries: 10
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas

  kafka-connect0:
    build:
      context: ./kafka-connect
      args:
        image: confluentinc/cp-kafka-connect:6.0.1
    ports:
      - 8083:8083
    depends_on:
      kafka0:
        condition: service_healthy
      schemaregistry0:
        condition: service_healthy
    healthcheck:
      test: [ "CMD", "nc", "127.0.0.1", "8083" ]
      interval: 30s
      timeout: 10s
      retries: 10
    environment:
      CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
      CONNECT_GROUP_ID: compose-connect-group
      CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_TOPIC: _connect_status
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
      CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
  #      AWS_ACCESS_KEY_ID: ""
  #      AWS_SECRET_ACCESS_KEY: ""

  kafka-init-topics:
    image: confluentinc/cp-kafka:7.2.1
    volumes:
      - ./data/message.json:/data/message.json
    depends_on:
      kafka0:
        condition: service_healthy
    command: "bash -c 'echo Waiting for Kafka to be ready... && \
               cub kafka-ready -b kafka0:29092 1 30 && \
               kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
               kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
               kafka-console-producer --bootstrap-server kafka0:29092 --topic users < /data/message.json'"

  postgres-db:
    build:
      context: ./postgres
      args:
        image: postgres:9.6.22
    ports:
      - 5432:5432
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U dev_user" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      POSTGRES_USER: 'dev_user'
      POSTGRES_PASSWORD: '12345'

  create-connectors:
    image: ellerbrock/alpine-bash-curl-ssl
    depends_on:
      postgres-db:
        condition: service_healthy
      kafka-connect0:
        condition: service_healthy
    volumes:
      - ./connectors:/connectors
    command: bash -c '/connectors/start.sh'

  ksqldb:
    image: confluentinc/ksqldb-server:0.18.0
    healthcheck:
      test: [ "CMD", "timeout", "1", "curl", "--silent", "--fail", "http://localhost:8088/info" ]
      interval: 30s
      timeout: 10s
      retries: 10
    depends_on:
      kafka0:
        condition: service_healthy
      kafka-connect0:
        condition: service_healthy
      schemaregistry0:
        condition: service_healthy
    ports:
      - 8088:8088
    environment:
      KSQL_CUB_KAFKA_TIMEOUT: 120
      KSQL_LISTENERS: http://0.0.0.0:8088
      KSQL_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
      KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
      KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
      KSQL_KSQL_CONNECT_URL: http://kafka-connect0:8083
      KSQL_KSQL_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      KSQL_KSQL_SERVICE_ID: my_ksql_1
      KSQL_KSQL_HIDDEN_TOPICS: '^_.*'
      KSQL_CACHE_MAX_BYTES_BUFFERING: 0


================================================
FILE: documentation/compose/jaas/client.properties
================================================
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

================================================
FILE: documentation/compose/jaas/kafka_connect.jaas
================================================
KafkaConnect {
  org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required
  file="/conf/kafka_connect.password";
};


================================================
FILE: documentation/compose/jaas/kafka_connect.password
================================================
admin: admin-secret


================================================
FILE: documentation/compose/jaas/kafka_server.conf
================================================
KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="admin"
    password="admin-secret"
    user_admin="admin-secret"
    user_enzo="cisternino";
};

KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    user_admin="admin-secret";
};

Client {
       org.apache.zookeeper.server.auth.DigestLoginModule required
       username="zkuser"
       password="zkuserpassword";
};


================================================
FILE: documentation/compose/jaas/schema_registry.jaas
================================================
SchemaRegistryProps {
  org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required
  file="/conf/schema_registry.password"
  debug="false";
};


================================================
FILE: documentation/compose/jaas/schema_registry.password
================================================
admin: OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x,admin

================================================
FILE: documentation/compose/jaas/zookeeper_jaas.conf
================================================
Server {
       org.apache.zookeeper.server.auth.DigestLoginModule required
       user_zkuser="zkuserpassword";
};


================================================
FILE: documentation/compose/jmx/jmxremote.access
================================================
root readwrite


================================================
FILE: documentation/compose/jmx/jmxremote.password
================================================
root password


================================================
FILE: documentation/compose/jmx-exporter/kafka-broker.yml
================================================
rules:
  - pattern: ".*"


================================================
FILE: documentation/compose/jmx-exporter/kafka-prepare-and-run
================================================
#!/usr/bin/env bash

JAVA_AGENT_FILE="/usr/share/jmx_exporter/jmx_prometheus_javaagent.jar"
if [ ! -f "$JAVA_AGENT_FILE" ]
then
  echo "Downloading jmx_exporter javaagent"
  curl -o $JAVA_AGENT_FILE https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar
fi

exec /etc/confluent/docker/run

================================================
FILE: documentation/compose/kafka-cluster-sr-auth.yaml
================================================
---
version: '2'
services:

  kafka1:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka1
    container_name: kafka1
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka1:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka1:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka1:29092,CONTROLLER://kafka1:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  schemaregistry1:
    image: confluentinc/cp-schema-registry:7.2.1
    ports:
      - 18085:8085
    depends_on:
      - kafka1
    volumes:
      - ./jaas:/conf
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry1
      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry1:8085

      # Default credentials: admin/letmein
      SCHEMA_REGISTRY_AUTHENTICATION_METHOD: BASIC
      SCHEMA_REGISTRY_AUTHENTICATION_REALM: SchemaRegistryProps
      SCHEMA_REGISTRY_AUTHENTICATION_ROLES: admin
      SCHEMA_REGISTRY_OPTS: -Djava.security.auth.login.config=/conf/schema_registry.jaas

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas

  kafka-init-topics:
    image: confluentinc/cp-kafka:7.2.1
    volumes:
       - ./data/message.json:/data/message.json
    depends_on:
      - kafka1
    command: "bash -c 'echo Waiting for Kafka to be ready... && \
               cub kafka-ready -b kafka1:29092 1 30 && \
               kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
               kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
               kafka-console-producer --bootstrap-server kafka1:29092 --topic users < /data/message.json'"

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka1
      - schemaregistry1
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka1:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry1:8085
      KAFKA_CLUSTERS_0_SCHEMAREGISTRYAUTH_USERNAME: admin
      KAFKA_CLUSTERS_0_SCHEMAREGISTRYAUTH_PASSWORD: letmein


================================================
FILE: documentation/compose/kafka-connect/Dockerfile
================================================
ARG image
FROM ${image}

## Install connectors
RUN echo "\nInstalling all required connectors...\n" && \
confluent-hub install --no-prompt confluentinc/kafka-connect-jdbc:latest && \
confluent-hub install --no-prompt confluentinc/kafka-connect-github:latest && \
confluent-hub install --no-prompt confluentinc/kafka-connect-s3:latest

================================================
FILE: documentation/compose/kafka-ssl-components.yaml
================================================
---
version: '3.4'
services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
      - schemaregistry0
      - kafka-connect0
      - ksqldb0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SSL
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092 # SSL LISTENER!
      KAFKA_CLUSTERS_0_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # DISABLE COMMON NAME VERIFICATION

      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: https://schemaregistry0:8085
      KAFKA_CLUSTERS_0_SCHEMAREGISTRYSSL_KEYSTORELOCATION: /kafka.keystore.jks
      KAFKA_CLUSTERS_0_SCHEMAREGISTRYSSL_KEYSTOREPASSWORD: "secret"

      KAFKA_CLUSTERS_0_KSQLDBSERVER: https://ksqldb0:8088
      KAFKA_CLUSTERS_0_KSQLDBSERVERSSL_KEYSTORELOCATION: /kafka.keystore.jks
      KAFKA_CLUSTERS_0_KSQLDBSERVERSSL_KEYSTOREPASSWORD: "secret"

      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: local
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: https://kafka-connect0:8083
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_KEYSTORELOCATION: /kafka.keystore.jks
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_KEYSTOREPASSWORD: "secret"

      KAFKA_CLUSTERS_0_SSL_TRUSTSTORELOCATION: /kafka.truststore.jks
      KAFKA_CLUSTERS_0_SSL_TRUSTSTOREPASSWORD: "secret"
      DYNAMIC_CONFIG_ENABLED: 'true'  # not necessary for ssl, added for tests

    volumes:
      - ./ssl/kafka.truststore.jks:/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/kafka.keystore.jks

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SSL:SSL,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'SSL://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'SSL'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      KAFKA_SECURITY_PROTOCOL: SSL
      KAFKA_SSL_ENABLED_MECHANISMS: PLAIN,SSL
      KAFKA_SSL_KEYSTORE_FILENAME: kafka.keystore.jks
      KAFKA_SSL_KEYSTORE_CREDENTIALS: creds
      KAFKA_SSL_KEY_CREDENTIALS: creds
      KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.truststore.jks
      KAFKA_SSL_TRUSTSTORE_CREDENTIALS: creds
      #KAFKA_SSL_CLIENT_AUTH: 'required'
      KAFKA_SSL_CLIENT_AUTH: 'requested'
      KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # COMMON NAME VERIFICATION IS DISABLED SERVER-SIDE
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
      - ./ssl/creds:/etc/kafka/secrets/creds
      - ./ssl/kafka.truststore.jks:/etc/kafka/secrets/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/etc/kafka/secrets/kafka.keystore.jks
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  schemaregistry0:
    image: confluentinc/cp-schema-registry:7.2.1
    depends_on:
      - kafka0
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: SSL://kafka0:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: SSL
      SCHEMA_REGISTRY_KAFKASTORE_SSL_TRUSTSTORE_LOCATION: /kafka.truststore.jks
      SCHEMA_REGISTRY_KAFKASTORE_SSL_TRUSTSTORE_PASSWORD: secret
      SCHEMA_REGISTRY_KAFKASTORE_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
      SCHEMA_REGISTRY_KAFKASTORE_SSL_KEYSTORE_PASSWORD: secret
      SCHEMA_REGISTRY_KAFKASTORE_SSL_KEY_PASSWORD: secret
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
      SCHEMA_REGISTRY_LISTENERS: https://schemaregistry0:8085
      SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: https

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "https"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas
      SCHEMA_REGISTRY_SSL_CLIENT_AUTHENTICATION: "REQUIRED"
      SCHEMA_REGISTRY_SSL_TRUSTSTORE_LOCATION: /kafka.truststore.jks
      SCHEMA_REGISTRY_SSL_TRUSTSTORE_PASSWORD: secret
      SCHEMA_REGISTRY_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
      SCHEMA_REGISTRY_SSL_KEYSTORE_PASSWORD: secret
      SCHEMA_REGISTRY_SSL_KEY_PASSWORD: secret
    ports:
      - 8085:8085
    volumes:
      - ./ssl/kafka.truststore.jks:/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/kafka.keystore.jks

  kafka-connect0:
    image: confluentinc/cp-kafka-connect:7.2.1
    ports:
      - 8083:8083
    depends_on:
      - kafka0
      - schemaregistry0
    environment:
      CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
      CONNECT_GROUP_ID: compose-connect-group
      CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_TOPIC: _connect_status
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: https://schemaregistry0:8085
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: https://schemaregistry0:8085
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
      CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
      CONNECT_SECURITY_PROTOCOL: "SSL"
      CONNECT_SSL_KEYSTORE_LOCATION: "/kafka.keystore.jks"
      CONNECT_SSL_KEY_PASSWORD: "secret"
      CONNECT_SSL_KEYSTORE_PASSWORD: "secret"
      CONNECT_SSL_TRUSTSTORE_LOCATION: "/kafka.truststore.jks"
      CONNECT_SSL_TRUSTSTORE_PASSWORD: "secret"
      CONNECT_SSL_CLIENT_AUTH: "requested"
      CONNECT_REST_ADVERTISED_LISTENER: "https"
      CONNECT_LISTENERS: "https://kafka-connect0:8083"
    volumes:
      - ./ssl/kafka.truststore.jks:/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/kafka.keystore.jks

  ksqldb0:
    image: confluentinc/ksqldb-server:0.18.0
    depends_on:
      - kafka0
      - kafka-connect0
      - schemaregistry0
    ports:
      - 8088:8088
    environment:
      KSQL_CUB_KAFKA_TIMEOUT: 120
      KSQL_LISTENERS: https://0.0.0.0:8088
      KSQL_BOOTSTRAP_SERVERS: SSL://kafka0:29092
      KSQL_SECURITY_PROTOCOL: SSL
      KSQL_SSL_TRUSTSTORE_LOCATION: /kafka.truststore.jks
      KSQL_SSL_TRUSTSTORE_PASSWORD: secret
      KSQL_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
      KSQL_SSL_KEYSTORE_PASSWORD: secret
      KSQL_SSL_KEY_PASSWORD: secret
      KSQL_SSL_CLIENT_AUTHENTICATION: REQUIRED
      KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
      KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
      KSQL_KSQL_CONNECT_URL: https://kafka-connect0:8083
      KSQL_KSQL_SCHEMA_REGISTRY_URL: https://schemaregistry0:8085
      KSQL_KSQL_SERVICE_ID: my_ksql_1
      KSQL_KSQL_HIDDEN_TOPICS: '^_.*'
      KSQL_CACHE_MAX_BYTES_BUFFERING: 0
    volumes:
      - ./ssl/kafka.truststore.jks:/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/kafka.keystore.jks


================================================
FILE: documentation/compose/kafka-ssl.yml
================================================
---
version: '3.4'
services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SSL
      KAFKA_CLUSTERS_0_PROPERTIES_SSL_KEYSTORE_LOCATION: /kafka.keystore.jks
      KAFKA_CLUSTERS_0_PROPERTIES_SSL_KEYSTORE_PASSWORD: "secret"
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 # SSL LISTENER!
      KAFKA_CLUSTERS_0_SSL_TRUSTSTORELOCATION: /kafka.truststore.jks
      KAFKA_CLUSTERS_0_SSL_TRUSTSTOREPASSWORD: "secret"
      KAFKA_CLUSTERS_0_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # DISABLE COMMON NAME VERIFICATION
    volumes:
      - ./ssl/kafka.truststore.jks:/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/kafka.keystore.jks

  kafka:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka
    container_name: kafka
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SSL:SSL,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'SSL://kafka:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
      KAFKA_LISTENERS: 'SSL://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'SSL'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      KAFKA_SECURITY_PROTOCOL: SSL
      KAFKA_SSL_ENABLED_MECHANISMS: PLAIN,SSL
      KAFKA_SSL_KEYSTORE_FILENAME: kafka.keystore.jks
      KAFKA_SSL_KEYSTORE_CREDENTIALS: creds
      KAFKA_SSL_KEY_CREDENTIALS: creds
      KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.truststore.jks
      KAFKA_SSL_TRUSTSTORE_CREDENTIALS: creds
      #KAFKA_SSL_CLIENT_AUTH: 'required'
      KAFKA_SSL_CLIENT_AUTH: 'requested'
      KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM: '' # COMMON NAME VERIFICATION IS DISABLED SERVER-SIDE
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
      - ./ssl/creds:/etc/kafka/secrets/creds
      - ./ssl/kafka.truststore.jks:/etc/kafka/secrets/kafka.truststore.jks
      - ./ssl/kafka.keystore.jks:/etc/kafka/secrets/kafka.keystore.jks
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"


================================================
FILE: documentation/compose/kafka-ui-acl-with-zk.yaml
================================================
---
version: '2'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - zookeeper
      - kafka
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
      KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SASL_PLAINTEXT
      KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM: PLAIN
      KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";'

  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    environment:
      JVMFLAGS: "-Djava.security.auth.login.config=/etc/zookeeper/zookeeper_jaas.conf"
    volumes:
      - ./jaas/zookeeper_jaas.conf:/etc/zookeeper/zookeeper_jaas.conf
    ports:
      - 2181:2181

  kafka:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka
    container_name: kafka
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/jaas/kafka_server.conf"
      KAFKA_AUTHORIZER_CLASS_NAME: "kafka.security.authorizer.AclAuthorizer"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
      KAFKA_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'SASL_PLAINTEXT'
      KAFKA_SASL_ENABLED_MECHANISMS: 'PLAIN'
      KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: 'PLAIN'
      KAFKA_SECURITY_PROTOCOL: 'SASL_PLAINTEXT'
      KAFKA_SUPER_USERS: 'User:admin'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
      - ./jaas:/etc/kafka/jaas


================================================
FILE: documentation/compose/kafka-ui-arm64.yaml
================================================
# ARM64 supported images for kafka can be found here
# https://hub.docker.com/r/confluentinc/cp-kafka/tags?page=1&name=arm64
---
version: '2'
services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
      - schema-registry0
      - kafka-connect0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry0:8085
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
      DYNAMIC_CONFIG_ENABLED: 'true'  # not necessary, added for tests
      KAFKA_CLUSTERS_0_AUDIT_TOPICAUDITENABLED: 'true'
      KAFKA_CLUSTERS_0_AUDIT_CONSOLEAUDITENABLED: 'true'

  kafka0:
    image: confluentinc/cp-kafka:7.2.1.arm64
    hostname: kafka0
    container_name: kafka0
    ports:
      - 9092:9092
      - 9997:9997
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  schema-registry0:
    image: confluentinc/cp-schema-registry:7.2.1.arm64
    ports:
      - 8085:8085
    depends_on:
      - kafka0
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schema-registry0
      SCHEMA_REGISTRY_LISTENERS: http://schema-registry0:8085

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas

  kafka-connect0:
    image: confluentinc/cp-kafka-connect:7.2.1.arm64
    ports:
      - 8083:8083
    depends_on:
      - kafka0
      - schema-registry0
    environment:
      CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
      CONNECT_GROUP_ID: compose-connect-group
      CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_TOPIC: _connect_status
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry0:8085
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schema-registry0:8085
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
      CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"

  kafka-init-topics:
    image: confluentinc/cp-kafka:7.2.1.arm64
    volumes:
       - ./data/message.json:/data/message.json
    depends_on:
      - kafka0
    command: "bash -c 'echo Waiting for Kafka to be ready... && \
               cub kafka-ready -b kafka0:29092 1 30 && \
               kafka-topics --create --topic second.users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
               kafka-topics --create --topic second.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
               kafka-topics --create --topic first.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
               kafka-console-producer --bootstrap-server kafka0:29092 --topic second.users < /data/message.json'"


================================================
FILE: documentation/compose/kafka-ui-auth-context.yaml
================================================
---
version: '2'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      SERVER_SERVLET_CONTEXT_PATH: /kafkaui
      AUTH_TYPE: "LOGIN_FORM"
      SPRING_SECURITY_USER_NAME: admin
      SPRING_SECURITY_USER_PASSWORD: pass

  kafka:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka
    container_name: kafka
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

================================================
FILE: documentation/compose/kafka-ui-connectors-auth.yaml
================================================
---
version: "2"
services:
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
      - schemaregistry0
      - kafka-connect0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_USERNAME: admin
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_PASSWORD: admin-secret

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
      KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
      KAFKA_PROCESS_ROLES: "broker,controller"
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka0:29093"
      KAFKA_LISTENERS: "PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092"
      KAFKA_INTER_BROKER_LISTENER_NAME: "PLAINTEXT"
      KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
      KAFKA_LOG_DIRS: "/tmp/kraft-combined-logs"
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: 'bash -c ''if [ ! -f /tmp/update_run.sh ]; then echo "ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'''

  schemaregistry0:
    image: confluentinc/cp-schema-registry:7.2.1
    ports:
      - 8085:8085
    depends_on:
      - kafka0
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas

  kafka-connect0:
    build:
      context: ./kafka-connect
      args:
        image: confluentinc/cp-kafka-connect:7.2.1
    ports:
      - 8083:8083
    depends_on:
      - kafka0
      - schemaregistry0
    volumes:
      - ./jaas:/conf
    environment:
      CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
      CONNECT_GROUP_ID: compose-connect-group
      CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_TOPIC: _connect_status
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
      CONNECT_REST_PORT: 8083
      CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"
      CONNECT_REST_EXTENSION_CLASSES: "org.apache.kafka.connect.rest.basic.auth.extension.BasicAuthSecurityRestExtension"
      KAFKA_OPTS: "-Djava.security.auth.login.config=/conf/kafka_connect.jaas"

  #      AWS_ACCESS_KEY_ID: ""
  #      AWS_SECRET_ACCESS_KEY: ""

  kafka-init-topics:
    image: confluentinc/cp-kafka:7.2.1
    volumes:
      - ./data/message.json:/data/message.json
    depends_on:
      - kafka0
    command: "bash -c 'echo Waiting for Kafka to be ready... && \
      cub kafka-ready -b kafka0:29092 1 30 && \
      kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
      kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
      kafka-console-producer --bootstrap-server kafka0:29092 --topic users < /data/message.json'"


================================================
FILE: documentation/compose/kafka-ui-jmx-secured.yml
================================================
---
version: '2'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_METRICS_USERNAME: root
      KAFKA_CLUSTERS_0_METRICS_PASSWORD: password
      KAFKA_CLUSTERS_0_METRICS_KEYSTORE_LOCATION: /jmx/clientkeystore
      KAFKA_CLUSTERS_0_METRICS_KEYSTORE_PASSWORD: '12345678'
      KAFKA_CLUSTERS_0_SSL_TRUSTSTORE_LOCATION: /jmx/clienttruststore
      KAFKA_CLUSTERS_0_SSL_TRUSTSTORE_PASSWORD: '12345678'
    volumes:
      - ./jmx/clienttruststore:/jmx/clienttruststore
      - ./jmx/clientkeystore:/jmx/clientkeystore

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    ports:
      - 9092:9092
      - 9997:9997
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      # CHMOD 700 FOR JMXREMOTE.* FILES
      KAFKA_JMX_OPTS: >-
        -Dcom.sun.management.jmxremote
        -Dcom.sun.management.jmxremote.authenticate=true
        -Dcom.sun.management.jmxremote.ssl=true
        -Dcom.sun.management.jmxremote.registry.ssl=true
        -Dcom.sun.management.jmxremote.ssl.need.client.auth=true
        -Djavax.net.ssl.keyStore=/jmx/serverkeystore
        -Djavax.net.ssl.keyStorePassword=12345678
        -Djavax.net.ssl.trustStore=/jmx/servertruststore
        -Djavax.net.ssl.trustStorePassword=12345678
        -Dcom.sun.management.jmxremote.password.file=/jmx/jmxremote.password
        -Dcom.sun.management.jmxremote.access.file=/jmx/jmxremote.access
        -Dcom.sun.management.jmxremote.rmi.port=9997
        -Djava.rmi.server.hostname=kafka0
    volumes:
      - ./jmx/serverkeystore:/jmx/serverkeystore
      - ./jmx/servertruststore:/jmx/servertruststore
      - ./jmx/jmxremote.password:/jmx/jmxremote.password
      - ./jmx/jmxremote.access:/jmx/jmxremote.access
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"


================================================
FILE: documentation/compose/kafka-ui-sasl.yaml
================================================
---
version: '2'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
      KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL: SASL_PLAINTEXT
      KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM: PLAIN
      KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";'
      DYNAMIC_CONFIG_ENABLED: true # not necessary for sasl auth, added for tests

  kafka:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka
    container_name: kafka
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/jaas/kafka_server.conf"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka:29093'
      KAFKA_LISTENERS: 'SASL_PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'SASL_PLAINTEXT'
      KAFKA_SASL_ENABLED_MECHANISMS: 'PLAIN'
      KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: 'PLAIN'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      KAFKA_SECURITY_PROTOCOL: 'SASL_PLAINTEXT'
      KAFKA_SUPER_USERS: 'User:admin,User:enzo'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
      - ./jaas:/etc/kafka/jaas
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"


================================================
FILE: documentation/compose/kafka-ui-serdes.yaml
================================================
---
version: '2'
services:

    kafka-ui:
        container_name: kafka-ui
        image: provectuslabs/kafka-ui:latest
        ports:
            - 8080:8080
        depends_on:
            - kafka0
            - schemaregistry0
        environment:
            kafka.clusters.0.name: SerdeExampleCluster
            kafka.clusters.0.bootstrapServers: kafka0:29092
            kafka.clusters.0.schemaRegistry: http://schemaregistry0:8085

            # optional SSL settings for cluster (will be used by SchemaRegistry serde, if set)
            #kafka.clusters.0.ssl.keystoreLocation: /kafka.keystore.jks
            #kafka.clusters.0.ssl.keystorePassword: "secret"
            #kafka.clusters.0.ssl.truststoreLocation: /kafka.truststore.jks
            #kafka.clusters.0.ssl.truststorePassword: "secret"

            # optional auth properties for SR
            #kafka.clusters.0.schemaRegistryAuth.username: "use"
            #kafka.clusters.0.schemaRegistryAuth.password: "pswrd"

            kafka.clusters.0.defaultKeySerde: Int32  #optional
            kafka.clusters.0.defaultValueSerde: String #optional

            kafka.clusters.0.serde.0.name: ProtobufFile
            kafka.clusters.0.serde.0.topicKeysPattern: "topic1"
            kafka.clusters.0.serde.0.topicValuesPattern: "topic1"
            kafka.clusters.0.serde.0.properties.protobufFilesDir: /protofiles/
            kafka.clusters.0.serde.0.properties.protobufMessageNameForKey: test.MyKey # default type for keys
            kafka.clusters.0.serde.0.properties.protobufMessageName: test.MyValue # default type for values
            kafka.clusters.0.serde.0.properties.protobufMessageNameForKeyByTopic.topic1: test.MySpecificTopicKey # keys type for topic "topic1"
            kafka.clusters.0.serde.0.properties.protobufMessageNameByTopic.topic1: test.MySpecificTopicValue # values type for topic "topic1"

            kafka.clusters.0.serde.1.name: String
            #kafka.clusters.0.serde.1.properties.encoding: "UTF-16" #optional, default is UTF-8
            kafka.clusters.0.serde.1.topicValuesPattern: "json-events|text-events"

            kafka.clusters.0.serde.2.name: AsciiString
            kafka.clusters.0.serde.2.className: com.provectus.kafka.ui.serdes.builtin.StringSerde
            kafka.clusters.0.serde.2.properties.encoding: "ASCII"

            kafka.clusters.0.serde.3.name: SchemaRegistry # will be configured automatically using cluster SR
            kafka.clusters.0.serde.3.topicValuesPattern: "sr-topic.*"

            kafka.clusters.0.serde.4.name: AnotherSchemaRegistry
            kafka.clusters.0.serde.4.className: com.provectus.kafka.ui.serdes.builtin.sr.SchemaRegistrySerde
            kafka.clusters.0.serde.4.properties.url: http://schemaregistry0:8085
            kafka.clusters.0.serde.4.properties.keySchemaNameTemplate: "%s-key"
            kafka.clusters.0.serde.4.properties.schemaNameTemplate: "%s-value"
            #kafka.clusters.0.serde.4.topicValuesPattern: "sr2-topic.*"
            # optional auth and ssl properties for SR (overrides cluster-level):
            #kafka.clusters.0.serde.4.properties.username: "user"
            #kafka.clusters.0.serde.4.properties.password: "passw"
            #kafka.clusters.0.serde.4.properties.keystoreLocation:  /kafka.keystore.jks
            #kafka.clusters.0.serde.4.properties.keystorePassword: "secret"
            #kafka.clusters.0.serde.4.properties.truststoreLocation: /kafka.truststore.jks
            #kafka.clusters.0.serde.4.properties.truststorePassword: "secret"

            kafka.clusters.0.serde.5.name: UInt64
            kafka.clusters.0.serde.5.topicKeysPattern: "topic-with-uint64keys"
        volumes:
            - ./proto:/protofiles

    kafka0:
        image: confluentinc/cp-kafka:7.2.1
        hostname: kafka0
        container_name: kafka0
        ports:
            - "9092:9092"
            - "9997:9997"
        environment:
            KAFKA_BROKER_ID: 1
            KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
            KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
            KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
            KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
            KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
            KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
            KAFKA_JMX_PORT: 9997
            KAFKA_JMX_HOSTNAME: localhost
            KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
            KAFKA_PROCESS_ROLES: 'broker,controller'
            KAFKA_NODE_ID: 1
            KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
            KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
            KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
            KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
            KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
        volumes:
            - ./scripts/update_run.sh:/tmp/update_run.sh
        command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

    schemaregistry0:
        image: confluentinc/cp-schema-registry:7.2.1
        ports:
            - 8085:8085
        depends_on:
            - kafka0
        environment:
            SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
            SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
            SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
            SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085

            SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
            SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
            SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas


================================================
FILE: documentation/compose/kafka-ui-with-jmx-exporter.yaml
================================================
---
version: '2'
services:

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    ports:
      - "9092:9092"
      - "11001:11001"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
      KAFKA_OPTS: -javaagent:/usr/share/jmx_exporter/jmx_prometheus_javaagent.jar=11001:/usr/share/jmx_exporter/kafka-broker.yml
    volumes:
      - ./jmx-exporter:/usr/share/jmx_exporter/
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /usr/share/jmx_exporter/kafka-prepare-and-run ; fi'"

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 11001
      KAFKA_CLUSTERS_0_METRICS_TYPE: PROMETHEUS


================================================
FILE: documentation/compose/kafka-ui.yaml
================================================
---
version: '2'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
      - kafka1
      - schemaregistry0
      - schemaregistry1
      - kafka-connect0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME: first
      KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS: http://kafka-connect0:8083
      KAFKA_CLUSTERS_1_NAME: secondLocal
      KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS: kafka1:29092
      KAFKA_CLUSTERS_1_METRICS_PORT: 9998
      KAFKA_CLUSTERS_1_SCHEMAREGISTRY: http://schemaregistry1:8085
      DYNAMIC_CONFIG_ENABLED: 'true'

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  kafka1:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka1
    container_name: kafka1
    ports:
      - "9093:9092"
      - "9998:9998"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka1:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9998
      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9998
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka1:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka1:29092,CONTROLLER://kafka1:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  schemaregistry0:
    image: confluentinc/cp-schema-registry:7.2.1
    ports:
      - 8085:8085
    depends_on:
      - kafka0
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas

  schemaregistry1:
    image: confluentinc/cp-schema-registry:7.2.1
    ports:
      - 18085:8085
    depends_on:
      - kafka1
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka1:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry1
      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry1:8085

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas

  kafka-connect0:
    image: confluentinc/cp-kafka-connect:7.2.1
    ports:
      - 8083:8083
    depends_on:
      - kafka0
      - schemaregistry0
    environment:
      CONNECT_BOOTSTRAP_SERVERS: kafka0:29092
      CONNECT_GROUP_ID: compose-connect-group
      CONNECT_CONFIG_STORAGE_TOPIC: _connect_configs
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_STORAGE_TOPIC: _connect_offset
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_TOPIC: _connect_status
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.storage.StringConverter
      CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: http://schemaregistry0:8085
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect0
      CONNECT_PLUGIN_PATH: "/usr/share/java,/usr/share/confluent-hub-components"

  kafka-init-topics:
    image: confluentinc/cp-kafka:7.2.1
    volumes:
       - ./data/message.json:/data/message.json
    depends_on:
      - kafka1
    command: "bash -c 'echo Waiting for Kafka to be ready... && \
               cub kafka-ready -b kafka1:29092 1 30 && \
               kafka-topics --create --topic second.users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
               kafka-topics --create --topic second.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka1:29092 && \
               kafka-topics --create --topic first.messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka0:29092 && \
               kafka-console-producer --bootstrap-server kafka1:29092 -topic second.users < /data/message.json'"


================================================
FILE: documentation/compose/kafka-with-zookeeper.yaml
================================================
---
version: '2'
services:

  zookeeper:
    image: confluentinc/cp-zookeeper:7.2.1
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka:
    image: confluentinc/cp-server:7.2.1
    hostname: kafka
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: kafka

  kafka-init-topics:
    image: confluentinc/cp-kafka:7.2.1
    volumes:
       - ./data/message.json:/data/message.json
    depends_on:
      - kafka
    command: "bash -c 'echo Waiting for Kafka to be ready... && \
               cub kafka-ready -b kafka:29092 1 30 && \
               kafka-topics --create --topic users --partitions 3 --replication-factor 1 --if-not-exists --bootstrap-server kafka:29092 && \
               kafka-topics --create --topic messages --partitions 2 --replication-factor 1 --if-not-exists --bootstrap-server kafka:29092 && \
               kafka-console-producer --bootstrap-server kafka:29092 --topic users < /data/message.json'"


================================================
FILE: documentation/compose/ldap.yaml
================================================
---
version: '2'
services:

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - kafka0
      - schemaregistry0
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092
      KAFKA_CLUSTERS_0_METRICS_PORT: 9997
      KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schemaregistry0:8085

      AUTH_TYPE: "LDAP"
      SPRING_LDAP_URLS: "ldap://ldap:10389"
      SPRING_LDAP_BASE: "cn={0},ou=people,dc=planetexpress,dc=com"
      SPRING_LDAP_ADMIN_USER: "cn=admin,dc=planetexpress,dc=com"
      SPRING_LDAP_ADMIN_PASSWORD: "GoodNewsEveryone"
      SPRING_LDAP_USER_FILTER_SEARCH_BASE: "dc=planetexpress,dc=com"
      SPRING_LDAP_USER_FILTER_SEARCH_FILTER: "(&(uid={0})(objectClass=inetOrgPerson))"
      SPRING_LDAP_GROUP_FILTER_SEARCH_BASE: "ou=people,dc=planetexpress,dc=com"
#     OAUTH2.LDAP.ACTIVEDIRECTORY: true
#     OAUTH2.LDAP.AСTIVEDIRECTORY.DOMAIN: "memelord.lol"

  ldap:
    image: rroemhild/test-openldap:latest
    hostname: "ldap"
    ports:
      - 10389:10389

  kafka0:
    image: confluentinc/cp-kafka:7.2.1
    hostname: kafka0
    container_name: kafka0
    ports:
      - "9092:9092"
      - "9997:9997"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT'
      KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092'
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9997
      KAFKA_JMX_HOSTNAME: localhost
      KAFKA_JMX_OPTS: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka0 -Dcom.sun.management.jmxremote.rmi.port=9997
      KAFKA_PROCESS_ROLES: 'broker,controller'
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: '1@kafka0:29093'
      KAFKA_LISTENERS: 'PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://0.0.0.0:9092'
      KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
      KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
      KAFKA_LOG_DIRS: '/tmp/kraft-combined-logs'
    volumes:
      - ./scripts/update_run.sh:/tmp/update_run.sh
    command: "bash -c 'if [ ! -f /tmp/update_run.sh ]; then echo \"ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?\" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'"

  schemaregistry0:
    image: confluentinc/cp-schema-registry:7.2.1
    ports:
      - 8085:8085
    depends_on:
      - kafka0
    environment:
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka0:29092
      SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL: PLAINTEXT
      SCHEMA_REGISTRY_HOST_NAME: schemaregistry0
      SCHEMA_REGISTRY_LISTENERS: http://schemaregistry0:8085

      SCHEMA_REGISTRY_SCHEMA_REGISTRY_INTER_INSTANCE_PROTOCOL: "http"
      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: INFO
      SCHEMA_REGISTRY_KAFKASTORE_TOPIC: _schemas


================================================
FILE: documentation/compose/nginx-proxy.yaml
================================================
---
version: '2'
services:
  nginx:
    image: nginx:latest
    volumes:
      - ./data/proxy.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8080:80

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8082:8080
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
      SERVER_SERVLET_CONTEXT_PATH: /kafka-ui


================================================
FILE: documentation/compose/postgres/Dockerfile
================================================
ARG image

FROM ${image}

MAINTAINER Provectus Team

ADD data.sql /docker-entrypoint-initdb.d

EXPOSE 5432

================================================
FILE: documentation/compose/postgres/data.sql
================================================
CREATE DATABASE test WITH OWNER = dev_user;
\connect test

CREATE TABLE activities
(
    id        INTEGER PRIMARY KEY,
    msg       varchar(24),
    action    varchar(128),
    browser   varchar(24),
    device    json,
    createdAt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);

insert into activities(id, action, msg, browser, device)
values (1, 'LOGIN', 'Success', 'Chrome', '{
  "name": "Chrome",
  "major": "67",
  "version": "67.0.3396.99"
}'),
       (2, 'LOGIN', 'Failed', 'Apple WebKit', '{
         "name": "WebKit",
         "major": "605",
         "version": "605.1.15"
       }');

================================================
FILE: documentation/compose/proto/key-types.proto
================================================
syntax = "proto3";
package test;

import "google/protobuf/wrappers.proto";

message MyKey {
    string myKeyF1 = 1;
    google.protobuf.UInt64Value uint_64_wrapper = 2;
}

message MySpecificTopicKey {
    string special_field1 = 1;
    string special_field2 = 2;
    google.protobuf.FloatValue float_wrapper = 3;
}


================================================
FILE: documentation/compose/proto/values.proto
================================================
syntax = "proto3";
package test;

message MySpecificTopicValue {
    string f1 = 1;
    string f2 = 2;
}

message MyValue {
  int32 version = 1;
  string payload = 2;
  map<int32, string> intToStringMap = 3;
  map<string, MyValue> strToObjMap  = 4;
}


================================================
FILE: documentation/compose/scripts/clusterID
================================================
zlFiTJelTOuhnklFwLWixw

================================================
FILE: documentation/compose/scripts/create_cluster_id.sh
================================================
kafka-storage random-uuid > /workspace/kafka-ui/documentation/compose/clusterID

================================================
FILE: documentation/compose/scripts/update_run.sh
================================================
# This script is required to run kafka cluster (without zookeeper)
#!/bin/sh

# Docker workaround: Remove check for KAFKA_ZOOKEEPER_CONNECT parameter
sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure

# Docker workaround: Ignore cub zk-ready
sed -i 's/cub zk-ready/echo ignore zk-ready/' /etc/confluent/docker/ensure

# KRaft required step: Format the storage directory with a new cluster ID
echo "kafka-storage format --ignore-formatted -t $(kafka-storage random-uuid) -c /etc/kafka/kafka.properties" >> /etc/confluent/docker/ensure

================================================
FILE: documentation/compose/scripts/update_run_cluster.sh
================================================
# This script is required to run kafka cluster (without zookeeper)
#!/bin/sh

# Docker workaround: Remove check for KAFKA_ZOOKEEPER_CONNECT parameter
sed -i '/KAFKA_ZOOKEEPER_CONNECT/d' /etc/confluent/docker/configure

# Docker workaround: Ignore cub zk-ready
sed -i 's/cub zk-ready/echo ignore zk-ready/' /etc/confluent/docker/ensure

# KRaft required step: Format the storage directory with a new cluster ID
echo "kafka-storage format --ignore-formatted -t $(cat /tmp/clusterID) -c /etc/kafka/kafka.properties" >> /etc/confluent/docker/ensure

================================================
FILE: documentation/compose/ssl/creds
================================================
secret

================================================
FILE: documentation/compose/ssl/generate_certs.sh
================================================
#!/usr/bin/env bash

set -eu

KEYSTORE_FILENAME="kafka.keystore.jks"
VALIDITY_IN_DAYS=3650
DEFAULT_TRUSTSTORE_FILENAME="kafka.truststore.jks"
TRUSTSTORE_WORKING_DIRECTORY="truststore"
KEYSTORE_WORKING_DIRECTORY="keystore"
CA_CERT_FILE="ca-cert"
KEYSTORE_SIGN_REQUEST="cert-file"
KEYSTORE_SIGN_REQUEST_SRL="ca-cert.srl"
KEYSTORE_SIGNED_CERT="cert-signed"

export COUNTRY=US
export STATE=IL
export ORGANIZATION_UNIT=SE
export CITY=Chicago
export PASSWORD=secret

COUNTRY=$COUNTRY
STATE=$STATE
OU=$ORGANIZATION_UNIT
CN=kafka0 # COMMON NAME VERIFICATION GOES BRR
LOCATION=$CITY
PASS=$PASSWORD

function file_exists_and_exit() {
  echo "'$1' cannot exist. Move or delete it before"
  echo "re-running this script."
  exit 1
}

if [ -e "$KEYSTORE_WORKING_DIRECTORY" ]; then
  file_exists_and_exit $KEYSTORE_WORKING_DIRECTORY
fi

if [ -e "$CA_CERT_FILE" ]; then
  file_exists_and_exit $CA_CERT_FILE
fi

if [ -e "$KEYSTORE_SIGN_REQUEST" ]; then
  file_exists_and_exit $KEYSTORE_SIGN_REQUEST
fi

if [ -e "$KEYSTORE_SIGN_REQUEST_SRL" ]; then
  file_exists_and_exit $KEYSTORE_SIGN_REQUEST_SRL
fi

if [ -e "$KEYSTORE_SIGNED_CERT" ]; then
  file_exists_and_exit $KEYSTORE_SIGNED_CERT
fi

echo "Welcome to the Kafka SSL keystore and trust store generator script."

trust_store_file=""
trust_store_private_key_file=""

  if [ -e "$TRUSTSTORE_WORKING_DIRECTORY" ]; then
    file_exists_and_exit $TRUSTSTORE_WORKING_DIRECTORY
  fi

  mkdir $TRUSTSTORE_WORKING_DIRECTORY
  echo
  echo "OK, we'll generate a trust store and associated private key."
  echo
  echo "First, the private key."
  echo

  openssl req -new -x509 -keyout $TRUSTSTORE_WORKING_DIRECTORY/ca-key \
    -out $TRUSTSTORE_WORKING_DIRECTORY/ca-cert -days $VALIDITY_IN_DAYS -nodes \
    -subj "/C=$COUNTRY/ST=$STATE/L=$LOCATION/O=$OU/CN=$CN"

  trust_store_private_key_file="$TRUSTSTORE_WORKING_DIRECTORY/ca-key"

  echo
  echo "Two files were created:"
  echo " - $TRUSTSTORE_WORKING_DIRECTORY/ca-key -- the private key used later to"
  echo "   sign certificates"
  echo " - $TRUSTSTORE_WORKING_DIRECTORY/ca-cert -- the certificate that will be"
  echo "   stored in the trust store in a moment and serve as the certificate"
  echo "   authority (CA). Once this certificate has been stored in the trust"
  echo "   store, it will be deleted. It can be retrieved from the trust store via:"
  echo "   $ keytool -keystore <trust-store-file> -export -alias CARoot -rfc"

  echo
  echo "Now the trust store will be generated from the certificate."
  echo

  keytool -keystore $TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME \
    -alias CARoot -import -file $TRUSTSTORE_WORKING_DIRECTORY/ca-cert \
    -noprompt -dname "C=$COUNTRY, ST=$STATE, L=$LOCATION, O=$OU, CN=$CN" -keypass $PASS -storepass $PASS -storetype JKS

  trust_store_file="$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME"

  echo
  echo "$TRUSTSTORE_WORKING_DIRECTORY/$DEFAULT_TRUSTSTORE_FILENAME was created."

  # don't need the cert because it's in the trust store.
  rm $TRUSTSTORE_WORKING_DIRECTORY/$CA_CERT_FILE

echo
echo "Continuing with:"
echo " - trust store file:        $trust_store_file"
echo " - trust store private key: $trust_store_private_key_file"

mkdir $KEYSTORE_WORKING_DIRECTORY

echo
echo "Now, a keystore will be generated. Each broker and logical client needs its own"
echo "keystore. This script will create only one keystore. Run this script multiple"
echo "times for multiple keystores."
echo
echo "     NOTE: currently in Kafka, the Common Name (CN) does not need to be the FQDN of"
echo "           this host. However, at some point, this may change. As such, make the CN"
echo "           the FQDN. Some operating systems call the CN prompt 'first / last name'"

# To learn more about CNs and FQDNs, read:
# https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/X509ExtendedTrustManager.html

keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME \
  -alias localhost -validity $VALIDITY_IN_DAYS -genkey -keyalg RSA \
   -noprompt -dname "C=$COUNTRY, ST=$STATE, L=$LOCATION, O=$OU, CN=$CN" -keypass $PASS -storepass $PASS -storetype JKS

echo
echo "'$KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME' now contains a key pair and a"
echo "self-signed certificate. Again, this keystore can only be used for one broker or"
echo "one logical client. Other brokers or clients need to generate their own keystores."

echo
echo "Fetching the certificate from the trust store and storing in $CA_CERT_FILE."
echo

keytool -keystore $trust_store_file -export -alias CARoot -rfc -file $CA_CERT_FILE -keypass $PASS -storepass $PASS

echo
echo "Now a certificate signing request will be made to the keystore."
echo
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost \
  -certreq -file $KEYSTORE_SIGN_REQUEST -keypass $PASS -storepass $PASS

echo
echo "Now the trust store's private key (CA) will sign the keystore's certificate."
echo
openssl x509 -req -CA $CA_CERT_FILE -CAkey $trust_store_private_key_file \
  -in $KEYSTORE_SIGN_REQUEST -out $KEYSTORE_SIGNED_CERT \
  -days $VALIDITY_IN_DAYS -CAcreateserial \
  -extensions kafka -extfile san.cnf
# creates $KEYSTORE_SIGN_REQUEST_SRL which is never used or needed.

echo
echo "Now the CA will be imported into the keystore."
echo
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias CARoot \
  -import -file $CA_CERT_FILE -keypass $PASS -storepass $PASS -noprompt
rm $CA_CERT_FILE # delete the trust store cert because it's stored in the trust store.

echo
echo "Now the keystore's signed certificate will be imported back into the keystore."
echo
keytool -keystore $KEYSTORE_WORKING_DIRECTORY/$KEYSTORE_FILENAME -alias localhost -import \
  -file $KEYSTORE_SIGNED_CERT -keypass $PASS -storepass $PASS

echo
echo "All done!"
echo
echo "Deleting intermediate files. They are:"
echo " - '$KEYSTORE_SIGN_REQUEST_SRL': CA serial number"
echo " - '$KEYSTORE_SIGN_REQUEST': the keystore's certificate signing request"
echo "   (that was fulfilled)"
echo " - '$KEYSTORE_SIGNED_CERT': the keystore's certificate, signed by the CA, and stored back"
echo "    into the keystore"

  rm $KEYSTORE_SIGN_REQUEST_SRL
  rm $KEYSTORE_SIGN_REQUEST
  rm $KEYSTORE_SIGNED_CERT


================================================
FILE: documentation/compose/ssl/san.cnf
================================================
[kafka]
subjectAltName = DNS:kafka0,DNS:schemaregistry0,DNS:kafka-connect0,DNS:ksqldb0


================================================
FILE: documentation/compose/traefik/kafkaui.yaml
================================================
http:
  routers:
    kafkaui:
      rule: "PathPrefix(`/kafka-ui/`)"
      entrypoints: web
      service: kafkaui
  services:
    kafkaui:
      loadBalancer:
        servers:
          - url: http://kafka-ui:8080

================================================
FILE: documentation/compose/traefik-proxy.yaml
================================================
---
version: '3.8'
services:
  traefik:
    restart: always
    image: traefik:v2.4
    container_name: traefik
    command:
      - --api.insecure=true
      - --providers.file.directory=/etc/traefik
      - --providers.file.watch=true
      - --entrypoints.web.address=:80
      - --log.level=debug
    ports:
      - 80:80
    volumes:
      - ./traefik:/etc/traefik

  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8082:8080
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
      SERVER_SERVLET_CONTEXT_PATH: /kafka-ui


================================================
FILE: etc/checkstyle/apache-header.txt
================================================
Licensed 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.

================================================
FILE: etc/checkstyle/checkstyle-e2e.xml
================================================
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
        "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
        "https://checkstyle.org/dtds/configuration_1_3.dtd">

<!--
    Checkstyle configuration that checks the Google coding conventions from Google Java Style
    that can be found at https://google.github.io/styleguide/javaguide.html

    Checkstyle is very configurable. Be sure to read the documentation at
    http://checkstyle.org (or in your downlo
Download .txt
gitextract_kz4bsw12/

├── .devcontainer/
│   └── devcontainer.json
├── .editorconfig
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yml
│   │   ├── config.yml
│   │   └── feature.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── release_drafter.yaml
│   └── workflows/
│       ├── aws_publisher.yaml
│       ├── backend.yml
│       ├── block_merge.yml
│       ├── branch-deploy.yml
│       ├── branch-remove.yml
│       ├── build-public-image.yml
│       ├── codeql-analysis.yml
│       ├── cve.yaml
│       ├── delete-public-image.yml
│       ├── documentation.yaml
│       ├── e2e-automation.yml
│       ├── e2e-checks.yaml
│       ├── e2e-manual.yml
│       ├── e2e-weekly.yml
│       ├── frontend.yaml
│       ├── master.yaml
│       ├── pr-checks.yaml
│       ├── release-serde-api.yaml
│       ├── release.yaml
│       ├── release_drafter.yml
│       ├── separate_env_public_create.yml
│       ├── separate_env_public_remove.yml
│       ├── stale.yaml
│       ├── terraform-deploy.yml
│       ├── triage_issues.yml
│       ├── triage_prs.yml
│       ├── welcome-first-time-contributors.yml
│       └── workflow_linter.yaml
├── .gitignore
├── .mvn/
│   └── wrapper/
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── documentation/
│   └── compose/
│       ├── DOCKER_COMPOSE.md
│       ├── connectors/
│       │   ├── github-source.json
│       │   ├── s3-sink.json
│       │   ├── sink-activities.json
│       │   ├── source-activities.json
│       │   └── start.sh
│       ├── data/
│       │   ├── message.json
│       │   └── proxy.conf
│       ├── e2e-tests.yaml
│       ├── jaas/
│       │   ├── client.properties
│       │   ├── kafka_connect.jaas
│       │   ├── kafka_connect.password
│       │   ├── kafka_server.conf
│       │   ├── schema_registry.jaas
│       │   ├── schema_registry.password
│       │   └── zookeeper_jaas.conf
│       ├── jmx/
│       │   ├── clientkeystore
│       │   ├── clienttruststore
│       │   ├── jmxremote.access
│       │   ├── jmxremote.password
│       │   ├── serverkeystore
│       │   └── servertruststore
│       ├── jmx-exporter/
│       │   ├── kafka-broker.yml
│       │   └── kafka-prepare-and-run
│       ├── kafka-cluster-sr-auth.yaml
│       ├── kafka-connect/
│       │   └── Dockerfile
│       ├── kafka-ssl-components.yaml
│       ├── kafka-ssl.yml
│       ├── kafka-ui-acl-with-zk.yaml
│       ├── kafka-ui-arm64.yaml
│       ├── kafka-ui-auth-context.yaml
│       ├── kafka-ui-connectors-auth.yaml
│       ├── kafka-ui-jmx-secured.yml
│       ├── kafka-ui-sasl.yaml
│       ├── kafka-ui-serdes.yaml
│       ├── kafka-ui-with-jmx-exporter.yaml
│       ├── kafka-ui.yaml
│       ├── kafka-with-zookeeper.yaml
│       ├── ldap.yaml
│       ├── nginx-proxy.yaml
│       ├── postgres/
│       │   ├── Dockerfile
│       │   └── data.sql
│       ├── proto/
│       │   ├── key-types.proto
│       │   └── values.proto
│       ├── scripts/
│       │   ├── clusterID
│       │   ├── create_cluster_id.sh
│       │   ├── update_run.sh
│       │   └── update_run_cluster.sh
│       ├── ssl/
│       │   ├── creds
│       │   ├── generate_certs.sh
│       │   ├── kafka.keystore.jks
│       │   ├── kafka.truststore.jks
│       │   └── san.cnf
│       ├── traefik/
│       │   └── kafkaui.yaml
│       └── traefik-proxy.yaml
├── etc/
│   └── checkstyle/
│       ├── apache-header.txt
│       ├── checkstyle-e2e.xml
│       └── checkstyle.xml
├── kafka-ui-api/
│   ├── Dockerfile
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── antlr4/
│       │   │   └── ksql/
│       │   │       └── KsqlGrammar.g4
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── provectus/
│       │   │           └── kafka/
│       │   │               └── ui/
│       │   │                   ├── KafkaUiApplication.java
│       │   │                   ├── client/
│       │   │                   │   └── RetryingKafkaConnectClient.java
│       │   │                   ├── config/
│       │   │                   │   ├── ClustersProperties.java
│       │   │                   │   ├── Config.java
│       │   │                   │   ├── CorsGlobalConfiguration.java
│       │   │                   │   ├── CustomWebFilter.java
│       │   │                   │   ├── ReadOnlyModeFilter.java
│       │   │                   │   ├── WebclientProperties.java
│       │   │                   │   └── auth/
│       │   │                   │       ├── AbstractAuthSecurityConfig.java
│       │   │                   │       ├── AuthenticatedUser.java
│       │   │                   │       ├── BasicAuthSecurityConfig.java
│       │   │                   │       ├── DisabledAuthSecurityConfig.java
│       │   │                   │       ├── LdapProperties.java
│       │   │                   │       ├── LdapSecurityConfig.java
│       │   │                   │       ├── OAuthProperties.java
│       │   │                   │       ├── OAuthPropertiesConverter.java
│       │   │                   │       ├── OAuthSecurityConfig.java
│       │   │                   │       ├── RbacLdapUser.java
│       │   │                   │       ├── RbacOAuth2User.java
│       │   │                   │       ├── RbacOidcUser.java
│       │   │                   │       ├── RbacUser.java
│       │   │                   │       ├── RoleBasedAccessControlProperties.java
│       │   │                   │       ├── condition/
│       │   │                   │       │   ├── ActiveDirectoryCondition.java
│       │   │                   │       │   └── CognitoCondition.java
│       │   │                   │       └── logout/
│       │   │                   │           ├── CognitoLogoutSuccessHandler.java
│       │   │                   │           ├── LogoutSuccessHandler.java
│       │   │                   │           └── OAuthLogoutSuccessHandler.java
│       │   │                   ├── controller/
│       │   │                   │   ├── AbstractController.java
│       │   │                   │   ├── AccessController.java
│       │   │                   │   ├── AclsController.java
│       │   │                   │   ├── ApplicationConfigController.java
│       │   │                   │   ├── AuthController.java
│       │   │                   │   ├── BrokersController.java
│       │   │                   │   ├── ClustersController.java
│       │   │                   │   ├── ConsumerGroupsController.java
│       │   │                   │   ├── KafkaConnectController.java
│       │   │                   │   ├── KsqlController.java
│       │   │                   │   ├── MessagesController.java
│       │   │                   │   ├── SchemasController.java
│       │   │                   │   ├── StaticController.java
│       │   │                   │   └── TopicsController.java
│       │   │                   ├── emitter/
│       │   │                   │   ├── AbstractEmitter.java
│       │   │                   │   ├── BackwardEmitter.java
│       │   │                   │   ├── ConsumingStats.java
│       │   │                   │   ├── EnhancedConsumer.java
│       │   │                   │   ├── ForwardEmitter.java
│       │   │                   │   ├── MessageFilters.java
│       │   │                   │   ├── MessagesProcessing.java
│       │   │                   │   ├── OffsetsInfo.java
│       │   │                   │   ├── PolledRecords.java
│       │   │                   │   ├── PollingSettings.java
│       │   │                   │   ├── PollingThrottler.java
│       │   │                   │   ├── RangePollingEmitter.java
│       │   │                   │   ├── ResultSizeLimiter.java
│       │   │                   │   ├── SeekOperations.java
│       │   │                   │   └── TailingEmitter.java
│       │   │                   ├── exception/
│       │   │                   │   ├── ClusterNotFoundException.java
│       │   │                   │   ├── ConnectNotFoundException.java
│       │   │                   │   ├── CustomBaseException.java
│       │   │                   │   ├── DuplicateEntityException.java
│       │   │                   │   ├── ErrorCode.java
│       │   │                   │   ├── FileUploadException.java
│       │   │                   │   ├── GlobalErrorWebExceptionHandler.java
│       │   │                   │   ├── IllegalEntityStateException.java
│       │   │                   │   ├── InvalidRequestApiException.java
│       │   │                   │   ├── JsonAvroConversionException.java
│       │   │                   │   ├── KafkaConnectConflictReponseException.java
│       │   │                   │   ├── KsqlApiException.java
│       │   │                   │   ├── KsqlDbNotFoundException.java
│       │   │                   │   ├── LogDirNotFoundApiException.java
│       │   │                   │   ├── NotFoundException.java
│       │   │                   │   ├── ReadOnlyModeException.java
│       │   │                   │   ├── SchemaCompatibilityException.java
│       │   │                   │   ├── SchemaFailedToDeleteException.java
│       │   │                   │   ├── SchemaNotFoundException.java
│       │   │                   │   ├── TopicAnalysisException.java
│       │   │                   │   ├── TopicMetadataException.java
│       │   │                   │   ├── TopicNotFoundException.java
│       │   │                   │   ├── TopicOrPartitionNotFoundException.java
│       │   │                   │   ├── TopicRecreationException.java
│       │   │                   │   ├── UnprocessableEntityException.java
│       │   │                   │   └── ValidationException.java
│       │   │                   ├── mapper/
│       │   │                   │   ├── ClusterMapper.java
│       │   │                   │   ├── ConsumerGroupMapper.java
│       │   │                   │   ├── DescribeLogDirsMapper.java
│       │   │                   │   ├── KafkaConnectMapper.java
│       │   │                   │   └── KafkaSrMapper.java
│       │   │                   ├── model/
│       │   │                   │   ├── BrokerMetrics.java
│       │   │                   │   ├── CleanupPolicy.java
│       │   │                   │   ├── ClusterFeature.java
│       │   │                   │   ├── ConsumerPosition.java
│       │   │                   │   ├── InternalBroker.java
│       │   │                   │   ├── InternalBrokerConfig.java
│       │   │                   │   ├── InternalBrokerDiskUsage.java
│       │   │                   │   ├── InternalClusterMetrics.java
│       │   │                   │   ├── InternalClusterState.java
│       │   │                   │   ├── InternalConsumerGroup.java
│       │   │                   │   ├── InternalLogDirStats.java
│       │   │                   │   ├── InternalPartition.java
│       │   │                   │   ├── InternalPartitionsOffsets.java
│       │   │                   │   ├── InternalReplica.java
│       │   │                   │   ├── InternalSegmentSizeDto.java
│       │   │                   │   ├── InternalTopic.java
│       │   │                   │   ├── InternalTopicConfig.java
│       │   │                   │   ├── InternalTopicConsumerGroup.java
│       │   │                   │   ├── KafkaCluster.java
│       │   │                   │   ├── Metrics.java
│       │   │                   │   ├── MetricsConfig.java
│       │   │                   │   ├── PartitionDistributionStats.java
│       │   │                   │   ├── PartitionsStats.java
│       │   │                   │   ├── Statistics.java
│       │   │                   │   ├── connect/
│       │   │                   │   │   └── InternalConnectInfo.java
│       │   │                   │   ├── rbac/
│       │   │                   │   │   ├── AccessContext.java
│       │   │                   │   │   ├── Permission.java
│       │   │                   │   │   ├── Resource.java
│       │   │                   │   │   ├── Role.java
│       │   │                   │   │   ├── Subject.java
│       │   │                   │   │   ├── permission/
│       │   │                   │   │   │   ├── AclAction.java
│       │   │                   │   │   │   ├── ApplicationConfigAction.java
│       │   │                   │   │   │   ├── AuditAction.java
│       │   │                   │   │   │   ├── ClusterConfigAction.java
│       │   │                   │   │   │   ├── ConnectAction.java
│       │   │                   │   │   │   ├── ConsumerGroupAction.java
│       │   │                   │   │   │   ├── KsqlAction.java
│       │   │                   │   │   │   ├── PermissibleAction.java
│       │   │                   │   │   │   ├── SchemaAction.java
│       │   │                   │   │   │   └── TopicAction.java
│       │   │                   │   │   └── provider/
│       │   │                   │   │       └── Provider.java
│       │   │                   │   └── schemaregistry/
│       │   │                   │       ├── ErrorResponse.java
│       │   │                   │       ├── InternalCompatibilityCheck.java
│       │   │                   │       ├── InternalCompatibilityLevel.java
│       │   │                   │       ├── InternalNewSchema.java
│       │   │                   │       └── SubjectIdResponse.java
│       │   │                   ├── serdes/
│       │   │                   │   ├── BuiltInSerde.java
│       │   │                   │   ├── ClassloaderUtil.java
│       │   │                   │   ├── ClusterSerdes.java
│       │   │                   │   ├── ConsumerRecordDeserializer.java
│       │   │                   │   ├── CustomSerdeLoader.java
│       │   │                   │   ├── ProducerRecordCreator.java
│       │   │                   │   ├── PropertyResolverImpl.java
│       │   │                   │   ├── RecordHeaderImpl.java
│       │   │                   │   ├── RecordHeadersImpl.java
│       │   │                   │   ├── SerdeInstance.java
│       │   │                   │   ├── SerdesInitializer.java
│       │   │                   │   └── builtin/
│       │   │                   │       ├── AvroEmbeddedSerde.java
│       │   │                   │       ├── Base64Serde.java
│       │   │                   │       ├── ConsumerOffsetsSerde.java
│       │   │                   │       ├── HexSerde.java
│       │   │                   │       ├── Int32Serde.java
│       │   │                   │       ├── Int64Serde.java
│       │   │                   │       ├── ProtobufFileSerde.java
│       │   │                   │       ├── ProtobufRawSerde.java
│       │   │                   │       ├── StringSerde.java
│       │   │                   │       ├── UInt32Serde.java
│       │   │                   │       ├── UInt64Serde.java
│       │   │                   │       ├── UuidBinarySerde.java
│       │   │                   │       └── sr/
│       │   │                   │           ├── MessageFormatter.java
│       │   │                   │           ├── SchemaRegistrySerde.java
│       │   │                   │           ├── SchemaType.java
│       │   │                   │           └── Serialize.java
│       │   │                   ├── service/
│       │   │                   │   ├── AdminClientService.java
│       │   │                   │   ├── AdminClientServiceImpl.java
│       │   │                   │   ├── ApplicationInfoService.java
│       │   │                   │   ├── BrokerService.java
│       │   │                   │   ├── ClusterService.java
│       │   │                   │   ├── ClustersStatisticsScheduler.java
│       │   │                   │   ├── ClustersStorage.java
│       │   │                   │   ├── ConsumerGroupService.java
│       │   │                   │   ├── DeserializationService.java
│       │   │                   │   ├── FeatureService.java
│       │   │                   │   ├── KafkaClusterFactory.java
│       │   │                   │   ├── KafkaConfigSanitizer.java
│       │   │                   │   ├── KafkaConnectService.java
│       │   │                   │   ├── MessagesService.java
│       │   │                   │   ├── OffsetsResetService.java
│       │   │                   │   ├── ReactiveAdminClient.java
│       │   │                   │   ├── SchemaRegistryService.java
│       │   │                   │   ├── StatisticsCache.java
│       │   │                   │   ├── StatisticsService.java
│       │   │                   │   ├── TopicsService.java
│       │   │                   │   ├── acl/
│       │   │                   │   │   ├── AclCsv.java
│       │   │                   │   │   └── AclsService.java
│       │   │                   │   ├── analyze/
│       │   │                   │   │   ├── AnalysisTasksStore.java
│       │   │                   │   │   ├── TopicAnalysisService.java
│       │   │                   │   │   ├── TopicAnalysisStats.java
│       │   │                   │   │   └── TopicIdentity.java
│       │   │                   │   ├── audit/
│       │   │                   │   │   ├── AuditRecord.java
│       │   │                   │   │   ├── AuditService.java
│       │   │                   │   │   └── AuditWriter.java
│       │   │                   │   ├── integration/
│       │   │                   │   │   └── odd/
│       │   │                   │   │       ├── ConnectorInfo.java
│       │   │                   │   │       ├── ConnectorsExporter.java
│       │   │                   │   │       ├── OddExporter.java
│       │   │                   │   │       ├── OddExporterScheduler.java
│       │   │                   │   │       ├── OddIntegrationConfig.java
│       │   │                   │   │       ├── OddIntegrationProperties.java
│       │   │                   │   │       ├── Oddrn.java
│       │   │                   │   │       ├── SchemaReferencesResolver.java
│       │   │                   │   │       ├── TopicsExporter.java
│       │   │                   │   │       └── schema/
│       │   │                   │   │           ├── AvroExtractor.java
│       │   │                   │   │           ├── DataSetFieldsExtractors.java
│       │   │                   │   │           ├── JsonSchemaExtractor.java
│       │   │                   │   │           └── ProtoExtractor.java
│       │   │                   │   ├── ksql/
│       │   │                   │   │   ├── KsqlApiClient.java
│       │   │                   │   │   ├── KsqlGrammar.java
│       │   │                   │   │   ├── KsqlServiceV2.java
│       │   │                   │   │   └── response/
│       │   │                   │   │       ├── DynamicParser.java
│       │   │                   │   │       └── ResponseParser.java
│       │   │                   │   ├── masking/
│       │   │                   │   │   ├── DataMasking.java
│       │   │                   │   │   └── policies/
│       │   │                   │   │       ├── FieldsSelector.java
│       │   │                   │   │       ├── Mask.java
│       │   │                   │   │       ├── MaskingPolicy.java
│       │   │                   │   │       ├── Remove.java
│       │   │                   │   │       └── Replace.java
│       │   │                   │   ├── metrics/
│       │   │                   │   │   ├── JmxMetricsFormatter.java
│       │   │                   │   │   ├── JmxMetricsRetriever.java
│       │   │                   │   │   ├── JmxSslSocketFactory.java
│       │   │                   │   │   ├── MetricsCollector.java
│       │   │                   │   │   ├── MetricsRetriever.java
│       │   │                   │   │   ├── PrometheusEndpointMetricsParser.java
│       │   │                   │   │   ├── PrometheusMetricsRetriever.java
│       │   │                   │   │   ├── RawMetric.java
│       │   │                   │   │   └── WellKnownMetrics.java
│       │   │                   │   └── rbac/
│       │   │                   │       ├── AbstractProviderCondition.java
│       │   │                   │       ├── AccessControlService.java
│       │   │                   │       └── extractor/
│       │   │                   │           ├── CognitoAuthorityExtractor.java
│       │   │                   │           ├── GithubAuthorityExtractor.java
│       │   │                   │           ├── GoogleAuthorityExtractor.java
│       │   │                   │           ├── OauthAuthorityExtractor.java
│       │   │                   │           ├── ProviderAuthorityExtractor.java
│       │   │                   │           └── RbacLdapAuthoritiesExtractor.java
│       │   │                   └── util/
│       │   │                       ├── ApplicationMetrics.java
│       │   │                       ├── ApplicationRestarter.java
│       │   │                       ├── DynamicConfigOperations.java
│       │   │                       ├── EmptyRedirectStrategy.java
│       │   │                       ├── GithubReleaseInfo.java
│       │   │                       ├── KafkaServicesValidation.java
│       │   │                       ├── KafkaVersion.java
│       │   │                       ├── ReactiveFailover.java
│       │   │                       ├── ResourceUtil.java
│       │   │                       ├── SslPropertiesUtil.java
│       │   │                       ├── WebClientConfigurator.java
│       │   │                       ├── annotation/
│       │   │                       │   └── KafkaClientInternalsDependant.java
│       │   │                       └── jsonschema/
│       │   │                           ├── AnyFieldSchema.java
│       │   │                           ├── ArrayFieldSchema.java
│       │   │                           ├── AvroJsonSchemaConverter.java
│       │   │                           ├── EnumJsonType.java
│       │   │                           ├── FieldSchema.java
│       │   │                           ├── JsonAvroConversion.java
│       │   │                           ├── JsonSchema.java
│       │   │                           ├── JsonSchemaConverter.java
│       │   │                           ├── JsonType.java
│       │   │                           ├── MapFieldSchema.java
│       │   │                           ├── ObjectFieldSchema.java
│       │   │                           ├── OneOfFieldSchema.java
│       │   │                           ├── ProtobufSchemaConverter.java
│       │   │                           ├── RefFieldSchema.java
│       │   │                           ├── SimpleFieldSchema.java
│       │   │                           └── SimpleJsonType.java
│       │   └── resources/
│       │       ├── application-local.yml
│       │       ├── application.yml
│       │       ├── banner.txt
│       │       ├── logback-spring.xml
│       │       └── static/
│       │           └── static/
│       │               └── css/
│       │                   ├── bootstrap.min.css
│       │                   └── signin.css
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── provectus/
│           │           └── kafka/
│           │               └── ui/
│           │                   ├── AbstractIntegrationTest.java
│           │                   ├── KafkaConnectServiceTests.java
│           │                   ├── KafkaConsumerGroupTests.java
│           │                   ├── KafkaConsumerTests.java
│           │                   ├── KafkaTopicCreateTests.java
│           │                   ├── ReadOnlyModeTests.java
│           │                   ├── SchemaRegistryServiceTests.java
│           │                   ├── config/
│           │                   │   └── ClustersPropertiesTest.java
│           │                   ├── container/
│           │                   │   ├── KafkaConnectContainer.java
│           │                   │   ├── KsqlDbContainer.java
│           │                   │   └── SchemaRegistryContainer.java
│           │                   ├── controller/
│           │                   │   └── ApplicationConfigControllerTest.java
│           │                   ├── emitter/
│           │                   │   ├── MessageFiltersTest.java
│           │                   │   ├── MessagesProcessingTest.java
│           │                   │   ├── OffsetsInfoTest.java
│           │                   │   ├── SeekOperationsTest.java
│           │                   │   └── TailingEmitterTest.java
│           │                   ├── model/
│           │                   │   └── PartitionDistributionStatsTest.java
│           │                   ├── producer/
│           │                   │   └── KafkaTestProducer.java
│           │                   ├── serdes/
│           │                   │   ├── ConsumerRecordDeserializerTest.java
│           │                   │   ├── PropertyResolverImplTest.java
│           │                   │   ├── SerdesInitializerTest.java
│           │                   │   └── builtin/
│           │                   │       ├── AvroEmbeddedSerdeTest.java
│           │                   │       ├── Base64SerdeTest.java
│           │                   │       ├── ConsumerOffsetsSerdeTest.java
│           │                   │       ├── HexSerdeTest.java
│           │                   │       ├── Int32SerdeTest.java
│           │                   │       ├── Int64SerdeTest.java
│           │                   │       ├── ProtobufFileSerdeTest.java
│           │                   │       ├── ProtobufRawSerdeTest.java
│           │                   │       ├── UInt32SerdeTest.java
│           │                   │       ├── UInt64SerdeTest.java
│           │                   │       ├── UuidBinarySerdeTest.java
│           │                   │       └── sr/
│           │                   │           └── SchemaRegistrySerdeTest.java
│           │                   ├── service/
│           │                   │   ├── BrokerServiceTest.java
│           │                   │   ├── ConfigTest.java
│           │                   │   ├── KafkaConfigSanitizerTest.java
│           │                   │   ├── LogDirsTest.java
│           │                   │   ├── MessagesServiceTest.java
│           │                   │   ├── OffsetsResetServiceTest.java
│           │                   │   ├── ReactiveAdminClientTest.java
│           │                   │   ├── RecordEmitterTest.java
│           │                   │   ├── SchemaRegistryPaginationTest.java
│           │                   │   ├── SendAndReadTests.java
│           │                   │   ├── TopicsServicePaginationTest.java
│           │                   │   ├── acl/
│           │                   │   │   ├── AclCsvTest.java
│           │                   │   │   └── AclsServiceTest.java
│           │                   │   ├── analyze/
│           │                   │   │   └── TopicAnalysisServiceTest.java
│           │                   │   ├── audit/
│           │                   │   │   ├── AuditIntegrationTest.java
│           │                   │   │   ├── AuditServiceTest.java
│           │                   │   │   └── AuditWriterTest.java
│           │                   │   ├── integration/
│           │                   │   │   └── odd/
│           │                   │   │       ├── ConnectorsExporterTest.java
│           │                   │   │       ├── SchemaReferencesResolverTest.java
│           │                   │   │       ├── TopicsExporterTest.java
│           │                   │   │       └── schema/
│           │                   │   │           ├── AvroExtractorTest.java
│           │                   │   │           ├── JsonSchemaExtractorTest.java
│           │                   │   │           └── ProtoExtractorTest.java
│           │                   │   ├── ksql/
│           │                   │   │   ├── KsqlApiClientTest.java
│           │                   │   │   ├── KsqlServiceV2Test.java
│           │                   │   │   └── response/
│           │                   │   │       └── ResponseParserTest.java
│           │                   │   ├── masking/
│           │                   │   │   ├── DataMaskingTest.java
│           │                   │   │   └── policies/
│           │                   │   │       ├── FieldsSelectorTest.java
│           │                   │   │       ├── MaskTest.java
│           │                   │   │       ├── RemoveTest.java
│           │                   │   │       └── ReplaceTest.java
│           │                   │   └── metrics/
│           │                   │       ├── JmxMetricsFormatterTest.java
│           │                   │       ├── PrometheusEndpointMetricsParserTest.java
│           │                   │       ├── PrometheusMetricsRetrieverTest.java
│           │                   │       └── WellKnownMetricsTest.java
│           │                   └── util/
│           │                       ├── AccessControlServiceMock.java
│           │                       ├── DynamicConfigOperationsTest.java
│           │                       ├── GithubReleaseInfoTest.java
│           │                       ├── PollingThrottlerTest.java
│           │                       ├── ReactiveFailoverTest.java
│           │                       └── jsonschema/
│           │                           ├── AvroJsonSchemaConverterTest.java
│           │                           ├── JsonAvroConversionTest.java
│           │                           └── ProtobufSchemaConverterTest.java
│           └── resources/
│               ├── application-test.yml
│               ├── fileForUploadTest.txt
│               └── protobuf-serde/
│                   ├── address-book.proto
│                   ├── lang-description.proto
│                   ├── language/
│                   │   └── language.proto
│                   └── sensor.proto
├── kafka-ui-contract/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── resources/
│               └── swagger/
│                   ├── kafka-connect-api.yaml
│                   ├── kafka-sr-api.yaml
│                   └── kafka-ui-api.yaml
├── kafka-ui-e2e-checks/
│   ├── .gitignore
│   ├── QASE.md
│   ├── README.md
│   ├── docker/
│   │   ├── selenoid-git.yaml
│   │   └── selenoid-local.yaml
│   ├── pom.xml
│   ├── selenoid/
│   │   └── config/
│   │       ├── browsersGit.json
│   │       └── browsersLocal.json
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── provectus/
│       │   │           └── kafka/
│       │   │               └── ui/
│       │   │                   ├── models/
│       │   │                   │   ├── Connector.java
│       │   │                   │   ├── Schema.java
│       │   │                   │   └── Topic.java
│       │   │                   ├── pages/
│       │   │                   │   ├── BasePage.java
│       │   │                   │   ├── brokers/
│       │   │                   │   │   ├── BrokersConfigTab.java
│       │   │                   │   │   ├── BrokersDetails.java
│       │   │                   │   │   └── BrokersList.java
│       │   │                   │   ├── connectors/
│       │   │                   │   │   ├── ConnectorCreateForm.java
│       │   │                   │   │   ├── ConnectorDetails.java
│       │   │                   │   │   └── KafkaConnectList.java
│       │   │                   │   ├── consumers/
│       │   │                   │   │   ├── ConsumersDetails.java
│       │   │                   │   │   └── ConsumersList.java
│       │   │                   │   ├── ksqldb/
│       │   │                   │   │   ├── KsqlDbList.java
│       │   │                   │   │   ├── KsqlQueryForm.java
│       │   │                   │   │   ├── enums/
│       │   │                   │   │   │   ├── KsqlMenuTabs.java
│       │   │                   │   │   │   └── KsqlQueryConfig.java
│       │   │                   │   │   └── models/
│       │   │                   │   │       ├── Stream.java
│       │   │                   │   │       └── Table.java
│       │   │                   │   ├── panels/
│       │   │                   │   │   ├── NaviSideBar.java
│       │   │                   │   │   ├── TopPanel.java
│       │   │                   │   │   └── enums/
│       │   │                   │   │       └── MenuItem.java
│       │   │                   │   ├── schemas/
│       │   │                   │   │   ├── SchemaCreateForm.java
│       │   │                   │   │   ├── SchemaDetails.java
│       │   │                   │   │   └── SchemaRegistryList.java
│       │   │                   │   └── topics/
│       │   │                   │       ├── ProduceMessagePanel.java
│       │   │                   │       ├── TopicCreateEditForm.java
│       │   │                   │       ├── TopicDetails.java
│       │   │                   │       ├── TopicSettingsTab.java
│       │   │                   │       ├── TopicsList.java
│       │   │                   │       └── enums/
│       │   │                   │           ├── CleanupPolicyValue.java
│       │   │                   │           ├── CustomParameterType.java
│       │   │                   │           ├── MaxSizeOnDisk.java
│       │   │                   │           └── TimeToRetain.java
│       │   │                   ├── services/
│       │   │                   │   └── ApiService.java
│       │   │                   ├── settings/
│       │   │                   │   ├── BaseSource.java
│       │   │                   │   ├── configs/
│       │   │                   │   │   ├── Config.java
│       │   │                   │   │   └── Profiles.java
│       │   │                   │   ├── drivers/
│       │   │                   │   │   └── WebDriver.java
│       │   │                   │   └── listeners/
│       │   │                   │       ├── AllureListener.java
│       │   │                   │       ├── LoggerListener.java
│       │   │                   │       ├── QaseCreateListener.java
│       │   │                   │       └── QaseResultListener.java
│       │   │                   ├── utilities/
│       │   │                   │   ├── FileUtils.java
│       │   │                   │   ├── StringUtils.java
│       │   │                   │   ├── TimeUtils.java
│       │   │                   │   ├── WebUtils.java
│       │   │                   │   └── qase/
│       │   │                   │       ├── QaseSetup.java
│       │   │                   │       ├── annotations/
│       │   │                   │       │   ├── Automation.java
│       │   │                   │       │   ├── Status.java
│       │   │                   │       │   └── Suite.java
│       │   │                   │       └── enums/
│       │   │                   │           ├── State.java
│       │   │                   │           └── Status.java
│       │   │                   └── variables/
│       │   │                       ├── Browser.java
│       │   │                       ├── Expected.java
│       │   │                       ├── Suite.java
│       │   │                       └── Url.java
│       │   └── resources/
│       │       ├── allure.properties
│       │       └── testData/
│       │           ├── connectors/
│       │           │   ├── config_for_create_connector.json
│       │           │   ├── config_for_create_connector_via_api.json
│       │           │   ├── config_for_update_connector.json
│       │           │   └── delete_connector_config.json
│       │           ├── schemas/
│       │           │   ├── schema_avro_for_update.json
│       │           │   ├── schema_avro_value.json
│       │           │   ├── schema_json_Value.json
│       │           │   └── schema_protobuf_value.txt
│       │           └── topics/
│       │               └── message_content_create_topic.json
│       └── test/
│           ├── java/
│           │   └── com/
│           │       └── provectus/
│           │           └── kafka/
│           │               └── ui/
│           │                   ├── BaseTest.java
│           │                   ├── Facade.java
│           │                   ├── manualsuite/
│           │                   │   ├── BaseManualTest.java
│           │                   │   ├── backlog/
│           │                   │   │   ├── SanityBacklog.java
│           │                   │   │   └── SmokeBacklog.java
│           │                   │   └── suite/
│           │                   │       ├── DataMaskingTest.java
│           │                   │       ├── RbacTest.java
│           │                   │       ├── TopicsTest.java
│           │                   │       └── WizardTest.java
│           │                   ├── qasesuite/
│           │                   │   ├── BaseQaseTest.java
│           │                   │   └── Template.java
│           │                   ├── sanitysuite/
│           │                   │   └── TopicsTest.java
│           │                   └── smokesuite/
│           │                       ├── SmokeTest.java
│           │                       ├── brokers/
│           │                       │   └── BrokersTest.java
│           │                       ├── connectors/
│           │                       │   └── ConnectorsTest.java
│           │                       ├── ksqldb/
│           │                       │   └── KsqlDbTest.java
│           │                       ├── schemas/
│           │                       │   └── SchemasTest.java
│           │                       └── topics/
│           │                           ├── MessagesTest.java
│           │                           └── TopicsTest.java
│           └── resources/
│               ├── manual.xml
│               ├── qase.xml
│               ├── regression.xml
│               ├── sanity.xml
│               └── smoke.xml
├── kafka-ui-react-app/
│   ├── .editorconfig
│   ├── .eslintignore
│   ├── .eslintrc.json
│   ├── .gitignore
│   ├── .jest/
│   │   ├── cssTransform.js
│   │   └── resolver.js
│   ├── .nvmrc
│   ├── .prettierrc
│   ├── README.md
│   ├── index.html
│   ├── jest.config.ts
│   ├── openapitools.json
│   ├── package.json
│   ├── public/
│   │   ├── manifest.json
│   │   └── robots.txt
│   ├── sonar-project.properties
│   ├── src/
│   │   ├── components/
│   │   │   ├── ACLPage/
│   │   │   │   ├── ACLPage.tsx
│   │   │   │   └── List/
│   │   │   │       ├── List.styled.ts
│   │   │   │       ├── List.tsx
│   │   │   │       └── __test__/
│   │   │   │           └── List.spec.tsx
│   │   │   ├── App.styled.ts
│   │   │   ├── App.tsx
│   │   │   ├── Brokers/
│   │   │   │   ├── Broker/
│   │   │   │   │   ├── Broker.tsx
│   │   │   │   │   ├── BrokerLogdir/
│   │   │   │   │   │   ├── BrokerLogdir.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── BrokerLogdir.spec.tsx
│   │   │   │   │   ├── BrokerMetrics/
│   │   │   │   │   │   ├── BrokerMetrics.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── BrokerMetrics.spec.tsx
│   │   │   │   │   ├── Configs/
│   │   │   │   │   │   ├── Configs.styled.ts
│   │   │   │   │   │   ├── Configs.tsx
│   │   │   │   │   │   ├── InputCell.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── Configs.spec.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── Broker.spec.tsx
│   │   │   │   ├── Brokers.tsx
│   │   │   │   ├── BrokersList/
│   │   │   │   │   ├── BrokersList.styled.ts
│   │   │   │   │   ├── BrokersList.tsx
│   │   │   │   │   ├── SkewHeader/
│   │   │   │   │   │   ├── SkewHeader.styled.ts
│   │   │   │   │   │   └── SkewHeader.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── BrokersList.spec.tsx
│   │   │   │   ├── __test__/
│   │   │   │   │   └── Brokers.spec.tsx
│   │   │   │   └── utils/
│   │   │   │       ├── __test__/
│   │   │   │       │   ├── fixtures.ts
│   │   │   │       │   └── getEditorText.spec.tsx
│   │   │   │       └── getEditorText.ts
│   │   │   ├── ClusterPage/
│   │   │   │   ├── ClusterConfigPage.tsx
│   │   │   │   ├── ClusterPage.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── ClusterPage.spec.tsx
│   │   │   ├── Connect/
│   │   │   │   ├── Connect.tsx
│   │   │   │   ├── Details/
│   │   │   │   │   ├── Actions/
│   │   │   │   │   │   ├── Action.styled.ts
│   │   │   │   │   │   ├── Actions.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── Actions.spec.tsx
│   │   │   │   │   ├── Config/
│   │   │   │   │   │   ├── Config.styled.ts
│   │   │   │   │   │   ├── Config.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── Config.spec.tsx
│   │   │   │   │   ├── DetailsPage.tsx
│   │   │   │   │   ├── Overview/
│   │   │   │   │   │   ├── Overview.tsx
│   │   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   │   ├── Overview.spec.tsx
│   │   │   │   │   │   │   └── getTaskMetrics.spec.ts
│   │   │   │   │   │   └── getTaskMetrics.ts
│   │   │   │   │   ├── Tasks/
│   │   │   │   │   │   ├── ActionsCellTasks.tsx
│   │   │   │   │   │   ├── Tasks.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── Tasks.spec.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── DetailsPage.spec.tsx
│   │   │   │   ├── List/
│   │   │   │   │   ├── ActionsCell.tsx
│   │   │   │   │   ├── List.styled.ts
│   │   │   │   │   ├── List.tsx
│   │   │   │   │   ├── ListPage.tsx
│   │   │   │   │   ├── RunningTasksCell.tsx
│   │   │   │   │   ├── TopicsCell.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       ├── List.spec.tsx
│   │   │   │   │       └── ListPage.spec.tsx
│   │   │   │   ├── New/
│   │   │   │   │   ├── New.styled.ts
│   │   │   │   │   ├── New.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── New.spec.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── Connect.spec.tsx
│   │   │   ├── ConsumerGroups/
│   │   │   │   ├── ConsumerGroups.tsx
│   │   │   │   ├── Details/
│   │   │   │   │   ├── Details.tsx
│   │   │   │   │   ├── ListItem.styled.ts
│   │   │   │   │   ├── ListItem.tsx
│   │   │   │   │   ├── ResetOffsets/
│   │   │   │   │   │   ├── Form.tsx
│   │   │   │   │   │   ├── ResetOffsets.styled.ts
│   │   │   │   │   │   └── ResetOffsets.tsx
│   │   │   │   │   └── TopicContents/
│   │   │   │   │       ├── TopicContent.styled.ts
│   │   │   │   │       ├── TopicContents.tsx
│   │   │   │   │       └── __test__/
│   │   │   │   │           └── TopicContents.spec.tsx
│   │   │   │   ├── List.tsx
│   │   │   │   └── __test__/
│   │   │   │       └── ConsumerGroups.spec.tsx
│   │   │   ├── Dashboard/
│   │   │   │   ├── ClusterName.tsx
│   │   │   │   ├── ClusterTableActionsCell.tsx
│   │   │   │   ├── Dashboard.styled.ts
│   │   │   │   └── Dashboard.tsx
│   │   │   ├── ErrorPage/
│   │   │   │   ├── ErrorPage.styled.ts
│   │   │   │   ├── ErrorPage.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── ErrorPage.spec.tsx
│   │   │   ├── KsqlDb/
│   │   │   │   ├── KsqlDb.tsx
│   │   │   │   ├── Query/
│   │   │   │   │   ├── Query.tsx
│   │   │   │   │   ├── QueryForm/
│   │   │   │   │   │   ├── QueryForm.styled.ts
│   │   │   │   │   │   └── QueryForm.tsx
│   │   │   │   │   └── renderer/
│   │   │   │   │       └── TableRenderer/
│   │   │   │   │           ├── TableRenderer.styled.tsx
│   │   │   │   │           └── TableRenderer.tsx
│   │   │   │   └── TableView.tsx
│   │   │   ├── Nav/
│   │   │   │   ├── ClusterMenu.tsx
│   │   │   │   ├── ClusterMenuItem.tsx
│   │   │   │   ├── ClusterTab/
│   │   │   │   │   ├── ClusterTab.styled.ts
│   │   │   │   │   ├── ClusterTab.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       ├── ClusterTab.spec.tsx
│   │   │   │   │       └── ClusterTab.styled.spec.tsx
│   │   │   │   ├── Nav.styled.ts
│   │   │   │   ├── Nav.tsx
│   │   │   │   └── __tests__/
│   │   │   │       ├── ClusterMenu.spec.tsx
│   │   │   │       ├── ClusterMenuItem.spec.tsx
│   │   │   │       └── Nav.spec.tsx
│   │   │   ├── NavBar/
│   │   │   │   ├── NavBar.styled.ts
│   │   │   │   ├── NavBar.tsx
│   │   │   │   ├── UserInfo/
│   │   │   │   │   ├── UserInfo.styled.ts
│   │   │   │   │   ├── UserInfo.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── UserInfo.spec.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── NavBar.spec.tsx
│   │   │   ├── PageContainer/
│   │   │   │   ├── PageContainer.styled.ts
│   │   │   │   ├── PageContainer.tsx
│   │   │   │   └── __tests__/
│   │   │   │       └── PageContainer.spec.tsx
│   │   │   ├── Schemas/
│   │   │   │   ├── Details/
│   │   │   │   │   ├── Details.tsx
│   │   │   │   │   ├── LatestVersion/
│   │   │   │   │   │   ├── LatestVersionItem.styled.tsx
│   │   │   │   │   │   └── LatestVersionItem.tsx
│   │   │   │   │   ├── SchemaVersion/
│   │   │   │   │   │   └── SchemaVersion.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       ├── Details.spec.tsx
│   │   │   │   │       ├── LatestVersionItem.spec.tsx
│   │   │   │   │       ├── SchemaVersion.spec.tsx
│   │   │   │   │       └── fixtures.ts
│   │   │   │   ├── Diff/
│   │   │   │   │   ├── Diff.styled.ts
│   │   │   │   │   ├── Diff.tsx
│   │   │   │   │   ├── DiffContainer.ts
│   │   │   │   │   └── __test__/
│   │   │   │   │       ├── Diff.spec.tsx
│   │   │   │   │       └── fixtures.ts
│   │   │   │   ├── Edit/
│   │   │   │   │   ├── Edit.styled.ts
│   │   │   │   │   ├── Edit.tsx
│   │   │   │   │   ├── Form.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Edit.spec.tsx
│   │   │   │   ├── List/
│   │   │   │   │   ├── GlobalSchemaSelector/
│   │   │   │   │   │   ├── GlobalSchemaSelector.styled.ts
│   │   │   │   │   │   ├── GlobalSchemaSelector.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── GlobalSchemaSelector.spec.tsx
│   │   │   │   │   ├── List.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       ├── List.spec.tsx
│   │   │   │   │       └── fixtures.ts
│   │   │   │   ├── New/
│   │   │   │   │   ├── New.styled.ts
│   │   │   │   │   ├── New.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── New.spec.tsx
│   │   │   │   ├── Schemas.tsx
│   │   │   │   └── __test__/
│   │   │   │       └── Schemas.spec.tsx
│   │   │   ├── Topics/
│   │   │   │   ├── List/
│   │   │   │   │   ├── ActionsCell.tsx
│   │   │   │   │   ├── BatchActionsBar.tsx
│   │   │   │   │   ├── ListPage.tsx
│   │   │   │   │   ├── TopicTable.tsx
│   │   │   │   │   ├── TopicTitleCell.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       ├── ListPage.spec.tsx
│   │   │   │   │       └── TopicTable.spec.tsx
│   │   │   │   ├── New/
│   │   │   │   │   ├── New.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── New.spec.tsx
│   │   │   │   ├── Topic/
│   │   │   │   │   ├── ConsumerGroups/
│   │   │   │   │   │   ├── TopicConsumerGroups.styled.ts
│   │   │   │   │   │   ├── TopicConsumerGroups.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── TopicConsumerGroups.spec.tsx
│   │   │   │   │   ├── Edit/
│   │   │   │   │   │   ├── DangerZone/
│   │   │   │   │   │   │   ├── DangerZone.styled.tsx
│   │   │   │   │   │   │   ├── DangerZone.tsx
│   │   │   │   │   │   │   └── __test__/
│   │   │   │   │   │   │       └── DangerZone.spec.tsx
│   │   │   │   │   │   ├── Edit.tsx
│   │   │   │   │   │   ├── __test__/
│   │   │   │   │   │   │   ├── Edit.spec.tsx
│   │   │   │   │   │   │   └── topicParamsTransformer.spec.ts
│   │   │   │   │   │   └── topicParamsTransformer.ts
│   │   │   │   │   ├── Messages/
│   │   │   │   │   │   ├── Filters/
│   │   │   │   │   │   │   ├── AddEditFilterContainer.tsx
│   │   │   │   │   │   │   ├── AddFilter.tsx
│   │   │   │   │   │   │   ├── EditFilter.tsx
│   │   │   │   │   │   │   ├── FilterModal.tsx
│   │   │   │   │   │   │   ├── Filters.styled.ts
│   │   │   │   │   │   │   ├── Filters.tsx
│   │   │   │   │   │   │   ├── FiltersContainer.ts
│   │   │   │   │   │   │   ├── InfoModal.tsx
│   │   │   │   │   │   │   ├── SavedFilters.tsx
│   │   │   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   │   │   ├── AddEditFilterContainer.spec.tsx
│   │   │   │   │   │   │   │   ├── AddFilter.spec.tsx
│   │   │   │   │   │   │   │   ├── EditFilter.spec.tsx
│   │   │   │   │   │   │   │   ├── FilterModal.spec.tsx
│   │   │   │   │   │   │   │   ├── Filters.spec.tsx
│   │   │   │   │   │   │   │   ├── Filters.styled.spec.tsx
│   │   │   │   │   │   │   │   ├── InfoModal.spec.tsx
│   │   │   │   │   │   │   │   └── SavedFilters.spec.tsx
│   │   │   │   │   │   │   └── utils.ts
│   │   │   │   │   │   ├── Message.tsx
│   │   │   │   │   │   ├── MessageContent/
│   │   │   │   │   │   │   ├── MessageContent.styled.ts
│   │   │   │   │   │   │   ├── MessageContent.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── MessageContent.spec.tsx
│   │   │   │   │   │   ├── Messages.styled.ts
│   │   │   │   │   │   ├── Messages.tsx
│   │   │   │   │   │   ├── MessagesTable.tsx
│   │   │   │   │   │   ├── PreviewModal.styled.ts
│   │   │   │   │   │   ├── PreviewModal.tsx
│   │   │   │   │   │   ├── __test__/
│   │   │   │   │   │   │   ├── FiltersContainer.spec.tsx
│   │   │   │   │   │   │   ├── Message.spec.tsx
│   │   │   │   │   │   │   ├── Messages.spec.tsx
│   │   │   │   │   │   │   ├── MessagesTable.spec.tsx
│   │   │   │   │   │   │   ├── PreviewModal.spec.tsx
│   │   │   │   │   │   │   └── utils.spec.ts
│   │   │   │   │   │   └── getDefaultSerdeName.ts
│   │   │   │   │   ├── Overview/
│   │   │   │   │   │   ├── ActionsCell.tsx
│   │   │   │   │   │   ├── Overview.styled.ts
│   │   │   │   │   │   ├── Overview.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── Overview.spec.tsx
│   │   │   │   │   ├── SendMessage/
│   │   │   │   │   │   ├── SendMessage.styled.tsx
│   │   │   │   │   │   ├── SendMessage.tsx
│   │   │   │   │   │   ├── __test__/
│   │   │   │   │   │   │   ├── SendMessage.spec.tsx
│   │   │   │   │   │   │   └── utils.spec.ts
│   │   │   │   │   │   └── utils.ts
│   │   │   │   │   ├── Settings/
│   │   │   │   │   │   ├── Settings.styled.ts
│   │   │   │   │   │   ├── Settings.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       └── Settings.spec.tsx
│   │   │   │   │   ├── Statistics/
│   │   │   │   │   │   ├── Indicators/
│   │   │   │   │   │   │   ├── SizeStats.tsx
│   │   │   │   │   │   │   └── Total.tsx
│   │   │   │   │   │   ├── Metrics.tsx
│   │   │   │   │   │   ├── PartitionInfoRow.tsx
│   │   │   │   │   │   ├── PartitionTable.tsx
│   │   │   │   │   │   ├── Statistics.styles.ts
│   │   │   │   │   │   ├── Statistics.tsx
│   │   │   │   │   │   └── __test__/
│   │   │   │   │   │       ├── Metrics.spec.tsx
│   │   │   │   │   │       └── Statistics.spec.tsx
│   │   │   │   │   ├── Topic.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── Topic.spec.tsx
│   │   │   │   ├── Topics.tsx
│   │   │   │   ├── __tests__/
│   │   │   │   │   └── Topics.spec.tsx
│   │   │   │   └── shared/
│   │   │   │       └── Form/
│   │   │   │           ├── CustomParams/
│   │   │   │           │   ├── CustomParamField.tsx
│   │   │   │           │   ├── CustomParams.styled.ts
│   │   │   │           │   ├── CustomParams.tsx
│   │   │   │           │   └── __test__/
│   │   │   │           │       ├── CustomParamField.spec.tsx
│   │   │   │           │       ├── CustomParams.spec.tsx
│   │   │   │           │       └── fixtures.ts
│   │   │   │           ├── TimeToRetain.tsx
│   │   │   │           ├── TimeToRetainBtn.tsx
│   │   │   │           ├── TimeToRetainBtns.tsx
│   │   │   │           ├── TopicForm.styled.ts
│   │   │   │           ├── TopicForm.tsx
│   │   │   │           └── __tests__/
│   │   │   │               ├── TimeToRetainBtn.spec.tsx
│   │   │   │               ├── TimeToRetainBtns.spec.tsx
│   │   │   │               ├── TopicForm.spec.tsx
│   │   │   │               └── TopicForm.styled.spec.tsx
│   │   │   ├── Version/
│   │   │   │   ├── Version.styled.ts
│   │   │   │   ├── Version.tsx
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── Version.spec.tsx
│   │   │   │   │   └── compareVersions.spec.ts
│   │   │   │   └── compareVersions.ts
│   │   │   ├── __tests__/
│   │   │   │   └── App.spec.tsx
│   │   │   ├── common/
│   │   │   │   ├── ActionComponent/
│   │   │   │   │   ├── ActionButton/
│   │   │   │   │   │   ├── ActionButton.tsx
│   │   │   │   │   │   ├── ActionCanButton/
│   │   │   │   │   │   │   ├── ActionCanButton.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── ActionCanButton.spec.tsx
│   │   │   │   │   │   ├── ActionCreateButton/
│   │   │   │   │   │   │   ├── ActionCreateButton.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── ActionCreateButton.spec.tsx
│   │   │   │   │   │   ├── ActionPermissionButton/
│   │   │   │   │   │   │   ├── ActionPermissionButton.tsx
│   │   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │   │       └── ActionPermissionButton.spec.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── ActionButton.spec.tsx
│   │   │   │   │   ├── ActionComponent.styled.ts
│   │   │   │   │   ├── ActionComponent.ts
│   │   │   │   │   ├── ActionDropDownItem/
│   │   │   │   │   │   └── ActionDropdownItem.tsx
│   │   │   │   │   ├── ActionNavLink/
│   │   │   │   │   │   ├── ActionNavLink.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── ActionNavLink.spec.tsx
│   │   │   │   │   ├── ActionSelect/
│   │   │   │   │   │   ├── ActionSelect.tsx
│   │   │   │   │   │   └── __tests__/
│   │   │   │   │   │       └── ActionSelect.spec.tsx
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   └── fixtures.ts
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Alert/
│   │   │   │   │   ├── Alert.styled.ts
│   │   │   │   │   ├── Alert.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Alert.spec.tsx
│   │   │   │   ├── Button/
│   │   │   │   │   ├── Button.styled.ts
│   │   │   │   │   ├── Button.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Button.spec.tsx
│   │   │   │   ├── BytesFormatted/
│   │   │   │   │   ├── BytesFormatted.styled.ts
│   │   │   │   │   ├── BytesFormatted.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── BytesFormatted.spec.tsx
│   │   │   │   ├── Checkbox/
│   │   │   │   │   └── Checkbox.tsx
│   │   │   │   ├── ConfirmationModal/
│   │   │   │   │   ├── ConfirmationModal.styled.tsx
│   │   │   │   │   └── ConfirmationModal.tsx
│   │   │   │   ├── ControlPanel/
│   │   │   │   │   └── ControlPanel.styled.ts
│   │   │   │   ├── DiffViewer/
│   │   │   │   │   ├── DiffViewer.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── DiffViewer.spec.tsx
│   │   │   │   ├── Dropdown/
│   │   │   │   │   ├── Dropdown.styled.ts
│   │   │   │   │   ├── Dropdown.tsx
│   │   │   │   │   ├── DropdownItem.tsx
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Editor/
│   │   │   │   │   └── Editor.tsx
│   │   │   │   ├── EditorViewer/
│   │   │   │   │   ├── EditorViewer.styled.ts
│   │   │   │   │   ├── EditorViewer.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── EditorViewer.spec.tsx
│   │   │   │   ├── Ellipsis/
│   │   │   │   │   ├── Ellipsis.styled.ts
│   │   │   │   │   └── Ellipsis.tsx
│   │   │   │   ├── Form/
│   │   │   │   │   └── Form.styled.ts
│   │   │   │   ├── Icons/
│   │   │   │   │   ├── ArrowDownIcon.tsx
│   │   │   │   │   ├── AutoIcon.tsx
│   │   │   │   │   ├── CancelIcon.tsx
│   │   │   │   │   ├── CheckMarkRoundIcon.tsx
│   │   │   │   │   ├── CheckmarkIcon.tsx
│   │   │   │   │   ├── ChevronDownIcon.tsx
│   │   │   │   │   ├── ClockIcon.tsx
│   │   │   │   │   ├── CloseCircleIcon.tsx
│   │   │   │   │   ├── CloseIcon.tsx
│   │   │   │   │   ├── DeleteIcon.tsx
│   │   │   │   │   ├── DiscordIcon.tsx
│   │   │   │   │   ├── DropdownArrowIcon.tsx
│   │   │   │   │   ├── EditIcon.tsx
│   │   │   │   │   ├── FileIcon.tsx
│   │   │   │   │   ├── GitIcon.tsx
│   │   │   │   │   ├── IconButtonWrapper.ts
│   │   │   │   │   ├── InfoIcon.tsx
│   │   │   │   │   ├── MessageToggleIcon.styled.ts
│   │   │   │   │   ├── MessageToggleIcon.tsx
│   │   │   │   │   ├── MoonIcon.tsx
│   │   │   │   │   ├── PlusIcon.tsx
│   │   │   │   │   ├── QuestionIcon.tsx
│   │   │   │   │   ├── SavedIcon.tsx
│   │   │   │   │   ├── SearchIcon.tsx
│   │   │   │   │   ├── SpinnerIcon.tsx
│   │   │   │   │   ├── StarIcon.tsx
│   │   │   │   │   ├── SunIcon.tsx
│   │   │   │   │   ├── UserIcon.tsx
│   │   │   │   │   ├── VerticalElipsisIcon.tsx
│   │   │   │   │   ├── WarningIcon.tsx
│   │   │   │   │   └── WarningRedIcon.tsx
│   │   │   │   ├── IndeterminateCheckbox/
│   │   │   │   │   └── IndeterminateCheckbox.tsx
│   │   │   │   ├── Input/
│   │   │   │   │   ├── Input.styled.ts
│   │   │   │   │   ├── Input.tsx
│   │   │   │   │   ├── InputLabel.styled.ts
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Input.spec.tsx
│   │   │   │   ├── Logo/
│   │   │   │   │   └── Logo.tsx
│   │   │   │   ├── Metrics/
│   │   │   │   │   ├── Indicator.tsx
│   │   │   │   │   ├── Metrics.styled.tsx
│   │   │   │   │   ├── Section.tsx
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── Indicator.spec.tsx
│   │   │   │   │   │   └── Section.spec.tsx
│   │   │   │   │   └── index.tsx
│   │   │   │   ├── MultiSelect/
│   │   │   │   │   └── MultiSelect.styled.ts
│   │   │   │   ├── Navigation/
│   │   │   │   │   └── Navbar.styled.ts
│   │   │   │   ├── NewTable/
│   │   │   │   │   ├── ColoredCell.tsx
│   │   │   │   │   ├── ExpanderCell.tsx
│   │   │   │   │   ├── LinkCell.tsx
│   │   │   │   │   ├── SelectRowCell.tsx
│   │   │   │   │   ├── SelectRowHeader.tsx
│   │   │   │   │   ├── SizeCell.tsx
│   │   │   │   │   ├── Table.styled.ts
│   │   │   │   │   ├── Table.tsx
│   │   │   │   │   ├── TagCell.tsx
│   │   │   │   │   ├── TimestampCell.tsx
│   │   │   │   │   ├── __test__/
│   │   │   │   │   │   └── Table.spec.tsx
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── __test__/
│   │   │   │   │       │   └── updateSortingState.spec.ts
│   │   │   │   │       ├── updatePaginationState.ts
│   │   │   │   │       └── updateSortingState.ts
│   │   │   │   ├── PageHeading/
│   │   │   │   │   ├── PageHeading.styled.ts
│   │   │   │   │   └── PageHeading.tsx
│   │   │   │   ├── PageLoader/
│   │   │   │   │   ├── PageLoader.styled.ts
│   │   │   │   │   ├── PageLoader.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── PageLoader.spec.tsx
│   │   │   │   ├── ProgressBar/
│   │   │   │   │   ├── ProgressBar.styled.ts
│   │   │   │   │   ├── ProgressBar.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── ProgressBar.spec.tsx
│   │   │   │   ├── PropertiesList/
│   │   │   │   │   └── PropertiesList.styled.tsx
│   │   │   │   ├── SQLEditor/
│   │   │   │   │   ├── SQLEditor.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── SQLEditor.spec.tsx
│   │   │   │   ├── Search/
│   │   │   │   │   ├── Search.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Search.spec.tsx
│   │   │   │   ├── Select/
│   │   │   │   │   ├── ControlledSelect.tsx
│   │   │   │   │   ├── LiveIcon.styled.tsx
│   │   │   │   │   ├── Select.styled.ts
│   │   │   │   │   ├── Select.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Select.spec.tsx
│   │   │   │   ├── SlidingSidebar/
│   │   │   │   │   ├── SlidingSidebar.styled.ts
│   │   │   │   │   ├── SlidingSidebar.tsx
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Spinner/
│   │   │   │   │   ├── Spinner.styled.ts
│   │   │   │   │   ├── Spinner.tsx
│   │   │   │   │   └── types.ts
│   │   │   │   ├── SuspenseQueryComponent/
│   │   │   │   │   ├── SuspenseQueryComponent.tsx
│   │   │   │   │   └── __test__/
│   │   │   │   │       └── SuspenseQueryComponent.spec.tsx
│   │   │   │   ├── Switch/
│   │   │   │   │   ├── Switch.styled.ts
│   │   │   │   │   └── Switch.tsx
│   │   │   │   ├── Tag/
│   │   │   │   │   ├── Tag.styled.tsx
│   │   │   │   │   └── getTagColor.ts
│   │   │   │   ├── Textbox/
│   │   │   │   │   └── Textarea.styled.ts
│   │   │   │   ├── Tooltip/
│   │   │   │   │   ├── Tooltip.styled.ts
│   │   │   │   │   ├── Tooltip.tsx
│   │   │   │   │   └── __tests__/
│   │   │   │   │       └── Tooltip.spec.tsx
│   │   │   │   ├── heading/
│   │   │   │   │   └── Heading.styled.tsx
│   │   │   │   └── table/
│   │   │   │       ├── Table/
│   │   │   │       │   ├── Table.styled.ts
│   │   │   │       │   └── TableKeyLink.styled.ts
│   │   │   │       ├── TableHeaderCell/
│   │   │   │       │   ├── TableHeaderCell.styled.ts
│   │   │   │       │   ├── TableHeaderCell.tsx
│   │   │   │       │   └── __test__/
│   │   │   │       │       └── TableHeaderCell.styled.spec.tsx
│   │   │   │       ├── TableTitle/
│   │   │   │       │   └── TableTitle.styled.tsx
│   │   │   │       └── __tests__/
│   │   │   │           └── TableHeaderCell.spec.tsx
│   │   │   ├── contexts/
│   │   │   │   ├── ClusterContext.ts
│   │   │   │   ├── ConfirmContext.tsx
│   │   │   │   ├── GlobalSettingsContext.tsx
│   │   │   │   ├── ThemeModeContext.tsx
│   │   │   │   ├── TopicMessagesContext.ts
│   │   │   │   └── UserInfoRolesAccessContext.tsx
│   │   │   └── globalCss.ts
│   │   ├── index.tsx
│   │   ├── lib/
│   │   │   ├── __test__/
│   │   │   │   ├── dateTimeHelpers.spec.ts
│   │   │   │   ├── paths.spec.ts
│   │   │   │   ├── permission.spec.ts
│   │   │   │   └── yupExtended.spec.ts
│   │   │   ├── api.ts
│   │   │   ├── constants.ts
│   │   │   ├── dateTimeHelpers.ts
│   │   │   ├── errorHandling.tsx
│   │   │   ├── fixtures/
│   │   │   │   ├── acls.ts
│   │   │   │   ├── brokers.ts
│   │   │   │   ├── clusters.ts
│   │   │   │   ├── consumerGroups.ts
│   │   │   │   ├── kafkaConnect.ts
│   │   │   │   ├── latestVersion.ts
│   │   │   │   ├── topicMessages.ts
│   │   │   │   └── topics.ts
│   │   │   ├── hooks/
│   │   │   │   ├── __tests__/
│   │   │   │   │   ├── dateTimeHelpers.spec.ts
│   │   │   │   │   ├── fixtures.ts
│   │   │   │   │   ├── useBoolean.spec.ts
│   │   │   │   │   ├── useCreatePermission.spec.tsx
│   │   │   │   │   ├── useDataSaver.spec.tsx
│   │   │   │   │   └── usePermission.spec.tsx
│   │   │   │   ├── api/
│   │   │   │   │   ├── __tests__/
│   │   │   │   │   │   ├── brokers.spec.ts
│   │   │   │   │   │   ├── clusters.spec.ts
│   │   │   │   │   │   ├── kafkaConnect.spec.ts
│   │   │   │   │   │   ├── latestVersion.spec.ts
│   │   │   │   │   │   ├── topicMessages.spec.ts
│   │   │   │   │   │   └── topics.spec.ts
│   │   │   │   │   ├── acl.ts
│   │   │   │   │   ├── appConfig.ts
│   │   │   │   │   ├── brokers.ts
│   │   │   │   │   ├── clusters.ts
│   │   │   │   │   ├── consumers.ts
│   │   │   │   │   ├── kafkaConnect.ts
│   │   │   │   │   ├── ksqlDb.tsx
│   │   │   │   │   ├── latestVersion.ts
│   │   │   │   │   ├── roles.ts
│   │   │   │   │   ├── topicMessages.tsx
│   │   │   │   │   └── topics.ts
│   │   │   │   ├── redux.ts
│   │   │   │   ├── useActionTooltip.ts
│   │   │   │   ├── useAppParams.tsx
│   │   │   │   ├── useBoolean.ts
│   │   │   │   ├── useClickOutside.ts
│   │   │   │   ├── useConfirm.ts
│   │   │   │   ├── useCreatePermisson.ts
│   │   │   │   ├── useDataSaver.ts
│   │   │   │   ├── useLocalStorage.ts
│   │   │   │   ├── useMessageFiltersStore.ts
│   │   │   │   ├── usePermission.ts
│   │   │   │   └── useUserInfo.ts
│   │   │   ├── paths.ts
│   │   │   ├── permissions.ts
│   │   │   ├── testHelpers.tsx
│   │   │   └── yupExtended.ts
│   │   ├── react-app-env.d.ts
│   │   ├── redux/
│   │   │   ├── interfaces/
│   │   │   │   ├── cluster.ts
│   │   │   │   ├── consumerGroup.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── loader.ts
│   │   │   │   ├── schema.ts
│   │   │   │   └── topic.ts
│   │   │   ├── reducers/
│   │   │   │   ├── index.ts
│   │   │   │   ├── loader/
│   │   │   │   │   ├── loaderSlice.ts
│   │   │   │   │   └── selectors.ts
│   │   │   │   ├── schemas/
│   │   │   │   │   ├── __test__/
│   │   │   │   │   │   └── fixtures.ts
│   │   │   │   │   └── schemasSlice.ts
│   │   │   │   └── topicMessages/
│   │   │   │       ├── __test__/
│   │   │   │       │   ├── fixtures.ts
│   │   │   │       │   ├── reducer.spec.ts
│   │   │   │       │   └── selectors.spec.ts
│   │   │   │       ├── selectors.ts
│   │   │   │       └── topicMessagesSlice.ts
│   │   │   └── store/
│   │   │       └── index.ts
│   │   ├── setupTests.ts
│   │   ├── styled.d.ts
│   │   ├── theme/
│   │   │   ├── index.scss
│   │   │   ├── minireset.css
│   │   │   └── theme.ts
│   │   └── widgets/
│   │       └── ClusterConfigForm/
│   │           ├── ClusterConfigForm.styled.ts
│   │           ├── Sections/
│   │           │   ├── Authentication/
│   │           │   │   ├── Authentication.tsx
│   │           │   │   └── AuthenticationMethods.tsx
│   │           │   ├── CustomAuthentication.tsx
│   │           │   ├── KSQL.tsx
│   │           │   ├── KafkaCluster.tsx
│   │           │   ├── KafkaConnect.tsx
│   │           │   ├── Metrics.tsx
│   │           │   └── SchemaRegistry.tsx
│   │           ├── common/
│   │           │   ├── Credentials.tsx
│   │           │   ├── Fileupload.tsx
│   │           │   ├── SSLForm.tsx
│   │           │   └── SectionHeader.tsx
│   │           ├── index.tsx
│   │           ├── schema.ts
│   │           ├── types.ts
│   │           └── utils/
│   │               ├── convertFormKeyToPropsKey.ts
│   │               ├── convertPropsKeyToFormKey.ts
│   │               ├── getInitialFormData.ts
│   │               ├── getIsValidConfig.ts
│   │               ├── getJaasConfig.ts
│   │               └── transformFormDataToPayload.ts
│   ├── tsconfig.dev.json
│   ├── tsconfig.json
│   └── vite.config.ts
├── kafka-ui-serde-api/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── provectus/
│                       └── kafka/
│                           └── ui/
│                               └── serde/
│                                   └── api/
│                                       ├── DeserializeResult.java
│                                       ├── PropertyResolver.java
│                                       ├── RecordHeader.java
│                                       ├── RecordHeaders.java
│                                       ├── SchemaDescription.java
│                                       └── Serde.java
├── mvnw
├── mvnw.cmd
├── pom.xml
└── settings.xml
Download .txt
Showing preview only (290K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3235 symbols across 561 files)

FILE: documentation/compose/postgres/data.sql
  type activities (line 4) | CREATE TABLE activities

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/KafkaUiApplication.java
  class KafkaUiApplication (line 11) | @SpringBootApplication(exclude = LdapAutoConfiguration.class)
    method main (line 16) | public static void main(String[] args) {
    method startApplication (line 20) | public static ConfigurableApplicationContext startApplication(String[]...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/client/RetryingKafkaConnectClient.java
  class RetryingKafkaConnectClient (line 33) | @Slf4j
    method RetryingKafkaConnectClient (line 38) | public RetryingKafkaConnectClient(ConnectCluster config,
    method conflictCodeRetry (line 44) | private static Retry conflictCodeRetry() {
    method withRetryOnConflict (line 53) | private static <T> Mono<T> withRetryOnConflict(Mono<T> publisher) {
    method withRetryOnConflict (line 57) | private static <T> Flux<T> withRetryOnConflict(Flux<T> publisher) {
    method withBadRequestErrorHandling (line 61) | private static <T> Mono<T> withBadRequestErrorHandling(Mono<T> publish...
    method createConnector (line 69) | @Override
    method setConnectorConfig (line 76) | @Override
    method createConnectorWithHttpInfo (line 84) | @Override
    method deleteConnector (line 90) | @Override
    method deleteConnectorWithHttpInfo (line 95) | @Override
    method getConnector (line 102) | @Override
    method getConnectorWithHttpInfo (line 107) | @Override
    method getConnectorConfig (line 113) | @Override
    method getConnectorConfigWithHttpInfo (line 118) | @Override
    method getConnectorPlugins (line 124) | @Override
    method getConnectorPluginsWithHttpInfo (line 129) | @Override
    method getConnectorStatus (line 135) | @Override
    method getConnectorStatusWithHttpInfo (line 140) | @Override
    method getConnectorTaskStatus (line 146) | @Override
    method getConnectorTaskStatusWithHttpInfo (line 152) | @Override
    method getConnectorTasks (line 158) | @Override
    method getConnectorTasksWithHttpInfo (line 163) | @Override
    method getConnectorTopics (line 169) | @Override
    method getConnectorTopicsWithHttpInfo (line 174) | @Override
    method getConnectors (line 180) | @Override
    method getConnectorsWithHttpInfo (line 185) | @Override
    method pauseConnector (line 190) | @Override
    method pauseConnectorWithHttpInfo (line 195) | @Override
    method restartConnector (line 200) | @Override
    method restartConnectorWithHttpInfo (line 206) | @Override
    method restartConnectorTask (line 212) | @Override
    method restartConnectorTaskWithHttpInfo (line 217) | @Override
    method resumeConnector (line 223) | @Override
    method resumeConnectorWithHttpInfo (line 228) | @Override
    method setConnectorConfigWithHttpInfo (line 234) | @Override
    method validateConnectorPluginConfig (line 241) | @Override
    method validateConnectorPluginConfigWithHttpInfo (line 248) | @Override
    class RetryingApiClient (line 254) | private static class RetryingApiClient extends ApiClient {
      method RetryingApiClient (line 256) | public RetryingApiClient(ConnectCluster config,
      method buildWebClient (line 265) | public static WebClient buildWebClient(DataSize maxBuffSize,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ClustersProperties.java
  class ClustersProperties (line 21) | @Configuration
    class Cluster (line 34) | @Data
    class PollingProperties (line 57) | @Data
    class MetricsConfigData (line 64) | @Data
    class ConnectCluster (line 76) | @Data
    class SchemaRegistryAuth (line 90) | @Data
    class TruststoreConfig (line 97) | @Data
    class SerdeConfig (line 104) | @Data
    class KsqldbServerAuth (line 114) | @Data
    class KeystoreConfig (line 121) | @Data
    class Masking (line 130) | @Data
      type Type (line 140) | public enum Type {
    class AuditProperties (line 145) | @Data
      type LogLevel (line 156) | public enum LogLevel {
    method validateAndSetDefaults (line 162) | @PostConstruct
    method setMetricsDefaults (line 171) | private void setMetricsDefaults() {
    method flattenClusterProperties (line 179) | private void flattenClusterProperties() {
    method flattenClusterProperties (line 185) | private Map<String, Object> flattenClusterProperties(@Nullable String ...
    method validateClusterNames (line 201) | private void validateClusterNames() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/Config.java
  class Config (line 19) | @Configuration
    method httpHandler (line 27) | @Bean
    method exporter (line 43) | @Bean
    method jsonNullableModule (line 51) | @Bean

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CorsGlobalConfiguration.java
  class CorsGlobalConfiguration (line 15) | @Configuration
    method corsFilter (line 18) | @Bean

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CustomWebFilter.java
  class CustomWebFilter (line 9) | @Component
    method filter (line 12) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ReadOnlyModeFilter.java
  class ReadOnlyModeFilter (line 19) | @Order
    method filter (line 28) | @NotNull

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/WebclientProperties.java
  class WebclientProperties (line 10) | @Configuration
    method validate (line 17) | @PostConstruct
    method validateAndSetDefaultBufferSize (line 22) | private void validateAndSetDefaultBufferSize() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/AbstractAuthSecurityConfig.java
  class AbstractAuthSecurityConfig (line 3) | abstract class AbstractAuthSecurityConfig {
    method AbstractAuthSecurityConfig (line 5) | protected AbstractAuthSecurityConfig() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/BasicAuthSecurityConfig.java
  class BasicAuthSecurityConfig (line 17) | @Configuration
    method configure (line 26) | @Bean

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/DisabledAuthSecurityConfig.java
  class DisabledAuthSecurityConfig (line 14) | @Configuration
    method configure (line 20) | @Bean

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapProperties.java
  class LdapProperties (line 7) | @ConfigurationProperties("spring.ldap")

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapSecurityConfig.java
  class LdapSecurityConfig (line 43) | @Configuration
    method authenticationManager (line 54) | @Bean
    method contextSource (line 90) | @Bean
    method ldapAuthoritiesExtractor (line 101) | @Bean
    method configureLdap (line 123) | @Bean
    class UserDetailsMapper (line 142) | private static class UserDetailsMapper extends LdapUserDetailsMapper {
      method mapUserFromContext (line 143) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthProperties.java
  class OAuthProperties (line 12) | @ConfigurationProperties("auth.oauth2")
    method init (line 17) | @PostConstruct
    method validateProvider (line 31) | private void validateProvider(final OAuth2Provider provider) {
    class OAuth2Provider (line 36) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthPropertiesConverter.java
  class OAuthPropertiesConverter (line 15) | @NoArgsConstructor(access = AccessLevel.PRIVATE)
    method convertProperties (line 22) | public static OAuth2ClientProperties convertProperties(final OAuthProp...
    method applyCustomTransformations (line 50) | private static void applyCustomTransformations(OAuth2Provider provider) {
    method applyGoogleTransformations (line 54) | private static void applyGoogleTransformations(OAuth2Provider provider) {
    method isGoogle (line 75) | private static boolean isGoogle(OAuth2Provider provider) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthSecurityConfig.java
  class OAuthSecurityConfig (line 38) | @Configuration
    method configure (line 49) | @Bean
    method customOidcUserService (line 65) | @Bean
    method customOauth2UserService (line 81) | @Bean
    method clientRegistrationRepository (line 97) | @Bean
    method defaultOidcLogoutHandler (line 108) | @Bean
    method getExtractor (line 113) | @Nullable
    method getProviderByProviderId (line 124) | private OAuthProperties.OAuth2Provider getProviderByProviderId(final S...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacLdapUser.java
  class RbacLdapUser (line 8) | public class RbacLdapUser implements UserDetails, RbacUser {
    method RbacLdapUser (line 12) | public RbacLdapUser(UserDetails userDetails) {
    method name (line 16) | @Override
    method groups (line 21) | @Override
    method getAuthorities (line 26) | @Override
    method getPassword (line 31) | @Override
    method getUsername (line 36) | @Override
    method isAccountNonExpired (line 41) | @Override
    method isAccountNonLocked (line 46) | @Override
    method isCredentialsNonExpired (line 51) | @Override
    method isEnabled (line 56) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOAuth2User.java
  method getAttributes (line 10) | @Override
  method getAuthorities (line 15) | @Override
  method getName (line 20) | @Override
  method name (line 25) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOidcUser.java
  method getClaims (line 12) | @Override
  method getUserInfo (line 17) | @Override
  method getIdToken (line 22) | @Override
  method getAttributes (line 27) | @Override
  method getAuthorities (line 32) | @Override
  method getName (line 37) | @Override
  method name (line 42) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacUser.java
  type RbacUser (line 5) | public interface RbacUser {
    method name (line 6) | String name();
    method groups (line 8) | Collection<String> groups();

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RoleBasedAccessControlProperties.java
  class RoleBasedAccessControlProperties (line 9) | @ConfigurationProperties("rbac")
    method init (line 14) | @PostConstruct
    method getRoles (line 19) | public List<Role> getRoles() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/ActiveDirectoryCondition.java
  class ActiveDirectoryCondition (line 6) | public class ActiveDirectoryCondition extends AllNestedConditions {
    method ActiveDirectoryCondition (line 8) | public ActiveDirectoryCondition() {
    class OnAuthType (line 12) | @ConditionalOnProperty(value = "auth.type", havingValue = "LDAP")
    class OnActiveDirectory (line 17) | @ConditionalOnProperty(value = "${oauth2.ldap.activeDirectory}:false",...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/CognitoCondition.java
  class CognitoCondition (line 9) | public class CognitoCondition extends AbstractProviderCondition implemen...
    method matches (line 10) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/CognitoLogoutSuccessHandler.java
  class CognitoLogoutSuccessHandler (line 21) | @Component
    method isApplicable (line 25) | @Override
    method handle (line 30) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/LogoutSuccessHandler.java
  type LogoutSuccessHandler (line 8) | public interface LogoutSuccessHandler {
    method isApplicable (line 10) | boolean isApplicable(final String provider);
    method handle (line 12) | Mono<Void> handle(final WebFilterExchange exchange,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/OAuthLogoutSuccessHandler.java
  class OAuthLogoutSuccessHandler (line 15) | @Component
    method OAuthLogoutSuccessHandler (line 22) | public OAuthLogoutSuccessHandler(final OAuthProperties properties,
    method onLogoutSuccess (line 30) | @Override
    method getLogoutHandler (line 41) | private Optional<LogoutSuccessHandler> getLogoutHandler(final String p...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AbstractController.java
  class AbstractController (line 13) | public abstract class AbstractController {
    method getCluster (line 19) | protected KafkaCluster getCluster(String name) {
    method validateAccess (line 25) | protected Mono<Void> validateAccess(AccessContext context) {
    method audit (line 29) | protected void audit(AccessContext acxt, Signal<?> sig) {
    method setClustersStorage (line 33) | @Autowired
    method setAccessControlService (line 38) | @Autowired
    method setAuditService (line 43) | @Autowired

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AccessController.java
  class AccessController (line 26) | @RestController
    method getUserAuthInfo (line 33) | public Mono<ResponseEntity<AuthenticationInfoDTO>> getUserAuthInfo(Ser...
    method mapPermissions (line 59) | private List<UserPermissionDTO> mapPermissions(List<Permission> permis...
    method mapAction (line 78) | @Nullable

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AclsController.java
  class AclsController (line 25) | @RestController
    method createAcl (line 31) | @Override
    method deleteAcl (line 48) | @Override
    method listAcls (line 65) | @Override
    method getAclAsCsv (line 95) | @Override
    method syncAclsCsv (line 111) | @Override
    method createConsumerAcl (line 126) | @Override
    method createProducerAcl (line 143) | @Override
    method createStreamAppAcl (line 160) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ApplicationConfigController.java
  class ApplicationConfigController (line 37) | @Slf4j
    type PropertiesMapper (line 44) | @Mapper
      method fromDto (line 47) | PropertiesStructure fromDto(ApplicationConfigPropertiesDTO dto);
      method toDto (line 49) | ApplicationConfigPropertiesDTO toDto(PropertiesStructure propertiesS...
    method getApplicationInfo (line 57) | @Override
    method getCurrentConfig (line 62) | @Override
    method restartWithConfig (line 76) | @Override
    method uploadConfigRelatedFile (line 94) | @Override
    method validateConfig (line 110) | @Override
    method validateClustersConfig (line 129) | private Mono<Map<String, ClusterConfigValidationDTO>> validateClusters...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AuthController.java
  class AuthController (line 13) | @RestController
    method getAuth (line 18) | @GetMapping(value = "/auth", produces = {"text/html"})
    method createPage (line 27) | private byte[] createPage(ServerWebExchange exchange, String csrfToken...
    method formLogin (line 55) | private String formLogin(
    method csrfToken (line 80) | private static String csrfToken(CsrfToken token) {
    method createError (line 88) | private static String createError(boolean isError) {
    method createLogoutSuccess (line 94) | private static String createLogoutSuccess(boolean isLogoutSuccess) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/BrokersController.java
  class BrokersController (line 25) | @RestController
    method getBrokers (line 34) | @Override
    method getBrokersMetrics (line 48) | @Override
    method getAllBrokersLogdirs (line 67) | @Override
    method getBrokerConfig (line 86) | @Override
    method updateBrokerTopicPartitionLogDir (line 104) | @Override
    method updateBrokerConfigByName (line 123) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ClustersController.java
  class ClustersController (line 17) | @RestController
    method getClusters (line 23) | @Override
    method getClusterMetrics (line 31) | @Override
    method getClusterStats (line 48) | @Override
    method updateClusterInfo (line 65) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ConsumerGroupsController.java
  class ConsumerGroupsController (line 35) | @RestController
    method deleteConsumerGroup (line 46) | @Override
    method getConsumerGroup (line 63) | @Override
    method getTopicConsumerGroups (line 81) | @Override
    method getConsumerGroupsPage (line 107) | @Override
    method resetConsumerGroupOffsets (line 137) | @Override
    method convertPage (line 195) | private ConsumerGroupsPageResponseDTO convertPage(ConsumerGroupService...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KafkaConnectController.java
  class KafkaConnectController (line 33) | @RestController
    method getConnects (line 43) | @Override
    method getConnectors (line 53) | @Override
    method createConnector (line 69) | @Override
    method getConnector (line 87) | @Override
    method deleteConnector (line 106) | @Override
    method getAllConnectors (line 126) | @Override
    method getConnectorConfig (line 153) | @Override
    method setConnectorConfig (line 173) | @Override
    method updateConnectorState (line 194) | @Override
    method getConnectorTasks (line 221) | @Override
    method restartConnectorTask (line 241) | @Override
    method getConnectorPlugins (line 261) | @Override
    method validateConnectorPluginConfig (line 279) | @Override
    method getConnectorsComparator (line 289) | private Comparator<FullConnectorInfoDTO> getConnectorsComparator(Conne...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KsqlController.java
  class KsqlController (line 24) | @RestController
    method executeKsql (line 31) | @Override
    method openKsqlResponsePipe (line 55) | @Override
    method listStreams (line 76) | @Override
    method listTables (line 90) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/MessagesController.java
  class MessagesController (line 45) | @RestController
    method deleteTopicMessages (line 54) | @Override
    method executeSmartFilterTest (line 74) | @Override
    method getTopicMessages (line 82) | @Override
    method sendTopicMessages (line 131) | @Override
    method parseSeekTo (line 154) | @Nullable
    method getSerdes (line 178) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/SchemasController.java
  class SchemasController (line 28) | @RestController
    method getCluster (line 39) | @Override
    method checkSchemaCompatibility (line 48) | @Override
    method createNewSchema (line 71) | @Override
    method deleteLatestSchema (line 93) | @Override
    method deleteSchema (line 110) | @Override
    method deleteSchemaByVersion (line 127) | @Override
    method getAllVersionsBySubject (line 144) | @Override
    method getGlobalSchemaCompatibilityLevel (line 163) | @Override
    method getLatestSchema (line 172) | @Override
    method getSchemaByVersion (line 190) | @Override
    method getSchemas (line 209) | @Override
    method updateGlobalSchemaCompatibilityLevel (line 245) | @Override
    method updateSchemaCompatibilityLevel (line 267) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/StaticController.java
  class StaticController (line 16) | @RestController
    method getIndex (line 29) | @GetMapping(value = "/index.html", produces = {"text/html"})
    method getManifest (line 34) | @GetMapping(value = "/manifest.json", produces = {"application/json"})
    method getRenderedFile (line 39) | public String getRenderedFile(ServerWebExchange exchange, AtomicRefere...
    method buildFile (line 53) | @SneakyThrows

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/TopicsController.java
  class TopicsController (line 45) | @RestController
    method createTopic (line 56) | @Override
    method recreateTopic (line 76) | @Override
    method cloneTopic (line 93) | @Override
    method deleteTopic (line 112) | @Override
    method getTopicConfigs (line 131) | @Override
    method getTopicDetails (line 153) | @Override
    method getTopics (line 171) | @Override
    method updateTopic (line 218) | @Override
    method increaseTopicPartitions (line 238) | @Override
    method changeReplicationFactor (line 257) | @Override
    method analyzeTopic (line 278) | @Override
    method cancelTopicAnalysis (line 295) | @Override
    method getTopicAnalysis (line 312) | @Override
    method getActiveProducerStates (line 331) | @Override
    method getComparatorForTopic (line 359) | private Comparator<InternalTopic> getComparatorForTopic(

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/AbstractEmitter.java
  class AbstractEmitter (line 8) | abstract class AbstractEmitter implements java.util.function.Consumer<Fl...
    method AbstractEmitter (line 13) | protected AbstractEmitter(MessagesProcessing messagesProcessing, Polli...
    method poll (line 18) | protected PolledRecords poll(FluxSink<TopicMessageEventDTO> sink, Enha...
    method sendLimitReached (line 24) | protected boolean sendLimitReached() {
    method send (line 28) | protected void send(FluxSink<TopicMessageEventDTO> sink, Iterable<Cons...
    method sendPhase (line 32) | protected void sendPhase(FluxSink<TopicMessageEventDTO> sink, String n...
    method sendConsuming (line 36) | protected void sendConsuming(FluxSink<TopicMessageEventDTO> sink, Poll...
    method sendFinishStatsAndCompleteSink (line 40) | protected void sendFinishStatsAndCompleteSink(FluxSink<TopicMessageEve...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/BackwardEmitter.java
  class BackwardEmitter (line 14) | public class BackwardEmitter extends RangePollingEmitter {
    method BackwardEmitter (line 16) | public BackwardEmitter(Supplier<EnhancedConsumer> consumerSupplier,
    method nextPollingRange (line 36) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ConsumingStats.java
  class ConsumingStats (line 7) | class ConsumingStats {
    method sendConsumingEvt (line 14) | void sendConsumingEvt(FluxSink<TopicMessageEventDTO> sink, PolledRecor...
    method incFilterApplyError (line 25) | void incFilterApplyError() {
    method sendFinishEvent (line 29) | void sendFinishEvent(FluxSink<TopicMessageEventDTO> sink) {
    method createConsumingStats (line 37) | private TopicMessageConsumingDTO createConsumingStats() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/EnhancedConsumer.java
  class EnhancedConsumer (line 24) | public class EnhancedConsumer extends KafkaConsumer<Bytes, Bytes> {
    method EnhancedConsumer (line 30) | public EnhancedConsumer(Properties properties,
    method pollEnhanced (line 39) | public PolledRecords pollEnhanced(Duration dur) {
    method assign (line 48) | @Override
    method subscribe (line 56) | @Override
    method subscribe (line 61) | @Override
    method subscribe (line 66) | @Override
    method subscribe (line 71) | @Override
    method close (line 76) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ForwardEmitter.java
  class ForwardEmitter (line 14) | public class ForwardEmitter extends RangePollingEmitter {
    method ForwardEmitter (line 16) | public ForwardEmitter(Supplier<EnhancedConsumer> consumerSupplier,
    method nextPollingRange (line 36) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessageFilters.java
  class MessageFilters (line 17) | @Slf4j
    method MessageFilters (line 22) | private MessageFilters() {
    method createMsgFilter (line 25) | public static Predicate<TopicMessageDTO> createMsgFilter(String query,...
    method containsStringFilter (line 36) | static Predicate<TopicMessageDTO> containsStringFilter(String string) {
    method groovyScriptFilter (line 41) | static Predicate<TopicMessageDTO> groovyScriptFilter(String script) {
    method parseToJsonOrReturnAsIs (line 69) | @Nullable
    method getGroovyEngine (line 81) | private static synchronized GroovyScriptEngineImpl getGroovyEngine() {
    method compileScript (line 90) | private static CompiledScript compileScript(GroovyScriptEngineImpl eng...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessagesProcessing.java
  class MessagesProcessing (line 26) | @Slf4j
    method limitReached (line 38) | boolean limitReached() {
    method send (line 42) | void send(FluxSink<TopicMessageEventDTO> sink, Iterable<ConsumerRecord...
    method sentConsumingInfo (line 64) | void sentConsumingInfo(FluxSink<TopicMessageEventDTO> sink, PolledReco...
    method sendFinishEvent (line 70) | void sendFinishEvent(FluxSink<TopicMessageEventDTO> sink) {
    method sendPhase (line 76) | void sendPhase(FluxSink<TopicMessageEventDTO> sink, String name) {
    method sortForSending (line 89) | @VisibleForTesting

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/OffsetsInfo.java
  class OffsetsInfo (line 14) | @Slf4j
    method OffsetsInfo (line 26) | OffsetsInfo(Consumer<?, ?> consumer, String topic) {
    method OffsetsInfo (line 34) | OffsetsInfo(Consumer<?, ?> consumer, Collection<TopicPartition> target...
    method assignedPartitionsFullyPolled (line 48) | boolean assignedPartitionsFullyPolled() {
    method summaryOffsetsRange (line 58) | long summaryOffsetsRange() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PolledRecords.java
  method create (line 17) | static PolledRecords create(ConsumerRecords<Bytes, Bytes> polled, Durati...
  method records (line 26) | public List<ConsumerRecord<Bytes, Bytes>> records(TopicPartition tp) {
  method iterator (line 30) | @Override
  method calculatePolledRecSize (line 35) | private static int calculatePolledRecSize(Iterable<ConsumerRecord<Bytes,...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingSettings.java
  class PollingSettings (line 8) | public class PollingSettings {
    method create (line 15) | public static PollingSettings create(ClustersProperties.Cluster cluster,
    method createDefault (line 30) | public static PollingSettings createDefault() {
    method PollingSettings (line 37) | private PollingSettings(Duration pollTimeout,
    method getPollTimeout (line 43) | public Duration getPollTimeout() {
    method getPollingThrottler (line 47) | public PollingThrottler getPollingThrottler() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingThrottler.java
  class PollingThrottler (line 9) | @Slf4j
    method throttlerSupplier (line 12) | public static Supplier<PollingThrottler> throttlerSupplier(ClustersPro...
    method PollingThrottler (line 26) | @VisibleForTesting
    method noop (line 32) | public static PollingThrottler noop() {
    method throttleAfterPoll (line 37) | public boolean throttleAfterPoll(int polledBytes) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/RangePollingEmitter.java
  class RangePollingEmitter (line 16) | @Slf4j
    method RangePollingEmitter (line 23) | protected RangePollingEmitter(Supplier<EnhancedConsumer> consumerSuppl...
    method nextPollingRange (line 38) | protected abstract TreeMap<TopicPartition, FromToOffset> nextPollingRa...
    method accept (line 43) | @Override
    method poll (line 71) | private List<ConsumerRecord<Bytes, Bytes>> poll(EnhancedConsumer consu...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ResultSizeLimiter.java
  class ResultSizeLimiter (line 7) | public class ResultSizeLimiter implements Predicate<TopicMessageEventDTO> {
    method ResultSizeLimiter (line 11) | public ResultSizeLimiter(int limit) {
    method test (line 15) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/SeekOperations.java
  class SeekOperations (line 17) | @RequiredArgsConstructor(access = AccessLevel.PACKAGE)
    method create (line 24) | public static SeekOperations create(Consumer<?, ?> consumer, ConsumerP...
    method assignAndSeekNonEmptyPartitions (line 38) | public void assignAndSeekNonEmptyPartitions() {
    method getBeginOffsets (line 43) | public Map<TopicPartition, Long> getBeginOffsets() {
    method getEndOffsets (line 47) | public Map<TopicPartition, Long> getEndOffsets() {
    method assignedPartitionsFullyPolled (line 51) | public boolean assignedPartitionsFullyPolled() {
    method summaryOffsetsRange (line 56) | public long summaryOffsetsRange() {
    method offsetsProcessedFromSeek (line 61) | public long offsetsProcessedFromSeek() {
    method getOffsetsForSeek (line 68) | public Map<TopicPartition, Long> getOffsetsForSeek() {
    method getOffsetsForSeek (line 75) | @VisibleForTesting
    method fixOffsets (line 96) | private static Map<TopicPartition, Long> fixOffsets(OffsetsInfo offset...
    method offsetsForTimestamp (line 115) | private static Map<TopicPartition, Long> offsetsForTimestamp(Consumer<...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/TailingEmitter.java
  class TailingEmitter (line 14) | @Slf4j
    method TailingEmitter (line 20) | public TailingEmitter(Supplier<EnhancedConsumer> consumerSupplier,
    method accept (line 30) | @Override
    method assignAndSeek (line 51) | private void assignAndSeek(EnhancedConsumer consumer) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ClusterNotFoundException.java
  class ClusterNotFoundException (line 3) | public class ClusterNotFoundException extends CustomBaseException {
    method ClusterNotFoundException (line 5) | public ClusterNotFoundException() {
    method ClusterNotFoundException (line 9) | public ClusterNotFoundException(String message) {
    method getErrorCode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ConnectNotFoundException.java
  class ConnectNotFoundException (line 3) | public class ConnectNotFoundException extends CustomBaseException {
    method ConnectNotFoundException (line 5) | public ConnectNotFoundException() {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/CustomBaseException.java
  class CustomBaseException (line 4) | public abstract class CustomBaseException extends RuntimeException {
    method CustomBaseException (line 5) | protected CustomBaseException() {
    method CustomBaseException (line 9) | protected CustomBaseException(String message) {
    method CustomBaseException (line 13) | protected CustomBaseException(String message, Throwable cause) {
    method CustomBaseException (line 17) | protected CustomBaseException(Throwable cause) {
    method CustomBaseException (line 21) | protected CustomBaseException(String message, Throwable cause, boolean...
    method getErrorCode (line 26) | public abstract ErrorCode getErrorCode();

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/DuplicateEntityException.java
  class DuplicateEntityException (line 3) | public class DuplicateEntityException extends CustomBaseException {
    method DuplicateEntityException (line 5) | public DuplicateEntityException(String message) {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ErrorCode.java
  type ErrorCode (line 8) | public enum ErrorCode {
    method ErrorCode (line 50) | ErrorCode(int code, HttpStatus httpStatus) {
    method code (line 55) | public int code() {
    method httpStatus (line 59) | public HttpStatus httpStatus() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/FileUploadException.java
  class FileUploadException (line 5) | public class FileUploadException extends CustomBaseException {
    method FileUploadException (line 7) | public FileUploadException(String msg, Throwable cause) {
    method FileUploadException (line 11) | public FileUploadException(Path path, Throwable cause) {
    method getErrorCode (line 15) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/GlobalErrorWebExceptionHandler.java
  class GlobalErrorWebExceptionHandler (line 34) | @Component
    method GlobalErrorWebExceptionHandler (line 38) | public GlobalErrorWebExceptionHandler(ErrorAttributes errorAttributes,
    method getRoutingFunction (line 45) | @Override
    method renderErrorResponse (line 50) | private Mono<ServerResponse> renderErrorResponse(ServerRequest request) {
    method renderDefault (line 71) | private Mono<ServerResponse> renderDefault(Throwable throwable, Server...
    method render (line 84) | private Mono<ServerResponse> render(CustomBaseException baseException,...
    method render (line 98) | private Mono<ServerResponse> render(WebExchangeBindException exception...
    method render (line 128) | private Mono<ServerResponse> render(ResponseStatusException exception,...
    method requestId (line 142) | private String requestId(ServerRequest request) {
    method currentTimestamp (line 146) | private BigDecimal currentTimestamp() {
    method extractFieldErrorMsg (line 150) | private String extractFieldErrorMsg(FieldError fieldError) {
    method coalesce (line 154) | private <T> T coalesce(T... items) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/IllegalEntityStateException.java
  class IllegalEntityStateException (line 3) | public class IllegalEntityStateException extends CustomBaseException {
    method IllegalEntityStateException (line 4) | public IllegalEntityStateException(String message) {
    method getErrorCode (line 8) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/InvalidRequestApiException.java
  class InvalidRequestApiException (line 3) | public class InvalidRequestApiException extends CustomBaseException {
    method InvalidRequestApiException (line 5) | public InvalidRequestApiException(String message) {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/JsonAvroConversionException.java
  class JsonAvroConversionException (line 3) | public class JsonAvroConversionException extends ValidationException {
    method JsonAvroConversionException (line 4) | public JsonAvroConversionException(String message) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KafkaConnectConflictReponseException.java
  class KafkaConnectConflictReponseException (line 6) | public class KafkaConnectConflictReponseException extends CustomBaseExce...
    method KafkaConnectConflictReponseException (line 8) | public KafkaConnectConflictReponseException(WebClientResponseException...
    method getErrorCode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlApiException.java
  class KsqlApiException (line 3) | public class KsqlApiException extends CustomBaseException {
    method KsqlApiException (line 5) | public KsqlApiException(String message) {
    method KsqlApiException (line 9) | public KsqlApiException(String message, Throwable cause) {
    method getErrorCode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlDbNotFoundException.java
  class KsqlDbNotFoundException (line 3) | public class KsqlDbNotFoundException extends CustomBaseException {
    method KsqlDbNotFoundException (line 5) | public KsqlDbNotFoundException() {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/LogDirNotFoundApiException.java
  class LogDirNotFoundApiException (line 3) | public class LogDirNotFoundApiException extends CustomBaseException {
    method LogDirNotFoundApiException (line 5) | public LogDirNotFoundApiException() {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/NotFoundException.java
  class NotFoundException (line 3) | public class NotFoundException extends CustomBaseException {
    method NotFoundException (line 5) | public NotFoundException(String message) {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ReadOnlyModeException.java
  class ReadOnlyModeException (line 4) | public class ReadOnlyModeException extends CustomBaseException {
    method ReadOnlyModeException (line 6) | public ReadOnlyModeException() {
    method getErrorCode (line 10) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaCompatibilityException.java
  class SchemaCompatibilityException (line 3) | public class SchemaCompatibilityException extends CustomBaseException {
    method SchemaCompatibilityException (line 4) | public SchemaCompatibilityException() {
    method getErrorCode (line 8) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaFailedToDeleteException.java
  class SchemaFailedToDeleteException (line 3) | public class SchemaFailedToDeleteException extends CustomBaseException {
    method SchemaFailedToDeleteException (line 5) | public SchemaFailedToDeleteException(String schemaName) {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaNotFoundException.java
  class SchemaNotFoundException (line 3) | public class SchemaNotFoundException extends CustomBaseException {
    method SchemaNotFoundException (line 5) | public SchemaNotFoundException() {
    method SchemaNotFoundException (line 9) | public SchemaNotFoundException(String message) {
    method getErrorCode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicAnalysisException.java
  class TopicAnalysisException (line 3) | public class TopicAnalysisException extends CustomBaseException {
    method TopicAnalysisException (line 5) | public TopicAnalysisException(String message) {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicMetadataException.java
  class TopicMetadataException (line 3) | public class TopicMetadataException extends CustomBaseException {
    method TopicMetadataException (line 5) | public TopicMetadataException(String message) {
    method TopicMetadataException (line 9) | public TopicMetadataException(String message, Throwable cause) {
    method getErrorCode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicNotFoundException.java
  class TopicNotFoundException (line 3) | public class TopicNotFoundException extends CustomBaseException {
    method TopicNotFoundException (line 5) | public TopicNotFoundException() {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicOrPartitionNotFoundException.java
  class TopicOrPartitionNotFoundException (line 3) | public class TopicOrPartitionNotFoundException extends CustomBaseExcepti...
    method TopicOrPartitionNotFoundException (line 5) | public TopicOrPartitionNotFoundException() {
    method getErrorCode (line 9) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicRecreationException.java
  class TopicRecreationException (line 3) | public class TopicRecreationException extends CustomBaseException {
    method getErrorCode (line 4) | @Override
    method TopicRecreationException (line 9) | public TopicRecreationException(String topicName, int seconds) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/UnprocessableEntityException.java
  class UnprocessableEntityException (line 4) | public class UnprocessableEntityException extends CustomBaseException {
    method UnprocessableEntityException (line 6) | public UnprocessableEntityException(String message) {
    method getErrorCode (line 10) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ValidationException.java
  class ValidationException (line 4) | public class ValidationException extends CustomBaseException {
    method ValidationException (line 5) | public ValidationException(String message) {
    method ValidationException (line 9) | public ValidationException(String message, Throwable cause) {
    method getErrorCode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ClusterMapper.java
  type ClusterMapper (line 49) | @Mapper(componentModel = "spring")
    method toCluster (line 52) | ClusterDTO toCluster(InternalClusterState clusterState);
    method toClusterStats (line 54) | ClusterStatsDTO toClusterStats(InternalClusterState clusterState);
    method toClusterMetrics (line 56) | default ClusterMetricsDTO toClusterMetrics(Metrics metrics) {
    method convert (line 61) | private MetricDTO convert(RawMetric rawMetric) {
    method toBrokerMetrics (line 68) | default BrokerMetricsDTO toBrokerMetrics(List<RawMetric> metrics) {
    method toBrokerConfig (line 73) | @Mapping(target = "isSensitive", source = "sensitive")
    method toConfigSynonym (line 77) | default ConfigSynonymDTO toConfigSynonym(ConfigEntry.ConfigSynonym con...
    method toTopic (line 92) | TopicDTO toTopic(InternalTopic topic);
    method toPartition (line 94) | PartitionDTO toPartition(InternalPartition topic);
    method toBrokerDto (line 96) | BrokerDTO toBrokerDto(InternalBroker broker);
    method toTopicDetails (line 98) | TopicDetailsDTO toTopicDetails(InternalTopic topic);
    method toTopicConfig (line 100) | @Mapping(target = "isReadOnly", source = "readOnly")
    method toReplica (line 104) | ReplicaDTO toReplica(InternalReplica replica);
    method toKafkaConnect (line 106) | ConnectDTO toKafkaConnect(ClustersProperties.ConnectCluster connect);
    method toFeaturesEnum (line 108) | List<ClusterDTO.FeaturesEnum> toFeaturesEnum(List<ClusterFeature> feat...
    method map (line 110) | default List<PartitionDTO> map(Map<Integer, InternalPartition> map) {
    method map (line 114) | default BrokerDiskUsageDTO map(Integer id, InternalBrokerDiskUsage int...
    method map (line 122) | default TopicProducerStateDTO map(int partition, ProducerState state) {
    method mapAclOperation (line 133) | static KafkaAclDTO.OperationEnum mapAclOperation(AclOperation operatio...
    method mapAclResourceType (line 153) | static KafkaAclResourceTypeDTO mapAclResourceType(ResourceType resourc...
    method mapAclResourceTypeDto (line 166) | static ResourceType mapAclResourceTypeDto(KafkaAclResourceTypeDTO dto) {
    method mapPatternTypeDto (line 170) | static PatternType mapPatternTypeDto(KafkaAclNamePatternTypeDTO dto) {
    method toAclBinding (line 174) | static AclBinding toAclBinding(KafkaAclDTO dto) {
    method toKafkaAclDto (line 190) | static KafkaAclDTO toKafkaAclDto(AclBinding binding) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ConsumerGroupMapper.java
  class ConsumerGroupMapper (line 17) | public class ConsumerGroupMapper {
    method ConsumerGroupMapper (line 19) | private ConsumerGroupMapper() {
    method toDto (line 22) | public static ConsumerGroupDTO toDto(InternalConsumerGroup c) {
    method toDto (line 26) | public static ConsumerGroupDTO toDto(InternalTopicConsumerGroup c) {
    method toDetailsDto (line 40) | public static ConsumerGroupDetailsDTO toDetailsDto(InternalConsumerGro...
    method convertToConsumerGroup (line 79) | private static <T extends ConsumerGroupDTO> T convertToConsumerGroup(
    method mapCoordinator (line 96) | private static BrokerDTO mapCoordinator(Node node) {
    method mapConsumerGroupState (line 100) | private static ConsumerGroupStateDTO mapConsumerGroupState(

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/DescribeLogDirsMapper.java
  class DescribeLogDirsMapper (line 15) | @Component
    method toBrokerLogDirsList (line 18) | public List<BrokersLogdirsDTO> toBrokerLogDirsList(
    method toBrokerLogDirs (line 28) | private BrokersLogdirsDTO toBrokerLogDirs(Integer broker, String dirName,
    method toTopicLogDirs (line 43) | private BrokerTopicLogdirsDTO toTopicLogDirs(Integer broker, String name,
    method topicPartitionLogDir (line 56) | private BrokerTopicPartitionLogdirDTO topicPartitionLogDir(Integer bro...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaConnectMapper.java
  type KafkaConnectMapper (line 18) | @Mapper(componentModel = "spring")
    method toClient (line 20) | NewConnector toClient(com.provectus.kafka.ui.model.NewConnectorDTO new...
    method fromClient (line 22) | ConnectorDTO fromClient(com.provectus.kafka.ui.connect.model.Connector...
    method fromClient (line 24) | ConnectorStatusDTO fromClient(ConnectorStatusConnector connectorStatus);
    method fromClient (line 26) | TaskDTO fromClient(ConnectorTask connectorTask);
    method fromClient (line 28) | TaskStatusDTO fromClient(com.provectus.kafka.ui.connect.model.TaskStat...
    method fromClient (line 30) | ConnectorPluginDTO fromClient(
    method fromClient (line 33) | ConnectorPluginConfigValidationResponseDTO fromClient(
    method fullConnectorInfo (line 37) | default FullConnectorInfoDTO fullConnectorInfo(InternalConnectInfo con...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaSrMapper.java
  type KafkaSrMapper (line 20) | @Mapper
    method toDto (line 23) | default SchemaSubjectDTO toDto(SchemaRegistryService.SubjectWithCompat...
    method toDto (line 34) | List<SchemaReferenceDTO> toDto(List<SchemaReference> references);
    method toDto (line 36) | CompatibilityCheckResponseDTO toDto(CompatibilityCheckResponse ccr);
    method toDto (line 38) | CompatibilityLevelDTO.CompatibilityEnum toDto(Compatibility compatibil...
    method fromDto (line 40) | NewSubject fromDto(NewSchemaSubjectDTO subjectDto);
    method fromDto (line 42) | Compatibility fromDto(CompatibilityLevelDTO.CompatibilityEnum dtoEnum);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/BrokerMetrics.java
  class BrokerMetrics (line 7) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/CleanupPolicy.java
  type CleanupPolicy (line 7) | public enum CleanupPolicy {
    method CleanupPolicy (line 15) | CleanupPolicy(String policy) {
    method CleanupPolicy (line 19) | CleanupPolicy(List<String> policies) {
    method getPolicy (line 23) | public String getPolicy() {
    method fromString (line 27) | public static CleanupPolicy fromString(String string) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ClusterFeature.java
  type ClusterFeature (line 3) | public enum ClusterFeature {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ConsumerPosition.java
  class ConsumerPosition (line 8) | @Value

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBroker.java
  class InternalBroker (line 8) | @Data
    method InternalBroker (line 22) | public InternalBroker(Node node,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerConfig.java
  class InternalBrokerConfig (line 9) | @Data
    method from (line 19) | public static InternalBrokerConfig from(ConfigEntry configEntry) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerDiskUsage.java
  class InternalBrokerDiskUsage (line 6) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterMetrics.java
  class InternalClusterMetrics (line 11) | @Data
    method empty (line 15) | public static InternalClusterMetrics empty() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterState.java
  class InternalClusterState (line 11) | @Data
    method InternalClusterState (line 31) | public InternalClusterState(KafkaCluster cluster, Statistics statistic...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalConsumerGroup.java
  class InternalConsumerGroup (line 16) | @Data
    class InternalMember (line 30) | @Data
    method create (line 40) | public static InternalConsumerGroup create(
    method calculateConsumerLag (line 59) | private static Long calculateConsumerLag(Map<TopicPartition, Long> off...
    method calculateTopicNum (line 75) | private static Integer calculateTopicNum(Map<TopicPartition, Long> off...
    method initInternalMembers (line 85) | private static Collection<InternalMember> initInternalMembers(Consumer...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalLogDirStats.java
  class InternalLogDirStats (line 18) | @Value
    class SegmentStats (line 21) | @Value
      method SegmentStats (line 26) | public SegmentStats(LongSummaryStatistics s) {
    method empty (line 36) | public static InternalLogDirStats empty() {
    method InternalLogDirStats (line 40) | public InternalLogDirStats(Map<Integer, Map<String, DescribeLogDirsRes...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartition.java
  class InternalPartition (line 7) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartitionsOffsets.java
  class InternalPartitionsOffsets (line 11) | public class InternalPartitionsOffsets {
    class Offsets (line 13) | @Value
    method InternalPartitionsOffsets (line 21) | public InternalPartitionsOffsets(Map<TopicPartition, Offsets> offsetsM...
    method empty (line 25) | public static InternalPartitionsOffsets empty() {
    method get (line 29) | public Optional<Offsets> get(String topic, int partition) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalReplica.java
  class InternalReplica (line 7) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalSegmentSizeDto.java
  class InternalSegmentSizeDto (line 7) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalTopic.java
  class InternalTopic (line 15) | @Data
    method from (line 43) | public static InternalTopic from(TopicDescription topicDescription,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalTopicConfig.java
  class InternalTopicConfig (line 9) | @Data
    method from (line 21) | public static InternalTopicConfig from(ConfigEntry configEntry) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalTopicConsumerGroup.java
  class InternalTopicConsumerGroup (line 13) | @Value
    method create (line 27) | public static InternalTopicConsumerGroup create(
    method calculateConsumerLag (line 48) | @Nullable

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/KafkaCluster.java
  class KafkaCluster (line 17) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/Metrics.java
  class Metrics (line 15) | @Builder
    method empty (line 25) | public static Metrics empty() {
    method getSummarizedMetrics (line 35) | public Stream<RawMetric> getSummarizedMetrics() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/MetricsConfig.java
  class MetricsConfig (line 8) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/PartitionDistributionStats.java
  class PartitionDistributionStats (line 16) | @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
    method create (line 31) | public static PartitionDistributionStats create(Statistics stats) {
    method create (line 35) | static PartitionDistributionStats create(Statistics stats, int minPart...
    method incr (line 68) | private static void incr(Map<Node, Integer> map, Node n) {
    method partitionsSkew (line 72) | @Nullable
    method leadersSkew (line 77) | @Nullable
    method calculateAvgSkew (line 83) | @Nullable

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/PartitionsStats.java
  class PartitionsStats (line 8) | @Data
    method PartitionsStats (line 19) | public PartitionsStats(TopicDescription description) {
    method PartitionsStats (line 23) | public PartitionsStats(Collection<TopicDescription> topicDescriptions) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/Statistics.java
  class Statistics (line 12) | @Value
    method empty (line 25) | public static Statistics empty() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/connect/InternalConnectInfo.java
  class InternalConnectInfo (line 10) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/AccessContext.java
  class AccessContext (line 19) | @Value
    method builder (line 50) | public static AccessContextBuilder builder() {
    class AccessContextBuilder (line 54) | public static final class AccessContextBuilder {
      method AccessContextBuilder (line 76) | private AccessContextBuilder() {
      method applicationConfigActions (line 79) | public AccessContextBuilder applicationConfigActions(ApplicationConf...
      method cluster (line 85) | public AccessContextBuilder cluster(String cluster) {
      method clusterConfigActions (line 90) | public AccessContextBuilder clusterConfigActions(ClusterConfigAction...
      method topic (line 96) | public AccessContextBuilder topic(String topic) {
      method topicActions (line 101) | public AccessContextBuilder topicActions(TopicAction... actions) {
      method consumerGroup (line 107) | public AccessContextBuilder consumerGroup(String consumerGroup) {
      method consumerGroupActions (line 112) | public AccessContextBuilder consumerGroupActions(ConsumerGroupAction...
      method connect (line 118) | public AccessContextBuilder connect(String connect) {
      method connectActions (line 123) | public AccessContextBuilder connectActions(ConnectAction... actions) {
      method connector (line 129) | public AccessContextBuilder connector(String connector) {
      method schema (line 134) | public AccessContextBuilder schema(String schema) {
      method schemaActions (line 139) | public AccessContextBuilder schemaActions(SchemaAction... actions) {
      method ksqlActions (line 145) | public AccessContextBuilder ksqlActions(KsqlAction... actions) {
      method aclActions (line 151) | public AccessContextBuilder aclActions(AclAction... actions) {
      method auditActions (line 157) | public AccessContextBuilder auditActions(AuditAction... actions) {
      method operationName (line 163) | public AccessContextBuilder operationName(String operationName) {
      method operationParams (line 168) | public AccessContextBuilder operationParams(Object operationParams) {
      method operationParams (line 173) | public AccessContextBuilder operationParams(Map<String, Object> para...
      method build (line 178) | public AccessContext build() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Permission.java
  class Permission (line 29) | @Getter
    method setResource (line 45) | @SuppressWarnings("unused")
    method setValue (line 50) | @SuppressWarnings("unused")
    method setActions (line 55) | @SuppressWarnings("unused")
    method validate (line 60) | public void validate() {
    method transform (line 67) | public void transform() {
    method getAllActionValues (line 76) | private List<String> getAllActionValues() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Resource.java
  type Resource (line 6) | public enum Resource {
    method fromString (line 18) | @Nullable

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Role.java
  class Role (line 6) | @Data
    method validate (line 14) | public void validate() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/Subject.java
  class Subject (line 6) | @Getter
    method setProvider (line 13) | public void setProvider(String provider) {
    method setType (line 17) | public void setType(String type) {
    method setValue (line 21) | public void setValue(String value) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/AclAction.java
  type AclAction (line 7) | public enum AclAction implements PermissibleAction {
    method fromString (line 16) | @Nullable
    method isAlter (line 21) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ApplicationConfigAction.java
  type ApplicationConfigAction (line 7) | public enum ApplicationConfigAction implements PermissibleAction {
    method fromString (line 16) | @Nullable
    method isAlter (line 21) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/AuditAction.java
  type AuditAction (line 7) | public enum AuditAction implements PermissibleAction {
    method fromString (line 15) | @Nullable
    method isAlter (line 20) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ClusterConfigAction.java
  type ClusterConfigAction (line 7) | public enum ClusterConfigAction implements PermissibleAction {
    method fromString (line 16) | @Nullable
    method isAlter (line 21) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ConnectAction.java
  type ConnectAction (line 7) | public enum ConnectAction implements PermissibleAction {
    method fromString (line 18) | @Nullable
    method isAlter (line 23) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/ConsumerGroupAction.java
  type ConsumerGroupAction (line 7) | public enum ConsumerGroupAction implements PermissibleAction {
    method fromString (line 17) | @Nullable
    method isAlter (line 22) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/KsqlAction.java
  type KsqlAction (line 7) | public enum KsqlAction implements PermissibleAction {
    method fromString (line 15) | @Nullable
    method isAlter (line 20) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/PermissibleAction.java
  type PermissibleAction (line 3) | public sealed interface PermissibleAction permits
    method name (line 9) | String name();
    method isAlter (line 11) | boolean isAlter();

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/SchemaAction.java
  type SchemaAction (line 7) | public enum SchemaAction implements PermissibleAction {
    method fromString (line 19) | @Nullable
    method isAlter (line 24) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/permission/TopicAction.java
  type TopicAction (line 7) | public enum TopicAction implements PermissibleAction {
    method fromString (line 21) | @Nullable
    method isAlter (line 26) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/rbac/provider/Provider.java
  type Provider (line 6) | public enum Provider {
    method fromString (line 18) | @Nullable
    class Name (line 23) | public static class Name {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/ErrorResponse.java
  class ErrorResponse (line 6) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/InternalCompatibilityCheck.java
  class InternalCompatibilityCheck (line 6) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/InternalCompatibilityLevel.java
  class InternalCompatibilityLevel (line 5) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/InternalNewSchema.java
  class InternalNewSchema (line 7) | @Data
    method InternalNewSchema (line 13) | public InternalNewSchema(String schema, SchemaTypeDTO schemaType) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/schemaregistry/SubjectIdResponse.java
  class SubjectIdResponse (line 5) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/BuiltInSerde.java
  type BuiltInSerde (line 6) | public interface BuiltInSerde extends Serde {
    method canBeAutoConfigured (line 10) | default boolean canBeAutoConfigured(PropertyResolver kafkaClusterPrope...
    method autoConfigure (line 18) | default void autoConfigure(PropertyResolver kafkaClusterProperties,
    method configure (line 22) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ClassloaderUtil.java
  class ClassloaderUtil (line 3) | class ClassloaderUtil {
    method compareAndSwapLoaders (line 5) | static ClassLoader compareAndSwapLoaders(ClassLoader loader) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ClusterSerdes.java
  class ClusterSerdes (line 15) | @Slf4j
    method findSerdeByPatternsOrDefault (line 30) | private Optional<SerdeInstance> findSerdeByPatternsOrDefault(String to...
    method serdeForName (line 57) | public Optional<SerdeInstance> serdeForName(String name) {
    method all (line 61) | public Stream<SerdeInstance> all() {
    method suggestSerdeForSerialize (line 65) | public SerdeInstance suggestSerdeForSerialize(String topic, Serde.Targ...
    method suggestSerdeForDeserialize (line 70) | public SerdeInstance suggestSerdeForDeserialize(String topic, Serde.Ta...
    method close (line 75) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ConsumerRecordDeserializer.java
  class ConsumerRecordDeserializer (line 21) | @Slf4j
    method deserialize (line 39) | public TopicMessageDTO deserialize(ConsumerRecord<Bytes, Bytes> rec) {
    method mapToTimestampType (line 57) | private static TimestampTypeEnum mapToTimestampType(TimestampType time...
    method fillHeaders (line 65) | private void fillHeaders(TopicMessageDTO message, ConsumerRecord<Bytes...
    method fillKey (line 76) | private void fillKey(TopicMessageDTO message, ConsumerRecord<Bytes, By...
    method fillValue (line 94) | private void fillValue(TopicMessageDTO message, ConsumerRecord<Bytes, ...
    method getHeadersSize (line 114) | private static Long getHeadersSize(ConsumerRecord<Bytes, Bytes> consum...
    method getKeySize (line 124) | private static Long getKeySize(ConsumerRecord<Bytes, Bytes> consumerRe...
    method getValueSize (line 128) | private static Long getValueSize(ConsumerRecord<Bytes, Bytes> consumer...
    method headerSize (line 132) | private static int headerSize(Header header) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/CustomSerdeLoader.java
  class CustomSerdeLoader (line 25) | class CustomSerdeLoader {
    class CustomSerde (line 27) | @Value
    method loadAndConfigure (line 36) | @SneakyThrows
    method isArchive (line 55) | private static boolean isArchive(Path path) {
    method findArchiveFiles (line 62) | @SneakyThrows
    method createClassloader (line 80) | private ClassLoader createClassloader(Path location) {
    class ChildFirstClassloader (line 102) | private static class ChildFirstClassloader extends URLClassLoader {
      method ChildFirstClassloader (line 106) | ChildFirstClassloader(URL[] urls, ClassLoader parent) {
      method loadClass (line 110) | @Override
      method getResources (line 132) | @Override
      method getResource (line 163) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/ProducerRecordCreator.java
  class ProducerRecordCreator (line 12) | @RequiredArgsConstructor
    method create (line 18) | public ProducerRecord<byte[], byte[]> create(String topic,
    method createHeaders (line 32) | private Iterable<Header> createHeaders(Map<String, String> clientHeade...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/PropertyResolverImpl.java
  class PropertyResolverImpl (line 16) | public class PropertyResolverImpl implements PropertyResolver {
    method empty (line 23) | public static PropertyResolverImpl empty() {
    method PropertyResolverImpl (line 27) | public PropertyResolverImpl(Environment env) {
    method PropertyResolverImpl (line 31) | public PropertyResolverImpl(Environment env, @Nullable String prefix) {
    method targetPropertyName (line 36) | private ConfigurationPropertyName targetPropertyName(String key) {
    method getProperty (line 43) | @Override
    method getListProperty (line 50) | @Override
    method getMapProperty (line 57) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/RecordHeaderImpl.java
  class RecordHeaderImpl (line 6) | public class RecordHeaderImpl implements RecordHeader  {
    method RecordHeaderImpl (line 10) | public RecordHeaderImpl(Header header) {
    method key (line 14) | @Override
    method value (line 19) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/RecordHeadersImpl.java
  class RecordHeadersImpl (line 10) | public class RecordHeadersImpl implements RecordHeaders {
    method RecordHeadersImpl (line 14) | public RecordHeadersImpl() {
    method RecordHeadersImpl (line 18) | public RecordHeadersImpl(Headers headers) {
    method iterator (line 22) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/SerdeInstance.java
  class SerdeInstance (line 14) | @Slf4j
    method wrapWithClassloader (line 32) | private <T> T wrapWithClassloader(Supplier<T> call) {
    method getSchema (line 44) | public Optional<SchemaDescription> getSchema(String topic, Serde.Targe...
    method description (line 53) | public Optional<String> description() {
    method canSerialize (line 62) | public boolean canSerialize(String topic, Serde.Target type) {
    method canDeserialize (line 71) | public boolean canDeserialize(String topic, Serde.Target type) {
    method serializer (line 80) | public Serde.Serializer serializer(String topic, Serde.Target type) {
    method deserializer (line 87) | public Serde.Deserializer deserializer(String topic, Serde.Target type) {
    method close (line 94) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/SerdesInitializer.java
  class SerdesInitializer (line 34) | @Slf4j
    method SerdesInitializer (line 40) | public SerdesInitializer() {
    method SerdesInitializer (line 60) | @VisibleForTesting
    method init (line 86) | public ClusterSerdes init(Environment env,
    method registerTopicRelatedSerde (line 145) | private void registerTopicRelatedSerde(Map<String, SerdeInstance> serd...
    method registerConsumerOffsetsSerde (line 149) | private void registerConsumerOffsetsSerde(Map<String, SerdeInstance> s...
    method createFallbackSerde (line 163) | private SerdeInstance createFallbackSerde() {
    method createSerdeFromConfig (line 169) | @SneakyThrows
    method createSerdeWithBuiltInSerdeName (line 190) | private SerdeInstance createSerdeWithBuiltInSerdeName(SerdeConfig serd...
    method autoConfigureSerde (line 221) | private boolean autoConfigureSerde(BuiltInSerde serde, PropertyResolve...
    method createSerdeWithBuiltInClass (line 229) | @SneakyThrows
    method createSerdeInstance (line 249) | @SneakyThrows
    method loadAndInitCustomSerde (line 254) | private SerdeInstance loadAndInitCustomSerde(SerdeConfig serdeConfig,
    method nullablePattern (line 277) | @Nullable

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/AvroEmbeddedSerde.java
  class AvroEmbeddedSerde (line 16) | public class AvroEmbeddedSerde implements BuiltInSerde {
    method name (line 18) | public static String name() {
    method getDescription (line 22) | @Override
    method getSchema (line 27) | @Override
    method canDeserialize (line 32) | @Override
    method canSerialize (line 37) | @Override
    method serializer (line 42) | @Override
    method deserializer (line 47) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/Base64Serde.java
  class Base64Serde (line 10) | public class Base64Serde implements BuiltInSerde {
    method name (line 12) | public static String name() {
    method getDescription (line 16) | @Override
    method getSchema (line 21) | @Override
    method canDeserialize (line 26) | @Override
    method canSerialize (line 31) | @Override
    method serializer (line 36) | @Override
    method deserializer (line 49) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/ConsumerOffsetsSerde.java
  class ConsumerOffsetsSerde (line 27) | public class ConsumerOffsetsSerde implements BuiltInSerde {
    method name (line 50) | public static String name() {
    method createMapper (line 54) | private static JsonMapper createMapper() {
    method getDescription (line 72) | @Override
    method getSchema (line 77) | @Override
    method canDeserialize (line 82) | @Override
    method canSerialize (line 87) | @Override
    method serializer (line 92) | @Override
    method deserializer (line 97) | @Override
    method keyDeserializer (line 105) | private Deserializer keyDeserializer() {
    method valueDeserializer (line 133) | private Deserializer valueDeserializer() {
    method toJson (line 308) | @SneakyThrows

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/HexSerde.java
  class HexSerde (line 11) | public class HexSerde implements BuiltInSerde {
    method name (line 15) | public static String name() {
    method autoConfigure (line 19) | @Override
    method configure (line 24) | @Override
    method configure (line 33) | private void configure(String delim, boolean uppercase) {
    method getDescription (line 40) | @Override
    method getSchema (line 45) | @Override
    method canDeserialize (line 50) | @Override
    method canSerialize (line 55) | @Override
    method serializer (line 60) | @Override
    method prepareInputForParse (line 73) | private static String prepareInputForParse(String input) {
    method deserializer (line 80) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/Int32Serde.java
  class Int32Serde (line 10) | public class Int32Serde implements BuiltInSerde {
    method name (line 12) | public static String name() {
    method getDescription (line 16) | @Override
    method getSchema (line 21) | @Override
    method canDeserialize (line 39) | @Override
    method canSerialize (line 44) | @Override
    method serializer (line 49) | @Override
    method deserializer (line 54) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/Int64Serde.java
  class Int64Serde (line 12) | public class Int64Serde implements BuiltInSerde {
    method name (line 14) | public static String name() {
    method getDescription (line 18) | @Override
    method getSchema (line 23) | @Override
    method canDeserialize (line 41) | @Override
    method canSerialize (line 46) | @Override
    method serializer (line 51) | @Override
    method deserializer (line 56) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/ProtobufFileSerde.java
  class ProtobufFileSerde (line 66) | @Slf4j
    method name (line 69) | public static String name() {
    method canBeAutoConfigured (line 86) | @Override
    method autoConfigure (line 92) | @Override
    method configure (line 98) | @Override
    method configure (line 105) | @VisibleForTesting
    method getDescription (line 120) | @Override
    method descriptorFor (line 125) | private Optional<Descriptor> descriptorFor(String topic, Target type) {
    method canDeserialize (line 135) | @Override
    method canSerialize (line 140) | @Override
    method serializer (line 145) | @Override
    method deserializer (line 159) | @Override
    method getSchema (line 178) | @Override
    method toSchemaDescription (line 183) | private SchemaDescription toSchemaDescription(Descriptor descriptor) {
    method readFileAsString (line 191) | @SneakyThrows
    method canBeAutoConfigured (line 205) | static boolean canBeAutoConfigured(PropertyResolver kafkaClusterProper...
    method create (line 211) | static Configuration create(PropertyResolver properties) {
    method getDescriptorAndPath (line 250) | private static Map.Entry<Descriptor, Path> getDescriptorAndPath(Map<Pa...
    method populateDescriptors (line 260) | private static Map<String, Descriptor> populateDescriptors(Map<String,...
    method loadSchemas (line 269) | @VisibleForTesting
    method addProtobufSchema (line 292) | private static void addProtobufSchema(Map<Descriptor, Path> descriptor...
    method addProtobufSchemas (line 299) | private static void addProtobufSchemas(Map<Descriptor, Path> descripto...
    class ProtoSchemaLoader (line 308) | static class ProtoSchemaLoader {
      method ProtoSchemaLoader (line 312) | ProtoSchemaLoader(String baseLocationStr) {
      method load (line 319) | List<ProtoFile> load() {
      method knownProtoFiles (line 340) | private Map<String, ProtoFile> knownProtoFiles() {
      method loadKnownProtoFile (line 371) | private ProtoFile loadKnownProtoFile(String path, Descriptors.FileDe...
      method createFilesLoader (line 384) | private Loader createFilesLoader(Map<String, ProtoFile> files) {
      method loadFilesWithLocations (line 398) | @SneakyThrows

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/ProtobufRawSerde.java
  class ProtobufRawSerde (line 13) | public class ProtobufRawSerde implements BuiltInSerde {
    method name (line 15) | public static String name() {
    method getDescription (line 19) | @Override
    method getSchema (line 24) | @Override
    method canSerialize (line 29) | @Override
    method canDeserialize (line 34) | @Override
    method serializer (line 39) | @Override
    method deserializer (line 44) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/StringSerde.java
  class StringSerde (line 12) | public class StringSerde implements BuiltInSerde {
    method name (line 14) | public static String name() {
    method configure (line 20) | @Override
    method getDescription (line 29) | @Override
    method getSchema (line 34) | @Override
    method canDeserialize (line 39) | @Override
    method canSerialize (line 44) | @Override
    method serializer (line 49) | @Override
    method deserializer (line 54) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/UInt32Serde.java
  class UInt32Serde (line 11) | public class UInt32Serde implements BuiltInSerde {
    method name (line 13) | public static String name() {
    method getDescription (line 17) | @Override
    method getSchema (line 22) | @Override
    method canDeserialize (line 39) | @Override
    method canSerialize (line 44) | @Override
    method serializer (line 49) | @Override
    method deserializer (line 54) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/UInt64Serde.java
  class UInt64Serde (line 12) | public class UInt64Serde implements BuiltInSerde {
    method name (line 14) | public static String name() {
    method getDescription (line 18) | @Override
    method getSchema (line 23) | @Override
    method canDeserialize (line 40) | @Override
    method canSerialize (line 45) | @Override
    method serializer (line 50) | @Override
    method deserializer (line 55) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/UuidBinarySerde.java
  class UuidBinarySerde (line 15) | public class UuidBinarySerde implements BuiltInSerde {
    method name (line 17) | public static String name() {
    method configure (line 23) | @Override
    method getDescription (line 31) | @Override
    method getSchema (line 36) | @Override
    method canDeserialize (line 41) | @Override
    method canSerialize (line 46) | @Override
    method serializer (line 51) | @Override
    method deserializer (line 67) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/MessageFormatter.java
  type MessageFormatter (line 17) | interface MessageFormatter {
    method format (line 19) | String format(String topic, byte[] value);
    method createMap (line 21) | static Map<SchemaType, MessageFormatter> createMap(SchemaRegistryClien...
    class AvroMessageFormatter (line 29) | class AvroMessageFormatter implements MessageFormatter {
      method AvroMessageFormatter (line 32) | AvroMessageFormatter(SchemaRegistryClient client) {
      method format (line 45) | @Override
    class ProtobufMessageFormatter (line 53) | class ProtobufMessageFormatter implements MessageFormatter {
      method ProtobufMessageFormatter (line 56) | ProtobufMessageFormatter(SchemaRegistryClient client) {
      method format (line 60) | @Override
    class JsonSchemaMessageFormatter (line 72) | class JsonSchemaMessageFormatter implements MessageFormatter {
      method JsonSchemaMessageFormatter (line 75) | JsonSchemaMessageFormatter(SchemaRegistryClient client) {
      method format (line 79) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/SchemaRegistrySerde.java
  class SchemaRegistrySerde (line 41) | public class SchemaRegistrySerde implements BuiltInSerde {
    method name (line 46) | public static String name() {
    method canBeAutoConfigured (line 60) | @Override
    method autoConfigure (line 68) | @Override
    method configure (line 92) | @Override
    method configure (line 118) | @VisibleForTesting
    method createSchemaRegistryClient (line 133) | private static SchemaRegistryClient createSchemaRegistryClient(List<St...
    method getDescription (line 177) | @Override
    method canDeserialize (line 182) | @Override
    method canSerialize (line 189) | @Override
    method getSchema (line 195) | @Override
    method convertSchema (line 214) | @SneakyThrows
    method getSchemaById (line 233) | private Optional<ParsedSchema> getSchemaById(int id) {
    method getSchemaBySubject (line 237) | private Optional<SchemaMetadata> getSchemaBySubject(String subject) {
    method wrapWith404Handler (line 241) | @SneakyThrows
    method schemaSubject (line 254) | private String schemaSubject(String topic, Target type) {
    method serializer (line 258) | @Override
    method deserializer (line 279) | @Override
    method getMessageFormatBySchemaId (line 296) | private SchemaType getMessageFormatBySchemaId(int schemaId) {
    method extractSchemaIdFromMsg (line 303) | private int extractSchemaIdFromMsg(byte[] data) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/SchemaType.java
  type SchemaType (line 6) | enum SchemaType {
    method fromString (line 11) | public static Optional<SchemaType> fromString(String typeString) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/serdes/builtin/sr/Serialize.java
  class Serialize (line 32) | final class Serialize {
    method Serialize (line 37) | private Serialize() {
    method serializeJson (line 40) | @KafkaClientInternalsDependant("AbstractKafkaJsonSchemaSerializer::ser...
    method serializeProto (line 63) | @KafkaClientInternalsDependant("AbstractKafkaProtobufSerializer::seria...
    method serializeAvro (line 97) | @KafkaClientInternalsDependant("AbstractKafkaAvroSerializer::serialize...
    method schemaId (line 123) | private static byte[] schemaId(int id) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/AdminClientService.java
  type AdminClientService (line 6) | public interface AdminClientService {
    method get (line 8) | Mono<ReactiveAdminClient> get(KafkaCluster cluster);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/AdminClientServiceImpl.java
  class AdminClientServiceImpl (line 19) | @Service
    method AdminClientServiceImpl (line 30) | public AdminClientServiceImpl(ClustersProperties clustersProperties) {
    method get (line 35) | @Override
    method createAdminClient (line 42) | private Mono<ReactiveAdminClient> createAdminClient(KafkaCluster clust...
    method close (line 59) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ApplicationInfoService.java
  class ApplicationInfoService (line 21) | @Service
    method ApplicationInfoService (line 30) | public ApplicationInfoService(DynamicConfigOperations dynamicConfigOpe...
    method getApplicationInfo (line 38) | public ApplicationInfoDTO getApplicationInfo() {
    method convert (line 46) | private ApplicationInfoLatestReleaseDTO convert(GithubReleaseInfo.Gith...
    method getBuildInfo (line 53) | private ApplicationInfoBuildDTO getBuildInfo(GithubReleaseInfo.GithubR...
    method getEnabledFeatures (line 62) | private List<EnabledFeaturesEnum> getEnabledFeatures() {
    method updateGithubReleaseInfo (line 71) | @Scheduled(fixedRateString = "${github-release-info-update-rate:360000...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/BrokerService.java
  class BrokerService (line 35) | @Service
    method loadBrokersConfig (line 44) | private Mono<Map<Integer, List<ConfigEntry>>> loadBrokersConfig(
    method loadBrokersConfig (line 49) | private Mono<List<ConfigEntry>> loadBrokersConfig(
    method getBrokersConfig (line 55) | private Flux<InternalBrokerConfig> getBrokersConfig(KafkaCluster clust...
    method getBrokers (line 68) | public Flux<InternalBroker> getBrokers(KafkaCluster cluster) {
    method updateBrokerLogDir (line 80) | public Mono<Void> updateBrokerLogDir(KafkaCluster cluster,
    method updateBrokerLogDir (line 87) | private Mono<Void> updateBrokerLogDir(ReactiveAdminClient admin,
    method updateBrokerConfigByName (line 102) | public Mono<Void> updateBrokerConfigByName(KafkaCluster cluster,
    method getClusterLogDirs (line 113) | private Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirIn...
    method getAllBrokersLogdirs (line 132) | public Flux<BrokersLogdirsDTO> getAllBrokersLogdirs(KafkaCluster clust...
    method getBrokerConfig (line 138) | public Flux<InternalBrokerConfig> getBrokerConfig(KafkaCluster cluster...
    method getBrokerMetrics (line 142) | public Mono<List<RawMetric>> getBrokerMetrics(KafkaCluster cluster, In...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClusterService.java
  class ClusterService (line 16) | @Service
    method getClusters (line 26) | public List<ClusterDTO> getClusters() {
    method getClusterStats (line 33) | public Mono<ClusterStatsDTO> getClusterStats(KafkaCluster cluster) {
    method getClusterMetrics (line 40) | public Mono<ClusterMetricsDTO> getClusterMetrics(KafkaCluster cluster) {
    method updateCluster (line 47) | public Mono<ClusterDTO> updateCluster(KafkaCluster cluster) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStatisticsScheduler.java
  class ClustersStatisticsScheduler (line 10) | @Component
    method updateStatistics (line 19) | @Scheduled(fixedRateString = "${kafka.update-metrics-rate-millis:30000}")

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java
  class ClustersStorage (line 10) | @Component
    method ClustersStorage (line 15) | public ClustersStorage(ClustersProperties properties, KafkaClusterFact...
    method getKafkaClusters (line 21) | public Collection<KafkaCluster> getKafkaClusters() {
    method getClusterByName (line 25) | public Optional<KafkaCluster> getClusterByName(String clusterName) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ConsumerGroupService.java
  class ConsumerGroupService (line 36) | @Service
    method getConsumerGroups (line 43) | private Mono<List<InternalConsumerGroup>> getConsumerGroups(
    method getConsumerGroupsForTopic (line 65) | public Mono<List<InternalTopicConsumerGroup>> getConsumerGroupsForTopi...
    method isConsumerGroupRelatesToTopic (line 91) | private boolean isConsumerGroupRelatesToTopic(String topic,
    method getConsumerGroupsPage (line 106) | public Mono<ConsumerGroupsPage> getConsumerGroupsPage(
    method loadSortedDescriptions (line 132) | private Mono<List<ConsumerGroupDescription>> loadSortedDescriptions(Re...
    method loadDescriptionsByListings (line 181) | private Mono<List<ConsumerGroupDescription>> loadDescriptionsByListing...
    method sortAndPaginate (line 194) | private <T> Stream<T> sortAndPaginate(Collection<T> collection,
    method describeConsumerGroups (line 205) | private Mono<List<ConsumerGroupDescription>> describeConsumerGroups(Re...
    method loadDescriptionsByInternalConsumerGroups (line 212) | private Mono<List<ConsumerGroupDescription>> loadDescriptionsByInterna...
    method getConsumerGroupDetail (line 232) | public Mono<InternalConsumerGroup> getConsumerGroupDetail(KafkaCluster...
    method deleteConsumerGroupById (line 244) | public Mono<Void> deleteConsumerGroupById(KafkaCluster cluster,
    method createConsumer (line 250) | public EnhancedConsumer createConsumer(KafkaCluster cluster) {
    method createConsumer (line 254) | public EnhancedConsumer createConsumer(KafkaCluster cluster,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/DeserializationService.java
  class DeserializationService (line 28) | @Component
    method DeserializationService (line 33) | public DeserializationService(Environment env,
    method getSerdesFor (line 44) | private ClusterSerdes getSerdesFor(KafkaCluster cluster) {
    method getSerializer (line 48) | private Serde.Serializer getSerializer(KafkaCluster cluster,
    method getSerdeForDeserialize (line 63) | private SerdeInstance getSerdeForDeserialize(KafkaCluster cluster,
    method producerRecordCreator (line 81) | public ProducerRecordCreator producerRecordCreator(KafkaCluster cluster,
    method deserializerFor (line 91) | public ConsumerRecordDeserializer deserializerFor(KafkaCluster cluster,
    method getSerdesForSerialize (line 110) | public List<SerdeDescriptionDTO> getSerdesForSerialize(KafkaCluster cl...
    method getSerdesForDeserialize (line 124) | public List<SerdeDescriptionDTO> getSerdesForDeserialize(KafkaCluster ...
    method toDto (line 138) | private SerdeDescriptionDTO toDto(SerdeInstance serdeInstance,
    method close (line 151) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/FeatureService.java
  class FeatureService (line 18) | @Service
    method getAvailableFeatures (line 22) | public Mono<List<ClusterFeature>> getAvailableFeatures(ReactiveAdminCl...
    method topicDeletionEnabled (line 48) | private Mono<ClusterFeature> topicDeletionEnabled(ReactiveAdminClient ...
    method aclEdit (line 54) | private Mono<ClusterFeature> aclEdit(ReactiveAdminClient adminClient, ...
    method aclView (line 63) | private Mono<ClusterFeature> aclView(ReactiveAdminClient adminClient) {
    method aclViewEnabled (line 69) | private boolean aclViewEnabled(ReactiveAdminClient adminClient) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/KafkaClusterFactory.java
  class KafkaClusterFactory (line 35) | @Service
    method KafkaClusterFactory (line 43) | public KafkaClusterFactory(WebclientProperties webclientProperties) {
    method create (line 49) | public KafkaCluster create(ClustersProperties properties,
    method validate (line 76) | public Mono<ClusterConfigValidationDTO> validate(ClustersProperties.Cl...
    method convertProperties (line 122) | private Properties convertProperties(Map<String, Object> propertiesMap) {
    method connectClientsConfigured (line 130) | private boolean connectClientsConfigured(ClustersProperties.Cluster cl...
    method connectClients (line 134) | private Map<String, ReactiveFailover<KafkaConnectClientApi>> connectCl...
    method connectClient (line 141) | private ReactiveFailover<KafkaConnectClientApi> connectClient(Clusters...
    method schemaRegistryConfigured (line 156) | private boolean schemaRegistryConfigured(ClustersProperties.Cluster cl...
    method schemaRegistryClient (line 160) | private ReactiveFailover<KafkaSrClientApi> schemaRegistryClient(Cluste...
    method ksqlConfigured (line 177) | private boolean ksqlConfigured(ClustersProperties.Cluster clusterPrope...
    method ksqlClient (line 181) | private ReactiveFailover<KsqlApiClient> ksqlClient(ClustersProperties....
    method parseUrlList (line 197) | private List<String> parseUrlList(String url) {
    method metricsConfigured (line 201) | private boolean metricsConfigured(ClustersProperties.Cluster clusterPr...
    method metricsConfigDataToMetricsConfig (line 205) | @Nullable

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/KafkaConfigSanitizer.java
  class KafkaConfigSanitizer (line 21) | @Component
    method KafkaConfigSanitizer (line 39) | KafkaConfigSanitizer(
    method compile (line 48) | private static List<Pattern> compile(Collection<String> patternStrings) {
    method isRegex (line 56) | private static boolean isRegex(String str) {
    method kafkaConfigKeysToSanitize (line 60) | private static Set<String> kafkaConfigKeysToSanitize() {
    method sanitize (line 70) | @Nullable
    method sanitizeConnectorConfig (line 80) | public Map<String, Object> sanitizeConnectorConfig(@Nullable Map<Strin...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/KafkaConnectService.java
  class KafkaConnectService (line 42) | @Service
    method getConnects (line 51) | public Flux<ConnectDTO> getConnects(KafkaCluster cluster) {
    method getAllConnectors (line 59) | public Flux<FullConnectorInfoDTO> getAllConnectors(final KafkaCluster ...
    method matchesSearchTerm (line 81) | private Predicate<FullConnectorInfoDTO> matchesSearchTerm(@Nullable fi...
    method getStringsForSearch (line 89) | private Stream<String> getStringsForSearch(FullConnectorInfoDTO fullCo...
    method getConnectorTopics (line 97) | public Mono<ConnectorTopics> getConnectorTopics(KafkaCluster cluster, ...
    method getConnectorNames (line 107) | public Flux<String> getConnectorNames(KafkaCluster cluster, String con...
    method getConnectorNamesWithErrorsSuppress (line 117) | public Flux<String> getConnectorNamesWithErrorsSuppress(KafkaCluster c...
    method parseConnectorsNamesStringToList (line 121) | @SneakyThrows
    method createConnector (line 127) | public Mono<ConnectorDTO> createConnector(KafkaCluster cluster, String...
    method connectorExists (line 146) | private Mono<Boolean> connectorExists(KafkaCluster cluster, String con...
    method getConnector (line 152) | public Mono<ConnectorDTO> getConnector(KafkaCluster cluster, String co...
    method emptyStatus (line 188) | private Mono<ConnectorStatus> emptyStatus(String connectorName) {
    method getConnectorConfig (line 196) | public Mono<Map<String, Object>> getConnectorConfig(KafkaCluster clust...
    method setConnectorConfig (line 203) | public Mono<ConnectorDTO> setConnectorConfig(KafkaCluster cluster, Str...
    method deleteConnector (line 212) | public Mono<Void> deleteConnector(
    method updateConnectorState (line 218) | public Mono<Void> updateConnectorState(KafkaCluster cluster, String co...
    method restartTasks (line 240) | private Mono<Void> restartTasks(KafkaCluster cluster, String connectName,
    method getConnectorTasks (line 249) | public Flux<TaskDTO> getConnectorTasks(KafkaCluster cluster, String co...
    method restartConnectorTask (line 264) | public Mono<Void> restartConnectorTask(KafkaCluster cluster, String co...
    method getConnectorPlugins (line 270) | public Flux<ConnectorPluginDTO> getConnectorPlugins(KafkaCluster cluster,
    method validateConnectorPluginConfig (line 276) | public Mono<ConnectorPluginConfigValidationResponseDTO> validateConnec...
    method api (line 287) | private ReactiveFailover<KafkaConnectClientApi> api(KafkaCluster clust...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/MessagesService.java
  class MessagesService (line 49) | @Service
    method MessagesService (line 64) | public MessagesService(AdminClientService adminClientService,
    method withExistingTopic (line 80) | private Mono<TopicDescription> withExistingTopic(KafkaCluster cluster,...
    method execSmartFilterTest (line 86) | public static SmartFilterTestExecutionResultDTO execSmartFilterTest(Sm...
    method deleteTopicMessages (line 120) | public Mono<Void> deleteTopicMessages(KafkaCluster cluster, String top...
    method offsetsForDeletion (line 129) | private Mono<Map<TopicPartition, Long>> offsetsForDeletion(KafkaCluste...
    method sendMessage (line 144) | public Mono<RecordMetadata> sendMessage(KafkaCluster cluster, String t...
    method sendMessageImpl (line 151) | private Mono<RecordMetadata> sendMessageImpl(KafkaCluster cluster,
    method createProducer (line 188) | public static KafkaProducer<byte[], byte[]> createProducer(KafkaCluste...
    method loadMessages (line 200) | public Flux<TopicMessageEventDTO> loadMessages(KafkaCluster cluster, S...
    method fixPageSize (line 215) | private int fixPageSize(@Nullable Integer pageSize) {
    method loadMessagesImpl (line 221) | private Flux<TopicMessageEventDTO> loadMessagesImpl(KafkaCluster cluster,
    method getMsgFilter (line 251) | private Predicate<TopicMessageDTO> getMsgFilter(String query,
    method throttleUiPublish (line 259) | private <T> UnaryOperator<T> throttleUiPublish(SeekDirectionDTO seekDi...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/OffsetsResetService.java
  class OffsetsResetService (line 30) | @Slf4j
    method resetToEarliest (line 37) | public Mono<Void> resetToEarliest(
    method offsets (line 45) | private Mono<Map<TopicPartition, Long>> offsets(ReactiveAdminClient cl...
    method resetToLatest (line 59) | public Mono<Void> resetToLatest(
    method resetToTimestamp (line 67) | public Mono<Void> resetToTimestamp(
    method resetToOffsets (line 81) | public Mono<Void> resetToOffsets(
    method checkGroupCondition (line 96) | private Mono<ReactiveAdminClient> checkGroupCondition(KafkaCluster clu...
    method editTsOffsets (line 124) | private Map<TopicPartition, Long> editTsOffsets(Map<TopicPartition, Lo...
    method editOffsetsBounds (line 137) | private Map<TopicPartition, Long> editOffsetsBounds(Map<TopicPartition...
    method resetOffsets (line 156) | private Mono<Void> resetOffsets(ReactiveAdminClient adminClient,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ReactiveAdminClient.java
  class ReactiveAdminClient (line 91) | @Slf4j
    type SupportedFeature (line 95) | public enum SupportedFeature {
      method SupportedFeature (line 103) | SupportedFeature(BiFunction<AdminClient, Float, Mono<Boolean>> predi...
      method SupportedFeature (line 107) | SupportedFeature(float fromVersion) {
      method forVersion (line 111) | static Mono<Set<SupportedFeature>> forVersion(AdminClient ac, String...
    class ClusterDescription (line 121) | @Value
    method extract (line 138) | private static Mono<ConfigRelatedInfo> extract(AdminClient ac) {
    method create (line 168) | public static Mono<ReactiveAdminClient> create(AdminClient adminClient) {
    method isAuthorizedSecurityEnabled (line 174) | private static Mono<Boolean> isAuthorizedSecurityEnabled(AdminClient a...
    method toMono (line 186) | public static <T> Mono<T> toMono(KafkaFuture<T> future) {
    method getClusterFeatures (line 216) | public Set<SupportedFeature> getClusterFeatures() {
    method listTopics (line 220) | public Mono<Set<String>> listTopics(boolean listInternal) {
    method deleteTopic (line 224) | public Mono<Void> deleteTopic(String topicName) {
    method getVersion (line 228) | public String getVersion() {
    method isTopicDeletionEnabled (line 232) | public boolean isTopicDeletionEnabled() {
    method updateInternalStats (line 236) | public Mono<Void> updateInternalStats(@Nullable Node controller) {
    method getTopicsConfig (line 245) | public Mono<Map<String, List<ConfigEntry>>> getTopicsConfig() {
    method getTopicsConfig (line 251) | public Mono<Map<String, List<ConfigEntry>>> getTopicsConfig(Collection...
    method getTopicsConfigImpl (line 262) | private Mono<Map<String, List<ConfigEntry>>> getTopicsConfigImpl(Colle...
    method loadBrokersConfig (line 279) | private static Mono<Map<Integer, List<ConfigEntry>>> loadBrokersConfig...
    method loadBrokersConfig (line 311) | public Mono<Map<Integer, List<ConfigEntry>>> loadBrokersConfig(List<In...
    method describeTopics (line 315) | public Mono<Map<String, TopicDescription>> describeTopics() {
    method describeTopics (line 319) | public Mono<Map<String, TopicDescription>> describeTopics(Collection<S...
    method describeTopicsImpl (line 329) | private Mono<Map<String, TopicDescription>> describeTopicsImpl(Collect...
    method describeTopic (line 342) | public Mono<TopicDescription> describeTopic(String topic) {
    method toMonoWithExceptionFilter (line 356) | @SafeVarargs
    method describeLogDirs (line 383) | public Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirInf...
    method describeLogDirs (line 389) | public Mono<Map<Integer, Map<String, DescribeLogDirsResponse.LogDirInf...
    method describeCluster (line 400) | public Mono<ClusterDescription> describeCluster() {
    method describeClusterImpl (line 404) | private static Mono<ClusterDescription> describeClusterImpl(AdminClien...
    method deleteConsumerGroups (line 423) | public Mono<Void> deleteConsumerGroups(Collection<String> groupIds) {
    method createTopic (line 431) | public Mono<Void> createTopic(String name,
    method alterPartitionReassignments (line 443) | public Mono<Void> alterPartitionReassignments(
    method createPartitions (line 448) | public Mono<Void> createPartitions(Map<String, NewPartitions> newParti...
    method updateTopicConfig (line 455) | public Mono<Void> updateTopicConfig(String topicName, Map<String, Stri...
    method listConsumerGroupNames (line 465) | public Mono<List<String>> listConsumerGroupNames() {
    method listConsumerGroups (line 469) | public Mono<Collection<ConsumerGroupListing>> listConsumerGroups() {
    method describeConsumerGroups (line 473) | public Mono<Map<String, ConsumerGroupDescription>> describeConsumerGro...
    method listConsumerGroupOffsets (line 485) | public Mono<Table<String, TopicPartition, Long>> listConsumerGroupOffs...
    method alterConsumerGroupOffsets (line 518) | public Mono<Void> alterConsumerGroupOffsets(String groupId, Map<TopicP...
    method listTopicOffsets (line 532) | public Mono<Map<TopicPartition, Long>> listTopicOffsets(String topic,
    method listOffsets (line 546) | public Mono<Map<TopicPartition, Long>> listOffsets(Collection<TopicPar...
    method listOffsets (line 556) | public Mono<Map<TopicPartition, Long>> listOffsets(Collection<TopicDes...
    method filterPartitionsWithLeaderCheck (line 561) | private Mono<Collection<TopicPartition>> filterPartitionsWithLeaderChe...
    method filterPartitionsWithLeaderCheck (line 570) | @VisibleForTesting
    method listOffsetsUnsafe (line 602) | @KafkaClientInternalsDependant
    method listAcls (line 630) | public Mono<Collection<AclBinding>> listAcls(ResourcePatternFilter fil...
    method createAcls (line 635) | public Mono<Void> createAcls(Collection<AclBinding> aclBindings) {
    method deleteAcls (line 640) | public Mono<Void> deleteAcls(Collection<AclBinding> aclBindings) {
    method updateBrokerConfigByName (line 646) | public Mono<Void> updateBrokerConfigByName(Integer brokerId, String na...
    method deleteRecords (line 652) | public Mono<Void> deleteRecords(Map<TopicPartition, Long> offsets) {
    method alterReplicaLogDirs (line 659) | public Mono<Void> alterReplicaLogDirs(Map<TopicPartitionReplica, Strin...
    method getActiveProducersState (line 664) | public Mono<Map<TopicPartition, List<ProducerState>>> getActiveProduce...
    method incrementalAlterConfig (line 678) | private Mono<Void> incrementalAlterConfig(String topicName,
    method alterConfig (line 696) | @SuppressWarnings("deprecation")
    method partitionCalls (line 710) | private static <R, I> Mono<R> partitionCalls(Collection<I> items,
    method partitionCalls (line 727) | private static <R, I> Mono<R> partitionCalls(Collection<I> items,
    method mapMerger (line 741) | private static <K, V> BiFunction<Map<K, V>, Map<K, V>, Map<K, V>> mapM...
    method close (line 750) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/SchemaRegistryService.java
  class SchemaRegistryService (line 31) | @Service
    class SubjectWithCompatibilityLevel (line 38) | @AllArgsConstructor
    method api (line 46) | private ReactiveFailover<KafkaSrClientApi> api(KafkaCluster cluster) {
    method getAllLatestVersionSchemas (line 50) | public Mono<List<SubjectWithCompatibilityLevel>> getAllLatestVersionSc...
    method getAllSubjectNames (line 57) | public Mono<List<String>> getAllSubjectNames(KafkaCluster cluster) {
    method parseSubjectListString (line 64) | @SneakyThrows
    method getAllVersionsBySubject (line 71) | public Flux<SubjectWithCompatibilityLevel> getAllVersionsBySubject(Kaf...
    method getSubjectVersions (line 76) | private Flux<Integer> getSubjectVersions(KafkaCluster cluster, String ...
    method getSchemaSubjectByVersion (line 80) | public Mono<SubjectWithCompatibilityLevel> getSchemaSubjectByVersion(K...
    method getLatestSchemaVersionBySubject (line 86) | public Mono<SubjectWithCompatibilityLevel> getLatestSchemaVersionBySub...
    method getSchemaSubject (line 91) | private Mono<SubjectWithCompatibilityLevel> getSchemaSubject(KafkaClus...
    method deleteSchemaSubjectByVersion (line 100) | public Mono<Void> deleteSchemaSubjectByVersion(KafkaCluster cluster, S...
    method deleteLatestSchemaSubject (line 104) | public Mono<Void> deleteLatestSchemaSubject(KafkaCluster cluster, Stri...
    method deleteSchemaSubject (line 108) | private Mono<Void> deleteSchemaSubject(KafkaCluster cluster, String sc...
    method deleteSchemaSubjectEntirely (line 112) | public Mono<Void> deleteSchemaSubjectEntirely(KafkaCluster cluster, St...
    method registerNewSchema (line 120) | public Mono<SubjectWithCompatibilityLevel> registerNewSchema(KafkaClus...
    method updateSchemaCompatibility (line 132) | public Mono<Void> updateSchemaCompatibility(KafkaCluster cluster,
    method updateGlobalSchemaCompatibility (line 141) | public Mono<Void> updateGlobalSchemaCompatibility(KafkaCluster cluster,
    method getSchemaCompatibilityLevel (line 148) | public Mono<Compatibility> getSchemaCompatibilityLevel(KafkaCluster cl...
    method getGlobalSchemaCompatibilityLevel (line 156) | public Mono<Compatibility> getGlobalSchemaCompatibilityLevel(KafkaClus...
    method getSchemaCompatibilityInfoOrGlobal (line 162) | private Mono<Compatibility> getSchemaCompatibilityInfoOrGlobal(KafkaCl...
    method checksSchemaCompatibility (line 168) | public Mono<CompatibilityCheckResponse> checksSchemaCompatibility(Kafk...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/StatisticsCache.java
  class StatisticsCache (line 15) | @Component
    method StatisticsCache (line 20) | public StatisticsCache(ClustersStorage clustersStorage) {
    method replace (line 25) | public synchronized void replace(KafkaCluster c, Statistics stats) {
    method update (line 29) | public synchronized void update(KafkaCluster c,
    method onTopicDelete (line 46) | public synchronized void onTopicDelete(KafkaCluster c, String topic) {
    method get (line 61) | public Statistics get(KafkaCluster c) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/StatisticsService.java
  class StatisticsService (line 23) | @Service
    method updateCache (line 33) | public Mono<Statistics> updateCache(KafkaCluster c) {
    method getStatistics (line 37) | private Mono<Statistics> getStatistics(KafkaCluster cluster) {
    method getLogDirInfo (line 66) | private Mono<InternalLogDirStats> getLogDirInfo(ClusterDescription des...
    method describeTopics (line 71) | private Mono<Map<String, TopicDescription>> describeTopics(KafkaCluste...
    method loadTopicConfigs (line 75) | private Mono<Map<String, List<ConfigEntry>>> loadTopicConfigs(KafkaClu...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/TopicsService.java
  class TopicsService (line 52) | @Service
    method loadTopics (line 68) | public Mono<List<InternalTopic>> loadTopics(KafkaCluster c, List<Strin...
    method loadTopic (line 91) | private Mono<InternalTopic> loadTopic(KafkaCluster c, String topicName) {
    method loadTopicAfterCreation (line 102) | private Mono<InternalTopic> loadTopicAfterCreation(KafkaCluster c, Str...
    method createList (line 121) | private List<InternalTopic> createList(List<String> orderedNames,
    method getPartitionOffsets (line 140) | private Mono<InternalPartitionsOffsets> getPartitionOffsets(Map<String...
    method getTopicDetails (line 157) | public Mono<InternalTopic> getTopicDetails(KafkaCluster cluster, Strin...
    method getTopicConfigs (line 161) | public Mono<List<ConfigEntry>> getTopicConfigs(KafkaCluster cluster, S...
    method createTopic (line 172) | private Mono<InternalTopic> createTopic(KafkaCluster c, ReactiveAdminC...
    method createTopic (line 183) | public Mono<InternalTopic> createTopic(KafkaCluster cluster, TopicCrea...
    method recreateTopic (line 188) | public Mono<InternalTopic> recreateTopic(KafkaCluster cluster, String ...
    method updateTopic (line 219) | private Mono<InternalTopic> updateTopic(KafkaCluster cluster,
    method updateTopic (line 228) | public Mono<InternalTopic> updateTopic(KafkaCluster cl, String topicName,
    method changeReplicationFactor (line 234) | private Mono<InternalTopic> changeReplicationFactor(
    method changeReplicationFactor (line 247) | public Mono<ReplicationFactorChangeResponseDTO> changeReplicationFactor(
    method getPartitionsReassignments (line 283) | private Map<TopicPartition, Optional<NewPartitionReassignment>> getPar...
    method getCurrentAssignment (line 359) | private Map<Integer, List<Integer>> getCurrentAssignment(InternalTopic...
    method getBrokersMap (line 369) | private Map<Integer, Integer> getBrokersMap(KafkaCluster cluster,
    method increaseTopicPartitions (line 384) | public Mono<PartitionsIncreaseResponseDTO> increaseTopicPartitions(
    method deleteTopic (line 418) | public Mono<Void> deleteTopic(KafkaCluster cluster, String topicName) {
    method cloneTopic (line 427) | public Mono<InternalTopic> cloneTopic(
    method getTopicsForPagination (line 446) | public Mono<List<InternalTopic>> getTopicsForPagination(KafkaCluster c...
    method getActiveProducersState (line 463) | public Mono<Map<TopicPartition, List<ProducerState>>> getActiveProduce...
    method filterExisting (line 468) | private Mono<List<String>> filterExisting(KafkaCluster cluster, Collec...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/acl/AclCsv.java
  class AclCsv (line 17) | public class AclCsv {
    method transformToCsvString (line 23) | public static String transformToCsvString(Collection<AclBinding> acls) {
    method createAclString (line 28) | public static String createAclString(AclBinding binding) {
    method parseCsvLine (line 43) | private static AclBinding parseCsvLine(String csv, int line) {
    method parseCsv (line 65) | public static Collection<AclBinding> parseCsv(String csvString) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/acl/AclsService.java
  class AclsService (line 45) | @Slf4j
    method createAcl (line 52) | public Mono<Void> createAcl(KafkaCluster cluster, AclBinding aclBindin...
    method createAclsWithLogging (line 57) | private Mono<Void> createAclsWithLogging(ReactiveAdminClient ac, Colle...
    method deleteAcl (line 63) | public Mono<Void> deleteAcl(KafkaCluster cluster, AclBinding aclBindin...
    method listAcls (line 71) | public Flux<AclBinding> listAcls(KafkaCluster cluster, ResourcePattern...
    method getAclAsCsvString (line 78) | public Mono<String> getAclAsCsvString(KafkaCluster cluster) {
    method syncAclWithAclCsv (line 84) | public Mono<Void> syncAclWithAclCsv(KafkaCluster cluster, String csv) {
    method logAclSyncPlan (line 106) | private void logAclSyncPlan(KafkaCluster cluster, Set<AclBinding> toBe...
    method createAllowBindings (line 127) | private List<AclBinding> createAllowBindings(ResourceType resourceType,
    method createConsumerAcl (line 155) | public Mono<Void> createConsumerAcl(KafkaCluster cluster, CreateConsum...
    method createConsumerBindings (line 162) | private List<AclBinding> createConsumerBindings(CreateConsumerAclDTO r...
    method createProducerAcl (line 183) | public Mono<Void> createProducerAcl(KafkaCluster cluster, CreateProduc...
    method createProducerBindings (line 191) | private List<AclBinding> createProducerBindings(CreateProducerAclDTO r...
    method createStreamAppAcl (line 224) | public Mono<Void> createStreamAppAcl(KafkaCluster cluster, CreateStrea...
    method createStreamAppBindings (line 232) | private List<AclBinding> createStreamAppBindings(CreateStreamAppAclDTO...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/AnalysisTasksStore.java
  class AnalysisTasksStore (line 19) | class AnalysisTasksStore {
    method setAnalysisError (line 24) | void setAnalysisError(TopicIdentity topicId,
    method setAnalysisResult (line 37) | void setAnalysisResult(TopicIdentity topicId,
    method updateProgress (line 54) | void updateProgress(TopicIdentity topicId,
    method registerNewTask (line 66) | void registerNewTask(TopicIdentity topicId, Closeable task) {
    method cancelAnalysis (line 70) | void cancelAnalysis(TopicIdentity topicId) {
    method isAnalysisInProgress (line 75) | boolean isAnalysisInProgress(TopicIdentity id) {
    method getTopicAnalysis (line 79) | Optional<TopicAnalysisDTO> getTopicAnalysis(TopicIdentity id) {
    method createAnalysisDto (line 88) | private TopicAnalysisDTO createAnalysisDto(@Nullable RunningAnalysis r...
    method toDto (line 102) | TopicAnalysisProgressDTO toDto() {
    method stopTask (line 110) | @SneakyThrows

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/TopicAnalysisService.java
  class TopicAnalysisService (line 30) | @Slf4j
    method analyze (line 48) | public Mono<Void> analyze(KafkaCluster cluster, String topicName) {
    method startAnalysis (line 54) | private synchronized void startAnalysis(KafkaCluster cluster, String t...
    method cancelAnalysis (line 64) | public void cancelAnalysis(KafkaCluster cluster, String topicName) {
    method getTopicAnalysis (line 68) | public Optional<TopicAnalysisDTO> getTopicAnalysis(KafkaCluster cluste...
    class AnalysisTask (line 72) | class AnalysisTask implements Runnable, Closeable {
      method AnalysisTask (line 83) | AnalysisTask(KafkaCluster cluster, TopicIdentity topicId) {
      method close (line 95) | @Override
      method run (line 100) | @Override
      method updateProgress (line 133) | private void updateProgress(long processedOffsets, long summaryOffse...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/TopicAnalysisStats.java
  class TopicAnalysisStats (line 20) | class TopicAnalysisStats {
    class SizeStats (line 40) | static class SizeStats {
      method apply (line 46) | void apply(int len) {
      method toDto (line 53) | TopicAnalysisSizeStatsDTO toDto() {
    class HourlyCounts (line 67) | static class HourlyCounts {
      method apply (line 73) | void apply(ConsumerRecord<?, ?> rec) {
      method toDto (line 80) | List<TopicAnalysisStatsHourlyMsgCountsInnerDTO> toDto() {
    method apply (line 90) | void apply(ConsumerRecord<Bytes, Bytes> rec) {
    method toDto (line 115) | TopicAnalysisStatsDTO toDto(@Nullable Integer partition) {
    method maxNullable (line 133) | private static Long maxNullable(@Nullable Long v1, long v2) {
    method minNullable (line 137) | private static Long minNullable(@Nullable Long v1, long v2) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/analyze/TopicIdentity.java
  class TopicIdentity (line 7) | @ToString
    method TopicIdentity (line 13) | public TopicIdentity(KafkaCluster cluster, String topic) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditRecord.java
  method toJson (line 32) | @SneakyThrows
  method create (line 39) | private static AuditResource create(PermissibleAction action, Resource t...
  method getAccessedResources (line 43) | static List<AuditResource> getAccessedResources(AccessContext ctx) {
  method nameId (line 71) | @Nullable
  method successful (line 79) | static OperationResult successful() {
  method error (line 83) | static OperationResult error(Throwable th) {
  type OperationError (line 95) | enum OperationError {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditService.java
  class AuditService (line 39) | @Slf4j
    method AuditService (line 60) | @Autowired
    method AuditService (line 71) | @VisibleForTesting
    method createAuditWriter (line 76) | @VisibleForTesting
    method consoleOnlyWriter (line 118) | private static AuditWriter consoleOnlyWriter(KafkaCluster cluster, boo...
    method createTopicIfNeeded (line 125) | private static boolean createTopicIfNeeded(KafkaCluster cluster,
    method printAuditInitError (line 165) | private static void printAuditInitError(KafkaCluster cluster, String e...
    method isAuditTopic (line 175) | public boolean isAuditTopic(KafkaCluster cluster, String topic) {
    method audit (line 182) | public void audit(AccessContext acxt, Signal<?> sig) {
    method extractUser (line 194) | private Mono<AuthenticatedUser> extractUser(Signal<?> sig) {
    method sendAuditRecord (line 211) | private void sendAuditRecord(AccessContext ctx, AuthenticatedUser user) {
    method sendAuditRecord (line 215) | private void sendAuditRecord(AccessContext ctx, AuthenticatedUser user...
    method close (line 231) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditWriter.java
  method isTopicWritingEnabled (line 26) | boolean isTopicWritingEnabled() {
  method writeAppOperation (line 31) | static void writeAppOperation(Logger consoleLogger,
  method write (line 38) | void write(AccessContext ctx, AuthenticatedUser user, @Nullable Throwabl...
  method write (line 42) | private void write(AuditRecord rec) {
  method createRecord (line 62) | private static AuditRecord createRecord(AccessContext ctx,
  method close (line 76) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/ConnectorInfo.java
  method extract (line 21) | static ConnectorInfo extract(String className,
  method extractFileIoConnector (line 43) | private static ConnectorInfo extractFileIoConnector(ConnectorTypeDTO type,
  method extractJdbcSink (line 53) | private static ConnectorInfo extractJdbcSink(ConnectorTypeDTO type,
  method extractDebeziumPg (line 83) | private static ConnectorInfo extractDebeziumPg(Map<String, Object> confi...
  method extractDebeziumMysql (line 95) | private static ConnectorInfo extractDebeziumMysql(Map<String, Object> co...
  method extractS3Sink (line 106) | private static ConnectorInfo extractS3Sink(ConnectorTypeDTO type,
  method extractInputs (line 122) | private static List<String> extractInputs(ConnectorTypeDTO type,
  method extractOutputs (line 131) | private static List<String> extractOutputs(ConnectorTypeDTO type,
  method extractTopicNamesBestEffort (line 140) | private static Stream<String> extractTopicNamesBestEffort(
  method extractTopicsOddrns (line 159) | private static List<String> extractTopicsOddrns(Map<String, Object> config,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/ConnectorsExporter.java
  class ConnectorsExporter (line 21) | @RequiredArgsConstructor
    method export (line 26) | Flux<DataEntityList> export(KafkaCluster cluster) {
    method getConnectDataSources (line 43) | Flux<DataSource> getConnectDataSources(KafkaCluster cluster) {
    method toDataSource (line 48) | private static DataSource toDataSource(ConnectDTO connect) {
    method createConnectorDataEntity (line 55) | private static DataEntity createConnectorDataEntity(KafkaCluster cluster,
    method extractMetadata (line 79) | private static Map<String, Object> extractMetadata(ConnectorDTO connec...
    method extractConnectorInfo (line 84) | private static ConnectorInfo extractConnectorInfo(KafkaCluster cluster,

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddExporter.java
  class OddExporter (line 18) | class OddExporter {
    method OddExporter (line 24) | public OddExporter(StatisticsCache statisticsCache,
    method OddExporter (line 34) | @VisibleForTesting
    method createTopicsFilter (line 43) | private static Predicate<String> createTopicsFilter(OddIntegrationProp...
    method createApiClient (line 51) | private static OpenDataDiscoveryIngestionApi createApiClient(OddIntegr...
    method export (line 60) | public Mono<Void> export(KafkaCluster cluster) {
    method exportTopics (line 65) | private Mono<Void> exportTopics(KafkaCluster c) {
    method exportKafkaConnects (line 72) | private Mono<Void> exportKafkaConnects(KafkaCluster cluster) {
    method createConnectDataSources (line 79) | private Mono<Void> createConnectDataSources(KafkaCluster cluster) {
    method createKafkaDataSource (line 86) | private Mono<Void> createKafkaDataSource(KafkaCluster cluster) {
    method sendDataEntities (line 99) | private Mono<Void> sendDataEntities(DataEntityList dataEntityList) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddExporterScheduler.java
  class OddExporterScheduler (line 9) | @RequiredArgsConstructor
    method sendMetricsToOdd (line 15) | @Scheduled(fixedRateString = "${kafka.send-stats-to-odd-millis:30000}")

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddIntegrationConfig.java
  class OddIntegrationConfig (line 10) | @Configuration
    method oddIntegrationProperties (line 14) | @Bean
    method oddExporter (line 19) | @Bean
    method oddExporterScheduler (line 26) | @Bean

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/OddIntegrationProperties.java
  class OddIntegrationProperties (line 7) | @Data

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/Oddrn.java
  class Oddrn (line 11) | public final class Oddrn {
    method Oddrn (line 13) | private Oddrn() {
    method clusterOddrn (line 16) | static String clusterOddrn(KafkaCluster cluster) {
    method topicOddrnPath (line 23) | static KafkaPath topicOddrnPath(KafkaCluster cluster, String topic) {
    method topicOddrn (line 30) | static String topicOddrn(KafkaCluster cluster, String topic) {
    method awsS3Oddrn (line 34) | static String awsS3Oddrn(String bucket, String key) {
    method connectDataSourceOddrn (line 42) | static String connectDataSourceOddrn(String connectUrl) {
    method normalizedConnectHosts (line 49) | private static String normalizedConnectHosts(String connectUrlStr) {
    method connectorOddrn (line 62) | static String connectorOddrn(String connectUrl, String connectorName) {
    method bootstrapServersForOddrn (line 70) | private static String bootstrapServersForOddrn(String bootstrapServers) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/SchemaReferencesResolver.java
  class SchemaReferencesResolver (line 14) | class SchemaReferencesResolver {
    method SchemaReferencesResolver (line 18) | SchemaReferencesResolver(KafkaSrClientApi client) {
    method resolve (line 22) | Mono<ImmutableMap<String, String>> resolve(List<SchemaReference> refs) {
    method visit (line 29) | Resolving visit(String name) {
    method resolve (line 33) | Resolving resolve(String ref, String schema) {
    method resolveReferences (line 38) | private Mono<Resolving> resolveReferences(@Nullable List<SchemaReferen...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/TopicsExporter.java
  class TopicsExporter (line 31) | @Slf4j
    method export (line 38) | Flux<DataEntityList> export(KafkaCluster cluster) {
    method createTopicDataEntity (line 53) | private Mono<DataEntity> createTopicDataEntity(KafkaCluster cluster, S...
    method getNonDefaultConfigs (line 78) | private Map<String, Object> getNonDefaultConfigs(String topic, Statist...
    method getTopicMetadata (line 88) | private Map<String, Object> getTopicMetadata(String topic, Statistics ...
    method getTopicSchema (line 98) | private Mono<List<DataSetField>> getTopicSchema(KafkaCluster cluster,
    method getSubjWithResolvedRefs (line 113) | private Mono<Tuple2<SchemaSubject, Map<String, String>>> getSubjWithRe...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/AvroExtractor.java
  class AvroExtractor (line 12) | final class AvroExtractor {
    method AvroExtractor (line 14) | private AvroExtractor() {
    method extract (line 17) | static List<DataSetField> extract(AvroSchema avroSchema, KafkaPath top...
    method extract (line 34) | private static void extract(Schema schema,
    method createDataSetField (line 52) | private static DataSetField createDataSetField(String name,
    method extractRecord (line 66) | private static void extractRecord(Schema schema,
    method extractUnion (line 102) | private static void extractUnion(Schema schema,
    method extractArray (line 152) | private static void extractArray(Schema schema,
    method extractMap (line 179) | private static void extractMap(Schema schema,
    method extractPrimitive (line 217) | private static void extractPrimitive(Schema schema,
    method mapType (line 234) | private static DataSetFieldType.TypeEnum mapType(Schema.Type type) {
    method mapSchema (line 249) | private static DataSetFieldType mapSchema(Schema schema, Boolean nulla...
    method logicalType (line 256) | private static String logicalType(Schema schema) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/DataSetFieldsExtractors.java
  class DataSetFieldsExtractors (line 15) | public final class DataSetFieldsExtractors {
    method extract (line 17) | public static List<DataSetField> extract(SchemaSubject subject,
    method rootField (line 33) | static DataSetField rootField(KafkaPath topicOddrn, boolean isKey) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/JsonSchemaExtractor.java
  class JsonSchemaExtractor (line 28) | final class JsonSchemaExtractor {
    method JsonSchemaExtractor (line 30) | private JsonSchemaExtractor() {
    method extract (line 33) | static List<DataSetField> extract(JsonSchema jsonSchema, KafkaPath top...
    method extract (line 49) | private static void extract(Schema schema,
    method extractPrimitive (line 76) | private static void extractPrimitive(Schema schema,
    method extractUnknown (line 96) | private static void extractUnknown(Schema schema,
    method extractObject (line 116) | private static void extractObject(ObjectSchema schema,
    method extractArray (line 165) | private static void extractArray(ArraySchema schema,
    method extractCombined (line 211) | private static void extractCombined(CombinedSchema schema,
    method getDescription (line 258) | private static String getDescription(Schema schema) {
    method logicalTypeName (line 263) | private static String logicalTypeName(Schema schema) {
    method createDataSetField (line 269) | private static DataSetField createDataSetField(Schema schema,
    method mapType (line 289) | private static DataSetFieldType.TypeEnum mapType(Schema type) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/integration/odd/schema/ProtoExtractor.java
  class ProtoExtractor (line 27) | final class ProtoExtractor {
    method ProtoExtractor (line 41) | private ProtoExtractor() {
    method extract (line 44) | static List<DataSetField> extract(ProtobufSchema protobufSchema, Kafka...
    method extract (line 62) | private static void extract(Descriptors.FieldDescriptor field,
    method extractProtoWellKnownType (line 81) | private static boolean extractProtoWellKnownType(Descriptors.FieldDesc...
    method extractRepeated (line 113) | private static void extractRepeated(Descriptors.FieldDescriptor field,
    method extractMessage (line 138) | private static void extractMessage(Descriptors.FieldDescriptor field,
    method extractPrimitive (line 175) | private static void extractPrimitive(Descriptors.FieldDescriptor field,
    method getLogicalTypeName (line 193) | private static String getLogicalTypeName(Descriptors.FieldDescriptor f) {
    method createDataSetField (line 199) | private static DataSetField createDataSetField(String name,
    method mapType (line 218) | private static TypeEnum mapType(Descriptors.FieldDescriptor.Type type) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlApiClient.java
  class KsqlApiClient (line 35) | @Slf4j
    class KsqlResponseTable (line 46) | @Builder(toBuilder = true)
      method getColumnValue (line 54) | public Optional<JsonNode> getColumnValue(List<JsonNode> row, String ...
    class KsqlRequest (line 62) | @Value
    method KsqlApiClient (line 73) | public KsqlApiClient(String baseUrl,
    method webClient (line 82) | private static WebClient webClient(@Nullable ClustersProperties.Ksqldb...
    method ksqlRequest (line 108) | private KsqlRequest ksqlRequest(String ksql, Map<String, String> strea...
    method executeSelect (line 112) | private Flux<KsqlResponseTable> executeSelect(String ksql, Map<String,...
    method isUnexpectedJsonArrayEndCharException (line 136) | private boolean isUnexpectedJsonArrayEndCharException(Throwable th) {
    method executeStatement (line 141) | private Flux<KsqlResponseTable> executeStatement(String ksql,
    method execute (line 170) | public Flux<KsqlResponseTable> execute(String ksql, Map<String, String...
    method errorTableFlux (line 198) | private Flux<KsqlResponseTable> errorTableFlux(String errorText) {
    method isUnsupportedStatementType (line 202) | private boolean isUnsupportedStatementType(SingleStatementContext cont...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlGrammar.java
  class KsqlGrammar (line 20) | class KsqlGrammar {
    method KsqlGrammar (line 22) | private KsqlGrammar() {
    class KsqlStatements (line 25) | @Value
    method parse (line 31) | static Optional<KsqlStatements> parse(String ksql) {
    method isSelect (line 40) | static boolean isSelect(KsqlGrammarParser.SingleStatementContext state...
    method parseStatements (line 44) | private static ksql.KsqlGrammarParser.StatementsContext parseStatement...
    class CaseInsensitiveStream (line 66) | @RequiredArgsConstructor
      method from (line 71) | public static CaseInsensitiveStream from(CharStream stream) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2.java
  class KsqlServiceV2 (line 20) | @Slf4j
    class KsqlExecuteCommand (line 24) | @lombok.Value
    method registerCommand (line 36) | public String registerCommand(KafkaCluster cluster,
    method execute (line 44) | public Flux<KsqlResponseTable> execute(String commandId) {
    method listTables (line 54) | public Flux<KsqlTableDescriptionDTO> listTables(KafkaCluster cluster) {
    method listStreams (line 76) | public Flux<KsqlStreamDescriptionDTO> listStreams(KafkaCluster cluster) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/response/DynamicParser.java
  class DynamicParser (line 13) | class DynamicParser {
    method DynamicParser (line 15) | private DynamicParser() {
    method parseArray (line 18) | static KsqlResponseTable parseArray(String tableName, JsonNode array) {
    method parseArray (line 22) | static KsqlResponseTable parseArray(String tableName,
    method getFieldNamesFromArray (line 38) | private static List<String> getFieldNamesFromArray(JsonNode array) {
    method parseObject (line 48) | static KsqlResponseTable parseObject(String tableName, JsonNode node) {
    method parseObject (line 59) | static KsqlResponseTable parseObject(String tableName, List<String> co...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ksql/response/ResponseParser.java
  class ResponseParser (line 15) | public class ResponseParser {
    method ResponseParser (line 17) | private ResponseParser() {
    method parseSelectResponse (line 20) | public static Optional<KsqlApiClient.KsqlResponseTable> parseSelectRes...
    method parseSelectHeadersString (line 44) | @VisibleForTesting
    method errorTableWithTextMsg (line 72) | public static KsqlApiClient.KsqlResponseTable errorTableWithTextMsg(St...
    method parseErrorResponse (line 81) | public static KsqlApiClient.KsqlResponseTable parseErrorResponse(WebCl...
    method parseStatementResponse (line 96) | public static List<KsqlApiClient.KsqlResponseTable> parseStatementResp...
    method parseObjectDynamically (line 162) | private static List<KsqlApiClient.KsqlResponseTable> parseObjectDynami...
    method parseObject (line 167) | private static List<KsqlApiClient.KsqlResponseTable> parseObject(
    method parseArray (line 172) | private static List<KsqlApiClient.KsqlResponseTable> parseArray(
    method parseProperties (line 177) | private static List<KsqlApiClient.KsqlResponseTable> parseProperties(J...
    method parseUnknownResponse (line 189) | private static List<KsqlApiClient.KsqlResponseTable> parseUnknownRespo...
    method arrayFieldNonEmpty (line 193) | private static boolean arrayFieldNonEmpty(JsonNode json, String field) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/DataMasking.java
  class DataMasking (line 21) | public class DataMasking {
    class Mask (line 25) | @Value
      method shouldBeApplied (line 34) | boolean shouldBeApplied(String topic, Serde.Target target) {
    method create (line 43) | public static DataMasking create(@Nullable List<ClustersProperties.Mas...
    method DataMasking (line 60) | @VisibleForTesting
    method getMaskerForTopic (line 65) | public UnaryOperator<TopicMessageDTO> getMaskerForTopic(String topic) {
    method getMaskingFunction (line 73) | @VisibleForTesting

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/FieldsSelector.java
  type FieldsSelector (line 9) | interface FieldsSelector {
    method create (line 11) | static FieldsSelector create(ClustersProperties.Masking property) {
    method shouldBeMasked (line 26) | boolean shouldBeMasked(String fieldName);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Mask.java
  class Mask (line 12) | class Mask extends MaskingPolicy {
    method Mask (line 18) | Mask(FieldsSelector fieldsSelector, List<String> maskingChars) {
    method applyToJsonContainer (line 23) | @Override
    method applyToString (line 28) | @Override
    method createMasker (line 33) | private static UnaryOperator<String> createMasker(List<String> masking...
    method maskWithFieldsCheck (line 54) | private JsonNode maskWithFieldsCheck(JsonNode node) {
    method maskNodeRecursively (line 75) | private JsonNode maskNodeRecursively(JsonNode node) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/MaskingPolicy.java
  class MaskingPolicy (line 7) | @RequiredArgsConstructor
    method create (line 10) | public static MaskingPolicy create(ClustersProperties.Masking property) {
    method fieldShouldBeMasked (line 33) | protected boolean fieldShouldBeMasked(String fieldName) {
    method applyToJsonContainer (line 37) | public abstract ContainerNode<?> applyToJsonContainer(ContainerNode<?>...
    method applyToString (line 39) | public abstract String applyToString(String str);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Remove.java
  class Remove (line 9) | class Remove extends MaskingPolicy {
    method Remove (line 11) | Remove(FieldsSelector fieldsSelector) {
    method applyToString (line 15) | @Override
    method applyToJsonContainer (line 20) | @Override
    method removeFields (line 25) | private JsonNode removeFields(JsonNode node) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Replace.java
  class Replace (line 10) | class Replace extends MaskingPolicy {
    method Replace (line 16) | Replace(FieldsSelector fieldsSelector, String replacementString) {
    method applyToString (line 21) | @Override
    method applyToJsonContainer (line 26) | @Override
    method replaceWithFieldsCheck (line 31) | private JsonNode replaceWithFieldsCheck(JsonNode node) {
    method replaceRecursive (line 53) | private JsonNode replaceRecursive(JsonNode node) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/JmxMetricsFormatter.java
  class JmxMetricsFormatter (line 16) | class JmxMetricsFormatter {
    method constructMetricsList (line 22) | static List<RawMetric> constructMetricsList(ObjectName jmxMetric,
    method fixIllegalChars (line 43) | private static String fixIllegalChars(String str) {
    method convertNumericValue (line 49) | private static Optional<BigDecimal> convertNumericValue(Object value) {
    method getLabelsMap (line 68) | private static LinkedHashMap<String, String> getLabelsMap(ObjectName m...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/JmxMetricsRetriever.java
  class JmxMetricsRetriever (line 26) | @Service
    method close (line 41) | @Override
    method retrieve (line 46) | @Override
    method isSslJmxEndpoint (line 57) | private boolean isSslJmxEndpoint(KafkaCluster cluster) {
    method retrieveSync (line 61) | @SneakyThrows
    method withJmxConnector (line 71) | private void withJmxConnector(String jmxUrl,
    method prepareJmxEnvAndSetThreadLocal (line 90) | private Map<String, Object> prepareJmxEnvAndSetThreadLocal(KafkaCluste...
    method getMetricsFromJmx (line 114) | @SneakyThrows
    method extractObjectMetrics (line 123) | @SneakyThrows

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/JmxSslSocketFactory.java
  class JmxSslSocketFactory (line 49) | @Slf4j
    method initialized (line 72) | public static boolean initialized() {
    method setSslContextThreadLocal (line 89) | public static void setSslContextThreadLocal(@Nullable String truststor...
    method clearFactoriesCache (line 98) | public static void clearFactoriesCache() {
    method clearThreadLocalContext (line 102) | public static void clearThreadLocalContext() {
    method editJmxConnectorEnv (line 106) | public static void editJmxConnectorEnv(Map<String, Object> env) {
    method JmxSslSocketFactory (line 114) | @SneakyThrows
    method createFactoryFromThreadLocalCtx (line 119) | @SneakyThrows
    method threadLocalContextSet (line 152) | private boolean threadLocalContextSet() {
    method createSocket (line 156) | @Override
    method createSocket (line 171) | @Override
    method createSocket (line 179) | @Override
    method createSocket (line 188) | @Override
    method createSocket (line 196) | @Override
    method getDefaultCipherSuites (line 205) | @Override
    method getSupportedCipherSuites (line 213) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/MetricsCollector.java
  class MetricsCollector (line 19) | @Component
    method getBrokerMetrics (line 27) | public Mono<Metrics> getBrokerMetrics(KafkaCluster cluster, Collection...
    method getMetrics (line 35) | private Mono<List<RawMetric>> getMetrics(KafkaCluster kafkaCluster, No...
    method collectMetrics (line 48) | public Metrics collectMetrics(KafkaCluster cluster, Map<Node, List<Raw...
    method populateWellknowMetrics (line 61) | private WellKnownMetrics populateWellknowMetrics(KafkaCluster cluster,...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/MetricsRetriever.java
  type MetricsRetriever (line 7) | interface MetricsRetriever {
    method retrieve (line 8) | Flux<RawMetric> retrieve(KafkaCluster c, Node node);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/PrometheusEndpointMetricsParser.java
  class PrometheusEndpointMetricsParser (line 12) | @Slf4j
    method parse (line 26) | static Optional<RawMetric> parse(String s) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/PrometheusMetricsRetriever.java
  class PrometheusMetricsRetriever (line 20) | @Service
    method retrieve (line 27) | @Override
    method retrieve (line 45) | @VisibleForTesting

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/RawMetric.java
  type RawMetric (line 9) | public interface RawMetric {
    method name (line 11) | String name();
    method labels (line 13) | Map<String, String> labels();
    method value (line 15) | BigDecimal value();
    method identityKey (line 18) | default Object identityKey() {
    method copyWithValue (line 22) | RawMetric copyWithValue(BigDecimal newValue);
    method create (line 26) | static RawMetric create(String name, Map<String, String> labels, BigDe...
    class SimpleMetric (line 30) | @AllArgsConstructor
      method name (line 39) | @Override
      method labels (line 44) | @Override
      method value (line 49) | @Override
      method copyWithValue (line 54) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/metrics/WellKnownMetrics.java
  class WellKnownMetrics (line 12) | class WellKnownMetrics {
    method populate (line 25) | void populate(Node node, RawMetric rawMetric) {
    method apply (line 30) | void apply(Metrics.MetricsBuilder metricsBuilder) {
    method updateBrokerIOrates (line 37) | private void updateBrokerIOrates(Node node, RawMetric rawMetric) {
    method updateTopicsIOrates (line 55) | private void updateTopicsIOrates(RawMetric rawMetric) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/AbstractProviderCondition.java
  class AbstractProviderCondition (line 14) | public abstract class AbstractProviderCondition {
    method getRegisteredProvidersTypes (line 18) | protected Set<String> getRegisteredProvidersTypes(final Environment en...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/AccessControlService.java
  class AccessControlService (line 48) | @Service
    method init (line 65) | @PostConstruct
    method validateAccess (line 98) | public Mono<Void> validateAccess(AccessContext context) {
    method getUser (line 136) | public Mono<AuthenticatedUser> getUser() {
    method isApplicationConfigAccessible (line 144) | public boolean isApplicationConfigAccessible(AccessContext context, Au...
    method isClusterAccessible (line 158) | private boolean isClusterAccessible(AccessContext context, Authenticat...
    method isClusterAccessible (line 171) | public Mono<Boolean> isClusterAccessible(ClusterDTO cluster) {
    method isClusterConfigAccessible (line 184) | public boolean isClusterConfigAccessible(AccessContext context, Authen...
    method isTopicAccessible (line 202) | public boolean isTopicAccessible(AccessContext context, AuthenticatedU...
    method filterViewableTopics (line 220) | public Mono<List<InternalTopic>> filterViewableTopics(List<InternalTop...
    method isConsumerGroupAccessible (line 239) | private boolean isConsumerGroupAccessible(AccessContext context, Authe...
    method isConsumerGroupAccessible (line 257) | public Mono<Boolean> isConsumerGroupAccessible(String groupId, String ...
    method isSchemaAccessible (line 272) | public boolean isSchemaAccessible(AccessContext context, Authenticated...
    method isSchemaAccessible (line 290) | public Mono<Boolean> isSchemaAccessible(String schema, String clusterN...
    method isConnectAccessible (line 305) | public boolean isConnectAccessible(AccessContext context, Authenticate...
    method isConnectAccessible (line 323) | public Mono<Boolean> isConnectAccessible(ConnectDTO dto, String cluste...
    method isConnectAccessible (line 331) | public Mono<Boolean> isConnectAccessible(String connectName, String cl...
    method isConnectorAccessible (line 346) | public boolean isConnectorAccessible(AccessContext context, Authentica...
    method isConnectorAccessible (line 354) | public Mono<Boolean> isConnectorAccessible(String connectName, String ...
    method isKsqlAccessible (line 370) | private boolean isKsqlAccessible(AccessContext context, AuthenticatedU...
    method isAclAccessible (line 387) | private boolean isAclAccessible(AccessContext context, AuthenticatedUs...
    method isAuditAccessible (line 404) | private boolean isAuditAccessible(AccessContext context, Authenticated...
    method getOauthExtractors (line 421) | public Set<ProviderAuthorityExtractor> getOauthExtractors() {
    method getRoles (line 425) | public List<Role> getRoles() {
    method isAccessible (line 432) | private boolean isAccessible(Resource resource, @Nullable String resou...
    method filterRole (line 448) | private Predicate<Role> filterRole(AuthenticatedUser user) {
    method filterCluster (line 452) | private Predicate<Role> filterCluster(String cluster) {
    method filterCluster (line 458) | private Predicate<Role> filterCluster(Resource resource, String cluste...
    method filterResource (line 465) | private Predicate<Permission> filterResource(Resource resource) {
    method filterResourceValue (line 469) | private Predicate<Permission> filterResourceValue(@Nullable String res...
    method isRbacEnabled (line 483) | public boolean isRbacEnabled() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/CognitoAuthorityExtractor.java
  class CognitoAuthorityExtractor (line 18) | @Slf4j
    method isApplicable (line 23) | @Override
    method extract (line 28) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/GithubAuthorityExtractor.java
  class GithubAuthorityExtractor (line 25) | @Slf4j
    method isApplicable (line 38) | @Override
    method extract (line 43) | @Override
    method getOrganizationRoles (line 92) | private Mono<Set<String>> getOrganizationRoles(DefaultOAuth2User princ...
    method getTeamRoles (line 130) | @SuppressWarnings("unchecked")

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/GoogleAuthorityExtractor.java
  class GoogleAuthorityExtractor (line 16) | @Slf4j
    method isApplicable (line 22) | @Override
    method extract (line 27) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/OauthAuthorityExtractor.java
  class OauthAuthorityExtractor (line 22) | @Slf4j
    method isApplicable (line 27) | @Override
    method extract (line 38) | @Override
    method convertRoles (line 90) | @SuppressWarnings("unchecked")

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/ProviderAuthorityExtractor.java
  type ProviderAuthorityExtractor (line 8) | public interface ProviderAuthorityExtractor {
    method isApplicable (line 12) | boolean isApplicable(String provider, Map<String, String> customParams);
    method extract (line 14) | Mono<Set<String>> extract(AccessControlService acs, Object value, Map<...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/rbac/extractor/RbacLdapAuthoritiesExtractor.java
  class RbacLdapAuthoritiesExtractor (line 20) | @Slf4j
    method RbacLdapAuthoritiesExtractor (line 26) | public RbacLdapAuthoritiesExtractor(ApplicationContext context,
    method getAdditionalRoles (line 33) | @Override
    method getRoles (line 51) | private Set<String> getRoles(String userDn, String username) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ApplicationMetrics.java
  class ApplicationMetrics (line 18) | @RequiredArgsConstructor(access = PRIVATE)
    method forCluster (line 28) | public static ApplicationMetrics forCluster(KafkaCluster cluster) {
    method noop (line 32) | @VisibleForTesting
    method meterPolledRecords (line 37) | public void meterPolledRecords(String topic, PolledRecords polled, boo...
    method polledRecords (line 46) | private Counter polledRecords(String topic) {
    method polledBytes (line 54) | private DistributionSummary polledBytes(String topic) {
    method pollTimer (line 62) | private Timer pollTimer(String topic) {
    method pollThrottlingActivations (line 70) | private Counter pollThrottlingActivations() {
    method activeConsumers (line 77) | public AtomicInteger activeConsumers() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ApplicationRestarter.java
  class ApplicationRestarter (line 11) | @Slf4j
    method onApplicationEvent (line 18) | @Override
    method requestRestart (line 24) | public void requestRestart() {
    method closeApplicationContext (line 35) | private void closeApplicationContext(ApplicationContext context) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/DynamicConfigOperations.java
  class DynamicConfigOperations (line 42) | @Slf4j
    method dynamicConfigPropertiesInitializer (line 55) | public static ApplicationContextInitializer<ConfigurableApplicationCon...
    method dynamicConfigEnabled (line 64) | public boolean dynamicConfigEnabled() {
    method filteringGroovyEnabled (line 68) | public boolean filteringGroovyEnabled() {
    method dynamicConfigFilePath (line 72) | private Path dynamicConfigFilePath() {
    method loadDynamicPropertySource (line 79) | @SneakyThrows
    method getCurrentProperties (line 97) | public PropertiesStructure getCurrentProperties() {
    method getNullableBean (line 111) | @Nullable
    method persist (line 120) | public void persist(PropertiesStructure properties) {
    method uploadConfigRelatedFile (line 128) | public Mono<Path> uploadConfigRelatedFile(FilePart file) {
    method checkIfFilteringGroovyEnabled (line 155) | public void checkIfFilteringGroovyEnabled() {
    method checkIfDynamicConfigEnabled (line 163) | private void checkIfDynamicConfigEnabled() {
    method writeYamlToFile (line 171) | @SneakyThrows
    method serializeToYaml (line 195) | private String serializeToYaml(PropertiesStructure props) {
    class PropertiesStructure (line 220) | @Data
      class Auth (line 230) | @Data
      method initAndValidate (line 237) | public void initAndValidate() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/EmptyRedirectStrategy.java
  class EmptyRedirectStrategy (line 11) | public class EmptyRedirectStrategy implements ServerRedirectStrategy {
    method sendRedirect (line 17) | public Mono<Void> sendRedirect(ServerWebExchange exchange, URI locatio...
    method createLocation (line 27) | private URI createLocation(ServerWebExchange exchange, URI location) {
    method setHttpStatus (line 42) | public void setHttpStatus(HttpStatus httpStatus) {
    method setContextRelative (line 47) | public void setContextRelative(boolean contextRelative) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/GithubReleaseInfo.java
  class GithubReleaseInfo (line 8) | @Slf4j
    method empty (line 18) | static GithubReleaseDto empty() {
    method GithubReleaseInfo (line 27) | public GithubReleaseInfo() {
    method GithubReleaseInfo (line 31) | @VisibleForTesting
    method get (line 44) | public GithubReleaseDto get() {
    method refresh (line 48) | public Mono<Void> refresh() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/KafkaServicesValidation.java
  class KafkaServicesValidation (line 25) | @Slf4j
    method KafkaServicesValidation (line 28) | private KafkaServicesValidation() {
    method valid (line 31) | private static Mono<ApplicationPropertyValidationDTO> valid() {
    method invalid (line 35) | private static Mono<ApplicationPropertyValidationDTO> invalid(String e...
    method invalid (line 39) | private static Mono<ApplicationPropertyValidationDTO> invalid(Throwabl...
    method validateTruststore (line 46) | public static Optional<String> validateTruststore(TruststoreConfig tru...
    method validateClusterConnection (line 63) | public static Mono<ApplicationPropertyValidationDTO> validateClusterCo...
    method validateSchemaRegistry (line 93) | public static Mono<ApplicationPropertyValidationDTO> validateSchemaReg...
    method validateConnect (line 108) | public static Mono<ApplicationPropertyValidationDTO> validateConnect(
    method validateKsql (line 123) | public static Mono<ApplicationPropertyValidationDTO> validateKsql(

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/KafkaVersion.java
  class KafkaVersion (line 5) | public final class KafkaVersion {
    method KafkaVersion (line 7) | private KafkaVersion() {
    method parse (line 10) | public static Optional<Float> parse(String version) throws NumberForma...

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ReactiveFailover.java
  class ReactiveFailover (line 15) | public class ReactiveFailover<T> {
    method createNoop (line 28) | public static <T> ReactiveFailover<T> createNoop(T publisher) {
    method create (line 37) | public static <T> ReactiveFailover<T> create(List<T> publishers,
    method create (line 48) | public static <T, A> ReactiveFailover<T> create(List<A> args,
    method ReactiveFailover (line 61) | private ReactiveFailover(List<PublisherHolder<T>> publishers,
    method mono (line 70) | public <V> Mono<V> mono(Function<T, Mono<V>> f) {
    method mono (line 78) | private <V> Mono<V> mono(Function<T, Mono<V>> f, List<PublisherHolder<...
    method flux (line 95) | public <V> Flux<V> flux(Function<T, Flux<V>> f) {
    method flux (line 103) | private <V> Flux<V> flux(Function<T, Flux<V>> f, List<PublisherHolder<...
    method getActivePublishers (line 123) | private synchronized List<PublisherHolder<T>> getActivePublishers() {
    class PublisherHolder (line 137) | static class PublisherHolder<T> {
      method PublisherHolder (line 144) | PublisherHolder(Supplier<T> supplier, long retryGracePeriodMs) {
      method get (line 149) | synchronized Mono<T> get() {
      method markFailed (line 160) | void markFailed() {
      method isActive (line 164) | boolean isActive() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/ResourceUtil.java
  class ResourceUtil (line 10) | public class ResourceUtil {
    method ResourceUtil (line 12) | private ResourceUtil() {
    method readAsString (line 15) | public static String readAsString(Resource resource) throws IOException {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/SslPropertiesUtil.java
  class SslPropertiesUtil (line 8) | public final class SslPropertiesUtil {
    method SslPropertiesUtil (line 10) | private SslPropertiesUtil() {
    method addKafkaSslProperties (line 13) | public static void addKafkaSslProperties(@Nullable ClustersProperties....

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/WebClientConfigurator.java
  class WebClientConfigurator (line 28) | public class WebClientConfigurator {
    method WebClientConfigurator (line 35) | public WebClientConfigurator() {
    method defaultOM (line 39) | private static ObjectMapper defaultOM() {
    method configureSsl (line 46) | public WebClientConfigurator configureSsl(@Nullable ClustersProperties...
    method configureSsl (line 56) | @SneakyThrows
    method configureBasicAuth (line 100) | public WebClientConfigurator configureBasicAuth(@Nullable String usern...
    method configureBufferSize (line 111) | public WebClientConfigurator configureBufferSize(DataSize maxBuffSize) {
    method configureObjectMapper (line 116) | public WebClientConfigurator configureObjectMapper(ObjectMapper mapper) {
    method configureCodecs (line 126) | public WebClientConfigurator configureCodecs(Consumer<ClientCodecConfi...
    method build (line 131) | public WebClient build() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/AnyFieldSchema.java
  class AnyFieldSchema (line 7) | class AnyFieldSchema implements FieldSchema {
    method get (line 9) | static AnyFieldSchema get() {
    method AnyFieldSchema (line 13) | private AnyFieldSchema() {
    method toJsonNode (line 16) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/ArrayFieldSchema.java
  class ArrayFieldSchema (line 7) | class ArrayFieldSchema implements FieldSchema {
    method ArrayFieldSchema (line 10) | ArrayFieldSchema(FieldSchema itemsSchema) {
    method toJsonNode (line 14) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/AvroJsonSchemaConverter.java
  class AvroJsonSchemaConverter (line 14) | public class AvroJsonSchemaConverter implements JsonSchemaConverter<Sche...
    method convert (line 16) | @Override
    method convertField (line 38) | private FieldSchema convertField(Schema.Field field, Map<String, Field...
    method convertSchema (line 42) | private FieldSchema convertSchema(Schema schema,
    method createUnionSchema (line 76) | private FieldSchema createUnionSchema(Schema schema, Map<String, Field...
    method createObjectSchema (line 109) | private FieldSchema createObjectSchema(Schema schema,
    method createRefField (line 142) | private RefFieldSchema createRefField(String definitionName) {
    method createArraySchema (line 146) | private ArrayFieldSchema createArraySchema(Schema schema,
    method convertType (line 153) | private JsonType convertType(Schema schema) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/EnumJsonType.java
  class EnumJsonType (line 10) | class EnumJsonType extends JsonType {
    method EnumJsonType (line 13) | EnumJsonType(List<String> values) {
    method toJsonNode (line 18) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/FieldSchema.java
  type FieldSchema (line 6) | interface FieldSchema {
    method toJsonNode (line 7) | JsonNode toJsonNode(ObjectMapper mapper);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonAvroConversion.java
  class JsonAvroConversion (line 42) | public class JsonAvroConversion {
    method convertJsonToAvro (line 51) | public static Object convertJsonToAvro(String jsonString, Schema avroS...
    method convert (line 61) | private static Object convert(JsonNode node, Schema avroSchema) {
    method convertAvroToJson (line 197) | public static JsonNode convertAvroToJson(Object obj, Schema avroSchema) {
    method selectUnionTypeFieldName (line 279) | private static String selectUnionTypeFieldName(Schema unionSchema,
    method processLogicalType (line 296) | private static Object processLogicalType(JsonNode node, Schema schema) {
    method processLogicalType (line 304) | private static JsonNode processLogicalType(Object obj, Schema schema) {
    method findConversion (line 312) | private static Optional<LogicalTypeConversion> findConversion(Schema s...
    method isLogicalType (line 319) | private static boolean isLogicalType(Schema schema) {
    method assertJsonType (line 323) | private static void assertJsonType(JsonNode node, JsonNodeType... allo...
    method assertJsonNumberType (line 331) | private static void assertJsonNumberType(JsonNode node, JsonParser.Num...
    type LogicalTypeConversion (line 339) | enum LogicalTypeConversion {
      method LogicalTypeConversion (line 521) | LogicalTypeConversion(String name,
      method getJsonSchema (line 531) | static Optional<FieldSchema> getJsonSchema(Schema schema) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonSchema.java
  class JsonSchema (line 16) | @Data
    method toJson (line 28) | public String toJson() {
    method stringSchema (line 63) | @SneakyThrows

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonSchemaConverter.java
  type JsonSchemaConverter (line 5) | public interface JsonSchemaConverter<T> {
    method convert (line 6) | JsonSchema convert(URI basePath, T schema);

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/JsonType.java
  class JsonType (line 7) | abstract class JsonType {
    method JsonType (line 11) | protected JsonType(Type type) {
    method getType (line 15) | Type getType() {
    method toJsonNode (line 19) | abstract Map<String, JsonNode> toJsonNode(ObjectMapper mapper);
    type Type (line 21) | enum Type {
      method Type (line 33) | Type() {
      method getName (line 37) | public String getName() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/MapFieldSchema.java
  class MapFieldSchema (line 10) | class MapFieldSchema implements FieldSchema {
    method MapFieldSchema (line 13) | MapFieldSchema(@Nullable FieldSchema itemSchema) {
    method MapFieldSchema (line 17) | MapFieldSchema() {
    method toJsonNode (line 21) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/ObjectFieldSchema.java
  class ObjectFieldSchema (line 12) | class ObjectFieldSchema implements FieldSchema {
    method ObjectFieldSchema (line 19) | ObjectFieldSchema(Map<String, FieldSchema> properties,
    method getProperties (line 25) | Map<String, FieldSchema> getProperties() {
    method getRequired (line 29) | List<String> getRequired() {
    method toJsonNode (line 33) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/OneOfFieldSchema.java
  class OneOfFieldSchema (line 8) | class OneOfFieldSchema implements FieldSchema {
    method OneOfFieldSchema (line 11) | OneOfFieldSchema(List<FieldSchema> schemaList) {
    method toJsonNode (line 15) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/ProtobufSchemaConverter.java
  class ProtobufSchemaConverter (line 38) | public class ProtobufSchemaConverter implements JsonSchemaConverter<Desc...
    method convert (line 55) | @Override
    method registerObjectAndReturnRef (line 67) | private RefFieldSchema registerObjectAndReturnRef(Descriptors.Descript...
    method createRefField (line 90) | private RefFieldSchema createRefField(String definition) {
    method convertField (line 94) | private FieldSchema convertField(Descriptors.FieldDescriptor field,
    method convertProtoWellKnownTypes (line 120) | private Optional<FieldSchema> convertProtoWellKnownTypes(Descriptors.F...
    method convertType (line 157) | private JsonType convertType(Descriptors.FieldDescriptor field) {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/RefFieldSchema.java
  class RefFieldSchema (line 7) | class RefFieldSchema implements FieldSchema {
    method RefFieldSchema (line 10) | RefFieldSchema(String ref) {
    method toJsonNode (line 14) | @Override
    method getRef (line 19) | String getRef() {

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/SimpleFieldSchema.java
  class SimpleFieldSchema (line 6) | class SimpleFieldSchema implements FieldSchema {
    method SimpleFieldSchema (line 9) | SimpleFieldSchema(JsonType type) {
    method toJsonNode (line 13) | @Override

FILE: kafka-ui-api/src/main/java/com/provectus/kafka/ui/util/jsonschema/SimpleJsonType.java
  class SimpleJsonType (line 9) | class SimpleJsonType extends JsonType {
    method SimpleJsonType (line 13) | SimpleJsonType(Type type) {
    method SimpleJsonType (line 17) | SimpleJsonType(Type type, Map<String, JsonNode> additionalTypeProperti...
    method toJsonNode (line 22) | @Override

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/AbstractIntegrationTest.java
  class AbstractIntegrationTest (line 28) | @SpringBootTest
    class Initializer (line 67) | public static class Initializer
      method initialize (line 69) | @Override
    method createTopic (line 100) | public static void createTopic(NewTopic topic) {
    method deleteTopic (line 104) | public static void deleteTopic(String topic) {
    method withAdminClient (line 108) | private static void withAdminClient(ThrowingConsumer<AdminClient> cons...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConnectServiceTests.java
  class KafkaConnectServiceTests (line 28) | @Slf4j
    method setUp (line 45) | @BeforeEach
    method tearDown (line 63) | @AfterEach
    method shouldListAllConnectors (line 72) | @Test
    method shouldFilterByNameConnectors (line 83) | @Test
    method shouldFilterByStatusConnectors (line 97) | @Test
    method shouldFilterByTypeConnectors (line 111) | @Test
    method shouldNotFilterConnectors (line 125) | @Test
    method shouldListConnectors (line 139) | @Test
    method shouldReturnNotFoundForNonExistingCluster (line 149) | @Test
    method shouldReturnNotFoundForNonExistingConnectName (line 158) | @Test
    method shouldRetrieveConnector (line 167) | @Test
    method shouldUpdateConfig (line 189) | @Test
    method shouldReturn400WhenConnectReturns400ForInvalidConfigCreate (line 220) | @Test
    method shouldReturn400WhenConnectReturns500ForInvalidConfigCreate (line 246) | @Test
    method shouldReturn400WhenConnectReturns400ForInvalidConfigUpdate (line 270) | @Test
    method shouldReturn400WhenConnectReturns500ForInvalidConfigUpdate (line 302) | @Test
    method shouldRetrieveConnectorPlugins (line 331) | @Test
    method shouldSuccessfullyValidateConnectorPluginConfiguration (line 341) | @Test
    method shouldValidateAndReturnErrorsOfConnectorPluginConfiguration (line 362) | @Test
    method shouldReturn400WhenTryingToCreateConnectorWithExistingName (line 394) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConsumerGroupTests.java
  class KafkaConsumerGroupTests (line 27) | @Slf4j
    method shouldNotFoundWhenNoSuchConsumerGroupId (line 32) | @Test
    method shouldOkWhenConsumerGroupIsNotActive (line 44) | @Test
    method shouldBeBadRequestWhenConsumerGroupIsActive (line 66) | @Test
    method shouldReturnConsumerGroupsWithPagination (line 86) | @Test
    method startConsumerGroups (line 148) | private Closeable startConsumerGroups(int count, String consumerGroupP...
    method createTopicWithRandomName (line 166) | private String createTopicWithRandomName() {
    method createTestConsumerWithGroupId (line 174) | private KafkaConsumer<Bytes, Bytes> createTestConsumerWithGroupId(Stri...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaConsumerTests.java
  class KafkaConsumerTests (line 26) | @Slf4j
    method shouldDeleteRecords (line 33) | @Test
    method shouldIncreasePartitionsUpTo10 (line 94) | @Test
    method shouldReturn404ForNonExistingTopic (line 141) | @Test
    method shouldReturnConfigsForBroker (line 158) | @Test
    method shouldReturn404ForNonExistingBroker (line 182) | @Test
    method shouldRetrieveTopicConfig (line 193) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/KafkaTopicCreateTests.java
  class KafkaTopicCreateTests (line 10) | public class KafkaTopicCreateTests extends AbstractIntegrationTest {
    method setUpBefore (line 15) | @BeforeEach
    method shouldCreateNewTopicSuccessfully (line 23) | @Test
    method shouldReturn400IfTopicAlreadyExists (line 33) | @Test
    method shouldRecreateExistingTopicSuccessfully (line 55) | @Test
    method shouldCloneExistingTopicSuccessfully (line 80) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/ReadOnlyModeTests.java
  class ReadOnlyModeTests (line 12) | public class ReadOnlyModeTests extends AbstractIntegrationTest {
    method shouldCreateTopicForNonReadonlyCluster (line 17) | @Test
    method shouldNotCreateTopicForReadonlyCluster (line 33) | @Test
    method shouldUpdateTopicForNonReadonlyCluster (line 49) | @Test
    method shouldNotUpdateTopicForReadonlyCluster (line 75) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/SchemaRegistryServiceTests.java
  class SchemaRegistryServiceTests (line 28) | @Slf4j
    method setUpBefore (line 34) | @BeforeEach
    method should404WhenGetAllSchemasForUnknownCluster (line 39) | @Test
    method shouldReturn404WhenGetLatestSchemaByNonExistingSubject (line 48) | @Test
    method shouldBeBadRequestIfNoSchemaType (line 61) | @Test
    method shouldNotDoAnythingIfSchemaNotChanged (line 74) | @Test
    method shouldReturnCorrectMessageWhenIncompatibleSchema (line 111) | @Test
    method shouldCreateNewProtobufSchema (line 166) | @Test
    method shouldCreateNewProtobufSchemaWithRefs (line 195) | @Test
    method shouldReturnBackwardAsGlobalCompatibilityLevelByDefault (line 246) | @Test
    method shouldReturnNotEmptyResponseWhenGetAllSchemas (line 262) | @Test
    method shouldOkWhenCreateNewSchemaThenGetAndUpdateItsCompatibilityLevel (line 289) | @Test
    method shouldCreateNewSchemaWhenSubjectIncludesNonAsciiCharacters (line 330) | @Test
    method createNewSubjectAndAssert (line 345) | private void createNewSubjectAndAssert(String subject) {
    method assertSchemaWhenGetLatest (line 363) | private void assertSchemaWhenGetLatest(
    method assertResponseBodyWhenCreateNewSchema (line 379) | private void assertResponseBodyWhenCreateNewSchema(

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/config/ClustersPropertiesTest.java
  class ClustersPropertiesTest (line 9) | class ClustersPropertiesTest {
    method clusterNamesShouldBeUniq (line 11) | @Test
    method clusterNamesShouldSetIfMultipleClustersProvided (line 25) | @Test
    method ifOnlyOneClusterProvidedNameIsOptionalAndSetToDefault (line 38) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/KafkaConnectContainer.java
  class KafkaConnectContainer (line 9) | public class KafkaConnectContainer extends GenericContainer<KafkaConnect...
    method KafkaConnectContainer (line 12) | public KafkaConnectContainer(String version) {
    method withKafka (line 21) | public KafkaConnectContainer withKafka(KafkaContainer kafka) {
    method withKafka (line 26) | public KafkaConnectContainer withKafka(Network network, String bootstr...
    method getTarget (line 49) | public String getTarget() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/KsqlDbContainer.java
  class KsqlDbContainer (line 10) | public class KsqlDbContainer extends GenericContainer<KsqlDbContainer> {
    method KsqlDbContainer (line 14) | public KsqlDbContainer(DockerImageName imageName) {
    method withKafka (line 23) | public KsqlDbContainer withKafka(KafkaContainer kafka) {
    method withKafka (line 29) | private KsqlDbContainer withKafka(Network network, String bootstrapSer...
    method url (line 36) | public String url() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/container/SchemaRegistryContainer.java
  class SchemaRegistryContainer (line 9) | public class SchemaRegistryContainer extends GenericContainer<SchemaRegi...
    method SchemaRegistryContainer (line 12) | public SchemaRegistryContainer(String version) {
    method withKafka (line 17) | public SchemaRegistryContainer withKafka(KafkaContainer kafka) {
    method withKafka (line 22) | public SchemaRegistryContainer withKafka(Network network, String boots...
    method getUrl (line 30) | public String getUrl() {
    method schemaRegistryClient (line 34) | public SchemaRegistryClient schemaRegistryClient() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/controller/ApplicationConfigControllerTest.java
  class ApplicationConfigControllerTest (line 17) | class ApplicationConfigControllerTest extends AbstractIntegrationTest {
    method testUpload (line 22) | @Test
    method generateBody (line 43) | private MultiValueMap<String, HttpEntity<?>> generateBody(ClassPathRes...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/MessageFiltersTest.java
  class MessageFiltersTest (line 22) | class MessageFiltersTest {
    class StringContainsFilter (line 24) | @Nested
      method returnsTrueWhenStringContainedInKeyOrContentOrInBoth (line 29) | @Test
      method returnsFalseOtherwise (line 44) | @Test
    class GroovyScriptFilter (line 61) | @Nested
      method throwsExceptionOnInvalidGroovySyntax (line 64) | @Test
      method canCheckPartition (line 70) | @Test
      method canCheckOffset (line 77) | @Test
      method canCheckHeaders (line 84) | @Test
      method canCheckTimestampMs (line 91) | @Test
      method canCheckValueAsText (line 99) | @Test
      method canCheckKeyAsText (line 106) | @Test
      method canCheckKeyAsJsonObjectIfItCanBeParsedToJson (line 113) | @Test
      method keySetToKeyStringIfCantBeParsedToJson (line 120) | @Test
      method keyAndKeyAsTextSetToNullIfRecordsKeyIsNull (line 126) | @Test
      method canCheckValueAsJsonObjectIfItCanBeParsedToJson (line 135) | @Test
      method valueSetToContentStringIfCantBeParsedToJson (line 142) | @Test
      method valueAndValueAsTextSetToNullIfRecordsContentIsNull (line 148) | @Test
      method canRunMultiStatementScripts (line 157) | @Test
      method filterSpeedIsAtLeast5kPerSec (line 173) | @Test
    method msg (line 198) | private TopicMessageDTO msg() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/MessagesProcessingTest.java
  class MessagesProcessingTest (line 16) | class MessagesProcessingTest {
    method testSortingAsc (line 19) | @RepeatedTest(5)
    method testSortingDesc (line 40) | @RepeatedTest(5)
    method consumerRecord (line 61) | private ConsumerRecord<Bytes, Bytes> consumerRecord(int partition, lon...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/OffsetsInfoTest.java
  class OffsetsInfoTest (line 17) | class OffsetsInfoTest {
    method initMockConsumer (line 27) | @BeforeEach
    method fillsInnerFieldsAccordingToTopicState (line 39) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/SeekOperationsTest.java
  class SeekOperationsTest (line 18) | class SeekOperationsTest {
    method initMockConsumer (line 28) | @BeforeEach
    class GetOffsetsForSeek (line 40) | @Nested
      method latest (line 43) | @Test
      method beginning (line 54) | @Test
      method offsets (line 65) | @Test
      method offsetsWithBoundsFixing (line 76) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/emitter/TailingEmitterTest.java
  class TailingEmitterTest (line 31) | class TailingEmitterTest extends AbstractIntegrationTest {
    method init (line 39) | @BeforeEach
    method tearDown (line 51) | @AfterEach
    method allNewMessagesShouldBeEmitted (line 59) | @Test
    method allNewMessageThatFitFilterConditionShouldBeEmitted (line 80) | @Test
    method createTailingFlux (line 105) | private Flux<TopicMessageEventDTO> createTailingFlux(
    method startTailing (line 123) | private List<TopicMessageEventDTO> startTailing(String filterQuery) {
    method waitUntilTailingInitialized (line 137) | private void waitUntilTailingInitialized(List<TopicMessageEventDTO> fl...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/model/PartitionDistributionStatsTest.java
  class PartitionDistributionStatsTest (line 16) | class PartitionDistributionStatsTest {
    method skewCalculatedBasedOnPartitionsCounts (line 18) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/producer/KafkaTestProducer.java
  class KafkaTestProducer (line 12) | public class KafkaTestProducer<KeyT, ValueT> implements AutoCloseable {
    method KafkaTestProducer (line 15) | private KafkaTestProducer(KafkaProducer<KeyT, ValueT> producer) {
    method forKafka (line 19) | public static KafkaTestProducer<String, String> forKafka(KafkaContaine...
    method send (line 28) | public CompletableFuture<RecordMetadata> send(String topic, ValueT val...
    method send (line 32) | public CompletableFuture<RecordMetadata> send(ProducerRecord<KeyT, Val...
    method close (line 44) | @Override

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/ConsumerRecordDeserializerTest.java
  class ConsumerRecordDeserializerTest (line 17) | class ConsumerRecordDeserializerTest {
    method dataMaskingAppliedOnDeserializedMessage (line 19) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/PropertyResolverImplTest.java
  class PropertyResolverImplTest (line 15) | class PropertyResolverImplTest {
    class CustomPropertiesClass (line 24) | @Data
    method returnsEmptyOptionalWhenPropertyNotExist (line 31) | @Test
    method throwsExceptionWhenPropertyCantBeResolverToRequstedClass (line 39) | @Test
    method resolvedSingleValueProperties (line 54) | @Test
    method resolvesListProperties (line 66) | @Test
    method resolvesCustomConfigClassProperties (line 78) | @Test
    method resolvesMapProperties (line 88) | @Test
    class WithPrefix (line 103) | @Nested
      method resolvedSingleValueProperties (line 106) | @Test
      method resolvesListProperties (line 119) | @Test
      method resolvesCustomConfigClassProperties (line 131) | @Test
      method resolvesMapProperties (line 141) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/SerdesInitializerTest.java
  class SerdesInitializerTest (line 25) | class SerdesInitializerTest {
    method pluggedSerdesInitializedByLoader (line 40) | @Test
    method serdeWithBuiltInNameAndNoPropertiesCantBeInitializedIfSerdeNotSupportAutoConfigure (line 65) | @Test
    method serdeWithBuiltInNameAndNoPropertiesIsAutoConfiguredIfPossible (line 76) | @Test
    method serdeWithBuiltInNameAndSetPropertiesAreExplicitlyConfigured (line 90) | @Test
    method serdeWithCustomNameAndBuiltInClassnameAreExplicitlyConfigured (line 105) | @Test
    method init (line 120) | private ClusterSerdes init(ClustersProperties.SerdeConfig... serdeConf...
    method createProperties (line 124) | private ClustersProperties createProperties(ClustersProperties.SerdeCo...
    method verifyExplicitlyConfigured (line 134) | private void verifyExplicitlyConfigured(SerdeInstance serde) {
    method verifyAutoConfigured (line 140) | private void verifyAutoConfigured(SerdeInstance serde) {
    method verifyPatternsMatch (line 146) | private void verifyPatternsMatch(ClustersProperties.SerdeConfig config...
    class BuiltInSerdeWithAutoconfigure (line 151) | static class BuiltInSerdeWithAutoconfigure extends StringSerde {
      method canBeAutoConfigured (line 157) | @Override
      method autoConfigure (line 163) | @Override
      method configure (line 168) | @Override
    class BuiltInSerdeMock2NoAutoConfigure (line 176) | static class BuiltInSerdeMock2NoAutoConfigure extends BuiltInSerdeWith...
      method canBeAutoConfigured (line 177) | @Override

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/AvroEmbeddedSerdeTest.java
  class AvroEmbeddedSerdeTest (line 22) | class AvroEmbeddedSerdeTest {
    method init (line 26) | @BeforeEach
    method canDeserializeReturnsTrueForAllTargets (line 36) | @ParameterizedTest
    method canSerializeReturnsFalseForAllTargets (line 43) | @ParameterizedTest
    method deserializerParsesAvroDataWithEmbeddedSchema (line 50) | @Test
    method assertJsonEquals (line 77) | private void assertJsonEquals(String expected, String actual) throws I...
    method serializeAvroWithEmbeddedSchema (line 82) | private byte[] serializeAvroWithEmbeddedSchema(GenericRecord record) t...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/Base64SerdeTest.java
  class Base64SerdeTest (line 14) | class Base64SerdeTest {
    method init (line 21) | @BeforeEach
    method serializesInputAsBase64String (line 31) | @ParameterizedTest
    method deserializesDataAsBase64Bytes (line 39) | @ParameterizedTest
    method getSchemaReturnsEmpty (line 49) | @ParameterizedTest
    method canDeserializeReturnsTrueForAllInputs (line 55) | @ParameterizedTest
    method canSerializeReturnsTrueForAllInput (line 61) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/ConsumerOffsetsSerdeTest.java
  class ConsumerOffsetsSerdeTest (line 31) | class ConsumerOffsetsSerdeTest extends AbstractIntegrationTest {
    method createTopicAndCommitItsOffset (line 38) | @BeforeAll
    method cleanUp (line 59) | @AfterAll
    method canOnlyDeserializeConsumerOffsetsTopic (line 64) | @Test
    method deserializesMessagesMadeByConsumerActivity (line 73) | @Test
    method isCommitMessage (line 119) | private boolean isCommitMessage(DeserializeResult key, DeserializeResu...
    method isGroupMetadataMessage (line 159) | private boolean isGroupMetadataMessage(DeserializeResult key, Deserial...
    method toMapFromJsom (line 170) | @SneakyThrows
    method createConsumer (line 175) | private static KafkaConsumer<Bytes, Bytes> createConsumer(String group...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/HexSerdeTest.java
  class HexSerdeTest (line 14) | public class HexSerdeTest {
    method init (line 21) | @BeforeEach
    method serializesInputAsHexString (line 28) | @ParameterizedTest
    method serializesEmptyStringAsEmptyBytesArray (line 45) | @ParameterizedTest
    method deserializesDataAsHexBytes (line 53) | @ParameterizedTest
    method getSchemaReturnsEmpty (line 63) | @ParameterizedTest
    method canDeserializeReturnsTrueForAllInputs (line 69) | @ParameterizedTest
    method canSerializeReturnsTrueForAllInput (line 75) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/Int32SerdeTest.java
  class Int32SerdeTest (line 15) | class Int32SerdeTest {
    method init (line 19) | @BeforeEach
    method serializeUses4BytesIntRepresentation (line 29) | @ParameterizedTest
    method deserializeUses4BytesIntRepresentation (line 37) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/Int64SerdeTest.java
  class Int64SerdeTest (line 16) | class Int64SerdeTest {
    method init (line 20) | @BeforeEach
    method serializeUses8BytesLongRepresentation (line 30) | @ParameterizedTest
    method deserializeUses8BytesLongRepresentation (line 38) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/ProtobufFileSerdeTest.java
  class ProtobufFileSerdeTest (line 26) | class ProtobufFileSerdeTest {
    method setUp (line 47) | @BeforeEach
    method loadsAllProtoFiledFromTargetDirectory (line 79) | @Test
    method protoFilesDir (line 94) | @SneakyThrows
    class ConfigurationTests (line 99) | @Nested
      method canBeAutoConfiguredReturnsNoProtoPropertiesProvided (line 102) | @Test
      method canBeAutoConfiguredReturnsTrueIfProtoFilesHasBeenProvided (line 109) | @Test
      method canBeAutoConfiguredReturnsTrueIfProtoFilesDirProvided (line 118) | @Test
      method unknownSchemaAsDefaultThrowsException (line 127) | @Test
      method unknownSchemaAsDefaultForKeyThrowsException (line 141) | @Test
      method unknownSchemaAsTopicSchemaThrowsException (line 155) | @Test
      method unknownSchemaAsTopicSchemaForKeyThrowsException (line 169) | @Test
      method createConfigureFillsDescriptorMappingsWhenProtoFilesListProvided (line 183) | @Test
      method createConfigureFillsDescriptorMappingsWhenProtoFileDirProvided (line 228) | @Test
    method deserializeUsesTopicsMappingToFindMsgDescriptor (line 271) | @Test
    method deserializeUsesDefaultDescriptorIfTopicMappingNotFound (line 304) | @Test
    method serializeUsesTopicsMappingToFindMsgDescriptor (line 326) | @Test
    method serializeUsesDefaultDescriptorIfTopicMappingNotFound (line 356) | @Test
    method assertJsonEquals (line 378) | @SneakyThrows

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/ProtobufRawSerdeTest.java
  class ProtobufRawSerdeTest (line 16) | class ProtobufRawSerdeTest {
    method init (line 22) | @BeforeEach
    method getSampleSchema (line 27) | @SneakyThrows
    method getProtobufMessage (line 39) | @SneakyThrows
    method deserializeSimpleMessage (line 46) | @Test
    method deserializeEmptyMessage (line 53) | @Test
    method deserializeInvalidMessage (line 60) | @Test
    method deserializeNullMessage (line 68) | @Test
    method getSampleNestedSchema (line 76) | ProtobufSchema getSampleNestedSchema() {
    method getComplexProtobufMessage (line 91) | @SneakyThrows
    method deserializeNestedMessage (line 102) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/UInt32SerdeTest.java
  class UInt32SerdeTest (line 17) | class UInt32SerdeTest {
    method init (line 21) | @BeforeEach
    method serializeUses4BytesUInt32Representation (line 31) | @ParameterizedTest
    method serializeThrowsNfeIfNegativeValuePassed (line 40) | @ParameterizedTest
    method deserializeUses4BytesUInt32Representation (line 49) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/UInt64SerdeTest.java
  class UInt64SerdeTest (line 16) | class UInt64SerdeTest {
    method init (line 20) | @BeforeEach
    method serializeUses8BytesUInt64Representation (line 30) | @ParameterizedTest
    method serializeThrowsNfeIfNegativeValuePassed (line 39) | @ParameterizedTest
    method deserializeUses8BytesUIn64tRepresentation (line 48) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/UuidBinarySerdeTest.java
  class UuidBinarySerdeTest (line 17) | class UuidBinarySerdeTest {
    class MsbFirst (line 19) | @Nested
      method init (line 24) | @BeforeEach
      method serializerUses16bytesUuidBinaryRepresentation (line 34) | @ParameterizedTest
      method deserializerUses16bytesUuidBinaryRepresentation (line 45) | @ParameterizedTest
    class MsbLast (line 60) | @Nested
      method init (line 65) | @BeforeEach
      method serializerUses16bytesUuidBinaryRepresentation (line 75) | @ParameterizedTest
      method deserializerUses16bytesUuidBinaryRepresentation (line 86) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/serdes/builtin/sr/SchemaRegistrySerdeTest.java
  class SchemaRegistrySerdeTest (line 29) | class SchemaRegistrySerdeTest {
    method init (line 35) | @BeforeEach
    method returnsSchemaDescriptionIfSchemaRegisteredInSR (line 41) | @ParameterizedTest
    method returnsEmptyDescriptorIfSchemaNotRegisteredInSR (line 66) | @Test
    method serializeTreatsInputAsJsonAvroSchemaPayload (line 73) | @Test
    method deserializeReturnsJsonAvroMsgJsonRepresentation (line 100) | @Test
    class SerdeWithDisabledSubjectExistenceCheck (line 133) | @Nested
      method init (line 136) | @BeforeEach
      method canDeserializeAlwaysReturnsTrue (line 141) | @Test
    class SerdeWithEnabledSubjectExistenceCheck (line 149) | @Nested
      method init (line 152) | @BeforeEach
      method canDeserializeReturnsTrueIfSubjectExists (line 157) | @Test
      method canDeserializeReturnsFalseIfSubjectDoesNotExist (line 167) | @Test
    method canDeserializeAndCanSerializeReturnsTrueIfSubjectExists (line 175) | @Test
    method canSerializeReturnsFalseIfSubjectDoesNotExist (line 185) | @Test
    method assertJsonsEqual (line 192) | @SneakyThrows
    method toBytesWithMagicByteAndSchemaId (line 198) | private byte[] toBytesWithMagicByteAndSchemaId(int schemaId, String js...
    method toBytesWithMagicByteAndSchemaId (line 202) | private byte[] toBytesWithMagicByteAndSchemaId(int schemaId, byte[] bo...
    method jsonToAvro (line 210) | @SneakyThrows
    method avroFieldsRepresentationIsConsistentForSerializationAndDeserialization (line 220) | @Test
    method avroLogicalTypesRepresentationIsConsistentForSerializationAndDeserialization (line 308) | @Test
    method assertSerdeCycle (line 377) | void assertSerdeCycle(String topic, String jsonInput) {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/BrokerServiceTest.java
  class BrokerServiceTest (line 8) | class BrokerServiceTest extends AbstractIntegrationTest {
    method getBrokersReturnsFilledBrokerDto (line 16) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ConfigTest.java
  class ConfigTest (line 20) | public class ConfigTest extends AbstractIntegrationTest {
    method waitUntilStatsInitialized (line 25) | @BeforeEach
    method testAlterConfig (line 37) | @Test
    method testAlterReadonlyConfig (line 67) | @Test
    method getConfig (line 82) | private Optional<BrokerConfigDTO> getConfig(String name) {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/KafkaConfigSanitizerTest.java
  class KafkaConfigSanitizerTest (line 11) | class KafkaConfigSanitizerTest {
    method doNothingIfEnabledPropertySetToFalse (line 13) | @Test
    method obfuscateCredentials (line 21) | @Test
    method notObfuscateNormalConfigs (line 39) | @Test
    method obfuscateCredentialsWithDefinedPatterns (line 47) | @Test
    method sanitizeConnectorConfigDoNotFailOnNullableValues (line 58) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/LogDirsTest.java
  class LogDirsTest (line 18) | public class LogDirsTest extends AbstractIntegrationTest {
    method testAllBrokers (line 23) | @Test
    method testOneBrokers (line 48) | @Test
    method testWrongBrokers (line 73) | @Test
    method testChangeDirToWrongDir (line 86) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/MessagesServiceTest.java
  class MessagesServiceTest (line 28) | class MessagesServiceTest extends AbstractIntegrationTest {
    method init (line 38) | @BeforeEach
    method deleteTopicMessagesReturnsExceptionWhenTopicNotFound (line 46) | @Test
    method sendMessageReturnsExceptionWhenTopicNotFound (line 53) | @Test
    method loadMessagesReturnsExceptionWhenTopicNotFound (line 60) | @Test
    method maskingAppliedOnConfiguredClusters (line 68) | @Test
    method execSmartFilterTestReturnsExecutionResult (line 99) | @Test
    method execSmartFilterTestReturnsErrorOnFilterApplyError (line 115) | @Test
    method execSmartFilterTestReturnsErrorOnFilterCompilationError (line 125) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/OffsetsResetServiceTest.java
  class OffsetsResetServiceTest (line 36) | public class OffsetsResetServiceTest extends AbstractIntegrationTest {
    method init (line 46) | @BeforeEach
    method cleanUp (line 54) | @AfterEach
    method createConsumerGroup (line 59) | private void createConsumerGroup() {
    method failsIfGroupDoesNotExists (line 67) | @Test
    method failsIfGroupIsActive (line 87) | @Test
    method resetToOffsets (line 111) | @Test
    method resetToOffsetsCommitsEarliestOrLatestOffsetsIfOffsetsBoundsNotValid (line 120) | @Test
    method resetToEarliest (line 130) | @Test
    method resetToLatest (line 143) | @Test
    method resetToTimestamp (line 156) | @Test
    method commit (line 176) | private void commit(Map<Integer, Long> offsetsToCommit) {
    method sendMsgsToPartition (line 187) | private void sendMsgsToPartition(Map<Integer, Integer> msgsCountForPar...
    method send (line 196) | private void send(Stream<ProducerRecord<Bytes, Bytes>> toSend) {
    method assertOffsets (line 206) | private void assertOffsets(Map<Integer, Long> expectedOffsets) {
    method groupConsumer (line 219) | private Consumer<?, ?> groupConsumer() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ReactiveAdminClientTest.java
  class ReactiveAdminClientTest (line 48) | class ReactiveAdminClientTest extends AbstractIntegrationTest {
    method init (line 55) | @BeforeEach
    method tearDown (line 63) | @AfterEach
    method testUpdateTopicConfigs (line 74) | @Test
    method createTopics (line 108) | @SneakyThrows
    method fillTopic (line 114) | void fillTopic(String topic, int msgsCnt) {
    method testToMonoWithExceptionFilter (line 122) | @Test
    method filterPartitionsWithLeaderCheckSkipsPartitionsFromTopicWhereSomePartitionsHaveNoLeader (line 143) | @Test
    method filterPartitionsWithLeaderCheckThrowExceptionIfThereIsSomePartitionsWithoutLeaderAndFlagSet (line 173) | @Test
    method testListOffsetsUnsafe (line 193) | @Test
    method testListConsumerGroupOffsets (line 229) | @Test
    method tp (line 299) | private static TopicPartition tp(String topic, int partition) {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/RecordEmitterTest.java
  class RecordEmitterTest (line 50) | @Slf4j
    method generateMsgs (line 62) | @BeforeAll
    method cleanup (line 92) | @AfterAll
    method createRecordsDeserializer (line 99) | private static ConsumerRecordDeserializer createRecordsDeserializer() {
    method pollNothingOnEmptyTopic (line 114) | @Test
    method pollFullTopicFromBeginning (line 147) | @Test
    method pollWithOffsets (line 173) | @Test
    method pollWithTimestamps (line 214) | @Test
    method backwardEmitterSeekToEnd (line 262) | @Test
    method backwardEmitterSeekToBegin (line 290) | @Test
    method expectEmitter (line 313) | private void expectEmitter(Consumer<FluxSink<TopicMessageEventDTO>> em...
    method expectEmitter (line 325) | private void expectEmitter(
    method createConsumer (line 342) | private EnhancedConsumer createConsumer() {
    method createConsumer (line 346) | private EnhancedConsumer createConsumer(Map<String, Object> properties) {
    class Record (line 358) | @Value

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/SchemaRegistryPaginationTest.java
  class SchemaRegistryPaginationTest (line 24) | public class SchemaRegistryPaginationTest {
    method init (line 30) | private void init(List<String> subjects) {
    method shouldListFirst25andThen10Schemas (line 51) | @Test
    method shouldListSchemasContaining_1 (line 75) | @Test
    method shouldCorrectlyHandleNonPositivePageNumberAndPageSize (line 89) | @Test
    method shouldCalculateCorrectPageCountForNonDivisiblePageSize (line 105) | @Test
    method buildKafkaCluster (line 122) | private KafkaCluster buildKafkaCluster(String clusterName) {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/SendAndReadTests.java
  class SendAndReadTests (line 35) | public class SendAndReadTests extends AbstractIntegrationTest {
    method init (line 132) | @BeforeEach
    method noSchemaStringKeyStringValue (line 137) | @Test
    method keyIsIntValueIsLong (line 153) | @Test
    method keyIsNull (line 169) | @Test
    method valueIsNull (line 185) | @Test
    method primitiveAvroSchemas (line 201) | @Test
    method recordAvroSchema (line 219) | @Test
    method keyWithNoSchemaValueWithProtoSchema (line 237) | @Test
    method keyWithAvroSchemaValueWithAvroSchemaKeyIsNull (line 254) | @Test
    method valueWithAvroSchemaShouldThrowExceptionIfArgIsNotValidJsonObject (line 273) | @Test
    method keyWithAvroSchemaValueWithProtoSchema (line 287) | @Test
    method valueWithProtoSchemaShouldThrowExceptionArgIsNotValidJsonObject (line 305) | @Test
    method keyWithProtoSchemaValueWithJsonSchema (line 320) | @Test
    method valueWithJsonSchemaThrowsExceptionIfArgIsNotValidJsonObject (line 338) | @Test
    method topicMessageMetadataAvro (line 353) | @Test
    method topicMessageMetadataProtobuf (line 378) | @Test
    method topicMessageMetadataJson (line 402) | @Test
    method noKeyAndNoContentPresentTest (line 428) | @Test
    method assertJsonEqual (line 444) | @SneakyThrows
    class SendAndReadSpec (line 450) | class SendAndReadSpec {
      method withMsgToSend (line 455) | public SendAndReadSpec withMsgToSend(CreateTopicMessageDTO msg) {
      method withKeySchema (line 460) | public SendAndReadSpec withKeySchema(ParsedSchema keyScheam) {
      method withValueSchema (line 465) | public SendAndReadSpec withValueSchema(ParsedSchema valueSchema) {
      method createTopicAndCreateSchemas (line 470) | @SneakyThrows
      method assertSendThrowsException (line 484) | public void assertSendThrowsException() {
      method doAssert (line 495) | @SneakyThrows

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/TopicsServicePaginationTest.java
  class TopicsServicePaginationTest (line 39) | class TopicsServicePaginationTest {
    method init (line 51) | private void init(Map<String, InternalTopic> topicsInCache) {
    method shouldListFirst25Topics (line 67) | @Test
    method buildKafkaCluster (line 88) | private KafkaCluster buildKafkaCluster(String clusterName) {
    method shouldListFirst25TopicsSortedByNameDescendingOrder (line 94) | @Test
    method shouldCalculateCorrectPageCountForNonDivisiblePageSize (line 120) | @Test
    method shouldCorrectlyHandleNonPositivePageNumberAndPageSize (line 139) | @Test
    method shouldListBotInternalAndNonInternalTopics (line 158) | @Test
    method shouldListOnlyNonInternalTopics (line 178) | @Test
    method shouldListOnlyTopicsContainingOne (line 199) | @Test
    method shouldListTopicsOrderedByPartitionsCount (line 220) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/acl/AclCsvTest.java
  class AclCsvTest (line 20) | class AclCsvTest {
    method parsesValidInputCsv (line 31) | @ParameterizedTest
    method throwsExceptionForInvalidInputCsv (line 48) | @ParameterizedTest
    method transformAndParseUseSameFormat (line 63) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/acl/AclsServiceTest.java
  class AclsServiceTest (line 30) | class AclsServiceTest {
    method initMocks (line 39) | @BeforeEach
    method testSyncAclWithAclCsv (line 44) | @Test
    method createsConsumerDependantAcls (line 88) | @Test
    method createsConsumerDependantAclsWhenTopicsAndGroupsSpecifiedByPrefix (line 130) | @Test
    method createsProducerDependantAcls (line 163) | @Test
    method createsProducerDependantAclsWhenTopicsAndTxIdSpecifiedByPrefix (line 208) | @Test
    method createsStreamAppDependantAcls (line 250) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/analyze/TopicAnalysisServiceTest.java
  class TopicAnalysisServiceTest (line 18) | class TopicAnalysisServiceTest extends AbstractIntegrationTest {
    method savesResultWhenAnalysisIsCompleted (line 26) | @Test
    method fillTopic (line 49) | private void fillTopic(String topic, int cnt) {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/audit/AuditIntegrationTest.java
  class AuditIntegrationTest (line 25) | public class AuditIntegrationTest extends AbstractIntegrationTest {
    method auditRecordWrittenIntoKafkaWhenNewTopicCreated (line 30) | @Test
    method createConsumer (line 77) | private KafkaConsumer<?, String> createConsumer() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/audit/AuditServiceTest.java
  class AuditServiceTest (line 28) | class AuditServiceTest {
    method isAuditTopicChecksIfAuditIsEnabledForCluster (line 30) | @Test
    method auditCallsWriterMethodDependingOnSignal (line 46) | @Test
    class CreateAuditWriter (line 61) | @Nested
      method init (line 76) | @BeforeEach
      method logOnlyAlterOpsByDefault (line 82) | @Test
      method noWriterIfNoAuditPropsSet (line 93) | @Test
      method setsLoggerIfConsoleLoggingEnabled (line 99) | @Test
      class WhenTopicAuditEnabled (line 112) | @Nested
        method setTopicWriteProperties (line 115) | @BeforeEach
        method createsProducerIfTopicExists (line 125) | @Test
        method createsProducerAndTopicIfItIsNotExist (line 142) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/audit/AuditWriterTest.java
  class AuditWriterTest (line 26) | class AuditWriterTest {
    class AlterOperationsOnlyWriter (line 32) | @Nested
      method onlyLogsWhenAlterOperationIsPresentForOneOfResources (line 37) | @ParameterizedTest
      method onlyLogsWhenAlterOperationIsPresentForOneOfResources (line 45) | static Stream<AccessContext> onlyLogsWhenAlterOperationIsPresentForO...
      method doesNothingIfNoResourceHasAlterAction (line 66) | @ParameterizedTest
      method doesNothingIfNoResourceHasAlterAction (line 74) | static Stream<AccessContext> doesNothingIfNoResourceHasAlterAction() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/ConnectorsExporterTest.java
  class ConnectorsExporterTest (line 21) | class ConnectorsExporterTest {
    method exportsConnectorsAsDataTransformers (line 31) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/SchemaReferencesResolverTest.java
  class SchemaReferencesResolverTest (line 16) | class SchemaReferencesResolverTest {
    method resolvesRefsUsingSrClient (line 22) | @Test
    method returnsEmptyMapOnEmptyInputs (line 70) | @Test
    method mockSrCall (line 81) | private void mockSrCall(String subject, int version, SchemaSubject sub...

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/TopicsExporterTest.java
  class TopicsExporterTest (line 31) | class TopicsExporterTest {
    method init (line 45) | @BeforeEach
    method doesNotExportTopicsWhichDontFitFiltrationRule (line 56) | @Test
    method doesExportTopicData (line 86) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/schema/AvroExtractorTest.java
  class AvroExtractorTest (line 12) | class AvroExtractorTest {
    method test (line 14) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/schema/JsonSchemaExtractorTest.java
  class JsonSchemaExtractorTest (line 16) | class JsonSchemaExtractorTest {
    method test (line 18) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/integration/odd/schema/ProtoExtractorTest.java
  class ProtoExtractorTest (line 12) | class ProtoExtractorTest {
    method test (line 14) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ksql/KsqlApiClientTest.java
  class KsqlApiClientTest (line 20) | class KsqlApiClientTest extends AbstractIntegrationTest {
    method startContainer (line 22) | @BeforeAll
    method stopContainer (line 27) | @AfterAll
    method ksqTutorialQueriesWork (line 33) | @Test
    method assertLastKsqTutorialQueryResult (line 66) | private void assertLastKsqTutorialQueryResult(KsqlApiClient client) {
    method execCommandSync (line 107) | private void execCommandSync(KsqlApiClient client, String... ksqls) {
    method ksqlClient (line 113) | private KsqlApiClient ksqlClient() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ksql/KsqlServiceV2Test.java
  class KsqlServiceV2Test (line 18) | class KsqlServiceV2Test extends AbstractIntegrationTest {
    method init (line 23) | @BeforeAll
    method cleanup (line 28) | @AfterAll
    method listStreamsReturnsAllKsqlStreams (line 43) | @Test
    method listTablesReturnsAllKsqlTables (line 71) | @Test
    method cluster (line 100) | private static KafkaCluster cluster() {
    method ksqlClient (line 107) | private static KsqlApiClient ksqlClient() {

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/ksql/response/ResponseParserTest.java
  class ResponseParserTest (line 7) | class ResponseParserTest {
    method parsesSelectHeaderIntoColumnNames (line 9) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/DataMaskingTest.java
  class DataMaskingTest (line 21) | class DataMaskingTest {
    method init (line 31) | @BeforeEach
    method createMaskPolicy (line 44) | private MaskingPolicy createMaskPolicy() {
    method appliesMasksToJsonContainerArgsBasedOnTopicPatterns (line 50) | @ParameterizedTest
    method appliesFirstFoundMaskToStringArgsBasedOnTopicPatterns (line 71) | @ParameterizedTest

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/policies/FieldsSelectorTest.java
  class FieldsSelectorTest (line 11) | class FieldsSelectorTest {
    method selectsFieldsDueToProvidedPattern (line 13) | @Test
    method selectsFieldsDueToProvidedFieldNames (line 24) | @Test
    method selectAllFieldsIfNoPatternAndNoNamesProvided (line 35) | @Test
    method throwsExceptionIfBothFieldListAndPatternProvided (line 43) | @Test

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/policies/MaskTest.java
  class MaskTest (line 16) | class MaskTest {
    method testApplyToJsonContainer (line 21) | @ParameterizedTest
    method testApplyToJsonContainer (line 28) | private static Stream<Arguments> testApplyToJsonContainer() {
    method testApplyToString (line 53) | @ParameterizedTest
    method parse (line 64) | @SneakyThrows

FILE: kafka-ui-api/src/test/java/com/provectus/kafka/ui/service/masking/policies/RemoveTest.java
  class RemoveTest (line 16) | class RemoveTest {
    method testApplyToJsonContainer (line 20) | @ParameterizedTest
    method testApplyToJsonContainer (line 27) | private static Stream<Arguments> testApplyToJsonContainer() {
    method parse (line 
Condensed preview — 1068 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,297K chars).
[
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 864,
    "preview": "{\n\t\"name\": \"Java\",\n\n\t\"image\": \"mcr.microsoft.com/devcontainers/java:0-17\",\n\n\t\"features\": {\n\t\t\"ghcr.io/devcontainers/feat"
  },
  {
    "path": ".editorconfig",
    "chars": 11861,
    "preview": "[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 4\nindent_style = space\ninsert_final_newline = true\nmax_line_length = "
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 396,
    "preview": "*                           @Haarolean\n\n\n# BACKEND\n/pom.xml                    @provectus/kafka-backend\n\n/kafka-ui-contr"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.yml",
    "chars": 3439,
    "preview": "name: \"\\U0001F41E  Bug report\"\ndescription: File a bug report\nlabels: [\"status/triage\", \"type/bug\"]\nassignees: []\n\nbody:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 753,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Report helm issue\n    url: https://github.com/provectus/kafka-ui-ch"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.yml",
    "chars": 2260,
    "preview": "name: \"\\U0001F680 Feature request\"\ndescription: Propose a new feature\nlabels: [\"status/triage\", \"type/feature\"]\nassignee"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1393,
    "preview": "<!-- ignore-task-list-start -->\n- [ ] **Breaking change?** (if so, please describe the impact and migration path for exi"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 2184,
    "preview": "version: 2\nupdates:\n- package-ecosystem: maven\n  directory: \"/\"\n  schedule:\n    interval: daily\n    time: \"10:00\"\n    ti"
  },
  {
    "path": ".github/release_drafter.yaml",
    "chars": 891,
    "preview": "name-template: '$RESOLVED_VERSION'\ntag-template: 'v$RESOLVED_VERSION'\ntemplate: |\n  ## Changes\n  $CHANGES\n  ## Contribut"
  },
  {
    "path": ".github/workflows/aws_publisher.yaml",
    "chars": 3201,
    "preview": "name: \"Infra: Release: AWS Marketplace Publisher\"\non:\n  workflow_dispatch:\n    inputs:\n      KafkaUIInfraBranch:\n       "
  },
  {
    "path": ".github/workflows/backend.yml",
    "chars": 2015,
    "preview": "name: \"Backend: PR/master build & test\"\non:\n  push:\n    branches:\n      - master\n  pull_request_target:\n    types: [\"ope"
  },
  {
    "path": ".github/workflows/block_merge.yml",
    "chars": 446,
    "preview": "name: \"Infra: PR block merge\"\non:\n  pull_request:\n    types: [opened, labeled, unlabeled, synchronize]\njobs:\n  block_mer"
  },
  {
    "path": ".github/workflows/branch-deploy.yml",
    "chars": 4378,
    "preview": "name: \"Infra: Feature Testing: Init env\"\non:\n  workflow_dispatch:\n\n  pull_request:\n    types: ['labeled']\njobs:\n  build:"
  },
  {
    "path": ".github/workflows/branch-remove.yml",
    "chars": 1148,
    "preview": "name: \"Infra: Feature Testing: Destroy env\"\non:\n  workflow_dispatch:\n  pull_request:\n    types: ['unlabeled', 'closed']\n"
  },
  {
    "path": ".github/workflows/build-public-image.yml",
    "chars": 2776,
    "preview": "name: \"Infra: Image Testing: Deploy\"\non:\n  workflow_dispatch:\n  pull_request:\n    types: ['labeled']\njobs:\n  build:\n    "
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 2641,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/cve.yaml",
    "chars": 1929,
    "preview": "name: CVE checks docker master\non:\n  workflow_dispatch:\n  schedule:\n    # * is a special character in YAML so you have t"
  },
  {
    "path": ".github/workflows/delete-public-image.yml",
    "chars": 1266,
    "preview": "name: \"Infra: Image Testing: Delete\"\non:\n  workflow_dispatch:\n  pull_request:\n    types: ['unlabeled', 'closed']\njobs:\n "
  },
  {
    "path": ".github/workflows/documentation.yaml",
    "chars": 736,
    "preview": "name: \"Infra: Docs: URL linter\"\non:\n  pull_request:\n    types:\n      - opened\n      - labeled\n      - reopened\n      - s"
  },
  {
    "path": ".github/workflows/e2e-automation.yml",
    "chars": 3322,
    "preview": "name: \"E2E: Automation suite\"\non:\n  workflow_dispatch:\n    inputs:\n      test_suite:\n        description: 'Select test s"
  },
  {
    "path": ".github/workflows/e2e-checks.yaml",
    "chars": 3400,
    "preview": "name: \"E2E: PR healthcheck\"\non:\n  pull_request_target:\n    types: [ \"opened\", \"edited\", \"reopened\", \"synchronize\" ]\n    "
  },
  {
    "path": ".github/workflows/e2e-manual.yml",
    "chars": 1454,
    "preview": "name: \"E2E: Manual suite\"\non:\n  workflow_dispatch:\n    inputs:\n      test_suite:\n        description: 'Select test suite"
  },
  {
    "path": ".github/workflows/e2e-weekly.yml",
    "chars": 2913,
    "preview": "name: \"E2E: Weekly suite\"\non:\n  schedule:\n    - cron: '0 1 * * 1'\n\njobs:\n  build-and-test:\n    runs-on: ubuntu-latest\n  "
  },
  {
    "path": ".github/workflows/frontend.yaml",
    "chars": 1772,
    "preview": "name: \"Frontend: PR/master build & test\"\non:\n  push:\n    branches:\n      - master\n  pull_request_target:\n    types: [\"op"
  },
  {
    "path": ".github/workflows/master.yaml",
    "chars": 2934,
    "preview": "name: \"Master: Build & deploy\"\non:\n  workflow_dispatch:\n  push:\n    branches: [ \"master\" ]\n\njobs:\n  build:\n    runs-on: "
  },
  {
    "path": ".github/workflows/pr-checks.yaml",
    "chars": 445,
    "preview": "name: \"PR: Checklist linter\"\non:\n  pull_request_target:\n    types: [opened, edited, synchronize, reopened]\npermissions:\n"
  },
  {
    "path": ".github/workflows/release-serde-api.yaml",
    "chars": 959,
    "preview": "name: \"Infra: Release: Serde API\"\non: workflow_dispatch\n\njobs:\n  release-serde-api:\n    runs-on: ubuntu-latest\n    steps"
  },
  {
    "path": ".github/workflows/release.yaml",
    "chars": 3202,
    "preview": "name: \"Infra: Release\"\non:\n  release:\n    types: [published]\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    outputs:\n "
  },
  {
    "path": ".github/workflows/release_drafter.yml",
    "chars": 772,
    "preview": "name: \"Infra: Release Drafter run\"\n\non:\n  push:\n    branches:\n      - master\n  workflow_dispatch:\n    inputs:\n      vers"
  },
  {
    "path": ".github/workflows/separate_env_public_create.yml",
    "chars": 3617,
    "preview": "name: \"Infra: Feature Testing Public: Init env\"\non:\n  workflow_dispatch:\n    inputs:\n      ENV_NAME:\n        description"
  },
  {
    "path": ".github/workflows/separate_env_public_remove.yml",
    "chars": 917,
    "preview": "name: \"Infra: Feature Testing Public: Destroy env\"\non:\n  workflow_dispatch:\n    inputs:\n      ENV_NAME:\n        descript"
  },
  {
    "path": ".github/workflows/stale.yaml",
    "chars": 970,
    "preview": "name: 'Infra: Close stale issues'\non:\n  schedule:\n    - cron: '30 1 * * *'\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n  "
  },
  {
    "path": ".github/workflows/terraform-deploy.yml",
    "chars": 2312,
    "preview": "name: \"Infra: Terraform deploy\"\non:\n  workflow_dispatch:\n    inputs:\n      applyTerraform:\n        description: 'Do you "
  },
  {
    "path": ".github/workflows/triage_issues.yml",
    "chars": 306,
    "preview": "name: \"Infra: Triage: Apply triage label for issues\"\non:\n  issues:\n    types:\n      - opened\njobs:\n  triage_issues:\n    "
  },
  {
    "path": ".github/workflows/triage_prs.yml",
    "chars": 302,
    "preview": "name: \"Infra: Triage: Apply triage label for PRs\"\non:\n  pull_request:\n    types:\n      - opened\njobs:\n  triage_prs:\n    "
  },
  {
    "path": ".github/workflows/welcome-first-time-contributors.yml",
    "chars": 845,
    "preview": "name: Welcome first time contributors\n\non:\n  pull_request_target:\n    types:\n      - opened\n  issues:\n    types:\n      -"
  },
  {
    "path": ".github/workflows/workflow_linter.yaml",
    "chars": 564,
    "preview": "name: \"Infra: Workflow linter\"\non:\n  pull_request:\n    types:\n      - \"opened\"\n      - \"reopened\"\n      - \"synchronize\"\n"
  },
  {
    "path": ".gitignore",
    "chars": 452,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 1019,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "chars": 5496,
    "preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5044,
    "preview": "This guide is an exact copy of the same documented located [in our official docs](https://docs.kafka-ui.provectus.io/dev"
  },
  {
    "path": "LICENSE",
    "chars": 11338,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "README.md",
    "chars": 7385,
    "preview": "![UI for Apache Kafka logo](documentation/images/kafka-ui-logo.png) UI for Apache Kafka&nbsp;\n------------------\n#### Ve"
  },
  {
    "path": "SECURITY.md",
    "chars": 710,
    "preview": "# Security Policy\n\n## Supported Versions\n\nFollowing versions of the project are currently being supported with security "
  },
  {
    "path": "documentation/compose/DOCKER_COMPOSE.md",
    "chars": 1787,
    "preview": "# Descriptions of docker-compose configurations (*.yaml)\n\n1. [kafka-ui.yaml](./kafka-ui.yaml) - Default configuration wi"
  },
  {
    "path": "documentation/compose/connectors/github-source.json",
    "chars": 823,
    "preview": "{\n  \"name\": \"github-source\",\n  \"config\":\n  {\n    \"connector.class\": \"io.confluent.connect.github.GithubSourceConnector\","
  },
  {
    "path": "documentation/compose/connectors/s3-sink.json",
    "chars": 700,
    "preview": "{\n  \"name\": \"s3-sink\",\n  \"config\":\n  {\n    \"connector.class\": \"io.confluent.connect.s3.S3SinkConnector\",\n    \"topics\": \""
  },
  {
    "path": "documentation/compose/connectors/sink-activities.json",
    "chars": 738,
    "preview": "{\n  \"name\": \"sink_postgres_activities\",\n  \"config\": {\n    \"connector.class\": \"io.confluent.connect.jdbc.JdbcSinkConnecto"
  },
  {
    "path": "documentation/compose/connectors/source-activities.json",
    "chars": 844,
    "preview": "{\n  \"name\": \"source_postgres_activities\",\n  \"config\": {\n    \"connector.class\": \"io.confluent.connect.jdbc.JdbcSourceConn"
  },
  {
    "path": "documentation/compose/connectors/start.sh",
    "chars": 315,
    "preview": "#! /bin/bash\nwhile [[ \"$(curl -s -o /dev/null -w ''%{http_code}'' kafka-connect0:8083)\" != \"200\" ]]\n    do sleep 5\ndone\n"
  },
  {
    "path": "documentation/compose/data/message.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "documentation/compose/data/proxy.conf",
    "chars": 179,
    "preview": "server {\n    listen       80;\n    server_name  localhost;\n\n    location /kafka-ui {\n#        rewrite /kafka-ui/(.*) /$1 "
  },
  {
    "path": "documentation/compose/e2e-tests.yaml",
    "chars": 7364,
    "preview": "---\nversion: '3.5'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    port"
  },
  {
    "path": "documentation/compose/jaas/client.properties",
    "chars": 177,
    "preview": "sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=\"admin\" password=\"admin-secre"
  },
  {
    "path": "documentation/compose/jaas/kafka_connect.jaas",
    "chars": 143,
    "preview": "KafkaConnect {\n  org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required\n  file=\"/conf/kafka"
  },
  {
    "path": "documentation/compose/jaas/kafka_connect.password",
    "chars": 20,
    "preview": "admin: admin-secret\n"
  },
  {
    "path": "documentation/compose/jaas/kafka_server.conf",
    "chars": 450,
    "preview": "KafkaServer {\n    org.apache.kafka.common.security.plain.PlainLoginModule required\n    username=\"admin\"\n    password=\"ad"
  },
  {
    "path": "documentation/compose/jaas/schema_registry.jaas",
    "chars": 144,
    "preview": "SchemaRegistryProps {\n  org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required\n  file=\"/conf/schema_registry.passwo"
  },
  {
    "path": "documentation/compose/jaas/schema_registry.password",
    "chars": 45,
    "preview": "admin: OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x,admin"
  },
  {
    "path": "documentation/compose/jaas/zookeeper_jaas.conf",
    "chars": 116,
    "preview": "Server {\n       org.apache.zookeeper.server.auth.DigestLoginModule required\n       user_zkuser=\"zkuserpassword\";\n};\n"
  },
  {
    "path": "documentation/compose/jmx/jmxremote.access",
    "chars": 15,
    "preview": "root readwrite\n"
  },
  {
    "path": "documentation/compose/jmx/jmxremote.password",
    "chars": 14,
    "preview": "root password\n"
  },
  {
    "path": "documentation/compose/jmx-exporter/kafka-broker.yml",
    "chars": 25,
    "preview": "rules:\n  - pattern: \".*\"\n"
  },
  {
    "path": "documentation/compose/jmx-exporter/kafka-prepare-and-run",
    "chars": 350,
    "preview": "#!/usr/bin/env bash\n\nJAVA_AGENT_FILE=\"/usr/share/jmx_exporter/jmx_prometheus_javaagent.jar\"\nif [ ! -f \"$JAVA_AGENT_FILE\""
  },
  {
    "path": "documentation/compose/kafka-cluster-sr-auth.yaml",
    "chars": 3428,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka1:\n    image: confluentinc/cp-kafka:7.2.1\n    hostname: kafka1\n    container_name: ka"
  },
  {
    "path": "documentation/compose/kafka-connect/Dockerfile",
    "chars": 333,
    "preview": "ARG image\nFROM ${image}\n\n## Install connectors\nRUN echo \"\\nInstalling all required connectors...\\n\" && \\\nconfluent-hub i"
  },
  {
    "path": "documentation/compose/kafka-ssl-components.yaml",
    "chars": 7819,
    "preview": "---\nversion: '3.4'\nservices:\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports"
  },
  {
    "path": "documentation/compose/kafka-ssl.yml",
    "chars": 2848,
    "preview": "---\nversion: '3.4'\nservices:\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports"
  },
  {
    "path": "documentation/compose/kafka-ui-acl-with-zk.yaml",
    "chars": 2254,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:"
  },
  {
    "path": "documentation/compose/kafka-ui-arm64.yaml",
    "chars": 4998,
    "preview": "# ARM64 supported images for kafka can be found here\n# https://hub.docker.com/r/confluentinc/cp-kafka/tags?page=1&name=a"
  },
  {
    "path": "documentation/compose/kafka-ui-auth-context.yaml",
    "chars": 1798,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:"
  },
  {
    "path": "documentation/compose/kafka-ui-connectors-auth.yaml",
    "chars": 5000,
    "preview": "---\nversion: \"2\"\nservices:\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:\n"
  },
  {
    "path": "documentation/compose/kafka-ui-jmx-secured.yml",
    "chars": 3275,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:"
  },
  {
    "path": "documentation/compose/kafka-ui-sasl.yaml",
    "chars": 2312,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:"
  },
  {
    "path": "documentation/compose/kafka-ui-serdes.yaml",
    "chars": 6074,
    "preview": "---\nversion: '2'\nservices:\n\n    kafka-ui:\n        container_name: kafka-ui\n        image: provectuslabs/kafka-ui:latest\n"
  },
  {
    "path": "documentation/compose/kafka-ui-with-jmx-exporter.yaml",
    "chars": 1838,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka0:\n    image: confluentinc/cp-kafka:7.2.1\n    hostname: kafka0\n    container_name: ka"
  },
  {
    "path": "documentation/compose/kafka-ui.yaml",
    "chars": 7034,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:"
  },
  {
    "path": "documentation/compose/kafka-with-zookeeper.yaml",
    "chars": 1740,
    "preview": "---\nversion: '2'\nservices:\n\n  zookeeper:\n    image: confluentinc/cp-zookeeper:7.2.1\n    hostname: zookeeper\n    containe"
  },
  {
    "path": "documentation/compose/ldap.yaml",
    "chars": 3220,
    "preview": "---\nversion: '2'\nservices:\n\n  kafka-ui:\n    container_name: kafka-ui\n    image: provectuslabs/kafka-ui:latest\n    ports:"
  },
  {
    "path": "documentation/compose/nginx-proxy.yaml",
    "chars": 418,
    "preview": "---\nversion: '2'\nservices:\n  nginx:\n    image: nginx:latest\n    volumes:\n      - ./data/proxy.conf:/etc/nginx/conf.d/def"
  },
  {
    "path": "documentation/compose/postgres/Dockerfile",
    "chars": 106,
    "preview": "ARG image\n\nFROM ${image}\n\nMAINTAINER Provectus Team\n\nADD data.sql /docker-entrypoint-initdb.d\n\nEXPOSE 5432"
  },
  {
    "path": "documentation/compose/postgres/data.sql",
    "chars": 599,
    "preview": "CREATE DATABASE test WITH OWNER = dev_user;\n\\connect test\n\nCREATE TABLE activities\n(\n    id        INTEGER PRIMARY KEY,\n"
  },
  {
    "path": "documentation/compose/proto/key-types.proto",
    "chars": 315,
    "preview": "syntax = \"proto3\";\npackage test;\n\nimport \"google/protobuf/wrappers.proto\";\n\nmessage MyKey {\n    string myKeyF1 = 1;\n    "
  },
  {
    "path": "documentation/compose/proto/values.proto",
    "chars": 251,
    "preview": "syntax = \"proto3\";\npackage test;\n\nmessage MySpecificTopicValue {\n    string f1 = 1;\n    string f2 = 2;\n}\n\nmessage MyValu"
  },
  {
    "path": "documentation/compose/scripts/clusterID",
    "chars": 22,
    "preview": "zlFiTJelTOuhnklFwLWixw"
  },
  {
    "path": "documentation/compose/scripts/create_cluster_id.sh",
    "chars": 79,
    "preview": "kafka-storage random-uuid > /workspace/kafka-ui/documentation/compose/clusterID"
  },
  {
    "path": "documentation/compose/scripts/update_run.sh",
    "chars": 551,
    "preview": "# This script is required to run kafka cluster (without zookeeper)\n#!/bin/sh\n\n# Docker workaround: Remove check for KAFK"
  },
  {
    "path": "documentation/compose/scripts/update_run_cluster.sh",
    "chars": 544,
    "preview": "# This script is required to run kafka cluster (without zookeeper)\n#!/bin/sh\n\n# Docker workaround: Remove check for KAFK"
  },
  {
    "path": "documentation/compose/ssl/creds",
    "chars": 6,
    "preview": "secret"
  },
  {
    "path": "documentation/compose/ssl/generate_certs.sh",
    "chars": 6220,
    "preview": "#!/usr/bin/env bash\n\nset -eu\n\nKEYSTORE_FILENAME=\"kafka.keystore.jks\"\nVALIDITY_IN_DAYS=3650\nDEFAULT_TRUSTSTORE_FILENAME=\""
  },
  {
    "path": "documentation/compose/ssl/san.cnf",
    "chars": 87,
    "preview": "[kafka]\nsubjectAltName = DNS:kafka0,DNS:schemaregistry0,DNS:kafka-connect0,DNS:ksqldb0\n"
  },
  {
    "path": "documentation/compose/traefik/kafkaui.yaml",
    "chars": 214,
    "preview": "http:\n  routers:\n    kafkaui:\n      rule: \"PathPrefix(`/kafka-ui/`)\"\n      entrypoints: web\n      service: kafkaui\n  ser"
  },
  {
    "path": "documentation/compose/traefik-proxy.yaml",
    "chars": 631,
    "preview": "---\nversion: '3.8'\nservices:\n  traefik:\n    restart: always\n    image: traefik:v2.4\n    container_name: traefik\n    comm"
  },
  {
    "path": "etc/checkstyle/apache-header.txt",
    "chars": 523,
    "preview": "Licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the "
  },
  {
    "path": "etc/checkstyle/checkstyle-e2e.xml",
    "chars": 17570,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n        \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n        \"htt"
  },
  {
    "path": "etc/checkstyle/checkstyle.xml",
    "chars": 17556,
    "preview": "<?xml version=\"1.0\"?>\n<!DOCTYPE module PUBLIC\n        \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n        \"htt"
  },
  {
    "path": "kafka-ui-api/Dockerfile",
    "chars": 695,
    "preview": "#FROM azul/zulu-openjdk-alpine:17-jre-headless\nFROM azul/zulu-openjdk-alpine@sha256:a36679ac0d28cb835e2a8c00e1e0d95509c6"
  },
  {
    "path": "kafka-ui-api/pom.xml",
    "chars": 21842,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "kafka-ui-api/src/main/antlr4/ksql/KsqlGrammar.g4",
    "chars": 17012,
    "preview": "grammar KsqlGrammar;\n\ntokens {\n    DELIMITER\n}\n\n@lexer::members {\n    public static final int COMMENTS = 2;\n    public s"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/KafkaUiApplication.java",
    "chars": 977,
    "preview": "package com.provectus.kafka.ui;\n\nimport com.provectus.kafka.ui.util.DynamicConfigOperations;\nimport org.springframework."
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/client/RetryingKafkaConnectClient.java",
    "chars": 11723,
    "preview": "package com.provectus.kafka.ui.client;\n\nimport static com.provectus.kafka.ui.config.ClustersProperties.ConnectCluster;\n\n"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ClustersProperties.java",
    "chars": 5764,
    "preview": "package com.provectus.kafka.ui.config;\n\nimport com.provectus.kafka.ui.model.MetricsConfig;\nimport jakarta.annotation.Pos"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/Config.java",
    "chars": 1887,
    "preview": "package com.provectus.kafka.ui.config;\n\nimport java.util.Collections;\nimport java.util.Map;\nimport lombok.AllArgsConstru"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CorsGlobalConfiguration.java",
    "chars": 1414,
    "preview": "package com.provectus.kafka.ui.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.c"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/CustomWebFilter.java",
    "chars": 992,
    "preview": "package com.provectus.kafka.ui.config;\n\nimport org.springframework.stereotype.Component;\nimport org.springframework.web."
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/ReadOnlyModeFilter.java",
    "chars": 1951,
    "preview": "package com.provectus.kafka.ui.config;\n\nimport com.provectus.kafka.ui.exception.ClusterNotFoundException;\nimport com.pro"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/WebclientProperties.java",
    "chars": 856,
    "preview": "package com.provectus.kafka.ui.config;\n\nimport com.provectus.kafka.ui.exception.ValidationException;\nimport javax.annota"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/AbstractAuthSecurityConfig.java",
    "chars": 445,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nabstract class AbstractAuthSecurityConfig {\n\n  protected AbstractAuthSecuri"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/AuthenticatedUser.java",
    "chars": 157,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\n\npublic record AuthenticatedUser(String princi"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/BasicAuthSecurityConfig.java",
    "chars": 2193,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport com.provectus.kafka.ui.util.EmptyRedirectStrategy;\nimport java.net.U"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/DisabledAuthSecurityConfig.java",
    "chars": 1594,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.boot.SpringApp"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapProperties.java",
    "chars": 769,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport lombok.Data;\nimport org.springframework.beans.factory.annotation.Val"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/LdapSecurityConfig.java",
    "chars": 6690,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport static com.provectus.kafka.ui.config.auth.AbstractAuthSecurityConfig"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthProperties.java",
    "chars": 1588,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport jakarta.annotation.PostConstruct;\nimport java.util.Collections;\nimpo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthPropertiesConverter.java",
    "chars": 3039,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport static com.provectus.kafka.ui.config.auth.OAuthProperties.OAuth2Prov"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/OAuthSecurityConfig.java",
    "chars": 6126,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport com.provectus.kafka.ui.config.auth.logout.OAuthLogoutSuccessHandler;"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacLdapUser.java",
    "chars": 1382,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\nimport java.util.stream.Collectors;\nimport org"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOAuth2User.java",
    "chars": 686,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\nimport java.util.Map;\nimport org.springframewo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacOidcUser.java",
    "chars": 1074,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\nimport java.util.Map;\nimport org.springframewo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RbacUser.java",
    "chars": 155,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport java.util.Collection;\n\npublic interface RbacUser {\n  String name();\n"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/RoleBasedAccessControlProperties.java",
    "chars": 534,
    "preview": "package com.provectus.kafka.ui.config.auth;\n\nimport com.provectus.kafka.ui.model.rbac.Role;\nimport java.util.ArrayList;\n"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/ActiveDirectoryCondition.java",
    "chars": 652,
    "preview": "package com.provectus.kafka.ui.config.auth.condition;\n\nimport org.springframework.boot.autoconfigure.condition.AllNested"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/condition/CognitoCondition.java",
    "chars": 680,
    "preview": "package com.provectus.kafka.ui.config.auth.condition;\n\nimport com.provectus.kafka.ui.service.rbac.AbstractProviderCondit"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/CognitoLogoutSuccessHandler.java",
    "chars": 2469,
    "preview": "package com.provectus.kafka.ui.config.auth.logout;\n\nimport com.provectus.kafka.ui.config.auth.OAuthProperties;\nimport co"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/LogoutSuccessHandler.java",
    "chars": 541,
    "preview": "package com.provectus.kafka.ui.config.auth.logout;\n\nimport com.provectus.kafka.ui.config.auth.OAuthProperties;\nimport or"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/config/auth/logout/OAuthLogoutSuccessHandler.java",
    "chars": 2322,
    "preview": "package com.provectus.kafka.ui.config.auth.logout;\n\nimport com.provectus.kafka.ui.config.auth.OAuthProperties;\nimport ja"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AbstractController.java",
    "chars": 1576,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.exception.ClusterNotFoundException;\nimport com"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AccessController.java",
    "chars": 3270,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.AuthorizationApi;\nimport com.provectus.kaf"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AclsController.java",
    "chars": 7096,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.AclsApi;\nimport com.provectus.kafka.ui.map"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ApplicationConfigController.java",
    "chars": 5984,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.ApplicationConfig"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/AuthController.java",
    "chars": 4154,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport java.nio.charset.Charset;\nimport lombok.RequiredArgsConstructor;\nimpo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/BrokersController.java",
    "chars": 6050,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.BrokersApi;\nimport com.provectus.kafka.ui."
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ClustersController.java",
    "chars": 2901,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.ClustersApi;\nimport com.provectus.kafka.ui"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/ConsumerGroupsController.java",
    "chars": 8749,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.ConsumerGroupActi"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KafkaConnectController.java",
    "chars": 12570,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.ConnectorActionDTO.RESTART;\nimpor"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/KsqlController.java",
    "chars": 4315,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.KsqlApi;\nimport com.provectus.kafka.ui.mod"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/MessagesController.java",
    "chars": 8824,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.TopicAction.MESSA"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/SchemasController.java",
    "chars": 11626,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.api.SchemasApi;\nimport com.provectus.kafka.ui."
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/StaticController.java",
    "chars": 2229,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport com.provectus.kafka.ui.util.ResourceUtil;\nimport java.util.concurrent"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/controller/TopicsController.java",
    "chars": 14958,
    "preview": "package com.provectus.kafka.ui.controller;\n\nimport static com.provectus.kafka.ui.model.rbac.permission.TopicAction.CREAT"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/AbstractEmitter.java",
    "chars": 1578,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.TopicMessageEventDTO;\nimport org.apache.kaf"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/BackwardEmitter.java",
    "chars": 2290,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ConsumingStats.java",
    "chars": 1292,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.TopicMessageConsumingDTO;\nimport com.provec"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/EnhancedConsumer.java",
    "chars": 2786,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.base.Preconditions;\nimport com.google.common.base.Stop"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ForwardEmitter.java",
    "chars": 2291,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessageFilters.java",
    "chars": 3333,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.exception.ValidationException;\nimport com.provect"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/MessagesProcessing.java",
    "chars": 4134,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport static java.util.stream.Collectors.collectingAndThen;\nimport static java"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/OffsetsInfo.java",
    "chars": 1895,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.base.Preconditions;\nimport java.util.Collection;\nimpor"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PolledRecords.java",
    "chars": 1637,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport java.time.Duration;\nimport java.util.Iterator;\nimport java.util.List;\nim"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingSettings.java",
    "chars": 1496,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.config.ClustersProperties;\nimport java.time.Durat"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/PollingThrottler.java",
    "chars": 1587,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.annotations.VisibleForTesting;\nimport com.google.commo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/RangePollingEmitter.java",
    "chars": 3954,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/ResultSizeLimiter.java",
    "chars": 663,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.TopicMessageEventDTO;\nimport java.util.conc"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/SeekOperations.java",
    "chars": 4771,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.google.common.annotations.VisibleForTesting;\nimport com.google.commo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/emitter/TailingEmitter.java",
    "chars": 2316,
    "preview": "package com.provectus.kafka.ui.emitter;\n\nimport com.provectus.kafka.ui.model.ConsumerPosition;\nimport com.provectus.kafk"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ClusterNotFoundException.java",
    "chars": 358,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class ClusterNotFoundException extends CustomBaseException {\n\n  public"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ConnectNotFoundException.java",
    "chars": 281,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class ConnectNotFoundException extends CustomBaseException {\n\n  public"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/CustomBaseException.java",
    "chars": 686,
    "preview": "package com.provectus.kafka.ui.exception;\n\n\npublic abstract class CustomBaseException extends RuntimeException {\n  prote"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/DuplicateEntityException.java",
    "chars": 283,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class DuplicateEntityException extends CustomBaseException {\n\n  public"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ErrorCode.java",
    "chars": 1993,
    "preview": "package com.provectus.kafka.ui.exception;\n\nimport java.util.HashSet;\nimport org.slf4j.LoggerFactory;\nimport org.springfr"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/FileUploadException.java",
    "chars": 446,
    "preview": "package com.provectus.kafka.ui.exception;\n\nimport java.nio.file.Path;\n\npublic class FileUploadException extends CustomBa"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/GlobalErrorWebExceptionHandler.java",
    "chars": 6311,
    "preview": "package com.provectus.kafka.ui.exception;\n\nimport com.google.common.base.Throwables;\nimport com.google.common.collect.Se"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/IllegalEntityStateException.java",
    "chars": 291,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class IllegalEntityStateException extends CustomBaseException {\n  publ"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/InvalidRequestApiException.java",
    "chars": 285,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class InvalidRequestApiException extends CustomBaseException {\n\n  publ"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/JsonAvroConversionException.java",
    "chars": 195,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class JsonAvroConversionException extends ValidationException {\n  publ"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KafkaConnectConflictReponseException.java",
    "chars": 522,
    "preview": "package com.provectus.kafka.ui.exception;\n\n\nimport org.springframework.web.reactive.function.client.WebClientResponseExc"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlApiException.java",
    "chars": 357,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class KsqlApiException extends CustomBaseException {\n\n  public KsqlApi"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/KsqlDbNotFoundException.java",
    "chars": 278,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class KsqlDbNotFoundException extends CustomBaseException {\n\n  public "
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/LogDirNotFoundApiException.java",
    "chars": 331,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class LogDirNotFoundApiException extends CustomBaseException {\n\n  publ"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/NotFoundException.java",
    "chars": 261,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class NotFoundException extends CustomBaseException {\n\n  public NotFou"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ReadOnlyModeException.java",
    "chars": 297,
    "preview": "package com.provectus.kafka.ui.exception;\n\n\npublic class ReadOnlyModeException extends CustomBaseException {\n\n  public R"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaCompatibilityException.java",
    "chars": 336,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class SchemaCompatibilityException extends CustomBaseException {\n  pub"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaFailedToDeleteException.java",
    "chars": 355,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class SchemaFailedToDeleteException extends CustomBaseException {\n\n  p"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/SchemaNotFoundException.java",
    "chars": 353,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class SchemaNotFoundException extends CustomBaseException {\n\n  public "
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicAnalysisException.java",
    "chars": 282,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicAnalysisException extends CustomBaseException {\n\n  public T"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicMetadataException.java",
    "chars": 381,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicMetadataException extends CustomBaseException {\n\n  public T"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicNotFoundException.java",
    "chars": 273,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicNotFoundException extends CustomBaseException {\n\n  public T"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicOrPartitionNotFoundException.java",
    "chars": 340,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicOrPartitionNotFoundException extends CustomBaseException {\n"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/TopicRecreationException.java",
    "chars": 419,
    "preview": "package com.provectus.kafka.ui.exception;\n\npublic class TopicRecreationException extends CustomBaseException {\n  @Overri"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/UnprocessableEntityException.java",
    "chars": 295,
    "preview": "package com.provectus.kafka.ui.exception;\n\n\npublic class UnprocessableEntityException extends CustomBaseException {\n\n  p"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/exception/ValidationException.java",
    "chars": 367,
    "preview": "package com.provectus.kafka.ui.exception;\n\n\npublic class ValidationException extends CustomBaseException {\n  public Vali"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ClusterMapper.java",
    "chars": 8381,
    "preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.config.ClustersProperties;\nimport com.provectus.ka"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/ConsumerGroupMapper.java",
    "chars": 4584,
    "preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.model.BrokerDTO;\nimport com.provectus.kafka.ui.mod"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/DescribeLogDirsMapper.java",
    "chars": 2754,
    "preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.model.BrokerTopicLogdirsDTO;\nimport com.provectus."
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaConnectMapper.java",
    "chars": 2344,
    "preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.connect.model.ConnectorStatusConnector;\nimport com"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/mapper/KafkaSrMapper.java",
    "chars": 1675,
    "preview": "package com.provectus.kafka.ui.mapper;\n\nimport com.provectus.kafka.ui.model.CompatibilityCheckResponseDTO;\nimport com.pr"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/BrokerMetrics.java",
    "chars": 211,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.List;\nimport lombok.Builder;\nimport lombok.Data;\n\n@Data\n@Builder"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/CleanupPolicy.java",
    "chars": 852,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.Arrays;\nimport java.util.Collections;\nimport java.util.List;\n\npu"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ClusterFeature.java",
    "chars": 170,
    "preview": "package com.provectus.kafka.ui.model;\n\npublic enum ClusterFeature {\n  KAFKA_CONNECT,\n  KSQL_DB,\n  SCHEMA_REGISTRY,\n  TOP"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/ConsumerPosition.java",
    "chars": 340,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.Map;\nimport javax.annotation.Nullable;\nimport lombok.Value;\nimpo"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBroker.java",
    "chars": 1449,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.math.BigDecimal;\nimport javax.annotation.Nullable;\nimport lombok.Data"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerConfig.java",
    "chars": 891,
    "preview": "package com.provectus.kafka.ui.model;\n\n\nimport java.util.List;\nimport lombok.Builder;\nimport lombok.Data;\nimport org.apa"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalBrokerDiskUsage.java",
    "chars": 226,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport lombok.Builder;\nimport lombok.Data;\n\n@Data\n@Builder(toBuilder = true)\npubl"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterMetrics.java",
    "chars": 1522,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.math.BigDecimal;\nimport java.util.List;\nimport java.util.Map;\nimport "
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalClusterState.java",
    "chars": 2895,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport com.google.common.base.Throwables;\nimport java.math.BigDecimal;\nimport jav"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalConsumerGroup.java",
    "chars": 3593,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\nimp"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalLogDirStats.java",
    "chars": 2210,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport static java.util.stream.Collectors.collectingAndThen;\nimport static java.u"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartition.java",
    "chars": 519,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport java.util.List;\nimport lombok.Builder;\nimport lombok.Data;\n\n@Data\n@Builder"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalPartitionsOffsets.java",
    "chars": 863,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport com.google.common.collect.HashBasedTable;\nimport com.google.common.collect"
  },
  {
    "path": "kafka-ui-api/src/main/java/com/provectus/kafka/ui/model/InternalReplica.java",
    "chars": 287,
    "preview": "package com.provectus.kafka.ui.model;\n\nimport lombok.Builder;\nimport lombok.Data;\nimport lombok.RequiredArgsConstructor;"
  }
]

// ... and 868 more files (download for full content)

About this extraction

This page contains the full source code of the provectus/kafka-ui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1068 files (2.9 MB), approximately 839.4k tokens, and a symbol index with 3235 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!