#198 - TemplateVariables now drops duplicate TemplateVariable instances.

This commit is contained in:
Oliver Gierke
2014-06-11 10:21:21 +02:00
parent 20bfa86c5f
commit 40ceba3c47
2 changed files with 23 additions and 2 deletions

View File

@@ -77,7 +77,12 @@ public final class TemplateVariables implements Iterable<TemplateVariable>, Seri
List<TemplateVariable> result = new ArrayList<TemplateVariable>(this.variables.size() + variables.size());
result.addAll(this.variables);
result.addAll(variables);
for (TemplateVariable variable : variables) {
if (!result.contains(variable)) {
result.add(variable);
}
}
return new TemplateVariables(result);
}

View File

@@ -15,9 +15,11 @@
*/
package org.springframework.hateoas;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import org.springframework.hateoas.TemplateVariable.VariableType;
@@ -116,4 +118,18 @@ public class TemplateVariablesUnitTest {
assertThat(variables.toString(), is("{&foo,bar}"));
}
/**
* @see #198
*/
@Test
public void dropsDuplicateTemplateVariable() {
TemplateVariable variable = new TemplateVariable("foo", VariableType.REQUEST_PARAM);
TemplateVariables variables = new TemplateVariables(variable);
List<TemplateVariable> result = variables.concat(variable).asList();
assertThat(result, hasSize(1));
assertThat(result, hasItem(variable));
}
}