Rework extension registries to track dependencies 62/3562/1
authorRobert Varga <rovarga@cisco.com>
Sun, 8 Dec 2013 08:31:01 +0000 (09:31 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 9 Dec 2013 08:24:47 +0000 (09:24 +0100)
Change-Id: Ib6f8080d0b7f7cfcbcf2fa06047a6ff08a6c0930
Signed-off-by: Robert Varga <rovarga@cisco.com>
17 files changed:
bgp/linkstate-config/src/main/java/org/opendaylight/controller/config/yang/bgp/linkstate/LinkstateModule.java
bgp/linkstate-config/src/main/yang/config-bgp-linkstate.yang
bgp/parser-spi-config/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModule.java
bgp/parser-spi-config/src/main/yang/config-bgp-parser-spi.yang
bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/AbstractBGPExtensionProviderActivator.java
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModule.java
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPRIBModule.java
bgp/rib-impl-config/src/main/yang/bgp-rib-impl.yang
bgp/rib-spi-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/spi/RIBExtensionsImplModule.java
bgp/rib-spi-config/src/main/yang/config-bgp-rib-spi.yang
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractRIBExtensionProviderActivator.java
pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/BasePCEPParserModule.java
pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/CrabbeInitiatedPCEPParserModule.java
pcep/impl-config/src/main/yang/odl-pcep-impl-cfg.yang
pcep/spi-config/src/main/java/org/opendaylight/controller/config/yang/pcep/spi/SimplePCEPExtensionProviderContextModule.java
pcep/spi-config/src/main/yang/config-pcep-spi.yang
pcep/spi/src/main/java/org/opendaylight/protocol/pcep/spi/pojo/AbstractPCEPExtensionProviderActivator.java

index 046709bd8d06bca983875fd930305d337dd5a648..2c530dce887b9cb46e17d64cd509073e3bda4dd3 100644 (file)
@@ -12,6 +12,7 @@ package org.opendaylight.controller.config.yang.bgp.linkstate;
 import org.opendaylight.protocol.bgp.linkstate.BGPActivator;
 import org.opendaylight.protocol.bgp.linkstate.RIBActivator;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext;
 
@@ -37,24 +38,10 @@ public final class LinkstateModule extends org.opendaylight.controller.config.ya
 
        @Override
        public java.lang.AutoCloseable createInstance() {
-               final RIBExtensionProviderContext ribctx = getRibExtensionsDependency();
-               final RIBExtensionProviderActivator ribact;
-               if (ribctx != null) {
-                       ribact = new RIBActivator();
-                       ribact.startRIBExtensionProvider(ribctx);
-               } else {
-                       ribact = null;
-               }
-
-               final BGPExtensionProviderActivator bgpact;
-               if (getBgpExtensionsDependency() != null) {
-                       bgpact = new BGPActivator();
-                       bgpact.start(getBgpExtensionsDependency());
-               } else {
-                       bgpact = null;
-               }
+               final class LinkstateExtension implements AutoCloseable, BGPExtensionProviderActivator, RIBExtensionProviderActivator {
+                       final BGPExtensionProviderActivator bgpact = new BGPActivator();
+                       final RIBExtensionProviderActivator ribact = new RIBActivator();
 
-               return new AutoCloseable() {
                        @Override
                        public void close() {
                                if (bgpact != null) {
@@ -64,6 +51,29 @@ public final class LinkstateModule extends org.opendaylight.controller.config.ya
                                        ribact.stopRIBExtensionProvider();
                                }
                        }
-               };
+
+                       @Override
+                       public void startRIBExtensionProvider(
+                                       final RIBExtensionProviderContext context) {
+                               ribact.startRIBExtensionProvider(context);
+                       }
+
+                       @Override
+                       public void stopRIBExtensionProvider() {
+                               ribact.stopRIBExtensionProvider();
+                       }
+
+                       @Override
+                       public void start(final BGPExtensionProviderContext context) {
+                               bgpact.start(context);
+                       }
+
+                       @Override
+                       public void stop() {
+                               bgpact.stop();
+                       }
+               }
+
+               return new LinkstateExtension();
        }
 }
