*/
package org.opendaylight.protocol.pcep.ietf.stateful07;
-import org.opendaylight.protocol.pcep.impl.tlv.TlvUtil;
+import com.google.common.base.Preconditions;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.spi.TlvParser;
import org.opendaylight.protocol.pcep.spi.TlvSerializer;
+import org.opendaylight.protocol.pcep.spi.TlvUtil;
+import org.opendaylight.protocol.util.ByteArray;
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.ietf.stateful.rev131222.symbolic.path.name.tlv.SymbolicPathNameBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv;
*/
public final class Stateful07LspSymbolicNameTlvParser implements TlvParser, TlvSerializer {
- public static final int TYPE = 17;
+ public static final int TYPE = 17;
- @Override
- public SymbolicPathName parseTlv(final byte[] buffer) throws PCEPDeserializerException {
- return new SymbolicPathNameBuilder().setPathName(
- new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName(buffer)).build();
- }
+ @Override
+ public SymbolicPathName parseTlv(final ByteBuf buffer) throws PCEPDeserializerException {
+ if (buffer == null) {
+ return null;
+ }
+ return new SymbolicPathNameBuilder().setPathName(
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName(ByteArray.getAllBytes(buffer))).build();
+ }
- @Override
- public byte[] serializeTlv(final Tlv tlv) {
- if (tlv == null) {
- throw new IllegalArgumentException("SymbolicPathNameTlv is mandatory.");
- }
- final SymbolicPathName spn = (SymbolicPathName) tlv;
- return TlvUtil.formatTlv(TYPE, spn.getPathName().getValue());
- }
-
- @Override
- public int getType() {
- return TYPE;
- }
+ @Override
+ public void serializeTlv(final Tlv tlv, final ByteBuf buffer) {
+ Preconditions.checkArgument(tlv instanceof SymbolicPathName, "SymbolicPathNameTlv is mandatory.");
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SymbolicPathName spn = ((SymbolicPathName) tlv).getPathName();
+ Preconditions.checkArgument(spn != null, "SymbolicPathName is mandatory");
+ TlvUtil.formatTlv(TYPE, Unpooled.copiedBuffer(spn.getValue()), buffer);
+ }
}