Use ByteBuf.readRetainedSlice()
[openflowplugin.git] / extension / openflowplugin-extension-nicira / src / main / java / org / opendaylight / openflowplugin / extension / vendor / nicira / convertor / action / LearnConvertorUtil.java
1 /*
2  * Copyright (c) 2016 Hewlett-Packard Enterprise and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action;
9
10 import java.util.ArrayList;
11 import java.util.List;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.learn.grouping.NxActionLearn;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.learn.grouping.NxActionLearnBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.NxActionLearnGrouping;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.FlowModSpec;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromFieldCase;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromFieldCaseBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromValueCase;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromValueCaseBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModCopyFieldIntoFieldCase;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModCopyFieldIntoFieldCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModCopyValueIntoFieldCase;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModCopyValueIntoFieldCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModOutputToPortCase;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.FlowModOutputToPortCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.add.match.from.field._case.FlowModAddMatchFromField;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.add.match.from.field._case.FlowModAddMatchFromFieldBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.add.match.from.value._case.FlowModAddMatchFromValue;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.add.match.from.value._case.FlowModAddMatchFromValueBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.copy.field.into.field._case.FlowModCopyFieldIntoField;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.copy.field.into.field._case.FlowModCopyFieldIntoFieldBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.copy.value.into.field._case.FlowModCopyValueIntoField;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.copy.value.into.field._case.FlowModCopyValueIntoFieldBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.output.to.port._case.FlowModOutputToPort;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flow.mod.spec.flow.mod.spec.flow.mod.output.to.port._case.FlowModOutputToPortBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.NxLearn;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.NxLearnBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.nx.learn.FlowMods;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.nx.learn.FlowModsBuilder;
40
41 public final class LearnConvertorUtil {
42     private LearnConvertorUtil() {
43     }
44
45     /*
46      *                                  CONVERT UP
47      */
48
49     static void convertUp(NxActionLearn action, NxLearnBuilder builder) {
50         builder.setFlags(action.getFlags());
51         builder.setCookie(action.getCookie());
52         builder.setFinHardTimeout(action.getFinHardTimeout());
53         builder.setFinIdleTimeout(action.getFinIdleTimeout());
54         builder.setHardTimeout(action.getHardTimeout());
55         builder.setIdleTimeout(action.getIdleTimeout());
56         builder.setPriority(action.getPriority());
57         builder.setTableId(action.getTableId());
58         builder.setFlowMods(getFlowMods(action));
59     }
60
61     private static List<FlowMods> getFlowMods(NxActionLearn action) {
62         if (action.getFlowMods() == null) {
63             return null;
64         }
65
66         List<FlowMods> flowMods = new ArrayList<>();
67         for (org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.learn
68                 .grouping.nx.action.learn.FlowMods flowMod : action.getFlowMods()) {
69             FlowModsBuilder flowModBuilder = new FlowModsBuilder();
70             FlowModSpec flowModSpec = buildExtFlowModSpec(flowMod.getFlowModSpec());
71             flowModBuilder.setFlowModSpec(flowModSpec);
72             flowMods.add(flowModBuilder.build());
73         }
74         return flowMods;
75     }
76
77     private static List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action
78             .learn.grouping.nx.action.learn.FlowMods> getFlowMods(NxLearn nxLearn) {
79         if (nxLearn.getFlowMods() == null) {
80             return null;
81         }
82
83         List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.learn
84             .grouping.nx.action.learn.FlowMods> flowMods = new ArrayList<>();
85         for (FlowMods flowMod : nxLearn.getFlowMods()) {
86             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.learn
87                 .grouping.nx.action.learn.FlowModsBuilder flowModBuilder = new org.opendaylight.yang.gen.v1.urn
88                     .opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.learn.grouping.nx.action.learn
89                         .FlowModsBuilder();
90             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.FlowModSpec
91                 flowModSpec = buildFlowModSpec(flowMod.getFlowModSpec());
92             flowModBuilder.setFlowModSpec(flowModSpec);
93             flowMods.add(flowModBuilder.build());
94         }
95         return flowMods;
96     }
97
98     private static FlowModSpec buildExtFlowModSpec(org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action
99             .rev140421.flow.mod.spec.FlowModSpec flowModSpec) {
100         if (flowModSpec instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow
101                 .mod.spec.flow.mod.spec.FlowModAddMatchFromFieldCase) {
102             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
103                 .flow.mod.add.match.from.field._case.FlowModAddMatchFromField flowModAdd2 =
104                     ((org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
105                             .flow.mod.spec.FlowModAddMatchFromFieldCase) flowModSpec).getFlowModAddMatchFromField();
106             FlowModAddMatchFromFieldBuilder flowModAdd = new FlowModAddMatchFromFieldBuilder();
107             flowModAdd.setDstField(flowModAdd2.getDstField());
108             flowModAdd.setSrcField(flowModAdd2.getSrcField());
109             flowModAdd.setDstOfs(flowModAdd2.getDstOfs());
110             flowModAdd.setSrcOfs(flowModAdd2.getSrcOfs());
111             flowModAdd.setFlowModNumBits(flowModAdd2.getFlowModNumBits());
112             FlowModAddMatchFromFieldCaseBuilder caseBuilder = new FlowModAddMatchFromFieldCaseBuilder();
113             caseBuilder.setFlowModAddMatchFromField(flowModAdd.build());
114             return caseBuilder.build();
115         } else if (flowModSpec instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action
116                 .rev140421.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromValueCase) {
117             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod
118                 .spec.flow.mod.add.match.from.value._case.FlowModAddMatchFromValue flowModAdd2 =
119                     ((org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
120                             .flow.mod.spec.FlowModAddMatchFromValueCase) flowModSpec).getFlowModAddMatchFromValue();
121             FlowModAddMatchFromValueBuilder flowModAdd = new FlowModAddMatchFromValueBuilder();
122             flowModAdd.setValue(flowModAdd2.getValue());
123             flowModAdd.setSrcField(flowModAdd2.getSrcField());
124             flowModAdd.setSrcOfs(flowModAdd2.getSrcOfs());
125             flowModAdd.setFlowModNumBits(flowModAdd2.getFlowModNumBits());
126             FlowModAddMatchFromValueCaseBuilder caseBuilder = new FlowModAddMatchFromValueCaseBuilder();
127             caseBuilder.setFlowModAddMatchFromValue(flowModAdd.build());
128             return caseBuilder.build();
129         } else if (flowModSpec instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action
130                 .rev140421.flow.mod.spec.flow.mod.spec.FlowModCopyFieldIntoFieldCase) {
131             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod
132                 .spec.flow.mod.copy.field.into.field._case.FlowModCopyFieldIntoField flowModCopy2 =
133                     ((org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
134                             .flow.mod.spec.FlowModCopyFieldIntoFieldCase) flowModSpec).getFlowModCopyFieldIntoField();
135             FlowModCopyFieldIntoFieldBuilder flowModCopy = new FlowModCopyFieldIntoFieldBuilder();
136             flowModCopy.setDstField(flowModCopy2.getDstField());
137             flowModCopy.setDstOfs(flowModCopy2.getDstOfs());
138             flowModCopy.setSrcField(flowModCopy2.getSrcField());
139             flowModCopy.setSrcOfs(flowModCopy2.getSrcOfs());
140             flowModCopy.setFlowModNumBits(flowModCopy2.getFlowModNumBits());
141             FlowModCopyFieldIntoFieldCaseBuilder caseBuilder = new FlowModCopyFieldIntoFieldCaseBuilder();
142             caseBuilder.setFlowModCopyFieldIntoField(flowModCopy.build());
143             return caseBuilder.build();
144         } else if (flowModSpec instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action
145                 .rev140421.flow.mod.spec.flow.mod.spec.FlowModCopyValueIntoFieldCase) {
146             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod
147                 .spec.flow.mod.copy.value.into.field._case.FlowModCopyValueIntoField flowModCopy2 =
148                     ((org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
149                             .flow.mod.spec.FlowModCopyValueIntoFieldCase) flowModSpec).getFlowModCopyValueIntoField();
150             FlowModCopyValueIntoFieldBuilder flowModCopy = new FlowModCopyValueIntoFieldBuilder();
151             flowModCopy.setValue(flowModCopy2.getValue());
152             flowModCopy.setDstField(flowModCopy2.getDstField());
153             flowModCopy.setDstOfs(flowModCopy2.getDstOfs());
154             flowModCopy.setFlowModNumBits(flowModCopy2.getFlowModNumBits());
155             FlowModCopyValueIntoFieldCaseBuilder caseBuilder = new FlowModCopyValueIntoFieldCaseBuilder();
156             caseBuilder.setFlowModCopyValueIntoField(flowModCopy.build());
157             return caseBuilder.build();
158         } else if (flowModSpec instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action
159                 .rev140421.flow.mod.spec.flow.mod.spec.FlowModOutputToPortCase) {
160             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod
161                 .spec.flow.mod.output.to.port._case.FlowModOutputToPort flowModOut2 =
162                     ((org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
163                             .flow.mod.spec.FlowModOutputToPortCase) flowModSpec).getFlowModOutputToPort();
164             FlowModOutputToPortBuilder flowModOut = new FlowModOutputToPortBuilder();
165             flowModOut.setSrcField(flowModOut2.getSrcField());
166             flowModOut.setSrcOfs(flowModOut2.getSrcOfs());
167             flowModOut.setFlowModNumBits(flowModOut2.getFlowModNumBits());
168             FlowModOutputToPortCaseBuilder caseBuilder = new FlowModOutputToPortCaseBuilder();
169             caseBuilder.setFlowModOutputToPort(flowModOut.build());
170             return caseBuilder.build();
171         }
172         return null;
173     }
174
175     /*
176      *                                  CONVERT DOWN
177      */
178
179     static void convertDown(NxActionLearnGrouping nxAction, NxActionLearnBuilder nxActionLearnBuilder) {
180         nxActionLearnBuilder.setFlags(nxAction.getNxLearn().getFlags());
181         nxActionLearnBuilder.setCookie(nxAction.getNxLearn().getCookie());
182         nxActionLearnBuilder.setFinHardTimeout(nxAction.getNxLearn().getFinHardTimeout());
183         nxActionLearnBuilder.setFinIdleTimeout(nxAction.getNxLearn().getFinIdleTimeout());
184         nxActionLearnBuilder.setHardTimeout(nxAction.getNxLearn().getHardTimeout());
185         nxActionLearnBuilder.setIdleTimeout(nxAction.getNxLearn().getIdleTimeout());
186         nxActionLearnBuilder.setPriority(nxAction.getNxLearn().getPriority());
187         nxActionLearnBuilder.setTableId(nxAction.getNxLearn().getTableId());
188         nxActionLearnBuilder.setFlowMods(getFlowMods(nxAction.getNxLearn()));
189     }
190
191     private static org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
192             .FlowModSpec buildFlowModSpec(FlowModSpec flowModSpec) {
193         if (flowModSpec instanceof FlowModAddMatchFromFieldCase) {
194             FlowModAddMatchFromField flowModAdd2 = ((FlowModAddMatchFromFieldCase) flowModSpec)
195                     .getFlowModAddMatchFromField();
196             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod
197                 .spec.flow.mod.add.match.from.field._case.FlowModAddMatchFromFieldBuilder flowModAdd =
198                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
199                         .flow.mod.spec.flow.mod.add.match.from.field._case.FlowModAddMatchFromFieldBuilder();
200             flowModAdd.setDstField(flowModAdd2.getDstField());
201             flowModAdd.setSrcField(flowModAdd2.getSrcField());
202             flowModAdd.setDstOfs(flowModAdd2.getDstOfs());
203             flowModAdd.setSrcOfs(flowModAdd2.getSrcOfs());
204             flowModAdd.setFlowModNumBits(flowModAdd2.getFlowModNumBits());
205             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
206                 .FlowModAddMatchFromFieldCaseBuilder caseBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
207                     .openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromFieldCaseBuilder();
208             caseBuilder.setFlowModAddMatchFromField(flowModAdd.build());
209             return caseBuilder.build();
210         } else if (flowModSpec instanceof FlowModAddMatchFromValueCase) {
211             FlowModAddMatchFromValue flowModAdd2 = ((FlowModAddMatchFromValueCase) flowModSpec)
212                     .getFlowModAddMatchFromValue();
213             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
214                 .flow.mod.add.match.from.value._case.FlowModAddMatchFromValueBuilder flowModAdd =
215                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
216                         .flow.mod.spec.flow.mod.add.match.from.value._case.FlowModAddMatchFromValueBuilder();
217             flowModAdd.setValue(flowModAdd2.getValue());
218             flowModAdd.setSrcField(flowModAdd2.getSrcField());
219             flowModAdd.setSrcOfs(flowModAdd2.getSrcOfs());
220             flowModAdd.setFlowModNumBits(flowModAdd2.getFlowModNumBits());
221             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
222                 .FlowModAddMatchFromValueCaseBuilder caseBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
223                     .openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec.FlowModAddMatchFromValueCaseBuilder();
224             caseBuilder.setFlowModAddMatchFromValue(flowModAdd.build());
225             return caseBuilder.build();
226         } else if (flowModSpec instanceof FlowModCopyFieldIntoFieldCase) {
227             FlowModCopyFieldIntoField flowModCopy2 = ((FlowModCopyFieldIntoFieldCase) flowModSpec)
228                     .getFlowModCopyFieldIntoField();
229             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
230                 .flow.mod.copy.field.into.field._case.FlowModCopyFieldIntoFieldBuilder flowModCopy =
231                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
232                         .flow.mod.spec.flow.mod.copy.field.into.field._case.FlowModCopyFieldIntoFieldBuilder();
233             flowModCopy.setDstField(flowModCopy2.getDstField());
234             flowModCopy.setDstOfs(flowModCopy2.getDstOfs());
235             flowModCopy.setSrcField(flowModCopy2.getSrcField());
236             flowModCopy.setSrcOfs(flowModCopy2.getSrcOfs());
237             flowModCopy.setFlowModNumBits(flowModCopy2.getFlowModNumBits());
238             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
239                 .FlowModCopyFieldIntoFieldCaseBuilder caseBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
240                     .openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
241                         .FlowModCopyFieldIntoFieldCaseBuilder();
242             caseBuilder.setFlowModCopyFieldIntoField(flowModCopy.build());
243             return caseBuilder.build();
244         } else if (flowModSpec instanceof FlowModCopyValueIntoFieldCase) {
245             FlowModCopyValueIntoField flowModCopy2 = ((FlowModCopyValueIntoFieldCase) flowModSpec)
246                     .getFlowModCopyValueIntoField();
247             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
248                 .flow.mod.copy.value.into.field._case.FlowModCopyValueIntoFieldBuilder flowModCopy =
249                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
250                         .flow.mod.spec.flow.mod.copy.value.into.field._case.FlowModCopyValueIntoFieldBuilder();
251             flowModCopy.setDstField(flowModCopy2.getDstField());
252             flowModCopy.setDstOfs(flowModCopy2.getDstOfs());
253             flowModCopy.setValue(flowModCopy2.getValue());
254             flowModCopy.setFlowModNumBits(flowModCopy2.getFlowModNumBits());
255             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
256                 .FlowModCopyValueIntoFieldCaseBuilder caseBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
257                     .openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
258                         .FlowModCopyValueIntoFieldCaseBuilder();
259             caseBuilder.setFlowModCopyValueIntoField(flowModCopy.build());
260             return caseBuilder.build();
261         } else if (flowModSpec instanceof FlowModOutputToPortCase) {
262             FlowModOutputToPort flowModOut2 = ((FlowModOutputToPortCase) flowModSpec).getFlowModOutputToPort();
263             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
264                 .flow.mod.output.to.port._case.FlowModOutputToPortBuilder flowModOut =
265                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec
266                         .flow.mod.spec.flow.mod.output.to.port._case.FlowModOutputToPortBuilder();
267             flowModOut.setSrcField(flowModOut2.getSrcField());
268             flowModOut.setSrcOfs(flowModOut2.getSrcOfs());
269             flowModOut.setFlowModNumBits(flowModOut2.getFlowModNumBits());
270             org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec
271                 .FlowModOutputToPortCaseBuilder caseBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
272                     .openflowjava.nx.action.rev140421.flow.mod.spec.flow.mod.spec.FlowModOutputToPortCaseBuilder();
273             caseBuilder.setFlowModOutputToPort(flowModOut.build());
274             return caseBuilder.build();
275         }
276         return null;
277     }
278 }