index d7811f627491d224ad37c82e5f16254e22a525ce..6bcdd44b61b36336a25a3d52fbecef648eb885cc 100644 (file)
@@ -30,29 +30,14 @@ module config-bgp-linkstate {
 
     identity bgp-linkstate {
         base config:module-type;
-//        config:provided-service bgpl:listener;
+        config:provided-service bgpspi:extension;
+        config:provided-service ribspi:extension;
         config:java-name-prefix Linkstate;
     }
 
     augment "/config:modules/config:module/config:configuration" {
         case bgp-linkstate {
             when "/config:modules/config:module/config:type = 'bgp-linkstate'";
-
-            container bgp-extensions {
-                uses config:service-ref {
-                    refine type {
-                        config:required-identity bgpspi:extensions;
-                    }
-                }
-            }
-
-            container rib-extensions {
-                uses config:service-ref {
-                    refine type {
-                        config:required-identity ribspi:extensions;
-                    }
-                }
-            }
         }
     }
 }
index a6015fd2cbf2e875c042a8390ffb0e67c05ff323..4f91cf696b8e4ff6532a99644c60c6e64cccd261 100644 (file)
@@ -9,6 +9,7 @@
  */
 package org.opendaylight.controller.config.yang.bgp.parser.spi;
 
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleBGPExtensionProviderContext;
 
 /**
@@ -39,10 +40,16 @@ org.opendaylight.controller.config.yang.bgp.parser.spi.AbstractSimpleBGPExtensio
                final class SimpleBGPExtensionProviderContextAutoCloseable extends SimpleBGPExtensionProviderContext implements AutoCloseable {
                        @Override
                        public void close() {
-                               // Do-nothing
+                               for (final BGPExtensionProviderActivator e : getExtensionDependency()) {
+                                       e.stop();
+                               }
                        }
                }
 
-               return new SimpleBGPExtensionProviderContextAutoCloseable();
+               final SimpleBGPExtensionProviderContextAutoCloseable ret = new SimpleBGPExtensionProviderContextAutoCloseable();
+               for (final BGPExtensionProviderActivator e : getExtensionDependency()) {
+                       e.start(ret);
+               }
+               return ret;
        }
 }
index 7e09f37b9e40952371bddb94f6d2b261dc793048..eeb7588b9a36e7c20f124df4c85b02784a466794 100644 (file)
@@ -44,6 +44,14 @@ module config-bgp-parser-spi {
         config:java-class "org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext";
     }
 
+    identity extension {
+        description
+            "Service representing a BGP parser extension.";
+
+        base "config:service-type";
+        config:java-class "org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator";
+    }
+
     identity bgp-extensions-impl {
         base config:module-type;
         config:provided-service extensions;
@@ -53,6 +61,15 @@ module config-bgp-parser-spi {
     augment "/config:modules/config:module/config:configuration" {
         case bgp-extensions-impl {
             when "/config:modules/config:module/config:type = 'bgp-extensions-impl'";
+
+            list extension {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity extension;
+                    }
+                }
+            }
         }
     }
 }
index 361beee806a833ec5027e1a99aa57d86e5f4d0a1..09b65c2bc08c74c7a4f82151c1deafb45e53467e 100644 (file)
@@ -18,7 +18,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
-public abstract class AbstractBGPExtensionProviderActivator implements BGPExtensionProviderActivator {
+public abstract class AbstractBGPExtensionProviderActivator implements AutoCloseable, BGPExtensionProviderActivator {
        private static final Logger LOG = LoggerFactory.getLogger(AbstractBGPExtensionProviderActivator.class);
 
        @GuardedBy("this")
@@ -48,4 +48,9 @@ public abstract class AbstractBGPExtensionProviderActivator implements BGPExtens
 
                this.registrations = null;
        }
+
+       @Override
+       public final void close() {
+               stop();
+       }
 }
index 3f357a7b2b52ef61b1d8381edf3c5c4d01c90cfe..212bdc1b4158fb7275d2810abfb4ed96b403a379 100644 (file)
@@ -10,7 +10,6 @@
 package org.opendaylight.controller.config.yang.bgp.rib.impl;
 
 import org.opendaylight.protocol.bgp.parser.impl.BGPActivator;
-import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
 
 /**
  *
@@ -34,14 +33,6 @@ public final class BaseBGPParserModule extends org.opendaylight.controller.confi
 
        @Override
        public java.lang.AutoCloseable createInstance() {
-               final BGPExtensionProviderActivator act = new BGPActivator();
-
-               act.start(getBgpExtensionsDependency());
-               return new AutoCloseable() {
-                       @Override
-                       public void close() {
-                               act.stop();
-                       }
-               };
+               return new BGPActivator();
        }
 }
index 38ceb97a41a9dbf9a211f7b5626d208b8fecf9fd..7ad276f6d3348ab5b5a873796194656e55b23e43 100644 (file)
@@ -34,14 +34,6 @@ public final class BaseBGPRIBModule extends org.opendaylight.controller.config.y
 
        @Override
        public java.lang.AutoCloseable createInstance() {
-               final RIBActivator act = new RIBActivator();
-               act.startRIBExtensionProvider(getRibExtensionsDependency());
-
-               return new AutoCloseable() {
-                       @Override
-                       public void close() {
-                               act.stopRIBExtensionProvider();
-                       }
-               };
+               return new RIBActivator();
        }
 }
index 94f0cbb8d939f77d94c7bf8c96ae388093983a04..025ce106709768d083f8a7a6ddc90951c0d94716 100644 (file)
@@ -36,20 +36,12 @@ module bgp-rib-impl {
     identity base-bgp-parser {
         base config:module-type;
         config:java-name-prefix BaseBGPParser;
+        config:provided-service bgpspi:extension;
     }
 
     augment "/config:modules/config:module/config:configuration" {
         case base-bgp-parser {
             when "/config:modules/config:module/config:type = 'base-bgp-parser'";
-
-            container bgp-extensions {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity bgpspi:extensions;
-                    }
-                }
-            }
         }
     }
 
@@ -177,21 +169,13 @@ module bgp-rib-impl {
 
     identity base-bgp-rib {
         base config:module-type;
+        config:provided-service ribspi:extension;
         config:java-name-prefix BaseBGPRIB;
     }
 
     augment "/config:modules/config:module/config:configuration" {
         case base-bgp-rib {
             when "/config:modules/config:module/config:type = 'base-bgp-rib'";
-
-            container rib-extensions {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity ribspi:extensions;
-                    }
-                }
-            }
         }
     }
 
index 23da06691ef79d085bdab709da6fd61e59dda662..0c5cf6ae41c8b26586cef7fe06b0faa7afd42ae3 100644 (file)
@@ -9,6 +9,7 @@
  */
 package org.opendaylight.controller.config.yang.bgp.rib.spi;
 
