test_class.declarator: BOOTSTRAP_SERVERS = {
              "foo:123",
              "bar:456",
              "baz:789"
      }
test_class.modifier: private static final
test_class.original_string: private static final String[] BOOTSTRAP_SERVERS = {
              "foo:123",
              "bar:456",
              "baz:789"
      };
test_class.type: String[]
test_class.var_name: BOOTSTRAP_SERVERS
test_class.declarator: USERNAME = "user"
test_class.modifier: private static final
test_class.original_string: private static final String USERNAME = "user";
test_class.type: String
test_class.var_name: USERNAME
test_class.declarator: PASSWORD = "pw"
test_class.modifier: @SuppressWarnings("squid:S2068")
      private static final
test_class.original_string: @SuppressWarnings("squid:S2068")
      private static final String PASSWORD = "pw";
test_class.type: String
test_class.var_name: PASSWORD
test_class.declarator: TARGET_ADDRESS = "events"
test_class.modifier: private static final
test_class.original_string: private static final String TARGET_ADDRESS = "events";
test_class.type: String
test_class.var_name: TARGET_ADDRESS
test_class.declarator: CONNECTION_ID = TestConstants.createRandomConnectionId()
test_class.modifier: private static final
test_class.original_string: private static final ConnectionId CONNECTION_ID = TestConstants.createRandomConnectionId();
test_class.type: ConnectionId
test_class.var_name: CONNECTION_ID
test_class.declarator: kafkaConfig
test_class.modifier: private static
test_class.original_string: private static KafkaConfig kafkaConfig;
test_class.type: KafkaConfig
test_class.var_name: kafkaConfig
test_class.declarator: connection
test_class.modifier: private static
test_class.original_string: private static Connection connection;
test_class.type: Connection
test_class.var_name: connection
test_class.declarator: underTest
test_class.modifier: private
test_class.original_string: private ProducerPropertiesFactory underTest;
test_class.type: ProducerPropertiesFactory
test_class.var_name: underTest
test_class.file: services/connectivity/messaging/src/test/java/org/eclipse/ditto/services/connectivity/messaging/kafka/ProducerPropertiesFactoryTest.java
test_class.identifier: ProducerPropertiesFactoryTest
test_case.body: @Test
      public void addsBootstrapServersAndFlattensProperties() {
          final Map<String, Object> properties = underTest.getProducerProperties();
  
          final List<String> servers =
                  Arrays.asList(properties.get(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG).toString().split(","));
  
          assertThat(servers).containsExactlyInAnyOrder(BOOTSTRAP_SERVERS);
  
          // check flattening of client properties in kafka.producer.internal.kafka-clients
          assertThat(properties).contains(
                  new AbstractMap.SimpleEntry<>("connections.max.idle.ms", 543210),
                  new AbstractMap.SimpleEntry<>("reconnect.backoff.ms", 500),
                  new AbstractMap.SimpleEntry<>("reconnect.backoff.max.ms", 10000)
          );
      }
test_case.class_method_signature: ProducerPropertiesFactoryTest.addsBootstrapServersAndFlattensProperties()
test_case.full_signature: @Test public void addsBootstrapServersAndFlattensProperties()
test_case.identifier: addsBootstrapServersAndFlattensProperties
test_case.invocations: getProducerProperties asList split toString get containsExactlyInAnyOrder assertThat contains assertThat
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void addsBootstrapServersAndFlattensProperties()
focal_class.declarator: KAFKA_CLIENTS_KEY = "kafka-clients"
focal_class.modifier: private static final
focal_class.original_string: private static final String KAFKA_CLIENTS_KEY = "kafka-clients";
focal_class.type: String
focal_class.var_name: KAFKA_CLIENTS_KEY
focal_class.declarator: SPECIFIC_CONFIGS =
              List.of(KafkaAuthenticationSpecificConfig.getInstance(), KafkaBootstrapServerSpecificConfig.getInstance())
focal_class.modifier: private static final
focal_class.original_string: private static final Collection<KafkaSpecificConfig> SPECIFIC_CONFIGS =
              List.of(KafkaAuthenticationSpecificConfig.getInstance(), KafkaBootstrapServerSpecificConfig.getInstance());
