import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
import org.opendaylight.yangtools.yang.binding.Augmentable;
import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.Item;
final Class<D> bindingClass = getBindingClass();
final ImmutableMap<Method, ValueNodeCodecContext> tmpLeaves = factory().getLeafNodes(bindingClass, getSchema());
- final Map<Class<?>, Method> clsToMethod = BindingReflections.getChildrenClassToMethod(bindingClass);
+ final Map<Class<? extends DataContainer>, Method> clsToMethod =
+ BindingReflections.getChildrenClassToMethod(bindingClass);
final Map<YangInstanceIdentifier.PathArgument, NodeContextSupplier> byYangBuilder = new HashMap<>();
final Map<Class<?>, DataContainerCodecPrototype<?>> byStreamClassBuilder = new HashMap<>();
this.leafChild = leafChildBuilder.build();
final Map<Method, Class<?>> tmpDataObjects = new HashMap<>();
- for (final Entry<Class<?>, Method> childDataObj : clsToMethod.entrySet()) {
+ for (final Entry<Class<? extends DataContainer>, Method> childDataObj : clsToMethod.entrySet()) {
final Method method = childDataObj.getValue();
verify(!method.isDefault(), "Unexpected default method %s in %s", method, bindingClass);
- final Class<?> retClass = childDataObj.getKey();
+ final Class<? extends DataContainer> retClass = childDataObj.getKey();
if (OpaqueObject.class.isAssignableFrom(retClass)) {
// Filter OpaqueObjects, they are not containers
continue;
return value;
}
- private DataContainerCodecPrototype<?> loadChildPrototype(final Class<?> childClass) {
+ private DataContainerCodecPrototype<?> loadChildPrototype(final Class<? extends DataContainer> childClass) {
final DataSchemaNode childSchema = childNonNull(
factory().getRuntimeContext().findChildSchemaDefinition(getSchema(), namespace(), childClass), childClass,
"Node %s does not have child named %s", getSchema(), childClass);
/**
* Scans supplied class and returns an iterable of all data children classes.
*
- * @param type
- * YANG Modeled Entity derived from DataContainer
+ * @param type YANG Modeled Entity derived from DataContainer
* @return Iterable of all data children, which have YANG modeled entity
*/
- public static Map<Class<?>, Method> getChildrenClassToMethod(final Class<?> type) {
- return getChildrenClassToMethod(type, BindingMapping.GETTER_PREFIX);
+ public static Map<Class<? extends DataContainer>, Method> getChildrenClassToMethod(final Class<?> type) {
+ return getChildClassToMethod(type, BindingMapping.GETTER_PREFIX);
+ }
+
+ @Beta
+ public static Map<Class<? extends DataContainer>, Method> getChildrenClassToNonnullMethod(final Class<?> type) {
+ return getChildClassToMethod(type, BindingMapping.NONNULL_PREFIX);
}
- private static Map<Class<?>, Method> getChildrenClassToMethod(final Class<?> type, final String prefix) {
+ private static Map<Class<? extends DataContainer>, Method> getChildClassToMethod(final Class<?> type,
+ final String prefix) {
checkArgument(type != null, "Target type must not be null");
checkArgument(DataContainer.class.isAssignableFrom(type), "Supplied type %s must be derived from DataContainer",
type);
- Map<Class<?>, Method> ret = new HashMap<>();
+ Map<Class<? extends DataContainer>, Method> ret = new HashMap<>();
for (Method method : type.getMethods()) {
Optional<Class<? extends DataContainer>> entity = getYangModeledReturnType(method, prefix);
if (entity.isPresent()) {
return ret;
}
- @Beta
- public static Map<Class<?>, Method> getChildrenClassToNonnullMethod(final Class<?> type) {
- return getChildrenClassToMethod(type, BindingMapping.NONNULL_PREFIX);
- }
-
private static Optional<Class<? extends DataContainer>> getYangModeledReturnType(final Method method,
final String prefix) {
final String methodName = method.getName();