diff options
author | Jean-Philippe Lesot <jplesot@google.com> | 2015-03-13 23:14:05 +0100 |
---|---|---|
committer | Jean-Philippe Lesot <jplesot@google.com> | 2015-03-16 18:44:07 +0100 |
commit | 39a69cd3805b776a467c43be8b7e872e268f1187 (patch) | |
tree | 4401314bae7ec7fe7153a7d1aaf50899960340e1 /sched/src/com/android/sched | |
parent | a04b97dc08562bf00933f009ea39c87c8903a4e7 (diff) | |
download | toolchain_jack-39a69cd3805b776a467c43be8b7e872e268f1187.tar.gz toolchain_jack-39a69cd3805b776a467c43be8b7e872e268f1187.tar.bz2 toolchain_jack-39a69cd3805b776a467c43be8b7e872e268f1187.zip |
Rework all variable names in the config framework
Change-Id: Icf61c8f1326cfd2c80f3f043a6adc57aa765632b
Diffstat (limited to 'sched/src/com/android/sched')
54 files changed, 315 insertions, 58 deletions
diff --git a/sched/src/com/android/sched/build/SchedAnnotationProcessor.java b/sched/src/com/android/sched/build/SchedAnnotationProcessor.java index df63314d..02cb524a 100644 --- a/sched/src/com/android/sched/build/SchedAnnotationProcessor.java +++ b/sched/src/com/android/sched/build/SchedAnnotationProcessor.java @@ -99,6 +99,7 @@ public class SchedAnnotationProcessor extends AbstractProcessor { PRODUCTION("com.android.sched.item.Production"), TOMOC("com.android.sched.item.TagOrMarkerOrComponent"), SCHEDULABLE("com.android.sched.schedulable.Schedulable"), + VARIABLE_NAME("com.android.sched.util.codec.VariableName"), IMPLEMENTATION_NAME("com.android.sched.util.codec.ImplementationName"); @Nonnull diff --git a/sched/src/com/android/sched/item/ItemManager.java b/sched/src/com/android/sched/item/ItemManager.java index 5a8e6e51..e3a4cb22 100644 --- a/sched/src/com/android/sched/item/ItemManager.java +++ b/sched/src/com/android/sched/item/ItemManager.java @@ -17,6 +17,7 @@ package com.android.sched.item; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.ThreadConfig; import com.android.sched.util.config.id.ReflectFactoryPropertyId; @@ -36,6 +37,7 @@ import javax.annotation.Nonnull; * Provides utilities needed by an {@link ItemSet}. */ @HasKeyId +@VariableName("algo") public abstract class ItemManager { @Nonnull private static final ReflectFactoryPropertyId<ItemManager> ITEM_MANAGER = diff --git a/sched/src/com/android/sched/item/onlyfor/OnlyForType.java b/sched/src/com/android/sched/item/onlyfor/OnlyForType.java index c31ce5da..1ffdf6c1 100644 --- a/sched/src/com/android/sched/item/onlyfor/OnlyForType.java +++ b/sched/src/com/android/sched/item/onlyfor/OnlyForType.java @@ -16,8 +16,11 @@ package com.android.sched.item.onlyfor; +import com.android.sched.util.codec.VariableName; + /** * Represent a category for the {@link OnlyFor} annotation */ +@VariableName("name") public interface OnlyForType { } diff --git a/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java b/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java index 078223f9..bc7e6bee 100644 --- a/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java +++ b/sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java @@ -24,6 +24,7 @@ import com.android.sched.schedulable.Schedulable; import com.android.sched.schedulable.VisitorSchedulable; import com.android.sched.util.codec.ImplementationFilter; import com.android.sched.util.codec.ImplementationName; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.ThreadConfig; import com.android.sched.util.config.id.BooleanPropertyId; @@ -492,6 +493,7 @@ public class MultiWorkersScheduleInstance<T extends Component> // @HasKeyId + @VariableName("detector") private abstract static class Detector { @Nonnull public static final diff --git a/sched/src/com/android/sched/scheduler/MultipleScheduleInstance.java b/sched/src/com/android/sched/scheduler/MultipleScheduleInstance.java index 1900dd32..5c502ee5 100644 --- a/sched/src/com/android/sched/scheduler/MultipleScheduleInstance.java +++ b/sched/src/com/android/sched/scheduler/MultipleScheduleInstance.java @@ -17,6 +17,7 @@ package com.android.sched.scheduler; import com.android.sched.item.Component; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.ThreadConfig; import com.android.sched.util.config.id.EnumPropertyId; @@ -39,16 +40,20 @@ public abstract class MultipleScheduleInstance<T extends Component> extends Sche /** * Number of threads policy */ + @VariableName("policy") private enum NumThreadsPolicy { NUM_CORES, FIXED; } @Nonnull - private static final EnumPropertyId<NumThreadsPolicy> NUM_THREADS_POLICY = EnumPropertyId.create( - "sched.runner.thread.kind", "Number of threads policy used by the scheduler", - NumThreadsPolicy.values()).addDefaultValue("num-cores").ignoreCase().requiredIf( - ScheduleInstance.DEFAULT_RUNNER.getClazz().isSubClassOf(MultipleScheduleInstance.class)); + private static final EnumPropertyId<NumThreadsPolicy> NUM_THREADS_POLICY = EnumPropertyId + .create("sched.runner.thread.kind", "Number of threads policy used by the scheduler", + NumThreadsPolicy.class, NumThreadsPolicy.values()) + .addDefaultValue("num-cores") + .ignoreCase() + .requiredIf( + ScheduleInstance.DEFAULT_RUNNER.getClazz().isSubClassOf(MultipleScheduleInstance.class)); @Nonnull private static final IntegerPropertyId NUM_FIXED_THREADS = IntegerPropertyId.create( diff --git a/sched/src/com/android/sched/scheduler/PlanPrinter.java b/sched/src/com/android/sched/scheduler/PlanPrinter.java index c9706c43..ad1d143a 100644 --- a/sched/src/com/android/sched/scheduler/PlanPrinter.java +++ b/sched/src/com/android/sched/scheduler/PlanPrinter.java @@ -16,12 +16,15 @@ package com.android.sched.scheduler; +import com.android.sched.util.codec.VariableName; + import javax.annotation.Nonnull; /** * Interface to a plan printer */ +@VariableName("printer") public interface PlanPrinter { public void printPlan(@Nonnull Plan<?> plan); } diff --git a/sched/src/com/android/sched/scheduler/Planner.java b/sched/src/com/android/sched/scheduler/Planner.java index ed05e2df..6b44e3b7 100644 --- a/sched/src/com/android/sched/scheduler/Planner.java +++ b/sched/src/com/android/sched/scheduler/Planner.java @@ -17,6 +17,7 @@ package com.android.sched.scheduler; import com.android.sched.item.Component; +import com.android.sched.util.codec.VariableName; import javax.annotation.Nonnull; @@ -25,6 +26,7 @@ import javax.annotation.Nonnull; * * @param <T> the root <i>data</i> the {@code Plan} can be run on */ +@VariableName("planner") public interface Planner<T extends Component> { @Nonnull public Plan<T> buildPlan(@Nonnull Request request, @Nonnull Class<T> on) diff --git a/sched/src/com/android/sched/scheduler/SchedulableManager.java b/sched/src/com/android/sched/scheduler/SchedulableManager.java index 44d5d632..5b32649e 100644 --- a/sched/src/com/android/sched/scheduler/SchedulableManager.java +++ b/sched/src/com/android/sched/scheduler/SchedulableManager.java @@ -21,6 +21,7 @@ import com.android.sched.schedulable.AdapterSchedulable; import com.android.sched.schedulable.ProcessorSchedulable; import com.android.sched.schedulable.Schedulable; import com.android.sched.util.codec.ImplementationSelector; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.ThreadConfig; import com.android.sched.util.config.id.PropertyId; @@ -34,6 +35,7 @@ import javax.annotation.Nonnull; * Provides utility methods to access {@link Schedulable}s. */ @HasKeyId +@VariableName("algo") public abstract class SchedulableManager { @Nonnull private static final PropertyId<SchedulableManager> SCHEDULABLE_MANAGER = PropertyId.create( diff --git a/sched/src/com/android/sched/scheduler/ScheduleInstance.java b/sched/src/com/android/sched/scheduler/ScheduleInstance.java index 5425a647..b8e73c33 100644 --- a/sched/src/com/android/sched/scheduler/ScheduleInstance.java +++ b/sched/src/com/android/sched/scheduler/ScheduleInstance.java @@ -23,6 +23,7 @@ import com.android.sched.schedulable.Schedulable; import com.android.sched.schedulable.SchedulerVisitable; import com.android.sched.schedulable.VisitorSchedulable; import com.android.sched.transform.TransformRequest; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.config.HasKeyId; import com.android.sched.util.config.ThreadConfig; import com.android.sched.util.config.id.ReflectFactoryPropertyId; @@ -48,6 +49,7 @@ import javax.annotation.Nonnull; * @param <T> the root <i>data</i> type */ @HasKeyId +@VariableName("runner") public abstract class ScheduleInstance<T extends Component> { @SuppressWarnings({"rawtypes"}) @Nonnull diff --git a/sched/src/com/android/sched/util/codec/ConvertCodec.java b/sched/src/com/android/sched/util/codec/ConvertCodec.java index d97ce50a..e32a2932 100644 --- a/sched/src/com/android/sched/util/codec/ConvertCodec.java +++ b/sched/src/com/android/sched/util/codec/ConvertCodec.java @@ -64,6 +64,12 @@ public abstract class ConvertCodec<SRC, DST> implements StringCodec<DST> { @Override @Nonnull + public String getVariableName() { + return codec.getVariableName(); + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return codec.getValueDescriptions(); } diff --git a/sched/src/com/android/sched/util/codec/DirectDirInputOutputVFSCodec.java b/sched/src/com/android/sched/util/codec/DirectDirInputOutputVFSCodec.java index 4c2ee8e4..8f530886 100644 --- a/sched/src/com/android/sched/util/codec/DirectDirInputOutputVFSCodec.java +++ b/sched/src/com/android/sched/util/codec/DirectDirInputOutputVFSCodec.java @@ -46,6 +46,12 @@ public class DirectDirInputOutputVFSCodec extends InputOutputVFSCodec @Override @Nonnull + public String getVariableName() { + return "dir"; + } + + @Override + @Nonnull public InputOutputVFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { diff --git a/sched/src/com/android/sched/util/codec/DirectDirOutputVFSCodec.java b/sched/src/com/android/sched/util/codec/DirectDirOutputVFSCodec.java index e0ca984f..ab92ba70 100644 --- a/sched/src/com/android/sched/util/codec/DirectDirOutputVFSCodec.java +++ b/sched/src/com/android/sched/util/codec/DirectDirOutputVFSCodec.java @@ -43,6 +43,12 @@ public class DirectDirOutputVFSCodec extends OutputVFSCodec { @Override @Nonnull + public String getVariableName() { + return "dir"; + } + + @Override + @Nonnull public OutputVFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { try { diff --git a/sched/src/com/android/sched/util/codec/DirectFSCodec.java b/sched/src/com/android/sched/util/codec/DirectFSCodec.java index d53ed9f3..09d457ca 100644 --- a/sched/src/com/android/sched/util/codec/DirectFSCodec.java +++ b/sched/src/com/android/sched/util/codec/DirectFSCodec.java @@ -87,6 +87,12 @@ public class DirectFSCodec extends FileOrDirCodec<VFS> { @Override @Nonnull + public String getVariableName() { + return "dir"; + } + + @Override + @Nonnull public VFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { try { diff --git a/sched/src/com/android/sched/util/codec/DirectoryCodec.java b/sched/src/com/android/sched/util/codec/DirectoryCodec.java index 945b78ec..f947ce83 100644 --- a/sched/src/com/android/sched/util/codec/DirectoryCodec.java +++ b/sched/src/com/android/sched/util/codec/DirectoryCodec.java @@ -60,6 +60,12 @@ public class DirectoryCodec extends FileOrDirCodec<Directory> { @Override @Nonnull + public String getVariableName() { + return "dir"; + } + + @Override + @Nonnull public Directory checkString(@Nonnull CodecContext context, @Nonnull String string) throws ParsingException { try { diff --git a/sched/src/com/android/sched/util/codec/DirectoryInputVFSCodec.java b/sched/src/com/android/sched/util/codec/DirectoryInputVFSCodec.java index e5674712..f7a77a19 100644 --- a/sched/src/com/android/sched/util/codec/DirectoryInputVFSCodec.java +++ b/sched/src/com/android/sched/util/codec/DirectoryInputVFSCodec.java @@ -49,6 +49,12 @@ public class DirectoryInputVFSCodec extends InputVFSCodec @Override @Nonnull + public String getVariableName() { + return "dir"; + } + + @Override + @Nonnull public InputVFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { try { diff --git a/sched/src/com/android/sched/util/codec/DoubleCodec.java b/sched/src/com/android/sched/util/codec/DoubleCodec.java index 6fc22772..7b18b511 100644 --- a/sched/src/com/android/sched/util/codec/DoubleCodec.java +++ b/sched/src/com/android/sched/util/codec/DoubleCodec.java @@ -51,6 +51,12 @@ public class DoubleCodec implements StringCodec<Double> { @Override @Nonnull + public String getVariableName() { + return "number"; + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return Collections.<ValueDescription> emptyList(); } diff --git a/sched/src/com/android/sched/util/codec/EnumCodec.java b/sched/src/com/android/sched/util/codec/EnumCodec.java index b31b245e..ef5d489c 100644 --- a/sched/src/com/android/sched/util/codec/EnumCodec.java +++ b/sched/src/com/android/sched/util/codec/EnumCodec.java @@ -33,7 +33,7 @@ public class EnumCodec<T extends Enum<T>> implements StringCodec<T> { @Nonnull KeyValueCodec<T> parser; - public EnumCodec(@Nonnull T[] values) { + public EnumCodec(@Nonnull Class<T> type, @Nonnull T[] values) { assert values.length > 0; @SuppressWarnings("unchecked") @@ -53,7 +53,13 @@ public class EnumCodec<T extends Enum<T>> implements StringCodec<T> { } } - parser = new KeyValueCodec<T>(entries); + VariableName variableName = type.getAnnotation(VariableName.class); + if (variableName == null || variableName.value() == null) { + throw new AssertionError(type.getCanonicalName() + " has no or a wrong @" + + VariableName.class.getSimpleName()); + } + + parser = new KeyValueCodec<T>(variableName.value(), entries); } @Nonnull @@ -106,4 +112,10 @@ public class EnumCodec<T extends Enum<T>> implements StringCodec<T> { public String formatValue(@Nonnull T value) { return parser.formatValue(value); } + + @Override + @Nonnull + public String getVariableName() { + return parser.getVariableName(); + } } diff --git a/sched/src/com/android/sched/util/codec/InputFileOrDirectoryCodec.java b/sched/src/com/android/sched/util/codec/InputFileOrDirectoryCodec.java index a81ff9cf..6d056bfc 100644 --- a/sched/src/com/android/sched/util/codec/InputFileOrDirectoryCodec.java +++ b/sched/src/com/android/sched/util/codec/InputFileOrDirectoryCodec.java @@ -78,6 +78,12 @@ public class InputFileOrDirectoryCodec extends FileOrDirCodec<FileOrDirectory> { @Override @Nonnull + public String getVariableName() { + return "file-or-dir"; + } + + @Override + @Nonnull public String formatValue(@Nonnull FileOrDirectory data) { return data.getPath(); } @@ -85,5 +91,4 @@ public class InputFileOrDirectoryCodec extends FileOrDirCodec<FileOrDirectory> { @Override public void checkValue(@Nonnull CodecContext context, @Nonnull FileOrDirectory data) { } - } diff --git a/sched/src/com/android/sched/util/codec/InputVFSCodec.java b/sched/src/com/android/sched/util/codec/InputVFSCodec.java index c2b48ada..cbc64448 100644 --- a/sched/src/com/android/sched/util/codec/InputVFSCodec.java +++ b/sched/src/com/android/sched/util/codec/InputVFSCodec.java @@ -73,6 +73,12 @@ public class InputVFSCodec extends FileOrDirCodec<InputVFS> { @Override @Nonnull + public String getVariableName() { + return "zip-or-dir"; + } + + @Override + @Nonnull public InputVFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { final VFS vfs; diff --git a/sched/src/com/android/sched/util/codec/KeyValueCodec.java b/sched/src/com/android/sched/util/codec/KeyValueCodec.java index dfbe1b62..846a8330 100644 --- a/sched/src/com/android/sched/util/codec/KeyValueCodec.java +++ b/sched/src/com/android/sched/util/codec/KeyValueCodec.java @@ -39,13 +39,17 @@ public class KeyValueCodec<T> implements StringCodec<T> { private Entry<T>[] entries; @CheckForNull private List<ValueDescription> descriptions; + @Nonnull + private final String varName; - public KeyValueCodec(@Nonnull Entry<T>[] entries) { + public KeyValueCodec(@Nonnull String varName, @Nonnull Entry<T>[] entries) { this.entries = Arrays.copyOf(entries, entries.length); + this.varName = varName; } protected void setElements(@Nonnull Entry<T>[] entries) { this.entries = Arrays.copyOf(entries, entries.length); + if (ignoreCase) { ignoreCase(); } @@ -103,6 +107,12 @@ public class KeyValueCodec<T> implements StringCodec<T> { @Override @Nonnull + public String getVariableName() { + return varName; + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { if (descriptions == null) { descriptions = new ArrayList<ValueDescription>(entries.length); diff --git a/sched/src/com/android/sched/util/codec/KeywordsCodec.java b/sched/src/com/android/sched/util/codec/KeywordsCodec.java index d9909750..6d8380fa 100644 --- a/sched/src/com/android/sched/util/codec/KeywordsCodec.java +++ b/sched/src/com/android/sched/util/codec/KeywordsCodec.java @@ -30,11 +30,12 @@ public class KeywordsCodec implements StringCodec<String> { @Nonnull KeyValueCodec<String> parser; - public KeywordsCodec(@Nonnull String[] keywords) { - this(keywords, new String[keywords.length]); + public KeywordsCodec(@Nonnull String varName, @Nonnull String[] keywords) { + this(varName, keywords, new String[keywords.length]); } - public KeywordsCodec(@Nonnull String[] keywords, @Nonnull String[] descriptions) { + public KeywordsCodec(@Nonnull String varName, @Nonnull String[] keywords, + @Nonnull String[] descriptions) { @SuppressWarnings("unchecked") Entry<String>[] entries = new Entry[keywords.length]; @@ -44,7 +45,7 @@ public class KeywordsCodec implements StringCodec<String> { idx++; } - parser = new KeyValueCodec<String>(entries); + parser = new KeyValueCodec<String>(varName, entries); } @Nonnull @@ -88,6 +89,12 @@ public class KeywordsCodec implements StringCodec<String> { @Override @Nonnull + public String getVariableName() { + return parser.getVariableName(); + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return parser.getValueDescriptions(); } diff --git a/sched/src/com/android/sched/util/codec/ListCodec.java b/sched/src/com/android/sched/util/codec/ListCodec.java index 45445730..d1e99407 100644 --- a/sched/src/com/android/sched/util/codec/ListCodec.java +++ b/sched/src/com/android/sched/util/codec/ListCodec.java @@ -35,8 +35,6 @@ import javax.annotation.Nonnull; public class ListCodec<T> implements StringCodec<List<T>> { @Nonnull private final StringCodec<T> parser; - @Nonnull - private final String var; @Nonnegative private int min; @@ -47,13 +45,12 @@ public class ListCodec<T> implements StringCodec<List<T>> { @Nonnull private String separator; - public ListCodec(@Nonnull String var, @Nonnull StringCodec<T> parser) { + public ListCodec(@Nonnull StringCodec<T> parser) { this.separator = ","; this.regexp = Pattern.quote(separator); this.parser = parser; this.min = 1; this.max = Integer.MAX_VALUE; - this.var = var; } public ListCodec<T> setSeparator(@Nonnull String separator) { @@ -188,6 +185,7 @@ public class ListCodec<T> implements StringCodec<List<T>> { @Nonnull public String getUsage() { StringBuilder sb = new StringBuilder(); + String var = parser.getVariableName(); if (min > 0) { sb.append('<').append(var).append("-1").append('>'); @@ -242,6 +240,12 @@ public class ListCodec<T> implements StringCodec<List<T>> { @Override @Nonnull + public String getVariableName() { + return "list"; + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return parser.getValueDescriptions(); } diff --git a/sched/src/com/android/sched/util/codec/LongCodec.java b/sched/src/com/android/sched/util/codec/LongCodec.java index 8bdd98ca..204698ad 100644 --- a/sched/src/com/android/sched/util/codec/LongCodec.java +++ b/sched/src/com/android/sched/util/codec/LongCodec.java @@ -55,6 +55,12 @@ public class LongCodec implements StringCodec<Long>{ @Override @Nonnull + public String getVariableName() { + return "number"; + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return Collections.<ValueDescription> emptyList(); } diff --git a/sched/src/com/android/sched/util/codec/MessageDigestCodec.java b/sched/src/com/android/sched/util/codec/MessageDigestCodec.java index ac45590a..a37e04f2 100644 --- a/sched/src/com/android/sched/util/codec/MessageDigestCodec.java +++ b/sched/src/com/android/sched/util/codec/MessageDigestCodec.java @@ -60,7 +60,7 @@ public class MessageDigestCodec extends KeyValueCodec<Service> { } public MessageDigestCodec () { - super(elementsWithoutProvider); + super("algo", elementsWithoutProvider); sorted(); } diff --git a/sched/src/com/android/sched/util/codec/OrCodec.java b/sched/src/com/android/sched/util/codec/OrCodec.java index c4d3f8a2..f8880055 100644 --- a/sched/src/com/android/sched/util/codec/OrCodec.java +++ b/sched/src/com/android/sched/util/codec/OrCodec.java @@ -83,7 +83,7 @@ public class OrCodec<T> implements StringCodec<T> { return Joiner.on(" or ").join( Collections2.transform(codecList, new Function<StringCodec<? extends T>, String>() { @Override - public String apply(StringCodec<? extends T> codec) { + public String apply(@Nonnull StringCodec<? extends T> codec) { return codec.getUsage(); } })); @@ -91,6 +91,18 @@ public class OrCodec<T> implements StringCodec<T> { @Override @Nonnull + public String getVariableName() { + return Joiner.on("-or-").join( + Collections2.transform(codecList, new Function<StringCodec<? extends T>, String>() { + @Override + public String apply(@Nonnull StringCodec<? extends T> codec) { + return codec.getVariableName(); + } + })); + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return Collections.<ValueDescription> emptyList(); } diff --git a/sched/src/com/android/sched/util/codec/PairCodec.java b/sched/src/com/android/sched/util/codec/PairCodec.java index 14a793ea..11e3f6a4 100644 --- a/sched/src/com/android/sched/util/codec/PairCodec.java +++ b/sched/src/com/android/sched/util/codec/PairCodec.java @@ -125,10 +125,19 @@ public class PairCodec<T, U> implements StringCodec<Entry<T, U>>{ @Nonnull public String getUsage() { StringBuilder sb = new StringBuilder(); - sb.append("<key>" + separator + "<value>"); - sb.append(" where <key> is "); + sb.append('<'); + sb.append(keyParser.getVariableName()); + sb.append('>'); + sb.append(separator); + sb.append('<'); + sb.append(valueParser.getVariableName()); + sb.append("> where <"); + sb.append(keyParser.getVariableName()); + sb.append("> is "); sb.append(keyParser.getUsage()); - sb.append(" and where <value> is "); + sb.append(" and where <"); + sb.append(valueParser.getVariableName()); + sb.append("> is "); sb.append(valueParser.getUsage()); return sb.toString(); @@ -136,6 +145,12 @@ public class PairCodec<T, U> implements StringCodec<Entry<T, U>>{ @Override @Nonnull + public String getVariableName() { + return "pair"; + } + + @Override + @Nonnull public List<com.android.sched.util.codec.Parser.ValueDescription> getValueDescriptions() { List<com.android.sched.util.codec.Parser.ValueDescription> list = new ArrayList<Parser.ValueDescription>(); @@ -173,5 +188,4 @@ public class PairCodec<T, U> implements StringCodec<Entry<T, U>>{ exceptions.throwIfNecessary(); } - } diff --git a/sched/src/com/android/sched/util/codec/Parser.java b/sched/src/com/android/sched/util/codec/Parser.java index 0b728233..bf7cfe13 100644 --- a/sched/src/com/android/sched/util/codec/Parser.java +++ b/sched/src/com/android/sched/util/codec/Parser.java @@ -61,6 +61,12 @@ public interface Parser<T> { public List<ValueDescription> getValueDescriptions(); /** + * @return a variable name suitable to represent this value. + */ + @Nonnull + public String getVariableName(); + + /** * Description of a value. */ public static class ValueDescription implements HasDescription { diff --git a/sched/src/com/android/sched/util/codec/PathCodec.java b/sched/src/com/android/sched/util/codec/PathCodec.java index 196d9774..11ede3a9 100644 --- a/sched/src/com/android/sched/util/codec/PathCodec.java +++ b/sched/src/com/android/sched/util/codec/PathCodec.java @@ -38,6 +38,12 @@ public class PathCodec implements StringCodec<File> { @Override @Nonnull + public String getVariableName() { + return "path"; + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return Collections.<ValueDescription> emptyList(); } @@ -63,4 +69,5 @@ public class PathCodec implements StringCodec<File> { public String formatValue(@Nonnull File file) { return file.getPath(); } + } diff --git a/sched/src/com/android/sched/util/codec/Selector.java b/sched/src/com/android/sched/util/codec/Selector.java index 4b3046f4..5ed695e5 100644 --- a/sched/src/com/android/sched/util/codec/Selector.java +++ b/sched/src/com/android/sched/util/codec/Selector.java @@ -72,6 +72,17 @@ public abstract class Selector<T> { } @Nonnull + public String getVariableName() { + VariableName variableName = type.getAnnotation(VariableName.class); + if (variableName == null || variableName.value() == null) { + throw new AssertionError(type.getCanonicalName() + " has no or a wrong @" + + VariableName.class.getSimpleName()); + } + + return variableName.value(); + } + + @Nonnull public List<ValueDescription> getValueDescriptions() { if (descriptions == null) { ensureScan(); diff --git a/sched/src/com/android/sched/util/codec/StreamCodec.java b/sched/src/com/android/sched/util/codec/StreamCodec.java index 788fa485..20a634e4 100644 --- a/sched/src/com/android/sched/util/codec/StreamCodec.java +++ b/sched/src/com/android/sched/util/codec/StreamCodec.java @@ -71,4 +71,10 @@ public abstract class StreamCodec<T> extends FileOrDirCodec<T> { return sb.toString(); } + + @Override + @Nonnull + public String getVariableName() { + return "file"; + } } diff --git a/sched/src/com/android/sched/util/codec/StringValueCodec.java b/sched/src/com/android/sched/util/codec/StringValueCodec.java index 19e13be0..63d56dc1 100644 --- a/sched/src/com/android/sched/util/codec/StringValueCodec.java +++ b/sched/src/com/android/sched/util/codec/StringValueCodec.java @@ -28,9 +28,12 @@ import javax.annotation.Nonnull; public class StringValueCodec implements StringCodec<String> { @Nonnull private final String usage; + @Nonnull + private final String varName; - public StringValueCodec(@Nonnull String usage) { + public StringValueCodec(@Nonnull String usage, @Nonnull String varName) { this.usage = usage; + this.varName = varName; } @Override @@ -53,6 +56,12 @@ public class StringValueCodec implements StringCodec<String> { @Override @Nonnull + public String getVariableName() { + return varName; + } + + @Override + @Nonnull public List<ValueDescription> getValueDescriptions() { return Collections.<ValueDescription> emptyList(); } diff --git a/sched/src/com/android/sched/util/codec/VariableName.java b/sched/src/com/android/sched/util/codec/VariableName.java new file mode 100644 index 00000000..10813044 --- /dev/null +++ b/sched/src/com/android/sched/util/codec/VariableName.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.sched.util.codec; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * XXX + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface VariableName { + String value(); +} diff --git a/sched/src/com/android/sched/util/codec/ZipFSCodec.java b/sched/src/com/android/sched/util/codec/ZipFSCodec.java index 42a1db92..4cc8bcef 100644 --- a/sched/src/com/android/sched/util/codec/ZipFSCodec.java +++ b/sched/src/com/android/sched/util/codec/ZipFSCodec.java @@ -82,6 +82,12 @@ public class ZipFSCodec extends FileOrDirCodec<VFS> { @Override @Nonnull + public String getVariableName() { + return "zip"; + } + + @Override + @Nonnull public VFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { RunnableHooks hooks = context.getRunnableHooks(); diff --git a/sched/src/com/android/sched/util/codec/ZipInputOutputVFSCodec.java b/sched/src/com/android/sched/util/codec/ZipInputOutputVFSCodec.java index 6d360949..6c6da206 100644 --- a/sched/src/com/android/sched/util/codec/ZipInputOutputVFSCodec.java +++ b/sched/src/com/android/sched/util/codec/ZipInputOutputVFSCodec.java @@ -52,6 +52,12 @@ public class ZipInputOutputVFSCodec extends InputOutputVFSCodec @Override @Nonnull + public String getVariableName() { + return "zip"; + } + + @Override + @Nonnull public InputOutputVFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { RunnableHooks hooks = context.getRunnableHooks(); diff --git a/sched/src/com/android/sched/util/codec/ZipOutputVFSCodec.java b/sched/src/com/android/sched/util/codec/ZipOutputVFSCodec.java index b96a40eb..12c2b01b 100644 --- a/sched/src/com/android/sched/util/codec/ZipOutputVFSCodec.java +++ b/sched/src/com/android/sched/util/codec/ZipOutputVFSCodec.java @@ -50,6 +50,12 @@ public class ZipOutputVFSCodec extends OutputVFSCodec { @Override @Nonnull + public String getVariableName() { + return "zip"; + } + + @Override + @Nonnull public OutputVFS checkString(@Nonnull CodecContext context, @Nonnull final String string) throws ParsingException { RunnableHooks hooks = context.getRunnableHooks(); diff --git a/sched/src/com/android/sched/util/config/ConfigPrinter.java b/sched/src/com/android/sched/util/config/ConfigPrinter.java index 1ce73fde..5ea6a5ab 100644 --- a/sched/src/com/android/sched/util/config/ConfigPrinter.java +++ b/sched/src/com/android/sched/util/config/ConfigPrinter.java @@ -16,11 +16,14 @@ package com.android.sched.util.config; +import com.android.sched.util.codec.VariableName; + import javax.annotation.Nonnull; /** * Interface to a config printer */ +@VariableName("printer") public interface ConfigPrinter { public void printConfig(@Nonnull Config config); } diff --git a/sched/src/com/android/sched/util/config/ConfigPrinterFactory.java b/sched/src/com/android/sched/util/config/ConfigPrinterFactory.java index 29c4bc25..ab69d1c3 100644 --- a/sched/src/com/android/sched/util/config/ConfigPrinterFactory.java +++ b/sched/src/com/android/sched/util/config/ConfigPrinterFactory.java @@ -30,10 +30,9 @@ import javax.annotation.Nonnull; @HasKeyId public class ConfigPrinterFactory { @Nonnull - public static final - ImplementationPropertyId<ConfigPrinter> CONFIG_PRINTER = ImplementationPropertyId.create( - "config.printer", "Define which config printer to use", ConfigPrinter.class) - .addDefaultValue("none"); + public static final ImplementationPropertyId<ConfigPrinter> CONFIG_PRINTER = + ImplementationPropertyId.create("config.printer", "Define which config printer to use", + ConfigPrinter.class).addDefaultValue("none"); @Nonnull public static final PropertyId<OutputStreamFile> CONFIG_PRINTER_FILE = PropertyId.create( diff --git a/sched/src/com/android/sched/util/config/id/BooleanPropertyId.java b/sched/src/com/android/sched/util/config/id/BooleanPropertyId.java index c91a04cd..cef1477e 100644 --- a/sched/src/com/android/sched/util/config/id/BooleanPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/BooleanPropertyId.java @@ -122,6 +122,6 @@ public class BooleanPropertyId extends PropertyId<Boolean> { new Entry<Boolean>("0", Boolean.FALSE) }; - parser = new KeyValueCodec<Boolean>(elements).ignoreCase(); + parser = new KeyValueCodec<Boolean>("bool", elements).ignoreCase(); } } diff --git a/sched/src/com/android/sched/util/config/id/DefaultFactoryPropertyId.java b/sched/src/com/android/sched/util/config/id/DefaultFactoryPropertyId.java index 4d18f7fe..896d1f4a 100644 --- a/sched/src/com/android/sched/util/config/id/DefaultFactoryPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/DefaultFactoryPropertyId.java @@ -34,8 +34,8 @@ import javax.annotation.Nonnull; */ public class DefaultFactoryPropertyId<T> extends PropertyId<DefaultFactory<T>> { @Nonnull - public static <T> DefaultFactoryPropertyId<T> create( - @Nonnull String name, @Nonnull String description, @Nonnull Class<T> type) { + public static <T> DefaultFactoryPropertyId<T> create(@Nonnull String name, + @Nonnull String description, @Nonnull Class<T> type) { return new DefaultFactoryPropertyId<T>(name, description, new DefaultFactorySelector<T>(type)); } diff --git a/sched/src/com/android/sched/util/config/id/EnumPropertyId.java b/sched/src/com/android/sched/util/config/id/EnumPropertyId.java index d98baef0..70e7f8cd 100644 --- a/sched/src/com/android/sched/util/config/id/EnumPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/EnumPropertyId.java @@ -32,9 +32,9 @@ import javax.annotation.Nonnull; */ public class EnumPropertyId<T extends Enum<T>> extends PropertyId<T> { @Nonnull - public static <T extends Enum<T>> EnumPropertyId<T> create( - @Nonnull String name, @Nonnull String description, @Nonnull T[] values) { - return new EnumPropertyId<T>(name, description, new EnumCodec<T>(values)); + public static <T extends Enum<T>> EnumPropertyId<T> create(@Nonnull String name, + @Nonnull String description, @Nonnull Class<T> type, @Nonnull T[] values) { + return new EnumPropertyId<T>(name, description, new EnumCodec<T>(type, values)); } protected EnumPropertyId(@Nonnull String name, @Nonnull String description, diff --git a/sched/src/com/android/sched/util/config/id/ImplementationPropertyId.java b/sched/src/com/android/sched/util/config/id/ImplementationPropertyId.java index 08be31af..801432a7 100644 --- a/sched/src/com/android/sched/util/config/id/ImplementationPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/ImplementationPropertyId.java @@ -34,8 +34,8 @@ import javax.annotation.Nonnull; */ public class ImplementationPropertyId<T> extends PropertyId<T> { @Nonnull - public static <T> ImplementationPropertyId<T> create( - @Nonnull String name, @Nonnull String description, @Nonnull Class<T> type) { + public static <T> ImplementationPropertyId<T> create(@Nonnull String name, + @Nonnull String description, @Nonnull Class<T> type) { return new ImplementationPropertyId<T>(name, description, new ImplementationSelector<T>(type)); } diff --git a/sched/src/com/android/sched/util/config/id/ListPropertyId.java b/sched/src/com/android/sched/util/config/id/ListPropertyId.java index fe4e032e..bee760db 100644 --- a/sched/src/com/android/sched/util/config/id/ListPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/ListPropertyId.java @@ -36,15 +36,9 @@ import javax.annotation.Nonnull; * @param <T> the type of elements in this list */ public class ListPropertyId<T> extends PropertyId<List<T>> { - @Nonnull - public static <T> ListPropertyId<T> create(@Nonnull String name, @Nonnull String description, - @Nonnull String var, @Nonnull StringCodec<T> parser) { - return new ListPropertyId<T>(name, description, new ListCodec<T>(var, parser)); - } - - protected ListPropertyId( - @Nonnull String name, @Nonnull String description, @Nonnull ListCodec<T> parser) { - super(name, description, parser); + public ListPropertyId( + @Nonnull String name, @Nonnull String description, @Nonnull StringCodec<T> parser) { + super(name, description, new ListCodec<T>(parser)); } @Override diff --git a/sched/src/com/android/sched/util/config/id/ProbabilityPropertyId.java b/sched/src/com/android/sched/util/config/id/ProbabilityPropertyId.java index f83165b0..cb3d5eb5 100644 --- a/sched/src/com/android/sched/util/config/id/ProbabilityPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/ProbabilityPropertyId.java @@ -103,5 +103,11 @@ public class ProbabilityPropertyId extends DoublePropertyId { public String getUsage() { return "a probability belonging to [0 (never) .. 1 (always)]"; } + + @Override + @Nonnull + public String getVariableName() { + return "probability"; + } } } diff --git a/sched/src/com/android/sched/util/config/id/PropertyId.java b/sched/src/com/android/sched/util/config/id/PropertyId.java index 1d73382f..854b85e6 100644 --- a/sched/src/com/android/sched/util/config/id/PropertyId.java +++ b/sched/src/com/android/sched/util/config/id/PropertyId.java @@ -18,6 +18,7 @@ package com.android.sched.util.config.id; import com.android.sched.util.HasDescription; import com.android.sched.util.RunnableHooks; +import com.android.sched.util.codec.CheckingException; import com.android.sched.util.codec.CodecContext; import com.android.sched.util.codec.ParsingException; import com.android.sched.util.codec.StringCodec; @@ -113,7 +114,7 @@ public class PropertyId<T> extends KeyId<T, String> implements HasDescription { } if (defaultValue == null && lastException != null) { - throw new ConfigurationError(lastException); + throw new ConfigurationError("Property '" + getName() + "': " + lastException.getMessage()); } defaultValueAvailable = true; @@ -339,9 +340,16 @@ public class PropertyId<T> extends KeyId<T, String> implements HasDescription { return ((PropertyId<T>) (PropertyId.this)).codec.formatValue(value); } + @SuppressWarnings("unchecked") @Override @Nonnull - public IValue<T> check(@Nonnull CodecContext context) { + public IValue<T> check(@Nonnull CodecContext context) throws ParsingException { + try { + ((PropertyId<T>) (PropertyId.this)).codec.checkValue(context, value); + } catch (CheckingException e) { + throw new ParsingException(e.getMessage()); + } + return this; } diff --git a/sched/src/com/android/sched/util/config/id/ReflectFactoryPropertyId.java b/sched/src/com/android/sched/util/config/id/ReflectFactoryPropertyId.java index 88ff72ff..8360fb7d 100644 --- a/sched/src/com/android/sched/util/config/id/ReflectFactoryPropertyId.java +++ b/sched/src/com/android/sched/util/config/id/ReflectFactoryPropertyId.java @@ -34,8 +34,8 @@ import javax.annotation.Nonnull; */ public class ReflectFactoryPropertyId<T> extends PropertyId<ReflectFactory<T>> { @Nonnull - public static <T> ReflectFactoryPropertyId<T> create( - @Nonnull String name, @Nonnull String description, @Nonnull Class<T> type) { + public static <T> ReflectFactoryPropertyId<T> create(@Nonnull String name, + @Nonnull String description, @Nonnull Class<T> type) { return new ReflectFactoryPropertyId<T>(name, description, new ReflectFactorySelector<T>(type)); } diff --git a/sched/src/com/android/sched/util/log/Tracer.java b/sched/src/com/android/sched/util/log/Tracer.java index 78f3ac09..939bda8f 100644 --- a/sched/src/com/android/sched/util/log/Tracer.java +++ b/sched/src/com/android/sched/util/log/Tracer.java @@ -16,6 +16,7 @@ package com.android.sched.util.log; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.log.stats.Statistic; import com.android.sched.util.log.stats.StatisticId; import com.android.sched.util.log.tracer.watcher.ObjectWatcher; @@ -26,6 +27,7 @@ import javax.annotation.Nonnull; /** * Trace performance metrics for internal development purposes. */ +@VariableName("tracer") public interface Tracer { /** * Signals that a new event has started. You must end each event for each diff --git a/sched/src/com/android/sched/util/log/tracer/AbstractTracer.java b/sched/src/com/android/sched/util/log/tracer/AbstractTracer.java index d978aa1f..649a78a8 100644 --- a/sched/src/com/android/sched/util/log/tracer/AbstractTracer.java +++ b/sched/src/com/android/sched/util/log/tracer/AbstractTracer.java @@ -60,10 +60,10 @@ import javax.annotation.Nonnull; public abstract class AbstractTracer implements Tracer { @Nonnull public static final PropertyId<List<WatcherInstaller>> WATCHER_INSTALL = PropertyId.create( - "sched.tracer.watchers", "Define which watchers use for tracing", - new ListCodec<WatcherInstaller>("watcher", - new ImplementationSelector<WatcherInstaller>(WatcherInstaller.class)).setMin(0)) - .addDefaultValue(""); + "sched.tracer.watchers", + "Define which watchers use for tracing", + new ListCodec<WatcherInstaller>(new ImplementationSelector<WatcherInstaller>( + WatcherInstaller.class)).setMin(0)).addDefaultValue(""); @Nonnull private final Logger logger = LoggerFactory.getLogger(); diff --git a/sched/src/com/android/sched/util/log/tracer/ProbeManagerCodec.java b/sched/src/com/android/sched/util/log/tracer/ProbeManagerCodec.java index 7a5b471c..54ef00a7 100644 --- a/sched/src/com/android/sched/util/log/tracer/ProbeManagerCodec.java +++ b/sched/src/com/android/sched/util/log/tracer/ProbeManagerCodec.java @@ -36,7 +36,7 @@ public class ProbeManagerCodec implements StringCodec<ProbeManager> { private final ListCodec<Probe> parser; public ProbeManagerCodec() { - parser = new ListCodec<Probe>("probe", new ImplementationSelector<Probe>(Probe.class)) + parser = new ListCodec<Probe>(new ImplementationSelector<Probe>(Probe.class)) .setMin(1); } @@ -83,6 +83,12 @@ public class ProbeManagerCodec implements StringCodec<ProbeManager> { @Override @Nonnull + public String getVariableName() { + return parser.getVariableName(); + } + + @Override + @Nonnull public List<com.android.sched.util.codec.Parser.ValueDescription> getValueDescriptions() { return parser.getValueDescriptions(); } diff --git a/sched/src/com/android/sched/util/log/tracer/probe/Probe.java b/sched/src/com/android/sched/util/log/tracer/probe/Probe.java index df937e5d..1c7782ce 100644 --- a/sched/src/com/android/sched/util/log/tracer/probe/Probe.java +++ b/sched/src/com/android/sched/util/log/tracer/probe/Probe.java @@ -17,6 +17,7 @@ package com.android.sched.util.log.tracer.probe; import com.android.sched.util.HasDescription; +import com.android.sched.util.codec.VariableName; import javax.annotation.CheckForNull; import javax.annotation.Nonnegative; @@ -25,6 +26,7 @@ import javax.annotation.Nonnull; /** * Abstract class for a Probe. */ +@VariableName("probe") public abstract class Probe implements Comparable<Probe>, HasDescription { public static final int MAX_PRIORITY = 0; public static final int MIN_PRIORITY = 12; diff --git a/sched/src/com/android/sched/util/log/tracer/watcher/WatcherInstaller.java b/sched/src/com/android/sched/util/log/tracer/watcher/WatcherInstaller.java index 65461150..f6ad00de 100644 --- a/sched/src/com/android/sched/util/log/tracer/watcher/WatcherInstaller.java +++ b/sched/src/com/android/sched/util/log/tracer/watcher/WatcherInstaller.java @@ -16,6 +16,7 @@ package com.android.sched.util.log.tracer.watcher; +import com.android.sched.util.codec.VariableName; import com.android.sched.util.log.Tracer; import javax.annotation.Nonnull; @@ -23,6 +24,7 @@ import javax.annotation.Nonnull; /** * A watcher installer interface. */ +@VariableName("watcher") public interface WatcherInstaller { public void install(@Nonnull Tracer tracer); } diff --git a/sched/src/com/android/sched/util/sched/ManagedDataListener.java b/sched/src/com/android/sched/util/sched/ManagedDataListener.java index 10e08c42..c63c7876 100644 --- a/sched/src/com/android/sched/util/sched/ManagedDataListener.java +++ b/sched/src/com/android/sched/util/sched/ManagedDataListener.java @@ -20,6 +20,7 @@ import com.android.sched.item.Item; import com.android.sched.item.ItemManager; import com.android.sched.item.ManagedItem; import com.android.sched.scheduler.ManagedSchedulable; +import com.android.sched.util.codec.VariableName; import javax.annotation.Nonnull; @@ -28,6 +29,7 @@ import javax.annotation.Nonnull; * {@code Schedulable}s, {@code Tag}s, {@code Marker}s, {@code Component}s, {@code Feature}s and * {@code Production}s in the system. */ +@VariableName("listener") public interface ManagedDataListener { public void notifyNewItemManager(@Nonnull ItemManager itemManager); public void notifyNoMoreItemManager(); diff --git a/sched/src/com/android/sched/util/table/ReportPrinter.java b/sched/src/com/android/sched/util/table/ReportPrinter.java index fbe8bd7c..37e2c3f8 100644 --- a/sched/src/com/android/sched/util/table/ReportPrinter.java +++ b/sched/src/com/android/sched/util/table/ReportPrinter.java @@ -16,12 +16,15 @@ package com.android.sched.util.table; +import com.android.sched.util.codec.VariableName; + import javax.annotation.Nonnull; /** * Interface to a {@link Report} printer */ +@VariableName("printer") public interface ReportPrinter { public void printReport(@Nonnull Report report); } diff --git a/sched/src/com/android/sched/util/table/ReportPrinterFactory.java b/sched/src/com/android/sched/util/table/ReportPrinterFactory.java index 50be05c7..022a2054 100644 --- a/sched/src/com/android/sched/util/table/ReportPrinterFactory.java +++ b/sched/src/com/android/sched/util/table/ReportPrinterFactory.java @@ -31,12 +31,11 @@ import javax.annotation.Nonnull; * Factory class to manage {@link ReportPrinter} */ @HasKeyId -public class ReportPrinterFactory{ +public class ReportPrinterFactory { @Nonnull - private static final - ImplementationPropertyId<ReportPrinter> REPORT_PRINTER = ImplementationPropertyId.create( - "sched.report.printer", "Define which report printer to use", ReportPrinter.class) - .addDefaultValue("none"); + private static final ImplementationPropertyId<ReportPrinter> REPORT_PRINTER = + ImplementationPropertyId.create("sched.report.printer", "Define which report printer to use", + ReportPrinter.class).addDefaultValue("none"); @Nonnull public static final PropertyId<OutputStreamFile> REPORT_PRINTER_FILE = PropertyId.create( diff --git a/sched/src/com/android/sched/vfs/Container.java b/sched/src/com/android/sched/vfs/Container.java index 894aead0..7265ad1a 100644 --- a/sched/src/com/android/sched/vfs/Container.java +++ b/sched/src/com/android/sched/vfs/Container.java @@ -16,9 +16,12 @@ package com.android.sched.vfs; +import com.android.sched.util.codec.VariableName; + /** * Container types. */ +@VariableName("container") public enum Container { DIR, ZIP |