private static void combineWithAttribute(
      IProductDefinitionUpdate product, IAttributeDefinition attribute) throws Exception {

    List currentConfigurationList = product.getProductConfiguration();
    List newConfigurationList = new Vector();

    for (Iterator confIterator = currentConfigurationList.iterator(); confIterator.hasNext(); ) {
      IProductConfiguration productConfiguration = (IProductConfiguration) confIterator.next();

      for (Iterator attValIt = attribute.getAllowedValue().iterator(); attValIt.hasNext(); ) {
        IProductConfiguration configuration = ProductConfigurationFactory.createFacade();

        // Set static info
        configuration.setDescription(productConfiguration.getDescription());
        configuration.setGlobalPLI(productConfiguration.getGlobalPLI());
        configuration.setPermissioningSystem(productConfiguration.getPermissioningSystem());

        // Copy the source attribute configuration
        configuration.setAttribute(productConfiguration.getAttribute());

        // Add new attribute
        Attribute a = AttributeFactory.createFacade();
        a.setAttributeID(attribute.getAttributeID());
        a.setValueID(((IAllowedAttributeValue) attValIt.next()).getValueID());
        configuration.addAttribute(a);

        newConfigurationList.add(configuration);
      }
    }

    // Replace configuration list
    product.setProductConfiguration(newConfigurationList);
    currentConfigurationList = null;
  }