+import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext;
 
 /**
@@ -36,10 +37,17 @@ public final class RIBExtensionsImplModule extends org.opendaylight.controller.c
                final class RIBExtensionProviderContextImplCloseable extends SimpleRIBExtensionProviderContext implements AutoCloseable {
                        @Override
                        public void close() {
-
+                               for (RIBExtensionProviderActivator e : getExtensionDependency()) {
+                                       e.stopRIBExtensionProvider();;
+                               }
                        }
                }
 
-               return new RIBExtensionProviderContextImplCloseable();
+               final RIBExtensionProviderContextImplCloseable ret = new RIBExtensionProviderContextImplCloseable();
+               for (RIBExtensionProviderActivator e : getExtensionDependency()) {
+                       e.startRIBExtensionProvider(ret);
+               }
+
+               return ret;
        }
 }
index 10c5f0b39351cae0a6937f6aab1ba114eaa29a07..5c1281f535358622da89a8ac2925e0169d7c0e2a 100644 (file)
@@ -44,6 +44,14 @@ module config-bgp-rib-spi {
         config:java-class "org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext";
     }
 
+    identity extension {
+        description
+            "Service representing a BGP RIB extension.";
+
+        base "config:service-type";
+        config:java-class "org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator";
+    }
+
     identity bgp-rib-extensions-impl {
         base config:module-type;
         config:provided-service extensions;
@@ -53,6 +61,15 @@ module config-bgp-rib-spi {
     augment "/config:modules/config:module/config:configuration" {
         case bgp-rib-extensions-impl {
             when "/config:modules/config:module/config:type = 'bgp-rib-extensions-impl'";
+
+            list extension {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity extension;
+                    }
+                }
+            }
         }
     }
 
index 81ba61e691777f98ae63e0da89fa4232b8673acc..d66187779658ea7ed2f0643a7e45f7a38bad3e60 100644 (file)
@@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
-public abstract class AbstractRIBExtensionProviderActivator implements RIBExtensionProviderActivator {
+public abstract class AbstractRIBExtensionProviderActivator implements AutoCloseable, RIBExtensionProviderActivator {
        private static final Logger LOG = LoggerFactory.getLogger(AbstractRIBExtensionProviderActivator.class);
 
        @GuardedBy("this")
@@ -46,4 +46,9 @@ public abstract class AbstractRIBExtensionProviderActivator implements RIBExtens
 
                this.registrations = null;
        }
+
+       @Override
+       public final void close() {
+               stopRIBExtensionProvider();
+       }
 }
index 33b03cc070ad04098f4ba558ffbc453812fea6e9..235591d7cc60122774fa2ed4b43fc5c4b93d8d59 100644 (file)
@@ -10,7 +10,6 @@
 package org.opendaylight.controller.config.yang.pcep.impl;
 
 import org.opendaylight.protocol.pcep.impl.Activator;
-import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
 
 /**
  *
@@ -30,13 +29,6 @@ public final class BasePCEPParserModule extends org.opendaylight.controller.conf
 
        @Override
        public java.lang.AutoCloseable createInstance() {
-               final PCEPExtensionProviderActivator act = new Activator();
-               act.start(getPcepExtensionsDependency());
-               return new AutoCloseable() {
-                       @Override
-                       public void close() {
-                               act.stop();
-                       }
-               };
+               return new Activator();
        }
 }
index 6f04e40f9301227488e5458476e63919fff8bcae..5d5d4a8ff6156ca7bbee2843344a59dd2c85ebeb 100644 (file)
@@ -10,7 +10,6 @@
 package org.opendaylight.controller.config.yang.pcep.impl;
 
 import org.opendaylight.protocol.pcep.impl.CrabbeInitiatedActivator;
-import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
 
 /**
  *
@@ -30,13 +29,6 @@ public final class CrabbeInitiatedPCEPParserModule extends org.opendaylight.cont
 
        @Override
        public java.lang.AutoCloseable createInstance() {
-               final PCEPExtensionProviderActivator act = new CrabbeInitiatedActivator();
-               act.start(getPcepExtensionsDependency());
-               return new AutoCloseable() {
-                       @Override
-                       public void close() {
-                               act.stop();
-                       }
-               };
+               return new CrabbeInitiatedActivator();
        }
 }
index d757cbfedac003fe99a8bd428157c3b9c0660a3e..3c3faf510a8fdbc13f2fe389e38fd9395690978c 100644 (file)
@@ -36,41 +36,25 @@ module odl-pcep-impl-cfg {
 
     identity pcep-parser-base {
         base config:module-type;
+        config:provided-service spi:extension;
         config:java-name-prefix BasePCEPParser;
     }
 
     augment "/config:modules/config:module/config:configuration" {
         case pcep-parser-base {
             when "/config:modules/config:module/config:type = 'pcep-parser-base'";
-
-            container pcep-extensions {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity spi:extensions;
-                    }
-                }
-            }
         }
     }
 
     identity pcep-parser-crabbe-initiated {
         base config:module-type;
+        config:provided-service spi:extension;
         config:java-name-prefix CrabbeInitiatedPCEPParser;
     }
 
     augment "/config:modules/config:module/config:configuration" {
         case pcep-parser-crabbe-initiated {
             when "/config:modules/config:module/config:type = 'pcep-parser-crabbe-initiated'";
-
-            container pcep-extensions {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity spi:extensions;
-                    }
-                }
-            }
         }
     }
 
index 5631dc99539131693bd636bfc029fc634bf53f63..7c13db32b4ab254b7c74a4608b4b3212a62c289d 100644 (file)
@@ -1,45 +1,53 @@
 /**
-* Generated file
-
-* Generated from: yang module name: config-pcep-spi  yang module local name: pcep-extensions-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Mon Nov 18 14:32:53 CET 2013
-*
-* Do not modify this file unless it is present under src/main directory
-*/
+ * Generated file
+
+ * Generated from: yang module name: config-pcep-spi  yang module local name: pcep-extensions-impl
+ * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+ * Generated at: Mon Nov 18 14:32:53 CET 2013
+ *
+ * Do not modify this file unless it is present under src/main directory
+ */
 package org.opendaylight.controller.config.yang.pcep.spi;
 
