import com.google.common.base.Preconditions;
import com.google.common.primitives.UnsignedBytes;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
-
import java.util.ArrayList;
import java.util.List;
-
import org.opendaylight.protocol.pcep.spi.EROSubobjectRegistry;
import org.opendaylight.protocol.pcep.spi.ObjectParser;
import org.opendaylight.protocol.pcep.spi.ObjectSerializer;
}
protected final void serializeSubobject(final List<Subobject> subobjects, final ByteBuf buffer) {
- for (final Subobject subobject : subobjects) {
- this.subobjReg.serializeSubobject(subobject, buffer);
+ if(subobjects != null && !subobjects.isEmpty()) {
+ for (final Subobject subobject : subobjects) {
+ this.subobjReg.serializeSubobject(subobject, buffer);
+ }
}
}
}
import com.google.common.base.Preconditions;
import com.google.common.primitives.UnsignedBytes;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
-
import java.util.ArrayList;
import java.util.List;
-
import org.opendaylight.protocol.pcep.spi.ObjectParser;
import org.opendaylight.protocol.pcep.spi.ObjectSerializer;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
}
protected final void serializeSubobject(final List<Subobject> subobjects, final ByteBuf buffer) {
+ Preconditions.checkArgument(subobjects != null && !subobjects.isEmpty(), "RRO must contain at least one subobject.");
for (final Subobject subobject : subobjects) {
this.subobjReg.serializeSubobject(subobject, buffer);
}
import com.google.common.base.Preconditions;
import com.google.common.primitives.UnsignedBytes;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
-
import java.util.ArrayList;
import java.util.List;
-
import org.opendaylight.protocol.pcep.spi.ObjectParser;
import org.opendaylight.protocol.pcep.spi.ObjectSerializer;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
}
protected final void serializeSubobject(final List<Subobject> subobjects, final ByteBuf buffer) {
+ Preconditions.checkArgument(subobjects != null && !subobjects.isEmpty(), "XRO must contain at least one subobject.");
for (final Subobject subobject : subobjects) {
this.subobjReg.serializeSubobject(subobject, buffer);
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.XroBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.xro.Subobject;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.xro.SubobjectBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.Ero;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.EroBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.gc.object.GcBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.include.route.object.IroBuilder;
parser.serializeObject(builder.build(), buf);
assertArrayEquals(result.array(), ByteArray.getAllBytes(buf));
}
+
+ @Test
+ public void testEmptyEroObject() throws PCEPDeserializerException {
+ final Object object = this.ctx.getObjectHandlerRegistry().parseObject(PCEPExplicitRouteObjectParser.CLASS, PCEPExplicitRouteObjectParser.TYPE, new ObjectHeaderImpl(true, true), Unpooled.EMPTY_BUFFER);
+ assertNotNull(object);
+ assertTrue(object instanceof Ero);
+ final Ero eroObject = (Ero) object;
+ assertTrue(eroObject.getSubobject().isEmpty());
+
+ final ByteBuf buffer = Unpooled.buffer();
+ this.ctx.getObjectHandlerRegistry().serializeObject(eroObject, buffer);
+ final byte[] expected = {0x07, 0x13, 0x00, 0x04};
+ assertArrayEquals(expected, ByteArray.getAllBytes(buffer));
+ }
}