package org.opendaylight.protocol.pcep.segment.routing02;
+import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
import java.util.List;
import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
import org.opendaylight.protocol.pcep.spi.PCEPErrors;
+import org.opendaylight.protocol.pcep.spi.VendorInformationObjectRegistry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.lsp.setup.type._01.rev140507.Tlvs1;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.lsp.setup.type._01.rev140507.Tlvs2;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
public class SrPcRepMessageParser extends PCEPReplyMessageParser {
- public SrPcRepMessageParser(ObjectRegistry registry) {
- super(registry);
+ public SrPcRepMessageParser(final ObjectRegistry registry, final VendorInformationObjectRegistry viRegistry) {
+ super(registry, viRegistry);
}
@Override
protected void serializeReply(Replies reply, ByteBuf buffer) {
final Rp rp = reply.getRp();
- if(isSegmentRoutingPath(rp)) {
+ if (isSegmentRoutingPath(rp)) {
serializeObject(rp, buffer);
- if (reply.getResult() != null) {
- if (reply.getResult() instanceof SuccessCase) {
- final SuccessCase s = (SuccessCase) reply.getResult();
- for (final Paths p : s.getSuccess().getPaths()) {
- final Ero ero = p.getEro();
- serializeObject(ero, buffer);
- }
+ if (reply.getResult() instanceof SuccessCase) {
+ final SuccessCase s = (SuccessCase) reply.getResult();
+ for (final Paths p : s.getSuccess().getPaths()) {
+ final Ero ero = p.getEro();
+ serializeObject(ero, buffer);
}
}
} else {
@Override
protected Replies getValidReply(List<Object> objects, List<Message> errors) {
if (!(objects.get(0) instanceof Rp)) {
- errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.RP_MISSING, Optional.<Rp>absent()));
return null;
}
final Rp rp = (Rp) objects.get(0);
- if(isSegmentRoutingPath(rp)) {
+ if (isSegmentRoutingPath(rp)) {
objects.remove(0);
Result res = null;
- if (!objects.isEmpty()) {
- if (objects.get(0) instanceof Ero) {
- final SuccessBuilder builder = new SuccessBuilder();
- final List<Paths> paths = Lists.newArrayList();
- final PathsBuilder pBuilder = new PathsBuilder();
- while (!objects.isEmpty()) {
- final Object object = objects.get(0);
- if(object instanceof Ero) {
- final Ero ero = (Ero) object;
- final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
- if(error != null) {
- errors.add(createErrorMsg(error));
- return null;
- } else {
- paths.add(pBuilder.setEro(ero).build());
- }
+ if (objects.get(0) instanceof Ero) {
+ final SuccessBuilder builder = new SuccessBuilder();
+ final List<Paths> paths = Lists.newArrayList();
+ final PathsBuilder pBuilder = new PathsBuilder();
+ while (!objects.isEmpty()) {
+ final Object object = objects.get(0);
+ if (object instanceof Ero) {
+ final Ero ero = (Ero) object;
+ final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
+ if (error != null) {
+ errors.add(createErrorMsg(error, Optional.<Rp>absent()));
+ return null;
+ } else {
+ paths.add(pBuilder.setEro(ero).build());
}
- objects.remove(0);
}
- builder.setPaths(paths);
- res = new SuccessCaseBuilder().setSuccess(builder.build()).build();
+ objects.remove(0);
}
+ builder.setPaths(paths);
+ res = new SuccessCaseBuilder().setSuccess(builder.build()).build();
}
return new RepliesBuilder().setRp(rp).setResult(res).build();
}
}
private boolean isSegmentRoutingPath(final Rp rp) {
- if(rp.getTlvs() != null) {
- return SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs1.class)) || SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs2.class));
+ if (rp.getTlvs() != null) {
+ return SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs1.class))
+ || SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs2.class));
}
return false;
}