private OperationStatusMetaData performOperation(String defaultServiceName, String defaultComponentName, String defaultCategoryName,
                                                   Set<Map<String, Object>> requestProperties, boolean mergeExistingProperties,
                                                   String operationType, Map<String, Object> operationParameters)
      throws SystemException {

    OperationStatusMetaData metaData = new OperationStatusMetaData();

    // set of resource properties (each entry in the set belongs to a different resource)
    if (requestProperties != null) {
      for (Map<String, Object> resourceProperties : requestProperties) {
        RequestDetails requestDetails = parseProperties(defaultServiceName, defaultComponentName, defaultCategoryName, resourceProperties);

        RootServiceComponentConfigurationHandler handler = rootServiceComponentConfigurationHandlerFactory.getInstance(requestDetails.serviceName, requestDetails.componentName, requestDetails.categoryName);
        if (handler != null) {
          RootServiceComponentConfigurationHandler.OperationResult operationResult = handler.performOperation(requestDetails.categoryName, requestDetails.properties, mergeExistingProperties, operationType, operationParameters);
          if (operationResult == null) {
            throw new SystemException(String.format("An unexpected error has occurred while handling an operation for the %s component of the root service, %s", requestDetails.serviceName, requestDetails.componentName));
          }

          metaData.addResult(operationResult.getId(), operationResult.isSuccess(), operationResult.getMessage(), operationResult.getResponse());
        } else {
          throw new SystemException(String.format("Operations may not be performed on configurations for the %s component of the root service, %s", requestDetails.serviceName, requestDetails.componentName));
        }
      }
    }

    return metaData;
  }
Performs the requested operation on the set of data for the specified configration data.

@param defaultServiceName      the default service name to use if needed
@param defaultComponentName    the default component name to use if needed
@param defaultCategoryName     the default category to use if needed
@param requestProperties       a collection of property maps parsed from the request
@param mergeExistingProperties <code>true</code> to use the the set of existing properties along with the specified set of properties;
                               <code>false</code>  to use set of specified properties only
@param operationType           the operation to perform
@param operationParameters     parameters to supply the name operation
@return an {@link OperationStatusMetaData}
@throws SystemException if an error occurs while performing the operation
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java