*/
package org.opendaylight.protocol.pcep.ietf.stateful07;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
+import static com.google.common.base.Preconditions.checkArgument;
+
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
import org.opendaylight.protocol.pcep.spi.MessageUtil;
import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
import org.opendaylight.protocol.pcep.spi.PCEPErrors;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcupd;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcupdBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.Lsp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.PcupdMessageBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.Updates;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.UpdatesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.updates.Path;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.updates.PathBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.Srp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
-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.bandwidth.object.Bandwidth;
-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.include.route.object.Iro;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.Metrics;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lsp.attributes.MetricsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.lspa.object.Lspa;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.metric.object.Metric;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Pcupd;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcupdBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.object.Lsp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcupd.message.PcupdMessageBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcupd.message.pcupd.message.Updates;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcupd.message.pcupd.message.UpdatesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcupd.message.pcupd.message.updates.Path;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.pcupd.message.pcupd.message.updates.PathBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.srp.object.Srp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Message;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Object;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.bandwidth.object.Bandwidth;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.Ero;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.include.route.object.Iro;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.lsp.attributes.Metrics;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.lsp.attributes.MetricsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.lspa.object.Lspa;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.metric.object.Metric;
/**
- * Parser for {@link Pcupd}
+ * Parser for {@link Pcupd}.
*/
public class Stateful07PCUpdateRequestMessageParser extends AbstractMessageParser {
@Override
public void serializeMessage(final Message message, final ByteBuf out) {
- Preconditions.checkArgument(message instanceof Pcupd, "Wrong instance of Message. Passed instance of %s. Need Pcupd.", message.getClass());
+ checkArgument(message instanceof Pcupd, "Wrong instance of Message. Passed instance of %s. Need Pcupd.",
+ message.getClass());
final Pcupd msg = (Pcupd) message;
final List<Updates> updates = msg.getPcupdMessage().getUpdates();
final ByteBuf buffer = Unpooled.buffer();
}
@Override
- protected Message validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException {
- Preconditions.checkArgument(objects != null, "Passed list can't be null.");
+ protected Message validate(final List<Object> objects, final List<Message> errors)
+ throws PCEPDeserializerException {
+ checkArgument(objects != null, "Passed list can't be null.");
if (objects.isEmpty()) {
throw new PCEPDeserializerException("Pcup message cannot be empty.");
}
- final List<Updates> updateRequests = Lists.newArrayList();
+ final List<Updates> updateRequests = new ArrayList<>();
while (!objects.isEmpty()) {
final Updates upd = getValidUpdates(objects, errors);
object = objects.remove(0);
}
} else {
- errors.add(createErrorMsg(PCEPErrors.SRP_MISSING, Optional.absent()));
+ errors.add(createErrorMsg(PCEPErrors.SRP_MISSING, Optional.empty()));
}
if (validateLsp(object, errors, builder)) {
if (object instanceof Lsp) {
builder.setLsp((Lsp) object);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.absent()));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.empty()));
return false;
}
return true;
if (object instanceof Ero) {
pBuilder.setEro((Ero) object);
} else {
- errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.absent()));
+ errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.empty()));
return false;
}
parsePath(objects, pBuilder);
return true;
}
- private static void parsePath(final List<Object> objects, final PathBuilder pBuilder) {
- final List<Metrics> pathMetrics = Lists.newArrayList();
+ private static void parsePath(final List<Object> objects, final PathBuilder pathBuilder) {
+ final List<Metrics> pathMetrics = new ArrayList<>();
Object obj;
State state = State.INIT;
while (!objects.isEmpty() && !state.equals(State.END)) {
obj = objects.get(0);
- state = insertObject(state,obj, pBuilder, pathMetrics);
+ state = insertObject(state,obj, pathBuilder, pathMetrics);
if (!state.equals(State.END)) {
objects.remove(0);
}
}
if (!pathMetrics.isEmpty()) {
- pBuilder.setMetrics(pathMetrics);
+ pathBuilder.setMetrics(pathMetrics);
}
}
- private static State insertObject(final State state, final Object obj, final PathBuilder pBuilder,
+ private static State insertObject(final State state, final Object obj, final PathBuilder pathBuilder,
final List<Metrics> pathMetrics) {
switch (state) {
- case INIT:
- if (obj instanceof Lspa) {
- pBuilder.setLspa((Lspa) obj);
- return State.LSPA_IN;
- }
- case LSPA_IN:
- if (obj instanceof Bandwidth) {
- pBuilder.setBandwidth((Bandwidth) obj);
- return State.LSPA_IN;
- }
- if (obj instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reoptimization.bandwidth.object.ReoptimizationBandwidth) {
- pBuilder.setReoptimizationBandwidth((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reoptimization.bandwidth.object.ReoptimizationBandwidth) obj);
- return State.LSPA_IN;
- }
- case BANDWIDTH_IN:
- if (obj instanceof Metric) {
- pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
- return State.BANDWIDTH_IN;
- }
- case METRIC_IN:
- if (obj instanceof Iro) {
- pBuilder.setIro((Iro) obj);
- return State.IRO_IN;
- }
- case IRO_IN:
- case END:
- return State.END;
- default:
- return state;
+ case INIT:
+ if (obj instanceof Lspa) {
+ pathBuilder.setLspa((Lspa) obj);
+ return State.LSPA_IN;
+ }
+ // fall through
+ case LSPA_IN:
+ if (obj instanceof Bandwidth) {
+ pathBuilder.setBandwidth((Bandwidth) obj);
+ return State.LSPA_IN;
+ }
+ if (obj instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109
+ .reoptimization.bandwidth.object.ReoptimizationBandwidth) {
+ pathBuilder.setReoptimizationBandwidth((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns
+ .yang.pcep.types.rev181109.reoptimization.bandwidth.object.ReoptimizationBandwidth) obj);
+ return State.LSPA_IN;
+ }
+ // fall through
+ case BANDWIDTH_IN:
+ if (obj instanceof Metric) {
+ pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
+ return State.BANDWIDTH_IN;
+ }
+ // fall through
+ case METRIC_IN:
+ if (obj instanceof Iro) {
+ pathBuilder.setIro((Iro) obj);
+ return State.IRO_IN;
+ }
+ // fall through
+ case IRO_IN:
+ case END:
+ return State.END;
+ default:
+ return state;
}
}