2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.flow;
11 import java.util.HashMap;
13 import java.util.Optional;
14 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
15 import org.opendaylight.openflowplugin.api.OFConstants;
16 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorKey;
17 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ResultInjector;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlagsV10;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInputBuilder;
22 public class FlowFlagsInjector {
23 @SuppressWarnings("unchecked")
24 public static <FROM, TO> void inject(Optional<FROM> source, TO target, short version) {
26 if (source.isPresent()) {
27 sourceResult = source.get();
28 } else if (version == EncodeConstants.OF10_VERSION_ID) {
29 sourceResult = (FROM) FlowFlagsV10Convertor.defaultResult();
31 sourceResult = (FROM) FlowFlagsConvertor.defaultResult();
34 final Map<ConvertorKey, ResultInjector<?, ?>> injectorMap = new HashMap<>();
35 addInjectors(injectorMap);
37 final ResultInjector<FROM, TO> injection = (ResultInjector<FROM, TO>) injectorMap
38 .get(new ConvertorKey(version, target.getClass()));
40 injection.inject(sourceResult, target);
43 private static void addInjectors(final Map<ConvertorKey, ResultInjector<?, ?>> injectionMapping) {
44 // OF-1.3|FlowModFlags --> FlowModInputBuilder
45 injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_3, FlowModInputBuilder.class),
46 new ResultInjector<FlowModFlags, FlowModInputBuilder>() {
48 public void inject(final FlowModFlags value,
49 final FlowModInputBuilder target) {
50 target.setFlags(value);
54 // OF-1.3|FlowModFlagsV10 --> FlowModInputBuilder
55 injectionMapping.put(new ConvertorKey(OFConstants.OFP_VERSION_1_0, FlowModInputBuilder.class),
56 new ResultInjector<FlowModFlagsV10, FlowModInputBuilder>() {
58 public void inject(final FlowModFlagsV10 value,
59 final FlowModInputBuilder target) {
60 target.setFlagsV10(value);