+import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
 import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
 
 /**
-*
-*/
+ *
+ */
 public final class SimplePCEPExtensionProviderContextModule extends org.opendaylight.controller.config.yang.pcep.spi.AbstractSimplePCEPExtensionProviderContextModule
 {
 
-    public SimplePCEPExtensionProviderContextModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
+       public SimplePCEPExtensionProviderContextModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+               super(identifier, dependencyResolver);
+       }
 
-    public SimplePCEPExtensionProviderContextModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, SimplePCEPExtensionProviderContextModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
+       public SimplePCEPExtensionProviderContextModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final SimplePCEPExtensionProviderContextModule oldModule, final java.lang.AutoCloseable oldInstance) {
+               super(identifier, dependencyResolver, oldModule, oldInstance);
+       }
 
-    @Override
-    public void validate(){
-        super.validate();
-        // Add custom validation for module attributes here.
-    }
+       @Override
+       public void validate(){
+               super.validate();
+               // Add custom validation for module attributes here.
+       }
 
-    @Override
-    public java.lang.AutoCloseable createInstance() {
+       @Override
+       public java.lang.AutoCloseable createInstance() {
                final class PCEPExtensionProviderContextImplCloseable extends SimplePCEPExtensionProviderContext implements AutoCloseable {
                        @Override
                        public void close() {
-                               // Nothing to do
+                               for (PCEPExtensionProviderActivator e : getExtensionDependency()) {
+                                       e.stop();
+                               }
                        }
                }
 
-               return new PCEPExtensionProviderContextImplCloseable();
-    }
+               final PCEPExtensionProviderContextImplCloseable ret = new PCEPExtensionProviderContextImplCloseable();
+               for (PCEPExtensionProviderActivator e : getExtensionDependency()) {
+                       e.start(ret);
+               }
+
+               return ret;
+       }
 }
