summaryrefslogtreecommitdiffstats
path: root/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2017-02-10 08:55:55 +0100
committerMarek Gradzki <mgradzki@cisco.com>2017-02-10 08:53:27 +0000
commitde55d1e7c1fa5517ee6eabcd3fa23e5b5136d64b (patch)
tree057cd5f38c18da91852c2d79168ae41c0c6bfed6 /infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations
parent8450b69800c827ba221351eb0c374fcbd9146593 (diff)
HONEYCOMB-334 - List entry injection for yang data
Major changes - mechanism to inject list entries by key - provided processor registry to hide explicit implementations Minor changes - general refactoring Test cases - list in root of model - list under container - list under nested container - list in augmentation Change-Id: I9abe1ce5f9176c132ad88627b135516574e40e06 Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations')
-rw-r--r--infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations/InjectablesProcessor.java33
1 files changed, 16 insertions, 17 deletions
diff --git a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations/InjectablesProcessor.java b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations/InjectablesProcessor.java
index c364938ed..216d8353b 100644
--- a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations/InjectablesProcessor.java
+++ b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/annotations/InjectablesProcessor.java
@@ -16,22 +16,21 @@
package io.fd.honeycomb.test.tools.annotations;
-import static io.fd.honeycomb.test.tools.annotations.InjectTestData.NO_ID;
-
-import com.google.common.base.Optional;
-import java.lang.reflect.Field;
-import java.lang.reflect.Parameter;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
import org.apache.commons.lang3.reflect.FieldUtils;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.data.rev150105.$YangModuleInfoImpl;
import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
+
+import javax.annotation.Nonnull;
+import java.lang.reflect.Field;
+import java.lang.reflect.Parameter;
+import java.util.List;
+import java.util.Set;
+
+import static io.fd.honeycomb.test.tools.annotations.InjectTestData.NO_ID;
/**
* Common logic for @InjectTestData
@@ -54,23 +53,23 @@ public interface InjectablesProcessor {
return parameter.getAnnotation(InjectTestData.class).resourcePath();
}
- default Optional<String> instanceIdentifier(final Field field) {
+ default YangInstanceIdentifier instanceIdentifier(@Nonnull final AbstractModuleStringInstanceIdentifierCodec parser, @Nonnull final Field field) {
final String identifier = field.getAnnotation(InjectTestData.class).id();
// == used instead of equals to ensure constant was used
if (NO_ID.equals(identifier)) {
- return Optional.absent();
+ return getRootInstanceIdentifier(field.getType());
} else {
- return Optional.of(identifier);
+ return parser.deserialize(identifier);
}
}
- default Optional<String> instanceIdentifier(final Parameter parameter) {
+ default YangInstanceIdentifier instanceIdentifier(@Nonnull final AbstractModuleStringInstanceIdentifierCodec parser, @Nonnull final Parameter parameter) {
final String identifier = parameter.getAnnotation(InjectTestData.class).id();
// == used instead of equals to ensure constant was used
if (NO_ID.equals(identifier)) {
- return Optional.absent();
+ return getRootInstanceIdentifier(parameter.getType());
} else {
- return Optional.of(identifier);
+ return parser.deserialize(identifier);
}
}
@@ -83,7 +82,7 @@ public interface InjectablesProcessor {
}
}
- default YangInstanceIdentifier getRootInstanceIdentifier(final Class type) {
+ static YangInstanceIdentifier getRootInstanceIdentifier(final Class type) {
try {
return YangInstanceIdentifier.of(QName.class.cast(type.getField("QNAME").get(null)));
} catch (IllegalAccessException e) {