/*******************************************************************************
 * Copyright (c) Contributors to the Eclipse Foundation
 *
 * 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.
 *
 * SPDX-License-Identifier: Apache-2.0 
 *******************************************************************************/
package org.osgi.service.feature;

import java.util.Map;

import org.osgi.annotation.versioning.ProviderType;

/**
 * A builder for Feature Model {@link FeatureConfiguration} objects.
 * @NotThreadSafe
 */
@ProviderType
public interface FeatureConfigurationBuilder {

    /**
     * Add a configuration value for this Configuration object. If a
     * value with the same key was previously provided the previous value is
     * overwritten.
     * @param key The configuration key.
     * @param value The configuration value. Acceptable data types are: TODO list
     * @return This builder.
     */
    FeatureConfigurationBuilder addValue(String key, Object value);

    /**
	 * Add a map of configuration values for this Configuration object. All
	 * values will be added to any previously provided configuration values.
	 * 
	 * @param configValues The map of configuration values to add.
	 * @return This builder.
	 */
    FeatureConfigurationBuilder addValues(Map<String, Object> configValues);

    /**
     * Build the Configuration object. Can only be called once on a builder. After
     * calling this method the current builder instance cannot be used any more.
     * @return The Configuration.
     */
    FeatureConfiguration build();
}

@@ -1089,20 +1089,17 @@
     /**%0A
-    
+%09
  * Add a
@@ -1154,23 +1154,16 @@
 ct. If a
-%0A     *
  value w
@@ -1161,24 +1161,28 @@
 a value with
+%0A%09 *
  the same ke
@@ -1206,16 +1206,37 @@
 provided
+ (regardless of case)
  the pre
@@ -1240,16 +1240,20 @@
 previous
+%0A%09 *
  value i
@@ -1253,23 +1253,16 @@
 value is
-%0A     *
  overwri
@@ -1267,20 +1267,21 @@
 ritten.%0A
-    
+%09 *%0A%09
  * @para
@@ -1309,20 +1309,17 @@
 on key.%0A
-    
+%09
  * @para
@@ -1380,24 +1380,290 @@
  are
-: TODO list%0A    
+ the data%0A%09 *            type supported by the Configuration Admin service, which are%0A%09 *            the Primary Property Types as defined for the Filter Syntax in%0A%09 *            the OSGi Core specification.%0A%09 * @throws IllegalArgumentException if the value is of an invalid type.%0A%09
  * @
@@ -1683,20 +1683,17 @@
 uilder.%0A
-    
+%09
  */%0A    
@@ -1838,22 +1838,18 @@
 ct. 
-All%0A%09 * v
+V
 alues
+%0A%09 *
  wil
@@ -1911,76 +1911,610 @@
 ues.
-%0A%09 * %0A%09 * @param configValues The map of configuration values to add
+ If a value%0A%09 * with the same key was previously provided (regardless of case) the%0A%09 * previous value is overwritten.%0A%09 *%0A%09 * @param configValues The map of configuration values to add. Acceptable%0A%09 *            value types are the data type supported by the Configuration%0A%09 *            Admin service, which are the Primary Property Types as defined%0A%09 *            for the Filter Syntax in the OSGi Core specification.%0A%09 * @throws IllegalArgumentException if a value is of an invalid type or if%0A%09 *             the same key is provided in different capitalizations%0A%09 *             (regardless of case)
 .%0A%09 

Clarify API of Configuration Builder