import static org.opendaylight.mdsal.binding.javav2.generator.impl.GenHelperUtil.addRawInterfaceDefinition;
import static org.opendaylight.mdsal.binding.javav2.generator.impl.GenHelperUtil.moduleTypeBuilder;
import static org.opendaylight.mdsal.binding.javav2.generator.impl.GenHelperUtil.processUsesImplements;
+import static org.opendaylight.mdsal.binding.javav2.generator.impl.GenHelperUtil.resolveDataSchemaNodesCheck;
import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.encodeAngleBrackets;
-import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.packageNameForGeneratedType;
import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingTypes.ACTION;
import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingTypes.INPUT;
import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingTypes.INSTANCE_IDENTIFIER;
import com.google.common.annotations.Beta;
import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
+import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider;
import org.opendaylight.mdsal.binding.javav2.generator.util.BindingTypes;
import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
import org.opendaylight.yangtools.yang.model.api.ActionNodeContainer;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
return Optional.absent();
}
+ private static void resolveActions(final DataNodeContainer parent, final Module module,
+ final SchemaContext schemaContext, final boolean verboseClassComments,
+ Map<String, Map<String, GeneratedTypeBuilder>> genTypeBuilders, final Map<Module, ModuleContext> genCtx,
+ TypeProvider typeProvider, final BindingNamespaceType namespaceType) {
+ Preconditions.checkNotNull(parent, "Parent should not be NULL.");
+ final Collection<DataSchemaNode> potentials = parent.getChildNodes();
+ for (DataSchemaNode potential : potentials) {
+ if (resolveDataSchemaNodesCheck(module, schemaContext,potential)) {
+ BindingNamespaceType namespaceType1 = namespaceType;
+ if (namespaceType.equals(BindingNamespaceType.Data)) {
+ if (potential instanceof GroupingDefinition) {
+ namespaceType1 = BindingNamespaceType.Grouping;
+ }
+ }
+
+ if (potential instanceof ActionNodeContainer) {
+ final Set<ActionDefinition> actions = ((ActionNodeContainer) potential).getActions();
+ for (ActionDefinition action : actions) {
+ genCtx.get(module).addTopLevelNodeType(resolveOperation(potential, action, module,
+ schemaContext, verboseClassComments, genTypeBuilders, genCtx, typeProvider, true,
+ namespaceType1));
+ }
+ }
+
+ if (potential instanceof DataNodeContainer) {
+ resolveActions((DataNodeContainer) potential, module, schemaContext, verboseClassComments,
+ genTypeBuilders, genCtx, typeProvider, namespaceType1);
+ }
+ }
+ }
+ }
+
/**
* Converts Yang 1.1 <b>Actions</b> to list of <code>Type</code> objects.
* @param module module from which is obtained set of all Action objects to
* @return generated context
*/
static Map<Module, ModuleContext> actionMethodsToGenType(final Module module, Map<Module, ModuleContext> genCtx,
- final SchemaContext schemaContext, final boolean verboseClassComments, Map<String, Map<String,
- GeneratedTypeBuilder>> genTypeBuilders, TypeProvider typeProvider) {
+ final SchemaContext schemaContext, final boolean verboseClassComments,
+ Map<String, Map<String, GeneratedTypeBuilder>> genTypeBuilders, TypeProvider typeProvider) {
checkModuleAndModuleName(module);
- final Collection<DataSchemaNode> potentials = module.getChildNodes();
- for (DataSchemaNode potential : potentials) {
- if (potential instanceof ActionNodeContainer) {
- final Set<ActionDefinition> actions = ((ActionNodeContainer) potential).getActions();
- for (ActionDefinition action: actions) {
- genCtx.get(module).addTopLevelNodeType(resolveOperation(potential, action, module,
- schemaContext, verboseClassComments, genTypeBuilders, genCtx, typeProvider, true,
- BindingNamespaceType.Data));
- }
- }
- }
+ resolveActions(module, module, schemaContext, verboseClassComments, genTypeBuilders, genCtx, typeProvider,
+ BindingNamespaceType.Data);
return genCtx;
}
sb.append("Rpc");
}
final GeneratedTypeBuilder interfaceBuilder = moduleTypeBuilder(module, sb.toString(),
- verboseClassComments);
+ verboseClassComments, genCtx.get(module));
final String basePackageName = interfaceBuilder.getPackageName();
GeneratedTypeBuilder>> genTypeBuilders, final Map<Module, ModuleContext> genCtx, final boolean isInput,
final BindingNamespaceType namespaceType) {
final GeneratedTypeBuilder nodeType = addRawInterfaceDefinition(basePackageName, operationNode, schemaContext,
- operationName, "", verboseClassComments, genTypeBuilders, namespaceType);
+ operationName, "", verboseClassComments, genTypeBuilders, namespaceType, genCtx.get(module));
addImplementedInterfaceFromUses(operationNode, nodeType, genCtx);
nodeType.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, parent, parameterizedTypeFor
(BindingTypes.ITEM, parent)));