BUG-221 : created Activator for stateful draft. 12/4312/4
authorDana Kutenicsova <dkutenic@cisco.com>
Thu, 16 Jan 2014 12:52:24 +0000 (13:52 +0100)
committerRobert Varga <rovarga@cisco.com>
Thu, 16 Jan 2014 16:44:22 +0000 (17:44 +0100)
Change-Id: Ia10f071da98835c29d0e65bb6b5d2952383916af
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
Signed-off-by: Robert Varga <rovarga@cisco.com>
commons/parent/pom.xml
pcep/api/src/main/yang/pcep-ietf-stateful.yang
pcep/controller-config/src/main/resources/initial/32-pcep.xml
pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/StatefulPCEPParserModule.java [new file with mode: 0644]
pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/StatefulPCEPParserModuleFactory.java [new file with mode: 0644]
pcep/impl-config/src/main/yang/odl-pcep-impl-cfg.yang
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/Activator.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/StatefulActivator.java [new file with mode: 0644]
pcep/impl/src/main/resources/META-INF/services/org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator

index 97db81543df9bbd3c1157ff8a11d85f032e65ea7..ef7f33f18442c2010561582cdc48566185369467 100644 (file)
                                             target/generated-sources/sal
                                         </outputBaseDir>
                                     </generator>
-                                    <generator>
+                                    <!--  Bug-294 -->
+                                    <!-- generator>
                                         <codeGeneratorClass>org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl</codeGeneratorClass>
                                         <outputBaseDir>target/site</outputBaseDir>
-                                    </generator>
+                                    </generator-->
                                     <generator>
                                         <codeGeneratorClass>org.opendaylight.yangtools.yang.wadl.generator.maven.WadlGenerator</codeGeneratorClass>
                                         <outputBaseDir>target/site</outputBaseDir>
