*/
package org.opendaylight.protocol.pcep.ietf.stateful02;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
@Override
protected Replies getValidReply(final List<Object> objects, final List<Message> errors) {
if (!(objects.get(0) instanceof Rp)) {
- errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.RP_MISSING, Optional.<Rp>absent()));
return null;
}
final Rp rp = (Rp) objects.get(0);
*/
package org.opendaylight.protocol.pcep.ietf.stateful02;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-
import java.util.List;
-
import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
import org.opendaylight.protocol.pcep.spi.MessageUtil;
import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
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.types.rev131005.rp.object.Rp;
/**
* Parser for {@link Pcrpt}
builder.setLsp((Lsp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
return null;
}
if (!objects.isEmpty()) {
*/
package org.opendaylight.protocol.pcep.ietf.stateful02;
+import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
import java.util.List;
if (obj instanceof ClassType) {
final ClassType classType = (ClassType) obj;
if (!classType.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, rp));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.of(rp)));
} else {
builder.setClassType(classType);
}
&& builder.getBandwidth() != null
&& builder.getReportedRoute().getBandwidth().getBandwidth() != new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth(new byte[] { 0 })
&& builder.getReportedRoute().getRro() == null) {
- errors.add(createErrorMsg(PCEPErrors.RRO_MISSING, rp));
+ errors.add(createErrorMsg(PCEPErrors.RRO_MISSING, Optional.of(rp)));
return null;
}
return new SegmentComputationBuilder().setP2p(builder.build()).build();
*/
package org.opendaylight.protocol.pcep.ietf.stateful02;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-
import java.util.List;
-
import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
import org.opendaylight.protocol.pcep.spi.MessageUtil;
import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
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.types.rev131005.rp.object.Rp;
/**
* Parser for {@link Pcupd}
builder.setLsp((Lsp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
return null;
}
if (!objects.isEmpty()) {
pBuilder.setEro((Ero) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.ERO_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
return null;
}
parsePath(objects, pBuilder);
*/
package org.opendaylight.protocol.pcep.ietf.stateful07;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
} else if (obj instanceof Rp) {
final Rp o = (Rp) obj;
if (o.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.<Rp>absent()));
return null;
}
requestParameters.add(new RpsBuilder().setRp(o).build());
*/
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 io.netty.buffer.ByteBuf;
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.types.rev131005.reported.route.object.Rro;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
/**
* Parser for {@link Pcrpt}
builder.setLsp((Lsp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
isValid = false;
}
if (!objects.isEmpty()) {
pBuilder.setEro((Ero) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.ERO_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
isValid = false;
}
parsePath(objects, pBuilder);
*/
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 io.netty.buffer.ByteBuf;
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.types.rev131005.rp.object.Rp;
/**
* Parser for {@link Pcupd}
builder.setSrp((Srp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.SRP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.SRP_MISSING, Optional.<Rp>absent()));
isValid = false;
}
if (objects.get(0) instanceof Lsp) {
builder.setLsp((Lsp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
isValid = false;
}
if (!objects.isEmpty()) {
pBuilder.setEro((Ero) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.ERO_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
isValid = false;
}
parsePath(objects, pBuilder);
package org.opendaylight.protocol.pcep.impl;
import java.util.Arrays;
-
-import org.opendaylight.protocol.pcep.spi.PCEPErrorMapping;
-import org.opendaylight.protocol.pcep.spi.PCEPErrorMapping.PCEPErrorIdentifier;
import org.opendaylight.protocol.pcep.spi.PCEPErrors;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcerrBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
public static Message createErrorMessage(final PCEPErrors e, final Open t) {
final PcerrBuilder errMessageBuilder = new PcerrBuilder();
- final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
- final PCEPErrorIdentifier id = mapping.getFromErrorsEnum(e);
- final ErrorObject err = new ErrorObjectBuilder().setType(id.getType()).setValue(id.getValue()).build();
+ final ErrorObject err = new ErrorObjectBuilder().setType(e.getErrorType()).setValue(e.getErrorValue()).build();
if (t == null) {
return errMessageBuilder.setPcerrMessage(
new PcerrMessageBuilder().setErrors(Arrays.asList(new ErrorsBuilder().setErrorObject(err).build())).build()).build();
*/
package org.opendaylight.protocol.pcep.impl.message;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
} else if (obj instanceof Rp) {
final Rp o = (Rp) obj;
if (o.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.<Rp>absent()));
return null;
}
requestParameters.add(new RpsBuilder().setRp(o).build());
*/
package org.opendaylight.protocol.pcep.impl.message;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-
import java.util.List;
-
import org.opendaylight.protocol.pcep.spi.AbstractMessageParser;
import org.opendaylight.protocol.pcep.spi.MessageUtil;
import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
if (obj instanceof Rp) {
final Rp rp = (Rp) obj;
if (rp.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.<Rp>absent()));
return null;
}
requestParameters.add(new RpsBuilder().setRp(rp).build());
*/
package org.opendaylight.protocol.pcep.impl.message;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
protected Replies getValidReply(final List<Object> objects, final List<Message> errors) {
if (!(objects.get(0) instanceof Rp)) {
- errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.RP_MISSING, Optional.<Rp>absent()));
return null;
}
final Rp rp = (Rp) objects.get(0);
*/
package org.opendaylight.protocol.pcep.impl.message;
+import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
rpObj = (Rp) objects.get(0);
objects.remove(0);
if (!rpObj.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.<Rp>absent()));
} else {
rBuilder.setRp(rpObj);
}
} else {
// if RP obj is missing return error only
- errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.RP_MISSING, Optional.<Rp>absent()));
return null;
}
final List<VendorInformationObject> vendorInfo = addVendorInformationObjects(objects);
final EndpointsObj ep = (EndpointsObj) objects.get(0);
objects.remove(0);
if (!ep.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, rpObj));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.of(rpObj)));
} else {
p2pBuilder.setEndpointsObj(ep);
}
} else {
- errors.add(createErrorMsg(PCEPErrors.END_POINTS_MISSING, rpObj));
+ errors.add(createErrorMsg(PCEPErrors.END_POINTS_MISSING, Optional.of(rpObj)));
return null;
}
// p2p
if (obj instanceof ClassType) {
final ClassType classType = (ClassType) obj;
if (!classType.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, rp));
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.of(rp)));
} else {
builder.setClassType(classType);
}
&& builder.getReportedRoute().getBandwidth().getBandwidth() !=
new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth(new byte[] { 0 })
&& builder.getReportedRoute().getRro() == null) {
- errors.add(createErrorMsg(PCEPErrors.RRO_MISSING, rp));
+ errors.add(createErrorMsg(PCEPErrors.RRO_MISSING, Optional.of(rp)));
return null;
}
return new SegmentComputationBuilder().setP2p(builder.build()).build();
package org.opendaylight.protocol.pcep.segment.routing02;
+import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
import java.util.List;
@Override
protected Replies getValidReply(List<Object> objects, List<Message> errors) {
if (!(objects.get(0) instanceof Rp)) {
- errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.RP_MISSING, Optional.<Rp>absent()));
return null;
}
final Rp rp = (Rp) objects.get(0);
final Ero ero = (Ero) object;
final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
if (error != null) {
- errors.add(createErrorMsg(error));
+ errors.add(createErrorMsg(error, Optional.<Rp>absent()));
return null;
} else {
paths.add(pBuilder.setEro(ero).build());
package org.opendaylight.protocol.pcep.segment.routing02;
+import com.google.common.base.Optional;
import io.netty.buffer.ByteBuf;
import java.util.List;
import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCReportMessageParser;
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.explicit.route.object.Ero;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
public class SrPcRptMessageParser extends Stateful07PCReportMessageParser {
@Override
protected Reports getValidReports(List<Object> objects, List<Message> errors) {
if (!(objects.get(0) instanceof Srp)) {
- errors.add(createErrorMsg(PCEPErrors.SRP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.SRP_MISSING, Optional.<Rp>absent()));
}
final Srp srp = (Srp) objects.get(0);
if (isSegmentRoutingPath(srp)) {
builder.setLsp((Lsp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
isValid = false;
}
final Ero ero = (Ero) obj;
final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
if (error != null) {
- errors.add(createErrorMsg(error));
+ errors.add(createErrorMsg(error, Optional.<Rp>absent()));
isValid = false;
} else {
builder.setPath(new PathBuilder().setEro(ero).build());
}
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.ERO_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
isValid = false;
}
if (isValid) {
package org.opendaylight.protocol.pcep.segment.routing02;
+import com.google.common.base.Optional;
import io.netty.buffer.ByteBuf;
import java.util.List;
import org.opendaylight.protocol.pcep.ietf.stateful07.Stateful07PCUpdateRequestMessageParser;
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.explicit.route.object.Ero;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
public class SrPcUpdMessageParser extends Stateful07PCUpdateRequestMessageParser {
builder.setLsp((Lsp) objects.get(0));
objects.remove(0);
} else {
- errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.LSP_MISSING, Optional.<Rp>absent()));
isValid = false;
}
final Ero ero = (Ero) obj;
final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
if (error != null) {
- errors.add(createErrorMsg(error));
+ errors.add(createErrorMsg(error, Optional.<Rp>absent()));
isValid = false;
} else {
builder.setPath(new PathBuilder().setEro(ero).build());
objects.remove(0);
}
} else {
- errors.add(createErrorMsg(PCEPErrors.ERO_MISSING));
+ errors.add(createErrorMsg(PCEPErrors.ERO_MISSING, Optional.<Rp>absent()));
isValid = false;
}
if (isValid) {
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.primitives.UnsignedBytes;
-
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
+import java.util.Collections;
import java.util.List;
-
import org.opendaylight.protocol.util.ByteArray;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcerrBuilder;
return objs;
}
- public static Message createErrorMsg(final PCEPErrors e) {
- final PCEPErrorMapping maping = PCEPErrorMapping.getInstance();
- return new PcerrBuilder().setPcerrMessage(
- new PcerrMessageBuilder().setErrors(
- Arrays.asList(new ErrorsBuilder().setErrorObject(
- new ErrorObjectBuilder().setType(maping.getFromErrorsEnum(e).getType()).setValue(
- maping.getFromErrorsEnum(e).getValue()).build()).build())).build()).build();
- }
-
- public static Message createErrorMsg(final PCEPErrors e, final Rp rp) {
- final PCEPErrorMapping maping = PCEPErrorMapping.getInstance();
+ public static Message createErrorMsg(final PCEPErrors e, final Optional<Rp> rp) {
+ final PcerrMessageBuilder msgBuilder = new PcerrMessageBuilder();
+ if (rp.isPresent()) {
+ new RequestCaseBuilder().setRequest(new RequestBuilder().setRps(Collections.singletonList(new RpsBuilder().setRp(
+ rp.get()).build())).build()).build();
+ }
return new PcerrBuilder().setPcerrMessage(
- 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).getType()).setValue(
- maping.getFromErrorsEnum(e).getValue()).build()).build())).build()).build();
+ msgBuilder.setErrors(Arrays.asList(new ErrorsBuilder().setErrorObject(
+ new ErrorObjectBuilder().setType(e.getErrorType()).setValue(
+ e.getErrorValue()).build()).build())).build()).build();
}
protected abstract Message validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException;
+++ /dev/null
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.protocol.pcep.spi;
-
-import com.google.common.annotations.VisibleForTesting;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Bidirectional mapping of {@link org.opendaylight.protocol.pcep.spi.PCEPErrors PCEPErrors} and
- * {@link org.opendaylight.protocol.pcep.impl.object.PCEPErrorObjectParser.PCEPErrorIdentifier ErrorIdentifier}
- */
-public final class PCEPErrorMapping {
-
- private static final Logger LOG = LoggerFactory.getLogger(PCEPErrorMapping.class);
-
- /**
- * Caret for combination of Error-type and Error-value
- */
- public static final class PCEPErrorIdentifier {
- private final short type;
- private final short value;
-
- @VisibleForTesting
- PCEPErrorIdentifier(final short type, final short value) {
- this.type = type;
- this.value = value;
- }
-
- public short getType() {
- return this.type;
- }
-
- public short getValue() {
- return this.value;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + this.type;
- result = prime * result + this.value;
- return result;
- }
-
- @Override
- public boolean equals(final java.lang.Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (this.getClass() != obj.getClass()) {
- return false;
- }
- final PCEPErrorIdentifier other = (PCEPErrorIdentifier) obj;
- if (this.type != other.type) {
- return false;
- }
- if (this.value != other.value) {
- return false;
- }
- return true;
- }
-
- @Override
- public String toString() {
- return "type " + this.type + " value " + this.value;
- }
- }
-
- private static final PCEPErrorMapping INSTANCE = new PCEPErrorMapping();
-
- private final Map<PCEPErrors, PCEPErrorIdentifier> errorsMap = new HashMap<PCEPErrors, PCEPErrorIdentifier>();
- private final Map<PCEPErrorIdentifier, PCEPErrors> errorIdsMap = new HashMap<PCEPErrorIdentifier, PCEPErrors>();
-
- private PCEPErrorMapping() {
- this.fillIn();
- }
-
- private void fillIn() {
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 1), PCEPErrors.NON_OR_INVALID_OPEN_MSG);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 2), PCEPErrors.NO_OPEN_BEFORE_EXP_OPENWAIT);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 3), PCEPErrors.NON_ACC_NON_NEG_SESSION_CHAR);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 4), PCEPErrors.NON_ACC_NEG_SESSION_CHAR);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 5), PCEPErrors.SECOND_OPEN_MSG);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 6), PCEPErrors.PCERR_NON_ACC_SESSION_CHAR);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 7), PCEPErrors.NO_MSG_BEFORE_EXP_KEEPWAIT);
- this.fillIn(new PCEPErrorIdentifier((short) 1, (short) 8), PCEPErrors.PCEP_VERSION_NOT_SUPPORTED);
-
- this.fillIn(new PCEPErrorIdentifier((short) 2, (short) 0), PCEPErrors.CAPABILITY_NOT_SUPPORTED);
-
- this.fillIn(new PCEPErrorIdentifier((short) 3, (short) 1), PCEPErrors.UNRECOGNIZED_OBJ_CLASS);
- this.fillIn(new PCEPErrorIdentifier((short) 3, (short) 2), PCEPErrors.UNRECOGNIZED_OBJ_TYPE);
-
- this.fillIn(new PCEPErrorIdentifier((short) 4, (short) 1), PCEPErrors.NOT_SUPPORTED_OBJ_CLASS);
- this.fillIn(new PCEPErrorIdentifier((short) 4, (short) 2), PCEPErrors.NOT_SUPPORTED_OBJ_TYPE);
-
- this.fillIn(new PCEPErrorIdentifier((short) 5, (short) 1), PCEPErrors.C_BIT_SET);
- this.fillIn(new PCEPErrorIdentifier((short) 5, (short) 2), PCEPErrors.O_BIT_SET);
- this.fillIn(new PCEPErrorIdentifier((short) 5, (short) 3), PCEPErrors.OF_NOT_ALLOWED);
- this.fillIn(new PCEPErrorIdentifier((short) 5, (short) 4), PCEPErrors.OF_BIT_SET);
- this.fillIn(new PCEPErrorIdentifier((short) 5, (short) 5), PCEPErrors.GCO_NOT_ALLOWED);
- this.fillIn(new PCEPErrorIdentifier((short) 5, (short) 7), PCEPErrors.P2MP_COMPUTATION_NOT_ALLOWED);
-
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 1), PCEPErrors.RP_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 2), PCEPErrors.RRO_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 3), PCEPErrors.END_POINTS_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 8), PCEPErrors.LSP_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 9), PCEPErrors.ERO_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 10), PCEPErrors.SRP_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 11), PCEPErrors.LSP_IDENTIFIERS_TLV_MISSING);
-
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 13), PCEPErrors.LSP_CLEANUP_TLV_MISSING);
- this.fillIn(new PCEPErrorIdentifier((short) 6, (short) 14), PCEPErrors.SYMBOLIC_PATH_NAME_MISSING);
-
- this.fillIn(new PCEPErrorIdentifier((short) 7, (short) 0), PCEPErrors.SYNC_PATH_COMP_REQ_MISSING);
-
- this.fillIn(new PCEPErrorIdentifier((short) 8, (short) 0), PCEPErrors.UNKNOWN_REQ_REF);
-
- this.fillIn(new PCEPErrorIdentifier((short) 9, (short) 0), PCEPErrors.ATTEMPT_2ND_SESSION);
-
- this.fillIn(new PCEPErrorIdentifier((short) 10, (short) 1), PCEPErrors.P_FLAG_NOT_SET);
-
- /* Segment Routing errors
- https://tools.ietf.org/html/draft-sivabalan-pce-segment-routing-02#section-9.2 */
- this.fillIn(new PCEPErrorIdentifier((short) 10, (short) 2), PCEPErrors.BAD_LABEL_VALUE);
- this.fillIn(new PCEPErrorIdentifier((short) 10, (short) 5), PCEPErrors.NON_IDENTICAL_ERO_SUBOBJECTS);
-
- this.fillIn(new PCEPErrorIdentifier((short) 12, (short) 1), PCEPErrors.UNSUPPORTED_CT);
- this.fillIn(new PCEPErrorIdentifier((short) 12, (short) 2), PCEPErrors.INVALID_CT);
- this.fillIn(new PCEPErrorIdentifier((short) 12, (short) 3), PCEPErrors.CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS);
-
- this.fillIn(new PCEPErrorIdentifier((short) 15, (short) 1), PCEPErrors.INSUFFICIENT_MEMORY);
- this.fillIn(new PCEPErrorIdentifier((short) 15, (short) 2), PCEPErrors.GCO_NOT_SUPPORTED);
-
- this.fillIn(new PCEPErrorIdentifier((short) 16, (short) 1), PCEPErrors.CANNOT_SATISFY_P2MP_REQUEST_DUE_TO_INSUFFISIENT_MEMMORY);
- this.fillIn(new PCEPErrorIdentifier((short) 16, (short) 2), PCEPErrors.NOT_CAPPABLE_P2MP_COMPUTATION);
-
- this.fillIn(new PCEPErrorIdentifier((short) 17, (short) 1), PCEPErrors.P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT2);
- this.fillIn(new PCEPErrorIdentifier((short) 17, (short) 2), PCEPErrors.P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT3);
- this.fillIn(new PCEPErrorIdentifier((short) 17, (short) 3), PCEPErrors.P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT4);
- this.fillIn(new PCEPErrorIdentifier((short) 17, (short) 4), PCEPErrors.P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_INCONSISTENT_EP);
-
- this.fillIn(new PCEPErrorIdentifier((short) 18, (short) 1), PCEPErrors.P2MP_FRAGMENTATION_FAILRUE);
-
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 1), PCEPErrors.UPDATE_REQ_FOR_NON_LSP);
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 2), PCEPErrors.UPDATE_REQ_FOR_NO_STATEFUL);
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 3), PCEPErrors.UNKNOWN_PLSP_ID);
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 4), PCEPErrors.RESOURCE_LIMIT_EXCEEDED);
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 6), PCEPErrors.LSP_LIMIT_EXCEEDED);
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 7), PCEPErrors.DELEGATION_NON_REVOKABLE);
- this.fillIn(new PCEPErrorIdentifier((short) 19, (short) 8), PCEPErrors.NON_ZERO_PLSPID);
-
- this.fillIn(new PCEPErrorIdentifier((short) 20, (short) 1), PCEPErrors.CANNOT_PROCESS_STATE_REPORT);
- this.fillIn(new PCEPErrorIdentifier((short) 20, (short) 2), PCEPErrors.LSP_DB_VERSION_MISMATCH);
- this.fillIn(new PCEPErrorIdentifier((short) 20, (short) 3), PCEPErrors.DB_VERSION_TLV_MISSING_WHEN_SYNC_ALLOWED);
- this.fillIn(new PCEPErrorIdentifier((short) 20, (short) 5), PCEPErrors.CANNOT_COMPLETE_STATE_SYNC);
-
- this.fillIn(new PCEPErrorIdentifier((short) 23, (short) 1), PCEPErrors.USED_SYMBOLIC_PATH_NAME);
-
- this.fillIn(new PCEPErrorIdentifier((short) 24, (short) 1), PCEPErrors.LSP_UNACC_INST_PARAMS);
- this.fillIn(new PCEPErrorIdentifier((short) 24, (short) 2), PCEPErrors.LSP_INTERNAL_ERROR);
- this.fillIn(new PCEPErrorIdentifier((short) 24, (short) 3), PCEPErrors.LSP_RSVP_ERROR);
- }
-
- private void fillIn(final PCEPErrorIdentifier identifier, final PCEPErrors error) {
- this.errorsMap.put(error, identifier);
- this.errorIdsMap.put(identifier, error);
- }
-
- public PCEPErrorIdentifier getFromErrorsEnum(final PCEPErrors error) {
- final PCEPErrorIdentifier ei = this.errorsMap.get(error);
- if (ei == null) {
- LOG.debug("Unknown PCEPErrors type: {}.", error);
- throw new NoSuchElementException("Unknown PCEPErrors type: " + error);
- }
- return ei;
- }
-
- public PCEPErrors getFromErrorIdentifier(final PCEPErrorIdentifier identifier) {
- final PCEPErrors e = this.errorIdsMap.get(identifier);
- if (e == null) {
- LOG.debug("Unknown error type/value combination: {}.", identifier);
- throw new NoSuchElementException("Unknown error type/value combination: " + identifier);
- }
- return e;
- }
-
- public static PCEPErrorMapping getInstance() {
- return INSTANCE;
- }
-}
*/
package org.opendaylight.protocol.pcep.spi;
+import com.google.common.collect.Maps;
+import java.util.Map;
+
+
+
+
/**
* Possible errors listed in RFC5440, RFC 5455 and stateful draft.
*
* "http://www.ietf.org/id/draft-crabbe-pce-pce-initiated-lsp-00.txt#section-7.1" >PCEP-Error Object</a>
*/
public enum PCEPErrors {
+
/**
* Reception of an invalid Open message or a non Open message.
*/
- NON_OR_INVALID_OPEN_MSG,
+ NON_OR_INVALID_OPEN_MSG(1, 1),
/**
* No Open message received before the expiration of the OpenWait timer.
*/
- NO_OPEN_BEFORE_EXP_OPENWAIT,
+ NO_OPEN_BEFORE_EXP_OPENWAIT(1, 2),
/**
* Unacceptable and non-negotiable session characteristics.
*/
- NON_ACC_NON_NEG_SESSION_CHAR,
+ NON_ACC_NON_NEG_SESSION_CHAR(1, 3),
/**
* Unacceptable but negotiable session characteristics.
*/
- NON_ACC_NEG_SESSION_CHAR,
+ NON_ACC_NEG_SESSION_CHAR(1, 4),
/**
* Reception of a second Open message with still unacceptable session characteristics.
*/
- SECOND_OPEN_MSG,
+ SECOND_OPEN_MSG(1, 5),
/**
* Reception of a PCErr message proposing unacceptable session characteristics.
*/
- PCERR_NON_ACC_SESSION_CHAR,
+ PCERR_NON_ACC_SESSION_CHAR(1, 6),
/**
* No Keepalive or PCErr message received before the expiration of the KeepWait timer.
*/
- NO_MSG_BEFORE_EXP_KEEPWAIT,
+ NO_MSG_BEFORE_EXP_KEEPWAIT(1, 7),
/**
* Capability not supported.
*/
- CAPABILITY_NOT_SUPPORTED,
+ CAPABILITY_NOT_SUPPORTED(2, 0),
/**
* PCEP version not supported.
*/
- PCEP_VERSION_NOT_SUPPORTED,
+ PCEP_VERSION_NOT_SUPPORTED(1, 8),
/**
* Unrecognized object class.
*/
- UNRECOGNIZED_OBJ_CLASS,
+ UNRECOGNIZED_OBJ_CLASS(3, 1),
/**
* Unrecognized object Type.
*/
- UNRECOGNIZED_OBJ_TYPE,
+ UNRECOGNIZED_OBJ_TYPE(3, 2),
/**
* Not supported object class.
*/
- NOT_SUPPORTED_OBJ_CLASS,
+ NOT_SUPPORTED_OBJ_CLASS(4, 1),
/**
* Not supported object Type.
*/
- NOT_SUPPORTED_OBJ_TYPE,
+ NOT_SUPPORTED_OBJ_TYPE(4, 2),
/**
* C bit of the METRIC object set (request rejected).
*/
- C_BIT_SET,
+ C_BIT_SET(5, 1),
/**
* O bit of the RP object cleared (request rejected).
*/
- O_BIT_SET,
+ O_BIT_SET(5, 2),
/**
* Objective function not allowed (request rejected)
*/
- OF_NOT_ALLOWED,
+ OF_NOT_ALLOWED(5, 3),
/**
* OF bit of the RP object set (request rejected)
*/
- OF_BIT_SET,
+ OF_BIT_SET(5, 4),
/**
* Global concurrent optimization not allowed (GCO extension)
*/
- GCO_NOT_ALLOWED,
+ GCO_NOT_ALLOWED(5, 5),
/**
* P2MP Path computation is not allowed
*/
- P2MP_COMPUTATION_NOT_ALLOWED,
+ P2MP_COMPUTATION_NOT_ALLOWED(5, 7),
/**
* RP object missing
*/
- RP_MISSING,
+ RP_MISSING(6, 1),
/**
* RRO missing for a reoptimization request (R bit of the RP object set).
*/
- RRO_MISSING,
+ RRO_MISSING(6, 2),
/**
* END-POINTS object missing
*/
- END_POINTS_MISSING,
+ END_POINTS_MISSING(6, 3),
/**
* LSP cleanup TLV missing
*/
- LSP_CLEANUP_TLV_MISSING,
+ LSP_CLEANUP_TLV_MISSING(6, 13),
/**
* SYMBOLIC-PATH-NAME TLV missing
*/
- SYMBOLIC_PATH_NAME_MISSING,
+ SYMBOLIC_PATH_NAME_MISSING(6, 14),
/**
* Synchronized path computation request missing.
*/
- SYNC_PATH_COMP_REQ_MISSING,
+ SYNC_PATH_COMP_REQ_MISSING(7, 0),
/**
* Unknown request reference
*/
- UNKNOWN_REQ_REF,
+ UNKNOWN_REQ_REF(8, 0),
/**
* Attempt to establish a second PCEP session.
*/
- ATTEMPT_2ND_SESSION,
+ ATTEMPT_2ND_SESSION(9, 0),
/**
* LSP Object missing.
*/
- LSP_MISSING,
+ LSP_MISSING(6, 8),
/**
* ERO Object missing for a path in an LSP Update Request where TE-LSP setup is requested.
*/
- ERO_MISSING,
+ ERO_MISSING(6, 9),
/**
* Srp Object missing for a path in an LSP Update Request where TE-LSP setup is requested.
*/
- SRP_MISSING,
+ SRP_MISSING(6, 10),
/**
* LSP-IDENTIFIERS TLV missing for a path in an LSP Update Request where TE-LSP setup is requested.
*/
- LSP_IDENTIFIERS_TLV_MISSING,
+ LSP_IDENTIFIERS_TLV_MISSING(6, 11),
/**
* Reception of an object with P flag not set although the P flag must be set according to this specification.
*/
- P_FLAG_NOT_SET,
+ P_FLAG_NOT_SET(10, 1),
/**
* Insufficient memory (GCO extension)
*/
- INSUFFICIENT_MEMORY,
+ INSUFFICIENT_MEMORY(15, 1),
/**
* Global concurrent optimization not supported (GCO extension)
*/
- GCO_NOT_SUPPORTED,
+ GCO_NOT_SUPPORTED(15, 2),
/**
* Diffserv-aware TE error: Unsupported Class-Type.
*/
- UNSUPPORTED_CT,
+ UNSUPPORTED_CT(12, 1),
/**
* Diffserv-aware TE error: Invalid Class-Type.
*/
- INVALID_CT,
+ INVALID_CT(12, 2),
/**
* Diffserv-aware TE error: Class-Type and setup priority do not form a configured TE-class.
*/
- CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS,
+ CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS(12, 3),
/**
* The PCE cannot satisfy the request due to insufficient memory
*/
- CANNOT_SATISFY_P2MP_REQUEST_DUE_TO_INSUFFISIENT_MEMMORY,
+ CANNOT_SATISFY_P2MP_REQUEST_DUE_TO_INSUFFISIENT_MEMMORY(16, 1),
/**
* The PCE is not capable of P2MP computation
*/
- NOT_CAPPABLE_P2MP_COMPUTATION,
+ NOT_CAPPABLE_P2MP_COMPUTATION(16, 2),
/**
* The PCE is not capable to satisfy the request due to no END-POINTS with leaf type 2
*/
- P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT2,
+ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT2(17, 1),
/**
* The PCE is not capable to satisfy the request due to no END-POINTS with leaf type 3
*/
- P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT3,
+ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT3(17, 2),
/**
* The PCE is not capable to satisfy the request due to no END-POINTS with leaf type 4
*/
- P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT4,
+ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT4(17, 3),
/**
* The PCE is not capable to satisfy the request due to inconsistent END-POINTS
*/
- P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_INCONSISTENT_EP,
+ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_INCONSISTENT_EP(17, 4),
/**
* P2MP Fragmented request failure
*/
- P2MP_FRAGMENTATION_FAILRUE,
+ P2MP_FRAGMENTATION_FAILRUE(18, 1),
/**
* Attempted LSP Update Request for a non- delegated LSP. The PCEP-ERROR Object is followed by the LSP Object that
* identifies the LSP.
*/
- UPDATE_REQ_FOR_NON_LSP,
+ UPDATE_REQ_FOR_NON_LSP(19, 1),
/**
* Attempted LSP Update Request if active stateful PCE capability was not negotiated active PCE.
*/
- UPDATE_REQ_FOR_NO_STATEFUL,
+ UPDATE_REQ_FOR_NO_STATEFUL(19, 2),
/**
* Attempted LSP Update Request for an LSP identified by an unknown PLSP-ID.
*/
- UNKNOWN_PLSP_ID,
+ UNKNOWN_PLSP_ID(19, 3),
/**
* A PCE indicates to a PCC that it has exceeded the resource limit allocated for its state, and thus it cannot
* accept and process its LSP State Report message.
*/
- RESOURCE_LIMIT_EXCEEDED,
+ RESOURCE_LIMIT_EXCEEDED(19, 4),
/**
* PCE-initiated LSP limit reached
*/
- LSP_LIMIT_EXCEEDED,
+ LSP_LIMIT_EXCEEDED(19, 6),
/**
* Delegation for PCE-initiated LSP cannot be revoked
*/
- DELEGATION_NON_REVOKABLE,
+ DELEGATION_NON_REVOKABLE(19, 7),
/**
* Non-zero PLSP-ID in LSP initiation request
*/
- NON_ZERO_PLSPID,
+ NON_ZERO_PLSPID(19, 8),
/**
* A PCE indicates to a PCC that it can not process (an otherwise valid) LSP State Report. The PCEP-ERROR Object is
* followed by the LSP Object that identifies the LSP.
*/
- CANNOT_PROCESS_STATE_REPORT,
+ CANNOT_PROCESS_STATE_REPORT(20, 1),
/**
* LSP Database version mismatch.
*/
- LSP_DB_VERSION_MISMATCH,
+ LSP_DB_VERSION_MISMATCH(20, 2),
/**
* The LSP-DB-VERSION TLV Missing when State Synchronization Avoidance enabled.
*/
- DB_VERSION_TLV_MISSING_WHEN_SYNC_ALLOWED,
+ DB_VERSION_TLV_MISSING_WHEN_SYNC_ALLOWED(20, 3),
/**
* A PCC indicates to a PCE that it can not complete the state synchronization,
*/
- CANNOT_COMPLETE_STATE_SYNC,
+ CANNOT_COMPLETE_STATE_SYNC(20, 5),
/**
* SYMBOLIC-PATH-NAME in use
*/
- USED_SYMBOLIC_PATH_NAME,
+ USED_SYMBOLIC_PATH_NAME(23, 1),
/**
* LSP instantiation error: Unacceptable instantiation parameters
*/
- LSP_UNACC_INST_PARAMS,
+ LSP_UNACC_INST_PARAMS(24, 1),
/**
* LSP instantiation error: Internal error
*/
- LSP_INTERNAL_ERROR,
+ LSP_INTERNAL_ERROR(24, 2),
/**
* LSP instantiation error: RSVP signaling error
*/
- LSP_RSVP_ERROR,
+ LSP_RSVP_ERROR(24, 3),
/**
* Segment Routing error: Non-identical ERO subobjects
*/
- NON_IDENTICAL_ERO_SUBOBJECTS,
+ NON_IDENTICAL_ERO_SUBOBJECTS(10, 5),
/**
* Segment Routing error: ERO subobject with invalid SID value;
* */
- BAD_LABEL_VALUE,
+ BAD_LABEL_VALUE(10, 2);
+
+ private PCEPErrorIdentifier errorId;
+ private static final Map<PCEPErrorIdentifier, PCEPErrors> VALUE_MAP;
+
+ static {
+ VALUE_MAP = Maps.newHashMap();
+ for (final PCEPErrors enumItem : PCEPErrors.values()) {
+ VALUE_MAP.put(enumItem.getErrorIdentifier(), enumItem);
+ }
+ }
+
+ public static PCEPErrors forValue(final short errorType, final short errorValue) {
+ return VALUE_MAP.get(new PCEPErrorIdentifier(errorType, errorValue));
+ }
+
+ private PCEPErrors(final int type, final int value) {
+ this.errorId = new PCEPErrorIdentifier((short) type, (short) value);
+ }
+
+ private PCEPErrorIdentifier getErrorIdentifier() {
+ return this.errorId;
+ }
+
+ public short getErrorType() {
+ return this.errorId.getType();
+ }
+
+ public short getErrorValue() {
+ return this.errorId.getValue();
+ }
+
+ /**
+ * Caret for combination of Error-type and Error-value
+ */
+ private static final class PCEPErrorIdentifier {
+ private final short type;
+ private final short value;
+
+ PCEPErrorIdentifier(final short type, final short value) {
+ this.type = type;
+ this.value = value;
+ }
+
+ public short getType() {
+ return this.type;
+ }
+
+ public short getValue() {
+ return this.value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + this.type;
+ result = prime * result + this.value;
+ return result;
+ }
+
+ @Override
+ public boolean equals(final java.lang.Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (this.getClass() != obj.getClass()) {
+ return false;
+ }
+ final PCEPErrorIdentifier other = (PCEPErrorIdentifier) obj;
+ if (this.type != other.type) {
+ return false;
+ }
+ if (this.value != other.value) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "type " + this.type + " value " + this.value;
+ }
+ }
}
package org.opendaylight.protocol.pcep.spi;
import com.google.common.base.Preconditions;
-
import java.util.Arrays;
import java.util.List;
-
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.pcep.error.object.ErrorObjectBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.Errors;
public UnknownObject(final PCEPErrors error, final Object invalidObject) {
this.e = Preconditions.checkNotNull(error);
- final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
this.error = new ErrorsBuilder().setErrorObject(
- new ErrorObjectBuilder().setType(mapping.getFromErrorsEnum(error).getType()).setValue(
- mapping.getFromErrorsEnum(error).getValue()).build()).build();
+ new ErrorObjectBuilder().setType(error.getErrorType()).setValue(
+ error.getErrorValue()).build()).build();
this.invalidObject = invalidObject;
}
import static org.junit.Assert.assertTrue;
import org.junit.Test;
-import org.opendaylight.protocol.pcep.spi.PCEPErrorMapping.PCEPErrorIdentifier;
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.close.object.CCloseBuilder;
assertFalse(un.isIgnore());
assertFalse(un.isProcessingRule());
assertEquals(PCEPErrors.CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS, un.getError());
- final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
- final PCEPErrorIdentifier id = mapping.getFromErrorsEnum(PCEPErrors.CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS);
- assertEquals(id.getType(), un.getErrors().get(0).getErrorObject().getType().shortValue());
+ assertEquals(PCEPErrors.CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS.getErrorType(), un.getErrors().get(0).getErrorObject().getType().shortValue());
final Object o = new CCloseBuilder().build();
UnknownObject unknown = new UnknownObject(PCEPErrors.LSP_RSVP_ERROR, o);
import static org.junit.Assert.assertEquals;
+import com.google.common.base.Optional;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.util.Collections;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import org.opendaylight.protocol.pcep.spi.PCEPErrorMapping.PCEPErrorIdentifier;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcerr;
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.pcep.error.object.ErrorObject;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObjectBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp;
public class AbstractMessageParserTest {
@Override
protected Message validate(List<Object> objects, List<Message> errors) throws PCEPDeserializerException {
- short type = ((ErrorObject)objects.get(0)).getType();
- short value = ((ErrorObject)objects.get(0)).getValue();
- final PCEPErrorMapping map = PCEPErrorMapping.getInstance();
- return createErrorMsg(map.getFromErrorIdentifier(new PCEPErrorIdentifier(type, value)));
+ final short errorType = ((ErrorObject) objects.get(0)).getType();
+ final short errorValue = ((ErrorObject) objects.get(0)).getValue();
+ return createErrorMsg(PCEPErrors.forValue(errorType, errorValue), Optional.<Rp>absent());
}
};