import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request._case.RequestBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request._case.request.RpsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
public abstract class AbstractMessageParser implements MessageParser, MessageSerializer {
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractMessageParser.class);
+
private static final int COMMON_OBJECT_HEADER_LENGTH = 4;
private static final int OC_F_LENGTH = 1;
private static final int P_FLAG_OFFSET = 6;
private static final int I_FLAG_OFFSET = 7;
- private final ObjectHandlerRegistry registry;
+ private final ObjectRegistry registry;
- protected AbstractMessageParser(final ObjectHandlerRegistry registry) {
+ protected AbstractMessageParser(final ObjectRegistry registry) {
this.registry = Preconditions.checkNotNull(registry);
}
protected byte[] serializeObject(final Object object) {
if (object == null) {
- throw new IllegalArgumentException("Null object passed.");
+ return new byte[] {};
}
- final ObjectSerializer serializer = this.registry.getObjectSerializer(object);
- return serializer.serializeObject(object);
+ return this.registry.serializeObject(object);
}
private List<Object> parseObjects(final byte[] bytes) throws PCEPDeserializerException {
offset += objLength - COMMON_OBJECT_HEADER_LENGTH;
- final ObjectParser parser = Preconditions.checkNotNull(this.registry.getObjectParser(objClass, objType));
final ObjectHeader header = new ObjectHeaderImpl(flags.get(P_FLAG_OFFSET), flags.get(I_FLAG_OFFSET));
// parseObject is required to return null for P=0 errored objects
- final Object o = parser.parseObject(header, bytesToPass);
+ final Object o = this.registry.parseObject(objClass, objType, header, bytesToPass);
if (o != null) {
objs.add(o);
}
new PcerrMessageBuilder().setErrorType(
new RequestCaseBuilder().setRequest(
new RequestBuilder().setRps(Lists.newArrayList(new RpsBuilder().setRp(rp).build())).build()).build()).setErrors(
- Arrays.asList(new ErrorsBuilder().setErrorObject(
- new ErrorObjectBuilder().setType(maping.getFromErrorsEnum(e).type).setValue(
- maping.getFromErrorsEnum(e).value).build()).build())).build()).build();
+ Arrays.asList(new ErrorsBuilder().setErrorObject(
+ new ErrorObjectBuilder().setType(maping.getFromErrorsEnum(e).type).setValue(
+ maping.getFromErrorsEnum(e).value).build()).build())).build()).build();
}
protected abstract Message validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException;