Mostly reduced method complexity.
Change-Id: Id1eed6d27598389ec126e4e590c067a95a61125c
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
JmxAttributeValidationException.checkNotNull(getTriggeredResync(), VALUE_IS_NOT_SET, triggeredResyncJmxAttribute);
JmxAttributeValidationException.checkNotNull(getDeltaLspSyncCapability(), VALUE_IS_NOT_SET, deltaLspSyncCapabilityJmxAttribute);
JmxAttributeValidationException.checkNotNull(getIncludeDbVersion(), VALUE_IS_NOT_SET, includeDbVersionJmxAttribute);
- if (getKeepAliveTimerValue() != 0) {
- JmxAttributeValidationException.checkCondition(getKeepAliveTimerValue() >= 1, "minimum value is 1.",
- keepAliveTimerValueJmxAttribute);
- if (getDeadTimerValue() != 0 && (getDeadTimerValue() / getKeepAliveTimerValue() != DT_KA_RATIO)) {
- LOG.warn("DeadTimerValue should be 4 times greater than KeepAliveTimerValue");
- }
- }
+ validateTimers();
if ((getActive() || getTriggeredInitialSync() || getTriggeredResync() || getDeltaLspSyncCapability() || getIncludeDbVersion()) && !getStateful()) {
setStateful(true);
}
JmxAttributeValidationException.checkNotNull(getStateful(), VALUE_IS_NOT_SET, statefulJmxAttribute);
}
+ private void validateTimers() {
+ if (getKeepAliveTimerValue() != 0) {
+ JmxAttributeValidationException.checkCondition(getKeepAliveTimerValue() >= 1, "minimum value is 1.",
+ keepAliveTimerValueJmxAttribute);
+ if (getDeadTimerValue() != 0 && (getDeadTimerValue() / getKeepAliveTimerValue() != DT_KA_RATIO)) {
+ LOG.warn("DeadTimerValue should be 4 times greater than KeepAliveTimerValue");
+ }
+ }
+ }
+
@Override
public java.lang.AutoCloseable createInstance() {
final Stateful07SessionProposalFactory inner = new Stateful07SessionProposalFactory(getDeadTimerValue(), getKeepAliveTimerValue(), getStateful(), getActive(), getInitiated(),
builder.setPccIdReq((PccIdReq) objects.get(0));
objects.remove(0);
}
+ validateSpecificMetrics(objects, builder);
+ if (!objects.isEmpty()) {
+ throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
+ }
+ return new PcmonrepBuilder().setPcmonrepMessage(builder.build()).build();
+ }
+
+ private void validateSpecificMetrics(final List<Object> objects, final PcmonrepMessageBuilder builder) throws PCEPDeserializerException {
final List<SpecificMetrics> specificMetrics = new ArrayList<>();
while (!objects.isEmpty()) {
final SpecificMetricsBuilder smb = new SpecificMetricsBuilder();
if (!specificMetrics.isEmpty()) {
builder.setMonitoringMetricsList(new SpecificMetricsListBuilder().setSpecificMetrics(specificMetrics).build());
}
- if (!objects.isEmpty()) {
- throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
- }
- return new PcmonrepBuilder().setPcmonrepMessage(builder.build()).build();
}
}
private static final short DEFAULT_DEAD_TIMER = 120;
private static final int RECONNECT_STRATEGY_TIMEOUT = 2000;
private static final InetAddress LOCALHOST = InetAddresses.forString("127.0.0.1");
+ private static final int MILISECONDS = 1000;
private Main() { }
} else if (args[argIdx].equals("--password")) {
password = args[++argIdx];
} else if (args[argIdx].equals("--reconnect")) {
- reconnectTime = Integer.valueOf(args[++argIdx]).intValue() * 1000;
+ reconnectTime = Integer.valueOf(args[++argIdx]).intValue() * MILISECONDS;
} else if (args[argIdx].equals("--redelegation-timeout")) {
redelegationTimeout = Integer.valueOf(args[++argIdx]);
} else if (args[argIdx].equals("--state-timeout")) {
JmxAttributeValidationException.checkNotNull(getTriggeredResync(), VALUE_IS_NOT_SET, triggeredResyncJmxAttribute);
JmxAttributeValidationException.checkNotNull(getDeltaLspSyncCapability(), VALUE_IS_NOT_SET, deltaLspSyncCapabilityJmxAttribute);
JmxAttributeValidationException.checkNotNull(getIncludeDbVersion(), VALUE_IS_NOT_SET, includeDbVersionJmxAttribute);
- if (getKeepAliveTimerValue() != 0) {
- JmxAttributeValidationException.checkCondition(getKeepAliveTimerValue() >= 1, "minimum value is 1.", keepAliveTimerValueJmxAttribute);
- if (getDeadTimerValue() != 0 && (getDeadTimerValue() / getKeepAliveTimerValue() != DEADTIMER_KEEPALIVE_RATIO)) {
- LOG.warn("DeadTimerValue should be 4 times greater than KeepAliveTimerValue");
- }
- }
+ validateTimers();
if ((getActive() || getTriggeredInitialSync() || getTriggeredResync() || getDeltaLspSyncCapability() || getIncludeDbVersion()) && !getStateful()) {
setStateful(true);
}
JmxAttributeValidationException.checkNotNull(getSrCapable(), VALUE_IS_NOT_SET, srCapableJmxAttribute);
}
+ private void validateTimers() {
+ if (getKeepAliveTimerValue() != 0) {
+ JmxAttributeValidationException.checkCondition(getKeepAliveTimerValue() >= 1, "minimum value is 1.", keepAliveTimerValueJmxAttribute);
+ if (getDeadTimerValue() != 0 && (getDeadTimerValue() / getKeepAliveTimerValue() != DEADTIMER_KEEPALIVE_RATIO)) {
+ LOG.warn("DeadTimerValue should be 4 times greater than KeepAliveTimerValue");
+ }
+ }
+ }
+
@Override
public java.lang.AutoCloseable createInstance() {
final SegmentRoutingSessionProposalFactory inner = new SegmentRoutingSessionProposalFactory(getDeadTimerValue(), getKeepAliveTimerValue(), getStateful(), getActive(), getInitiated(), getSrCapable(),
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
- if (obj == null) {
+ if (obj == null || getClass() != obj.getClass()) {
return false;
}
- if (getClass() != obj.getClass()) {
- return false;
- }
- ObjectHeaderImpl other = (ObjectHeaderImpl) obj;
+ final ObjectHeaderImpl other = (ObjectHeaderImpl) obj;
if (this.ignored == null) {
if (other.ignored != null) {
return false;
if (this == obj) {
return true;
}
- if (obj == null) {
- return false;
- }
- if (this.getClass() != obj.getClass()) {
+ if (obj == null || this.getClass() != obj.getClass()) {
return false;
}
final PCEPErrorIdentifier other = (PCEPErrorIdentifier) obj;
- if (this.type != other.type) {
- return false;
- }
- if (this.value != other.value) {
+ if (this.type != other.type || this.value != other.value) {
return false;
}
return true;
return true;
}
- private boolean mangeNextReport(final Reports report, final MessageContext ctx) {
+ private boolean manageNextReport(final Reports report, final MessageContext ctx) {
final Lsp lsp = report.getLsp();
final PlspId plspid = lsp.getPlspId();
if (!lsp.isSync() && (lsp.getPlspId() == null || plspid.getValue() == 0)) {
getSessionListenerState().updateLastReceivedRptMsg();
final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcrpt.message.PcrptMessage rpt = ((PcrptMessage) message).getPcrptMessage();
for (final Reports report : rpt.getReports()) {
- if (!mangeNextReport(report, ctx)) {
+ if (!manageNextReport(report, ctx)) {
return false;
}
}
}
}
final Srp srp = srpBuilder.build();
-
final Lsp inputLsp = args.getLsp();
final Lsp lsp = (inputLsp != null) ?
new LspBuilder().setPlspId(reportedLsp.getPlspId()).setDelegate((inputLsp.isDelegate() != null) ? inputLsp.isDelegate() : false).setTlvs(inputLsp.getTlvs()).setAdministrative((inputLsp.isAdministrative() != null) ? inputLsp.isAdministrative() : false).build()
: new LspBuilder().setPlspId(reportedLsp.getPlspId()).build();
- Message msg = null;
- // the D bit that was reported decides the type of PCE message sent
- Preconditions.checkNotNull(reportedLsp.isDelegate());
- if (reportedLsp.isDelegate()) {
- // we already have delegation, send update
- final UpdatesBuilder rb = new UpdatesBuilder();
- rb.setSrp(srp);
- rb.setLsp(lsp);
- final PathBuilder pb = new PathBuilder();
- pb.fieldsFrom(this.input.getArguments());
- rb.setPath(pb.build());
- final PcupdMessageBuilder ub = new PcupdMessageBuilder(MESSAGE_HEADER);
- ub.setUpdates(Collections.singletonList(rb.build()));
- msg = new PcupdBuilder().setPcupdMessage(ub.build()).build();
- } else {
- // we want to revoke delegation, different type of message
- // is sent because of specification by Siva
- // this message is also sent, when input delegate bit is set to 0
- // generating an error in PCC
- final List<Requests> reqs = new ArrayList<>();
- reqs.add(new RequestsBuilder().setSrp(srp).setLsp(lsp).build());
- final PcinitiateMessageBuilder ib = new PcinitiateMessageBuilder();
- ib.setRequests(reqs);
- msg = new PcinitiateBuilder().setPcinitiateMessage(ib.build()).build();
- }
+ final Message msg = redelegate(reportedLsp.isDelegate(), srp, lsp, this.input);
return sendMessage(msg, srp.getOperationId(), this.input.getArguments().getMetadata());
}
}
+ private Message redelegate(final Boolean isDelegate, final Srp srp, final Lsp lsp, final UpdateLspArgs input) {
+ // the D bit that was reported decides the type of PCE message sent
+ Preconditions.checkNotNull(isDelegate);
+ if (isDelegate) {
+ // we already have delegation, send update
+ final UpdatesBuilder rb = new UpdatesBuilder();
+ rb.setSrp(srp);
+ rb.setLsp(lsp);
+ final PathBuilder pb = new PathBuilder();
+ pb.fieldsFrom(input.getArguments());
+ rb.setPath(pb.build());
+ final PcupdMessageBuilder ub = new PcupdMessageBuilder(MESSAGE_HEADER);
+ ub.setUpdates(Collections.singletonList(rb.build()));
+ return new PcupdBuilder().setPcupdMessage(ub.build()).build();
+ }
+ // we want to revoke delegation, different type of message
+ // is sent because of specification by Siva
+ // this message is also sent, when input delegate bit is set to 0
+ // generating an error in PCC
+ final List<Requests> reqs = new ArrayList<>();
+ reqs.add(new RequestsBuilder().setSrp(srp).setLsp(lsp).build());
+ final PcinitiateMessageBuilder ib = new PcinitiateMessageBuilder();
+ ib.setRequests(reqs);
+ return new PcinitiateBuilder().setPcinitiateMessage(ib.build()).build();
+ }
+
@Override
public synchronized ListenableFuture<OperationResult> updateLsp(final UpdateLspArgs input) {
Preconditions.checkArgument(input != null && input.getName() != null && input.getNode() != null && input.getArguments() != null, MISSING_XML_TAG);
break;
case Queued:
LOG.debug("Instruction {} timed out while Queued, cancelling it", this.id);
- final List<InstructionId> ids = new ArrayList<>();
- for (final InstructionImpl d : this.dependencies) {
- if (d.getStatus() != InstructionStatus.Successful) {
- ids.add(d.getId());
- }
- }
- cancel(new DetailsBuilder().setUnmetDependencies(ids).build());
+ cancelInstrunction();
break;
case Scheduled:
LOG.debug("Instruction {} timed out while Scheduled, cancelling it", this.id);
}
}
+ private synchronized void cancelInstrunction() {
+ final List<InstructionId> ids = new ArrayList<>();
+ for (final InstructionImpl d : this.dependencies) {
+ if (d.getStatus() != InstructionStatus.Successful) {
+ ids.add(d.getId());
+ }
+ }
+ cancel(new DetailsBuilder().setUnmetDependencies(ids).build());
+ }
+
@GuardedBy("this")
private void cancelDependants() {
final Details details = new DetailsBuilder().setUnmetDependencies(ImmutableList.of(this.id)).build();