diff options
Diffstat (limited to 'vpp-common/vpp-translate-utils/src')
2 files changed, 96 insertions, 0 deletions
diff --git a/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslator.java b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslator.java new file mode 100644 index 000000000..00653738d --- /dev/null +++ b/vpp-common/vpp-translate-utils/src/main/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslator.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2018 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.common.translate.util; + +import static com.google.common.base.Preconditions.checkNotNull; + +import io.fd.vpp.jvpp.core.types.FibMplsLabel; +import javax.annotation.Nonnull; + +/** + * Utility for Translating between different representations of MPLS label. + */ +public interface MplsLabelTranslator { + /** + * Make available also from static context. + */ + MplsLabelTranslator INSTANCE = new MplsLabelTranslator() { + }; + + /** + * Builds {@link FibMplsLabel} from its YANG representation. + * + * @param label YANG representation of MPLS Label + * @return VPP representation of MPLS label + */ + default FibMplsLabel translate(@Nonnull final Long label) { + checkNotNull(label, "MPLS label should not be null"); + return translate(label.intValue()); + } + + /** + * Builds {@link FibMplsLabel} from int value. + * + * @param label MPLS Label value + * @return VPP representation of MPLS label + */ + default FibMplsLabel translate(final int label) { + final FibMplsLabel fibMplsLabel = new FibMplsLabel(); + fibMplsLabel.label = label; + return fibMplsLabel; + } +} diff --git a/vpp-common/vpp-translate-utils/src/test/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslatorTest.java b/vpp-common/vpp-translate-utils/src/test/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslatorTest.java new file mode 100644 index 000000000..b0e7dd658 --- /dev/null +++ b/vpp-common/vpp-translate-utils/src/test/java/io/fd/hc2vpp/common/translate/util/MplsLabelTranslatorTest.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2018 Cisco and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.common.translate.util; + +import static org.junit.Assert.assertEquals; + +import io.fd.vpp.jvpp.core.types.FibMplsLabel; +import org.junit.Test; + +public class MplsLabelTranslatorTest implements MplsLabelTranslator { + @Test + public void testTranslateLong() { + final int expectedLabel = 1048575; + final FibMplsLabel expected = new FibMplsLabel(); + expected.label = expectedLabel; + assertEquals(expected, translate(Long.valueOf(1048575))); + } + @Test + public void testTranslateInt() { + final int expectedLabel = 11; + final FibMplsLabel expected = new FibMplsLabel(); + expected.label = expectedLabel; + assertEquals(expected, translate(expectedLabel)); + } + +} |