@Override
  public void setParameters(Set<IPortletDefinitionParameter> newParameters) {

    if (newParameters == null) {
      this.parameters = new LinkedHashMap<String, IPortletDefinitionParameter>();
    } else if (this.parameters == null) {
      this.parameters = new LinkedHashMap<String, IPortletDefinitionParameter>();
      for (final IPortletDefinitionParameter parameter : newParameters) {
        this.parameters.put(parameter.getName(), parameter);
      }
    } else {
      // Build map of existing parameters for tracking which parameters have been removed
      final Map<String, IPortletDefinitionParameter> oldPreferences =
          new LinkedHashMap<String, IPortletDefinitionParameter>(this.parameters);

      for (final IPortletDefinitionParameter parameter : newParameters) {
        final String name = parameter.getName();

        // Remove the existing parameter from the map since it is supposed to be persisted
        final IPortletDefinitionParameter existingParameter = oldPreferences.remove(name);
        if (existingParameter == null) {
          // New parameter, add it to the list
          this.parameters.put(name, parameter);
        } else {
          // Existing parameter, update the fields
          existingParameter.setDescription(parameter.getDescription());
          existingParameter.setValue(parameter.getValue());
          this.parameters.put(name, existingParameter);
        }
      }

      // Remove old parameters
      this.parameters.keySet().removeAll(oldPreferences.keySet());
    }
  }
 @Override
 public void addParameter(IPortletDefinitionParameter parameter) {
   final String name = parameter.getName();
   final IPortletDefinitionParameter existingParameter = this.parameters.get(name);
   if (existingParameter != null) {
     existingParameter.setDescription(parameter.getDescription());
     existingParameter.setValue(parameter.getValue());
   } else {
     this.parameters.put(name, parameter);
   }
 }