From 38a5cc2cb8a5d5f9dd4e1df3abb1636ef560acf1 Mon Sep 17 00:00:00 2001 From: "Lincoln Baxter, III" Date: Wed, 30 Jan 2013 16:55:57 -0500 Subject: [PATCH] Updated UICompleter method signature and tests --- .../java/org/jboss/forge/ui/UICompleter.java | 16 ++++++++++------ .../org/jboss/forge/ui/impl/NoopCompleter.java | 8 ++++---- .../forge/ui/impl/UIInputInjectionTest.java | 16 +++++++++++----- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ui/api/src/main/java/org/jboss/forge/ui/UICompleter.java b/ui/api/src/main/java/org/jboss/forge/ui/UICompleter.java index 02ef7ef77a..f7bf4f0358 100644 --- a/ui/api/src/main/java/org/jboss/forge/ui/UICompleter.java +++ b/ui/api/src/main/java/org/jboss/forge/ui/UICompleter.java @@ -6,15 +6,19 @@ */ package org.jboss.forge.ui; -import java.util.List; - /** * @param VALUETYPE The value type to be provided by completion. * @author Lincoln Baxter, III */ -public interface UICompleter +public interface UICompleter { - // FIXME this needs to be thought out, before or after validation? - // Should this take a String or the actual VALUETYPE instead? - List getCompletionProposals(String value); + /** + * Get completion proposals for the provided {@link UIInput} and unconverted partial {@link String} value. + * + * @param input The {@link UIInput} that provided this {@link UICompleter} instance, via + * {@link UIInput#getCompleter()}. + * @param value The user input value requiring completion, or null, if no value yet exists. These values will undergo + * conversion to fit the type required by the corresponding {@link UIInput}. + */ + Iterable getCompletionProposals(UIInput input, String value); } diff --git a/ui/impl/src/main/java/org/jboss/forge/ui/impl/NoopCompleter.java b/ui/impl/src/main/java/org/jboss/forge/ui/impl/NoopCompleter.java index d80c543dc7..26e8dc4f29 100644 --- a/ui/impl/src/main/java/org/jboss/forge/ui/impl/NoopCompleter.java +++ b/ui/impl/src/main/java/org/jboss/forge/ui/impl/NoopCompleter.java @@ -6,10 +6,10 @@ */ package org.jboss.forge.ui.impl; -import java.util.ArrayList; -import java.util.List; +import java.util.Collections; import org.jboss.forge.ui.UICompleter; +import org.jboss.forge.ui.UIInput; /** * A {@link UICompleter} that always returns zero proposals. @@ -20,8 +20,8 @@ public class NoopCompleter implements UICompleter { @Override - public List getCompletionProposals(String value) + public Iterable getCompletionProposals(UIInput input, String value) { - return new ArrayList(); + return Collections.emptyList(); } } diff --git a/ui/tests/src/test/java/org/jboss/forge/ui/impl/UIInputInjectionTest.java b/ui/tests/src/test/java/org/jboss/forge/ui/impl/UIInputInjectionTest.java index 97ab3ce1c1..7fc4684e0b 100644 --- a/ui/tests/src/test/java/org/jboss/forge/ui/impl/UIInputInjectionTest.java +++ b/ui/tests/src/test/java/org/jboss/forge/ui/impl/UIInputInjectionTest.java @@ -8,7 +8,7 @@ package org.jboss.forge.ui.impl; import java.util.Arrays; -import java.util.List; +import java.util.Iterator; import javax.inject.Inject; @@ -91,14 +91,20 @@ public void testCompleter() Assert.assertEquals(firstName, firstName.setCompleter(new UICompleter() { @Override - public List getCompletionProposals(String value) + public Iterable getCompletionProposals(UIInput input, String value) { - return Arrays.asList("foo", "bar", "baz"); + return Arrays.asList("one", "two", "three"); } })); Assert.assertNotEquals(originalCompleter, firstName.getCompleter()); - Assert.assertEquals(3, firstName.getCompleter().getCompletionProposals(null).size()); - Assert.assertEquals(0, originalCompleter.getCompletionProposals(null).size()); + + Iterator iterator = firstName.getCompleter().getCompletionProposals(null, null).iterator(); + Assert.assertEquals("one", iterator.next()); + Assert.assertEquals("two", iterator.next()); + Assert.assertEquals("three", iterator.next()); + Assert.assertFalse(iterator.hasNext()); + + Assert.assertFalse(originalCompleter.getCompletionProposals(null, null).iterator().hasNext()); } @Test