diff options
author | Benoit Lamarche <benoitlamarche@google.com> | 2015-02-26 12:23:53 +0100 |
---|---|---|
committer | Benoit Lamarche <benoitlamarche@google.com> | 2015-02-26 12:41:24 +0100 |
commit | 57cb72439e05e2fa253f0a4462ed249fa8842b5a (patch) | |
tree | 2ba96b7a0b67b9854d6b0ada6450692a814d28c2 /sched | |
parent | d528744790b3552a42cfc61d11bbd7dbc8e6a2f2 (diff) | |
download | toolchain_jack-57cb72439e05e2fa253f0a4462ed249fa8842b5a.tar.gz toolchain_jack-57cb72439e05e2fa253f0a4462ed249fa8842b5a.tar.bz2 toolchain_jack-57cb72439e05e2fa253f0a4462ed249fa8842b5a.zip |
Rework OrCodec
Change-Id: I880412f9cb058b9195f806f10f1dc96c8d8dd06d
Diffstat (limited to 'sched')
-rw-r--r-- | sched/src/com/android/sched/util/codec/OrCodec.java | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/sched/src/com/android/sched/util/codec/OrCodec.java b/sched/src/com/android/sched/util/codec/OrCodec.java index c1789a1b..c4d3f8a2 100644 --- a/sched/src/com/android/sched/util/codec/OrCodec.java +++ b/sched/src/com/android/sched/util/codec/OrCodec.java @@ -16,10 +16,14 @@ package com.android.sched.util.codec; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.collect.Collections2; + import com.android.sched.util.config.ConfigurationError; +import java.util.Arrays; import java.util.Collections; -import java.util.Iterator; import java.util.List; import javax.annotation.CheckForNull; @@ -35,10 +39,15 @@ public class OrCodec<T> implements StringCodec<T> { private final List<StringCodec<? extends T>> codecList; public OrCodec(@Nonnull List<StringCodec<? extends T>> codecList) { - assert codecList.size() >= 1; + assert codecList.size() >= 2; this.codecList = codecList; } + public OrCodec(@Nonnull StringCodec<? extends T>... codecList) { + assert codecList.length >= 2; + this.codecList = Arrays.asList(codecList); + } + @Override @Nonnull public T parseString(@Nonnull CodecContext context, @Nonnull String string) { @@ -65,20 +74,19 @@ public class OrCodec<T> implements StringCodec<T> { @Override public void checkValue(@Nonnull CodecContext context, @Nonnull T data) { + //STOPSHIP: TBI } @Override @Nonnull public String getUsage() { - StringBuffer usage = new StringBuffer(); - Iterator<StringCodec<? extends T>> codecListIterator = codecList.iterator(); - while (codecListIterator.hasNext()) { - usage.append(codecListIterator.next().getUsage()); - if (codecListIterator.hasNext()) { - usage.append(" or "); - } - } - return usage.toString(); + return Joiner.on(" or ").join( + Collections2.transform(codecList, new Function<StringCodec<? extends T>, String>() { + @Override + public String apply(StringCodec<? extends T> codec) { + return codec.getUsage(); + } + })); } @Override |