summaryrefslogtreecommitdiffstats
path: root/sched
diff options
context:
space:
mode:
authorBenoit Lamarche <benoitlamarche@google.com>2015-02-26 12:23:53 +0100
committerBenoit Lamarche <benoitlamarche@google.com>2015-02-26 12:41:24 +0100
commit57cb72439e05e2fa253f0a4462ed249fa8842b5a (patch)
tree2ba96b7a0b67b9854d6b0ada6450692a814d28c2 /sched
parentd528744790b3552a42cfc61d11bbd7dbc8e6a2f2 (diff)
downloadtoolchain_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.java30
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