@Override
 public void setParameters(List<IParameter> parameters) {
   firePropertyChange(PROPERTY_PARAMETERS, this.parameters, this.parameters = parameters);
   this.originalValueMap = new HashMap<String, String>(this.parameters.size());
   for (IParameter param : parameters) {
     originalValueMap.put(param.getName(), param.getValue());
   }
 }
 private Map<String, IParameter> givenTheTemplateHasParameters() {
   IParameter param = mock(IParameter.class);
   when(param.getName()).thenReturn("foo");
   when(param.clone()).thenReturn(param);
   Map<String, IParameter> parameters = new HashMap<String, IParameter>();
   parameters.put(param.getName(), param);
   when(template.getParameters()).thenReturn(parameters);
   return parameters;
 }
  @Test
  public void resetParameterShouldSetTheOriginalValue() {
    IParameter param = mock(IParameter.class);
    when(param.getName()).thenReturn("foo");
    when(param.getValue()).thenReturn("abc");
    when(param.clone()).thenReturn(param);

    model.setParameters(Arrays.asList(new IParameter[] {param}));
    model.resetParameter(param);

    verify(param).setValue("abc");
  }
 @Override
 public void resetParameter(IParameter param) {
   updateParameterValue(param, originalValueMap.get(param.getName()));
 }
 @Override
 public void updateParameterValue(IParameter param, String value) {
   param.setValue(value);
 }