import java.util.Set;\r
import java.util.concurrent.Future;\r
\r
+import org.opendaylight.yangtools.binding.generator.util.BindingTypes;\r
import org.opendaylight.yangtools.binding.generator.util.ReferencedTypeImpl;\r
import org.opendaylight.yangtools.binding.generator.util.Types;\r
import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;\r
import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTypeBuilderImpl;\r
import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;\r
import org.opendaylight.yangtools.sal.binding.generator.spi.TypeProvider;\r
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;\r
import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
import org.opendaylight.yangtools.sal.binding.model.api.ParameterizedType;\r
throw new IllegalArgumentException("Reference to Set of Notification Definitions in module "\r
+ module.getName() + " cannot be NULL.");\r
}\r
-\r
- final String basePackageName = moduleNamespaceToPackageName(module);\r
- final List<Type> genNotifyTypes = new ArrayList<>();\r
final Set<NotificationDefinition> notifications = module.getNotifications();\r
-\r
+ if(notifications.isEmpty()) return Collections.emptyList();\r
+ \r
+ final GeneratedTypeBuilder listenerInterface = moduleTypeBuilder(module, "Listener");\r
+ listenerInterface.addImplementsType(BindingTypes.NOTIFICATION_LISTENER);\r
+ \r
+ \r
+ \r
+ final String basePackageName = moduleNamespaceToPackageName(module);\r
+ final List<Type> generatedTypes = new ArrayList<>();\r
+ \r
+ \r
for (final NotificationDefinition notification : notifications) {\r
if (notification != null) {\r
DataNodeIterator it = new DataNodeIterator(notification);\r
// Containers\r
for (ContainerSchemaNode node : it.allContainers()) {\r
if (!node.isAddedByUses()) {\r
- genNotifyTypes.add(containerToGenType(basePackageName, node));\r
+ generatedTypes.add(containerToGenType(basePackageName, node));\r
}\r
}\r
// Lists\r
for (ListSchemaNode node : it.allLists()) {\r
if (!node.isAddedByUses()) {\r
- genNotifyTypes.addAll(listToGenType(basePackageName, node));\r
+ generatedTypes.addAll(listToGenType(basePackageName, node));\r
}\r
}\r
- final GeneratedTypeBuilder notificationTypeBuilder = addDefaultInterfaceDefinition(basePackageName,\r
+ final GeneratedTypeBuilder notificationInterface = addDefaultInterfaceDefinition(basePackageName,\r
notification);\r
- notificationTypeBuilder.addImplementsType(Types\r
+ notificationInterface.addImplementsType(Types\r
.typeForClass(org.opendaylight.yangtools.yang.binding.Notification.class));\r
// Notification object\r
- resolveDataSchemaNodes(basePackageName, notificationTypeBuilder, notification.getChildNodes());\r
- genNotifyTypes.add(notificationTypeBuilder.toInstance());\r
+ resolveDataSchemaNodes(basePackageName, notificationInterface, notification.getChildNodes());\r
+ \r
+ listenerInterface.addMethod("on"+notificationInterface.getName()) //\r
+ .setAccessModifier(AccessModifier.PUBLIC)\r
+ .addParameter(notificationInterface, "notification")\r
+ .setReturnType(Types.VOID);\r
+ \r
+ generatedTypes.add(notificationInterface.toInstance());\r
}\r
}\r
- return genNotifyTypes;\r
+ generatedTypes.add(listenerInterface.toInstance());\r
+ return generatedTypes;\r
}\r
\r
/**\r