focal_class.type: Collection<KafkaSpecificConfig>
focal_class.var_name: SPECIFIC_CONFIGS
focal_class.declarator: connection
focal_class.modifier: private final
focal_class.original_string: private final Connection connection;
focal_class.type: Connection
focal_class.var_name: connection
focal_class.declarator: kafkaConfig
focal_class.modifier: private final
focal_class.original_string: private final KafkaConfig kafkaConfig;
focal_class.type: KafkaConfig
focal_class.var_name: kafkaConfig
focal_class.file: services/connectivity/messaging/src/main/java/org/eclipse/ditto/services/connectivity/messaging/kafka/ProducerPropertiesFactory.java
focal_class.identifier: ProducerPropertiesFactory
focal_class.class_method_signature: ProducerPropertiesFactory.ProducerPropertiesFactory(final Connection connection, final KafkaConfig kafkaConfig)
focal_class.full_signature: private  ProducerPropertiesFactory(final Connection connection, final KafkaConfig kafkaConfig)
focal_class.identifier: ProducerPropertiesFactory
focal_class.modifiers: private
focal_class.parameters: (final Connection connection, final KafkaConfig kafkaConfig)
focal_class.signature:  ProducerPropertiesFactory(final Connection connection, final KafkaConfig kafkaConfig)
focal_class.class_method_signature: ProducerPropertiesFactory.getInstance(final Connection connection, final KafkaConfig kafkaConfig)
focal_class.full_signature: static ProducerPropertiesFactory getInstance(final Connection connection, final KafkaConfig kafkaConfig)
focal_class.identifier: getInstance
focal_class.modifiers: static
focal_class.parameters: (final Connection connection, final KafkaConfig kafkaConfig)
focal_class.return: ProducerPropertiesFactory
focal_class.signature: ProducerPropertiesFactory getInstance(final Connection connection, final KafkaConfig kafkaConfig)
focal_class.class_method_signature: ProducerPropertiesFactory.getProducerProperties()
focal_class.full_signature:  Map<String, Object> getProducerProperties()
focal_class.identifier: getProducerProperties
focal_class.parameters: ()
focal_class.return: Map<String, Object>
focal_class.signature: Map<String, Object> getProducerProperties()
focal_class.class_method_signature: ProducerPropertiesFactory.addMetadata(final HashMap<String, Object> properties)
focal_class.full_signature: private void addMetadata(final HashMap<String, Object> properties)
focal_class.identifier: addMetadata
focal_class.modifiers: private
focal_class.parameters: (final HashMap<String, Object> properties)
focal_class.return: void
focal_class.signature: void addMetadata(final HashMap<String, Object> properties)
focal_class.class_method_signature: ProducerPropertiesFactory.addSpecificConfig(final HashMap<String, Object> properties)
focal_class.full_signature: private void addSpecificConfig(final HashMap<String, Object> properties)
focal_class.identifier: addSpecificConfig
focal_class.modifiers: private
focal_class.parameters: (final HashMap<String, Object> properties)
focal_class.return: void
focal_class.signature: void addSpecificConfig(final HashMap<String, Object> properties)
focal_class.class_method_signature: ProducerPropertiesFactory.addSecurityProtocol(final HashMap<String, Object> properties)
focal_class.full_signature: private void addSecurityProtocol(final HashMap<String, Object> properties)
focal_class.identifier: addSecurityProtocol
focal_class.modifiers: private
focal_class.parameters: (final HashMap<String, Object> properties)
focal_class.return: void
focal_class.signature: void addSecurityProtocol(final HashMap<String, Object> properties)
focal_class.class_method_signature: ProducerPropertiesFactory.isConnectionAuthenticated()
focal_class.full_signature: private boolean isConnectionAuthenticated()
focal_class.identifier: isConnectionAuthenticated
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isConnectionAuthenticated()
focal_class.class_method_signature: ProducerPropertiesFactory.addAuthenticatedSecurityProtocol(final HashMap<String, Object> properties)
focal_class.full_signature: private void addAuthenticatedSecurityProtocol(final HashMap<String, Object> properties)
focal_class.identifier: addAuthenticatedSecurityProtocol
focal_class.modifiers: private
focal_class.parameters: (final HashMap<String, Object> properties)
focal_class.return: void
focal_class.signature: void addAuthenticatedSecurityProtocol(final HashMap<String, Object> properties)
focal_class.class_method_signature: ProducerPropertiesFactory.addUnauthenticatedSecurityProtocol(final HashMap<String, Object> properties)
focal_class.full_signature: private void addUnauthenticatedSecurityProtocol(final HashMap<String, Object> properties)
focal_class.identifier: addUnauthenticatedSecurityProtocol
focal_class.modifiers: private
focal_class.parameters: (final HashMap<String, Object> properties)
focal_class.return: void
focal_class.signature: void addUnauthenticatedSecurityProtocol(final HashMap<String, Object> properties)
focal_class.class_method_signature: ProducerPropertiesFactory.isConnectionSecure()
focal_class.full_signature: private boolean isConnectionSecure()
focal_class.identifier: isConnectionSecure
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isConnectionSecure()
focal_class.class_method_signature: ProducerPropertiesFactory.configToProperties(final Config config)
focal_class.full_signature: private static HashMap<String, Object> configToProperties(final Config config)
focal_class.identifier: configToProperties
focal_class.modifiers: private static
focal_class.parameters: (final Config config)
focal_class.return: HashMap<String, Object>
focal_class.signature: HashMap<String, Object> configToProperties(final Config config)
focal_class.class_method_signature: ProducerPropertiesFactory.flattenUnwrappedConfig(final Map<?, ?> unwrapped, final String prefix,
              final HashMap<String, Object> accumulator)
focal_class.full_signature: private static void flattenUnwrappedConfig(final Map<?, ?> unwrapped, final String prefix,
              final HashMap<String, Object> accumulator)
focal_class.identifier: flattenUnwrappedConfig
focal_class.modifiers: private static
focal_class.parameters: (final Map<?, ?> unwrapped, final String prefix,
              final HashMap<String, Object> accumulator)
focal_class.return: void
focal_class.signature: void flattenUnwrappedConfig(final Map<?, ?> unwrapped, final String prefix,
              final HashMap<String, Object> accumulator)
focal_method.body: Map<String, Object> getProducerProperties() {
          final HashMap<String, Object> producerProperties =
                  configToProperties(kafkaConfig.getInternalProducerConfig().getConfig(KAFKA_CLIENTS_KEY));
          addMetadata(producerProperties);
          addSecurityProtocol(producerProperties);
          addSpecificConfig(producerProperties);
          return Collections.unmodifiableMap(producerProperties);
      }
focal_method.class_method_signature: ProducerPropertiesFactory.getProducerProperties()
focal_method.full_signature:  Map<String, Object> getProducerProperties()
focal_method.identifier: getProducerProperties
focal_method.invocations: configToProperties getConfig getInternalProducerConfig addMetadata addSecurityProtocol addSpecificConfig unmodifiableMap
focal_method.parameters: ()
focal_method.return: Map<String, Object>
focal_method.signature: Map<String, Object> getProducerProperties()