index 2938f8bf8876c6df9daf25130c931c48969f659b..b22c2e98af9f56d46c497d4c359fd30d7a9e9adf 100644 (file)
@@ -44,6 +44,14 @@ module config-pcep-spi {
         config:java-class "org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext";
     }
 
+    identity extension {
+        description
+            "Service representing a PCEP parser extension.";
+
+        base "config:service-type";
+        config:java-class "org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator";
+    }
+
     identity pcep-extensions-impl {
         base config:module-type;
         config:provided-service extensions;
@@ -53,6 +61,15 @@ module config-pcep-spi {
     augment "/config:modules/config:module/config:configuration" {
         case pcep-extensions-impl {
             when "/config:modules/config:module/config:type = 'pcep-extensions-impl'";
+
+            list extension {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity extension;
+                    }
+                }
+            }
         }
     }
 }
index 1a6d0118f688f1804dc6a34766825426259da971..f5ef7c8019e5a6f89592a9d5383561fdaf9b2985 100644 (file)
@@ -18,7 +18,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
-public abstract class AbstractPCEPExtensionProviderActivator implements PCEPExtensionProviderActivator {
+public abstract class AbstractPCEPExtensionProviderActivator implements AutoCloseable, PCEPExtensionProviderActivator {
        private static final Logger LOG = LoggerFactory.getLogger(AbstractPCEPExtensionProviderActivator.class);
 
        @GuardedBy("this")
@@ -48,4 +48,9 @@ public abstract class AbstractPCEPExtensionProviderActivator implements PCEPExte
 
                this.registrations = null;
        }
+
+       @Override
+       public final void close() {
+               stop();
+       }
 }