*/
package org.opendaylight.protocol.pcep.impl.object;
+import java.util.List;
+
import org.opendaylight.protocol.pcep.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.spi.AbstractObjectWithSubobjectsParser;
-import org.opendaylight.protocol.pcep.spi.SubobjectHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.EROSubobjectHandlerRegistry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.IncludeRouteObject;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.Subobjects;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.SubobjectsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.IncludeRouteBuilder;
+import com.google.common.collect.Lists;
+
/**
* Parser for {@link IncludeRouteObject}
*/
-public class PCEPIncludeRouteObjectParser extends AbstractObjectWithSubobjectsParser<IncludeRouteBuilder> {
+public class PCEPIncludeRouteObjectParser extends AbstractEROWithSubobjectsParser {
public static final int CLASS = 10;
public static final int TYPE = 1;
- public PCEPIncludeRouteObjectParser(final SubobjectHandlerRegistry subobjReg) {
+ public PCEPIncludeRouteObjectParser(final EROSubobjectHandlerRegistry subobjReg) {
super(subobjReg);
}
@Override
public IncludeRouteObject parseObject(final ObjectHeader header, final byte[] bytes) throws PCEPDeserializerException,
- PCEPDocumentedException {
+ PCEPDocumentedException {
if (bytes == null || bytes.length == 0) {
throw new IllegalArgumentException("Byte array is mandatory. Can't be null or empty.");
}
builder.setIgnore(header.isIgnore());
builder.setProcessingRule(header.isProcessingRule());
- // FIXME: add subobjects
+
+ final List<Subobjects> subs = Lists.newArrayList();
+ for (final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Subobjects s : parseSubobjects(bytes)) {
+ subs.add(new SubobjectsBuilder().setSubobjectType(s.getSubobjectType()).build());
+ }
+ builder.setSubobjects(subs);
return builder.build();
}
if (!(object instanceof IncludeRouteObject)) {
throw new IllegalArgumentException("Wrong instance of PCEPObject. Passed " + object.getClass() + ". Needed IncludeRouteObject.");
}
+ final IncludeRouteObject iro = ((IncludeRouteObject) object);
- assert !(((IncludeRouteObject) object).getSubobjects().isEmpty()) : "Empty Include Route Object.";
+ assert !(iro.getSubobjects().isEmpty()) : "Empty Include Route Object.";
+
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Subobjects> subs = Lists.newArrayList();
+
+ for (final Subobjects s : iro.getSubobjects()) {
+ subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.SubobjectsBuilder().setLoose(
+ false).setSubobjectType(s.getSubobjectType()).build());
+ }
- // return PCEPEROSubobjectParser.put(((PCEPIncludeRouteObject) object).getSubobjects());
- // FIXME add subobjects
- return null;
+ return serializeSubobject(subs);
}
@Override