summaryrefslogtreecommitdiffstats
path: root/sched/src/com/android/sched
diff options
context:
space:
mode:
authorJean-Philippe Lesot <jplesot@google.com>2015-03-13 23:14:05 +0100
committerJean-Philippe Lesot <jplesot@google.com>2015-03-16 18:44:07 +0100
commit39a69cd3805b776a467c43be8b7e872e268f1187 (patch)
tree4401314bae7ec7fe7153a7d1aaf50899960340e1 /sched/src/com/android/sched
parenta04b97dc08562bf00933f009ea39c87c8903a4e7 (diff)
downloadtoolchain_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')
-rw-r--r--sched/src/com/android/sched/build/SchedAnnotationProcessor.java1
-rw-r--r--sched/src/com/android/sched/item/ItemManager.java2
-rw-r--r--sched/src/com/android/sched/item/onlyfor/OnlyForType.java3
-rw-r--r--sched/src/com/android/sched/scheduler/MultiWorkersScheduleInstance.java2
-rw-r--r--sched/src/com/android/sched/scheduler/MultipleScheduleInstance.java13
-rw-r--r--sched/src/com/android/sched/scheduler/PlanPrinter.java3
-rw-r--r--sched/src/com/android/sched/scheduler/Planner.java2
-rw-r--r--sched/src/com/android/sched/scheduler/SchedulableManager.java2
-rw-r--r--sched/src/com/android/sched/scheduler/ScheduleInstance.java2
-rw-r--r--sched/src/com/android/sched/util/codec/ConvertCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/DirectDirInputOutputVFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/DirectDirOutputVFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/DirectFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/DirectoryCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/DirectoryInputVFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/DoubleCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/EnumCodec.java16
-rw-r--r--sched/src/com/android/sched/util/codec/InputFileOrDirectoryCodec.java7
-rw-r--r--sched/src/com/android/sched/util/codec/InputVFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/KeyValueCodec.java12
-rw-r--r--sched/src/com/android/sched/util/codec/KeywordsCodec.java15
-rw-r--r--sched/src/com/android/sched/util/codec/ListCodec.java12
-rw-r--r--sched/src/com/android/sched/util/codec/LongCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/MessageDigestCodec.java2
-rw-r--r--sched/src/com/android/sched/util/codec/OrCodec.java14
-rw-r--r--sched/src/com/android/sched/util/codec/PairCodec.java22
-rw-r--r--sched/src/com/android/sched/util/codec/Parser.java6
-rw-r--r--sched/src/com/android/sched/util/codec/PathCodec.java7
-rw-r--r--sched/src/com/android/sched/util/codec/Selector.java11
-rw-r--r--sched/src/com/android/sched/util/codec/StreamCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/StringValueCodec.java11
-rw-r--r--sched/src/com/android/sched/util/codec/VariableName.java31
-rw-r--r--sched/src/com/android/sched/util/codec/ZipFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/ZipInputOutputVFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/codec/ZipOutputVFSCodec.java6
-rw-r--r--sched/src/com/android/sched/util/config/ConfigPrinter.java3
-rw-r--r--sched/src/com/android/sched/util/config/ConfigPrinterFactory.java7
-rw-r--r--sched/src/com/android/sched/util/config/id/BooleanPropertyId.java2
-rw-r--r--sched/src/com/android/sched/util/config/id/DefaultFactoryPropertyId.java4
-rw-r--r--sched/src/com/android/sched/util/config/id/EnumPropertyId.java6
-rw-r--r--sched/src/com/android/sched/util/config/id/ImplementationPropertyId.java4
-rw-r--r--sched/src/com/android/sched/util/config/id/ListPropertyId.java12
-rw-r--r--sched/src/com/android/sched/util/config/id/ProbabilityPropertyId.java6
-rw-r--r--sched/src/com/android/sched/util/config/id/PropertyId.java12
-rw-r--r--sched/src/com/android/sched/util/config/id/ReflectFactoryPropertyId.java4
-rw-r--r--sched/src/com/android/sched/util/log/Tracer.java2
-rw-r--r--sched/src/com/android/sched/util/log/tracer/AbstractTracer.java8
-rw-r--r--sched/src/com/android/sched/util/log/tracer/ProbeManagerCodec.java8
-rw-r--r--sched/src/com/android/sched/util/log/tracer/probe/Probe.java2
-rw-r--r--sched/src/com/android/sched/util/log/tracer/watcher/WatcherInstaller.java2
-rw-r--r--sched/src/com/android/sched/util/sched/ManagedDataListener.java2
-rw-r--r--sched/src/com/android/sched/util/table/ReportPrinter.java3
-rw-r--r--sched/src/com/android/sched/util/table/ReportPrinterFactory.java9
-rw-r--r--sched/src/com/android/sched/vfs/Container.java3
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