index e4b782bb419f98f5a16d3993c25ce13e1854089f..4e778b6c209fb495a07dac13649902c096a2fdba 100644 (file)
@@ -13,7 +13,7 @@ module pcep-ietf-stateful {
 
        description
                "This module contains the data model of PCEP extensions defined
-               in draft-crabbe-pce-initiated-pce.
+               in draft-ietf-pce-stateful-pce.
 
                Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
 
@@ -280,7 +280,7 @@ module pcep-ietf-stateful {
                        list updates {
                                uses srp-object;
 
-                               uses pcep:lsp-object;
+                               uses lsp-object;
 
                                container path {
                                        uses pcep:path-definition;
@@ -301,7 +301,7 @@ module pcep-ietf-stateful {
                        list reports {
                                uses srp-object;
 
-                               uses pcep:lsp-object;
+                               uses lsp-object;
 
                                container path {
                                        uses pcep:path-definition;
index 96ffab7acf472cd3086743d119c1b782369579f7..0e89c46826ed4ac583d5dd98f9ac5ba798b199af 100644 (file)
                                                <type xmlns:pcepspi="urn:opendaylight:params:xml:ns:yang:controller:pcep:spi">pcepspi:extension</type>
                                                <name>pcep-parser-base</name>
                                        </extension>
+                                       <extension>
+                                               <type xmlns:pcepspi="urn:opendaylight:params:xml:ns:yang:controller:pcep:spi">pcepspi:extension</type>
+                                               <name>pcep-parser-stateful</name>
+                                       </extension>
                                        <extension>
                                                <type xmlns:pcepspi="urn:opendaylight:params:xml:ns:yang:controller:pcep:spi">pcepspi:extension</type>
                                                <name>pcep-parser-crabbe-initiated</name>
                                        <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:impl">prefix:pcep-parser-base</type>
                                        <name>pcep-parser-base</name>
                                </module>
+                               <module>
+                                       <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:impl">prefix:pcep-parser-stateful</type>
+                                       <name>pcep-parser-stateful</name>
+                               </module>
                                <module>
                                        <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:pcep:impl">prefix:pcep-parser-crabbe-initiated</type>
                                        <name>pcep-parser-crabbe-initiated</name>
                                                <name>pcep-parser-crabbe-initiated</name>
                                                <provider>/config/modules/module[name='pcep-parser-crabbe-initiated']/instance[name='pcep-parser-crabbe-initiated']</provider>
                                        </instance>
+                                       <instance>
+                                               <name>pcep-parser-stateful</name>
+                                               <provider>/config/modules/module[name='pcep-parser-stateful']/instance[name='pcep-parser-stateful']</provider>
+                                       </instance>
                                </service>
                                <service>
                                        <type xmlns:pcep="urn:opendaylight:params:xml:ns:yang:controller:pcep">pcep:pcep-session-proposal-factory</type>
                </data>
 
        </configuration>
-</snapshot>
\ No newline at end of file
+</snapshot>
diff --git a/pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/StatefulPCEPParserModule.java b/pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/StatefulPCEPParserModule.java
new file mode 100644 (file)
index 0000000..9321d17
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+/**
+ * Generated file
+
+ * Generated from: yang module name: odl-pcep-impl-cfg  yang module local name: pcep-parser-stateful
+ * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+ * Generated at: Tue Jan 14 11:25:06 CET 2014
+ *
+ * Do not modify this file unless it is present under src/main directory
+ */
+package org.opendaylight.controller.config.yang.pcep.impl;
+
+/**
+*
+*/
+public final class StatefulPCEPParserModule extends org.opendaylight.controller.config.yang.pcep.impl.AbstractStatefulPCEPParserModule {
+
+       public StatefulPCEPParserModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
+                       final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+               super(identifier, dependencyResolver);
+       }
+
+       public StatefulPCEPParserModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
+                       final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final StatefulPCEPParserModule oldModule,
+                       final java.lang.AutoCloseable oldInstance) {
+
+               super(identifier, dependencyResolver, oldModule, oldInstance);
+       }
+
+       @Override
+       protected void customValidation() {
+               // Add custom validation for module attributes here.
+       }
+
+       @Override
+       public java.lang.AutoCloseable createInstance() {
+               // TODO:implement
+               throw new java.lang.UnsupportedOperationException("Unimplemented stub method");
+       }
+}
diff --git a/pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/StatefulPCEPParserModuleFactory.java b/pcep/impl-config/src/main/java/org/opendaylight/controller/config/yang/pcep/impl/StatefulPCEPParserModuleFactory.java
new file mode 100644 (file)
index 0000000..2acbd80
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+/**
+ * Generated file
+
+ * Generated from: yang module name: odl-pcep-impl-cfg  yang module local name: pcep-parser-stateful
+ * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+ * Generated at: Tue Jan 14 11:25:06 CET 2014
+ *
+ * Do not modify this file unless it is present under src/main directory
+ */
+package org.opendaylight.controller.config.yang.pcep.impl;
+
+/**
+*
+*/
+public class StatefulPCEPParserModuleFactory extends
+               org.opendaylight.controller.config.yang.pcep.impl.AbstractStatefulPCEPParserModuleFactory {
+
+}
index 3c3faf510a8fdbc13f2fe389e38fd9395690978c..726b3cd0cbf9aa1351008f6e7d33f53a6d9f65f9 100644 (file)
@@ -46,9 +46,21 @@ module odl-pcep-impl-cfg {
         }
     }
 
-    identity pcep-parser-crabbe-initiated {
+    identity pcep-parser-stateful {
         base config:module-type;
         config:provided-service spi:extension;
+        config:java-name-prefix StatefulPCEPParser;
+    }
+
+    augment "/config:modules/config:module/config:configuration" {
+        case pcep-parser-stateful {
+            when "/config:modules/config:module/config:type = 'pcep-parser-stateful'";
+        }
+    }
+
+       identity pcep-parser-crabbe-initiated {
+               base config:module-type;
+        config:provided-service spi:extension;
         config:java-name-prefix CrabbeInitiatedPCEPParser;
     }
 
index c1adc5b4ad19f3b7266ae5a7d388294133002062..5360f6327f8361d8b01f152ba25c604b8c07b820 100644 (file)
@@ -15,10 +15,6 @@ import org.opendaylight.protocol.pcep.impl.message.PCEPErrorMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPKeepAliveMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPNotificationMessageParser;
 import org.opendaylight.protocol.pcep.impl.message.PCEPOpenMessageParser;
-import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
-import org.opendaylight.protocol.pcep.impl.message.PCEPReportMessageParser;
-import org.opendaylight.protocol.pcep.impl.message.PCEPRequestMessageParser;
-import org.opendaylight.protocol.pcep.impl.message.PCEPUpdateRequestMessageParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPBandwidthObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPClassTypeObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPCloseObjectParser;
@@ -31,17 +27,14 @@ import org.opendaylight.protocol.pcep.impl.object.PCEPExplicitRouteObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPGlobalConstraintsObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPIncludeRouteObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPLoadBalancingObjectParser;
-import org.opendaylight.protocol.pcep.impl.object.PCEPLspObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPLspaObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPMetricObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPNoPathObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPNotificationObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPObjectiveFunctionObjectParser;
-import org.opendaylight.protocol.pcep.impl.object.PCEPOpenObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPPathKeyObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPReportedRouteObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPRequestParameterObjectParser;
-import org.opendaylight.protocol.pcep.impl.object.PCEPSrpObjectParser;
 import org.opendaylight.protocol.pcep.impl.object.PCEPSvecObjectParser;
 import org.opendaylight.protocol.pcep.impl.subobject.EROAsNumberSubobjectParser;
 import org.opendaylight.protocol.pcep.impl.subobject.EROIpv4PrefixSubobjectParser;
@@ -66,18 +59,10 @@ import org.opendaylight.protocol.pcep.impl.subobject.XROPathKey128SubobjectParse
 import org.opendaylight.protocol.pcep.impl.subobject.XROPathKey32SubobjectParser;
 import org.opendaylight.protocol.pcep.impl.subobject.XROSRLGSubobjectParser;
 import org.opendaylight.protocol.pcep.impl.subobject.XROUnnumberedInterfaceSubobjectParser;
-import org.opendaylight.protocol.pcep.impl.tlv.LSPIdentifierIpv4TlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.LSPIdentifierIpv6TlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.LspDbVersionTlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.LspSymbolicNameTlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.LspUpdateErrorTlvParser;
 import org.opendaylight.protocol.pcep.impl.tlv.NoPathVectorTlvParser;
 import org.opendaylight.protocol.pcep.impl.tlv.OFListTlvParser;
 import org.opendaylight.protocol.pcep.impl.tlv.OrderTlvParser;
 import org.opendaylight.protocol.pcep.impl.tlv.OverloadedDurationTlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.PCEStatefulCapabilityTlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.PredundancyGroupTlvParser;
-import org.opendaylight.protocol.pcep.impl.tlv.RSVPErrorSpecTlvParser;
 import org.opendaylight.protocol.pcep.impl.tlv.ReqMissingTlvParser;
 import org.opendaylight.protocol.pcep.spi.EROSubobjectHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.LabelHandlerRegistry;
@@ -87,23 +72,10 @@ import org.opendaylight.protocol.pcep.spi.RROSubobjectHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.XROSubobjectHandlerRegistry;
 import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcrpt;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcupd;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.db.version.tlv.LspDbVersion;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.error.code.tlv.LspErrorCode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiers;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.predundancy.group.id.tlv.PredundancyGroupId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.rsvp.error.spec.tlv.RsvpErrorSpec;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.Srp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.Stateful;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Close;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Keepalive;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcerr;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcntf;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcrep;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcreq;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.bandwidth.object.Bandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.classtype.object.ClassType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.close.object.CClose;
@@ -119,7 +91,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.notification.object.CNotification;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.list.tlv.OfList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.object.Of;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.order.tlv.Order;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.overload.duration.tlv.OverloadDuration;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObject;
@@ -209,30 +180,14 @@ public final class Activator extends AbstractPCEPExtensionProviderActivator {
                context.registerTlvParser(ReqMissingTlvParser.TYPE, new ReqMissingTlvParser());
                context.registerTlvParser(OFListTlvParser.TYPE, new OFListTlvParser());
                context.registerTlvParser(OrderTlvParser.TYPE, new OrderTlvParser());
-               context.registerTlvParser(PCEStatefulCapabilityTlvParser.TYPE, new PCEStatefulCapabilityTlvParser());
-               context.registerTlvParser(LspSymbolicNameTlvParser.TYPE, new LspSymbolicNameTlvParser());
-               context.registerTlvParser(LSPIdentifierIpv4TlvParser.TYPE, new LSPIdentifierIpv4TlvParser());
-               context.registerTlvParser(LSPIdentifierIpv6TlvParser.TYPE, new LSPIdentifierIpv6TlvParser());
-               context.registerTlvParser(LspUpdateErrorTlvParser.TYPE, new LspUpdateErrorTlvParser());
-               context.registerTlvParser(RSVPErrorSpecTlvParser.TYPE, new RSVPErrorSpecTlvParser());
-               context.registerTlvParser(LspDbVersionTlvParser.TYPE, new LspDbVersionTlvParser());
-               context.registerTlvParser(PredundancyGroupTlvParser.TYPE, new PredundancyGroupTlvParser());
 
                context.registerTlvSerializer(NoPathVector.class, new NoPathVectorTlvParser());
                context.registerTlvSerializer(OverloadDuration.class, new OverloadedDurationTlvParser());
                context.registerTlvSerializer(ReqMissing.class, new ReqMissingTlvParser());
                context.registerTlvSerializer(OfList.class, new OFListTlvParser());
                context.registerTlvSerializer(Order.class, new OrderTlvParser());
-               context.registerTlvSerializer(Stateful.class, new PCEStatefulCapabilityTlvParser());
-               context.registerTlvSerializer(SymbolicPathName.class, new LspSymbolicNameTlvParser());
-               context.registerTlvSerializer(LspIdentifiers.class, new LSPIdentifierIpv4TlvParser());
-               context.registerTlvSerializer(LspErrorCode.class, new LspUpdateErrorTlvParser());
-               context.registerTlvSerializer(RsvpErrorSpec.class, new RSVPErrorSpecTlvParser());
-               context.registerTlvSerializer(LspDbVersion.class, new LspDbVersionTlvParser());
-               context.registerTlvSerializer(PredundancyGroupId.class, new PredundancyGroupTlvParser());
 
                final ObjectHandlerRegistry objReg = context.getObjectHandlerRegistry();
-               context.registerObjectParser(PCEPOpenObjectParser.CLASS, PCEPOpenObjectParser.TYPE, new PCEPOpenObjectParser(tlvReg));
                context.registerObjectParser(PCEPRequestParameterObjectParser.CLASS, PCEPRequestParameterObjectParser.TYPE,
                                new PCEPRequestParameterObjectParser(tlvReg));
                context.registerObjectParser(PCEPNoPathObjectParser.CLASS, PCEPNoPathObjectParser.TYPE, new PCEPNoPathObjectParser(tlvReg));
@@ -266,12 +221,9 @@ public final class Activator extends AbstractPCEPExtensionProviderActivator {
 
                context.registerObjectParser(PCEPGlobalConstraintsObjectParser.CLASS, PCEPGlobalConstraintsObjectParser.TYPE,
                                new PCEPGlobalConstraintsObjectParser(tlvReg));
-               context.registerObjectParser(PCEPLspObjectParser.CLASS, PCEPLspObjectParser.TYPE, new PCEPLspObjectParser(tlvReg));
-               context.registerObjectParser(PCEPSrpObjectParser.CLASS, PCEPSrpObjectParser.TYPE, new PCEPSrpObjectParser(tlvReg));
                context.registerObjectParser(PCEPExcludeRouteObjectParser.CLASS, PCEPExcludeRouteObjectParser.TYPE,
                                new PCEPExcludeRouteObjectParser(xroSubReg));
 
-               context.registerObjectSerializer(Open.class, new PCEPOpenObjectParser(tlvReg));
                context.registerObjectSerializer(Rp.class, new PCEPRequestParameterObjectParser(tlvReg));
                context.registerObjectSerializer(NoPath.class, new PCEPNoPathObjectParser(tlvReg));
                context.registerObjectSerializer(EndpointsObj.class, new PCEPEndPointsIpv4ObjectParser(tlvReg));
@@ -292,30 +244,20 @@ public final class Activator extends AbstractPCEPExtensionProviderActivator {
                context.registerObjectSerializer(Of.class, new PCEPObjectiveFunctionObjectParser(tlvReg));
                context.registerObjectSerializer(ClassType.class, new PCEPClassTypeObjectParser(tlvReg));
                context.registerObjectSerializer(Gc.class, new PCEPGlobalConstraintsObjectParser(tlvReg));
-               context.registerObjectSerializer(Lsp.class, new PCEPLspObjectParser(tlvReg));
-               context.registerObjectSerializer(Srp.class, new PCEPSrpObjectParser(tlvReg));
                context.registerObjectSerializer(Xro.class, new PCEPExcludeRouteObjectParser(xroSubReg));
 
                context.registerMessageParser(PCEPOpenMessageParser.TYPE, new PCEPOpenMessageParser(objReg));
                context.registerMessageParser(PCEPKeepAliveMessageParser.TYPE, new PCEPKeepAliveMessageParser(objReg));
-               context.registerMessageParser(PCEPReplyMessageParser.TYPE, new PCEPReplyMessageParser(objReg));
-               context.registerMessageParser(PCEPRequestMessageParser.TYPE, new PCEPRequestMessageParser(objReg));
                context.registerMessageParser(PCEPErrorMessageParser.TYPE, new PCEPErrorMessageParser(objReg));
                context.registerMessageParser(PCEPCloseMessageParser.TYPE, new PCEPCloseMessageParser(objReg));
-               context.registerMessageParser(PCEPUpdateRequestMessageParser.TYPE, new PCEPUpdateRequestMessageParser(objReg));
-               context.registerMessageParser(PCEPReportMessageParser.TYPE, new PCEPReportMessageParser(objReg));
 
                context.registerMessageSerializer(
                                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Open.class,
                                new PCEPOpenMessageParser(objReg));
                context.registerMessageSerializer(Pcntf.class, new PCEPNotificationMessageParser(objReg));
                context.registerMessageSerializer(Keepalive.class, new PCEPKeepAliveMessageParser(objReg));
-               context.registerMessageSerializer(Pcrep.class, new PCEPReplyMessageParser(objReg));
-               context.registerMessageSerializer(Pcreq.class, new PCEPRequestMessageParser(objReg));
                context.registerMessageSerializer(Pcerr.class, new PCEPErrorMessageParser(objReg));
                context.registerMessageSerializer(Close.class, new PCEPCloseMessageParser(objReg));
-               context.registerMessageSerializer(Pcupd.class, new PCEPUpdateRequestMessageParser(objReg));
-               context.registerMessageSerializer(Pcrpt.class, new PCEPReportMessageParser(objReg));
 
                return regs;
        }
diff --git a/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/StatefulActivator.java b/pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/StatefulActivator.java
new file mode 100644 (file)
index 0000000..ce0634d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.pcep.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPReportMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPRequestMessageParser;
+import org.opendaylight.protocol.pcep.impl.message.PCEPUpdateRequestMessageParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPLspObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPOpenObjectParser;
+import org.opendaylight.protocol.pcep.impl.object.PCEPSrpObjectParser;
+import org.opendaylight.protocol.pcep.impl.tlv.LSPIdentifierIpv4TlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.LSPIdentifierIpv6TlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.LspDbVersionTlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.LspSymbolicNameTlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.LspUpdateErrorTlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.PCEStatefulCapabilityTlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.PredundancyGroupTlvParser;
+import org.opendaylight.protocol.pcep.impl.tlv.RSVPErrorSpecTlvParser;
+import org.opendaylight.protocol.pcep.spi.ObjectHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
+import org.opendaylight.protocol.pcep.spi.TlvHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcrpt;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcupd;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.db.version.tlv.LspDbVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.error.code.tlv.LspErrorCode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.identifiers.tlv.LspIdentifiers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.predundancy.group.id.tlv.PredundancyGroupId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.rsvp.error.spec.tlv.RsvpErrorSpec;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.Srp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.stateful.capability.tlv.Stateful;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcrep;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcreq;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
+
+public final class StatefulActivator extends AbstractPCEPExtensionProviderActivator {
+       @Override
+       protected List<AutoCloseable> startImpl(final PCEPExtensionProviderContext context) {
+               final List<AutoCloseable> regs = new ArrayList<>();
+
+               final ObjectHandlerRegistry objReg = context.getObjectHandlerRegistry();
+               regs.add(context.registerMessageParser(PCEPUpdateRequestMessageParser.TYPE, new PCEPUpdateRequestMessageParser(objReg)));
+               regs.add(context.registerMessageSerializer(Pcupd.class, new PCEPUpdateRequestMessageParser(objReg)));
+               regs.add(context.registerMessageParser(PCEPReportMessageParser.TYPE, new PCEPReportMessageParser(objReg)));
+               regs.add(context.registerMessageSerializer(Pcrpt.class, new PCEPReportMessageParser(objReg)));
+               regs.add(context.registerMessageParser(PCEPReplyMessageParser.TYPE, new PCEPReplyMessageParser(objReg)));
+               regs.add(context.registerMessageSerializer(Pcrep.class, new PCEPReplyMessageParser(objReg)));
+               regs.add(context.registerMessageParser(PCEPRequestMessageParser.TYPE, new PCEPRequestMessageParser(objReg)));
+               regs.add(context.registerMessageSerializer(Pcreq.class, new PCEPRequestMessageParser(objReg)));
+
+               final TlvHandlerRegistry tlvReg = context.getTlvHandlerRegistry();
+               regs.add(context.registerObjectParser(PCEPLspObjectParser.CLASS, PCEPLspObjectParser.TYPE, new PCEPLspObjectParser(tlvReg)));
+               regs.add(context.registerObjectSerializer(Lsp.class, new PCEPLspObjectParser(tlvReg)));
+               regs.add(context.registerObjectParser(PCEPSrpObjectParser.CLASS, PCEPSrpObjectParser.TYPE, new PCEPSrpObjectParser(tlvReg)));
+               regs.add(context.registerObjectSerializer(Srp.class, new PCEPSrpObjectParser(tlvReg)));
+               regs.add(context.registerObjectParser(PCEPOpenObjectParser.CLASS, PCEPOpenObjectParser.TYPE, new PCEPOpenObjectParser(tlvReg)));
+               regs.add(context.registerObjectSerializer(Open.class, new PCEPOpenObjectParser(tlvReg)));
+
+               regs.add(context.registerTlvParser(LspDbVersionTlvParser.TYPE, new LspDbVersionTlvParser()));
+               regs.add(context.registerTlvSerializer(LspDbVersion.class, new LspDbVersionTlvParser()));
+               regs.add(context.registerTlvParser(LSPIdentifierIpv4TlvParser.TYPE, new LSPIdentifierIpv4TlvParser()));
+               regs.add(context.registerTlvParser(LSPIdentifierIpv6TlvParser.TYPE, new LSPIdentifierIpv6TlvParser()));
+               regs.add(context.registerTlvSerializer(LspIdentifiers.class, new LSPIdentifierIpv4TlvParser()));
+               regs.add(context.registerTlvParser(LspUpdateErrorTlvParser.TYPE, new LspUpdateErrorTlvParser()));
+               regs.add(context.registerTlvSerializer(LspErrorCode.class, new LspUpdateErrorTlvParser()));
+               regs.add(context.registerTlvParser(RSVPErrorSpecTlvParser.TYPE, new RSVPErrorSpecTlvParser()));
+               regs.add(context.registerTlvSerializer(RsvpErrorSpec.class, new RSVPErrorSpecTlvParser()));
+               regs.add(context.registerTlvParser(PCEStatefulCapabilityTlvParser.TYPE, new PCEStatefulCapabilityTlvParser()));
+               regs.add(context.registerTlvSerializer(Stateful.class, new PCEStatefulCapabilityTlvParser()));
+               regs.add(context.registerTlvParser(LspSymbolicNameTlvParser.TYPE, new LspSymbolicNameTlvParser()));
+               regs.add(context.registerTlvSerializer(SymbolicPathName.class, new LspSymbolicNameTlvParser()));
+               regs.add(context.registerTlvParser(PredundancyGroupTlvParser.TYPE, new PredundancyGroupTlvParser()));
+               regs.add(context.registerTlvSerializer(PredundancyGroupId.class, new PredundancyGroupTlvParser()));
+
+               return regs;
+       }
+}