Jian Li
Committed by Gerrit Code Review

Remove duplicated treatment building from GroupBucketEntryBuilder

Change-Id: I0f956dd11d990209eb3dc00c866dd535843506ea
...@@ -91,6 +91,7 @@ import org.projectfloodlight.openflow.types.U64; ...@@ -91,6 +91,7 @@ import org.projectfloodlight.openflow.types.U64;
91 import org.projectfloodlight.openflow.types.U8; 91 import org.projectfloodlight.openflow.types.U8;
92 import org.projectfloodlight.openflow.types.VlanPcp; 92 import org.projectfloodlight.openflow.types.VlanPcp;
93 import org.slf4j.Logger; 93 import org.slf4j.Logger;
94 +import org.slf4j.LoggerFactory;
94 95
95 import java.util.List; 96 import java.util.List;
96 97
...@@ -104,10 +105,9 @@ import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupCh ...@@ -104,10 +105,9 @@ import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupCh
104 import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupGridType; 105 import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupGridType;
105 import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupOchSignalType; 106 import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupOchSignalType;
106 import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupOduSignalType; 107 import static org.onosproject.provider.of.flow.impl.OpenFlowValueMapper.lookupOduSignalType;
107 -import static org.slf4j.LoggerFactory.getLogger;
108 108
109 public class FlowEntryBuilder { 109 public class FlowEntryBuilder {
110 - private final Logger log = getLogger(getClass()); 110 + private static final Logger log = LoggerFactory.getLogger(FlowEntryBuilder.class);
111 111
112 private final OFFlowStatsEntry stat; 112 private final OFFlowStatsEntry stat;
113 private final OFFlowRemoved removed; 113 private final OFFlowRemoved removed;
...@@ -289,14 +289,24 @@ public class FlowEntryBuilder { ...@@ -289,14 +289,24 @@ public class FlowEntryBuilder {
289 return builder.build(); 289 return builder.build();
290 } 290 }
291 291
292 - private TrafficTreatment.Builder buildActions(List<OFAction> actions, 292 + /**
293 - TrafficTreatment.Builder builder) { 293 + * Configures traffic treatment builder with a given collection of actions.
294 - DriverHandler driverHandler = getDriver(deviceId); 294 + *
295 - ExtensionTreatmentInterpreter treatmentInterpreter; 295 + * @param actions a set of OpenFlow actions
296 + * @param builder traffic treatment builder
297 + * @param driverHandler driver handler
298 + * @param deviceId device identifier
299 + * @return configured traffic treatment builder
300 + */
301 + public static TrafficTreatment.Builder configureTreatmentBuilder(List<OFAction> actions,
302 + TrafficTreatment.Builder builder,
303 + DriverHandler driverHandler,
304 + DeviceId deviceId) {
305 + ExtensionTreatmentInterpreter interpreter;
296 if (driverHandler.hasBehaviour(ExtensionTreatmentInterpreter.class)) { 306 if (driverHandler.hasBehaviour(ExtensionTreatmentInterpreter.class)) {
297 - treatmentInterpreter = driverHandler.behaviour(ExtensionTreatmentInterpreter.class); 307 + interpreter = driverHandler.behaviour(ExtensionTreatmentInterpreter.class);
298 } else { 308 } else {
299 - treatmentInterpreter = null; 309 + interpreter = null;
300 } 310 }
301 311
302 for (OFAction act : actions) { 312 for (OFAction act : actions) {
...@@ -344,15 +354,15 @@ public class FlowEntryBuilder { ...@@ -344,15 +354,15 @@ public class FlowEntryBuilder {
344 lookupGridType(circuitSignalID.getGridType()), 354 lookupGridType(circuitSignalID.getGridType()),
345 lookupChannelSpacing(circuitSignalID.getChannelSpacing()), 355 lookupChannelSpacing(circuitSignalID.getChannelSpacing()),
346 circuitSignalID.getChannelNumber(), circuitSignalID.getSpectralWidth()))); 356 circuitSignalID.getChannelNumber(), circuitSignalID.getSpectralWidth())));
347 - } else if (treatmentInterpreter != null) { 357 + } else if (interpreter != null) {
348 - builder.extension(treatmentInterpreter.mapAction(exp), deviceId); 358 + builder.extension(interpreter.mapAction(exp), deviceId);
349 } else { 359 } else {
350 log.warn("Unsupported OFActionExperimenter {}", exp.getExperimenter()); 360 log.warn("Unsupported OFActionExperimenter {}", exp.getExperimenter());
351 } 361 }
352 break; 362 break;
353 case SET_FIELD: 363 case SET_FIELD:
354 OFActionSetField setField = (OFActionSetField) act; 364 OFActionSetField setField = (OFActionSetField) act;
355 - handleSetField(builder, setField); 365 + handleSetField(builder, setField, driverHandler, deviceId);
356 break; 366 break;
357 case POP_MPLS: 367 case POP_MPLS:
358 OFActionPopMpls popMpls = (OFActionPopMpls) act; 368 OFActionPopMpls popMpls = (OFActionPopMpls) act;
...@@ -410,9 +420,18 @@ public class FlowEntryBuilder { ...@@ -410,9 +420,18 @@ public class FlowEntryBuilder {
410 return builder; 420 return builder;
411 } 421 }
412 422
413 - 423 + private TrafficTreatment.Builder buildActions(List<OFAction> actions,
414 - private void handleSetField(TrafficTreatment.Builder builder, OFActionSetField action) { 424 + TrafficTreatment.Builder builder) {
415 DriverHandler driverHandler = getDriver(deviceId); 425 DriverHandler driverHandler = getDriver(deviceId);
426 +
427 + return configureTreatmentBuilder(actions, builder, driverHandler, deviceId);
428 + }
429 +
430 +
431 + private static void handleSetField(TrafficTreatment.Builder builder,
432 + OFActionSetField action,
433 + DriverHandler driverHandler,
434 + DeviceId deviceId) {
416 ExtensionTreatmentInterpreter treatmentInterpreter; 435 ExtensionTreatmentInterpreter treatmentInterpreter;
417 if (driverHandler.hasBehaviour(ExtensionTreatmentInterpreter.class)) { 436 if (driverHandler.hasBehaviour(ExtensionTreatmentInterpreter.class)) {
418 treatmentInterpreter = driverHandler.behaviour(ExtensionTreatmentInterpreter.class); 437 treatmentInterpreter = driverHandler.behaviour(ExtensionTreatmentInterpreter.class);
......
...@@ -31,4 +31,12 @@ ...@@ -31,4 +31,12 @@
31 31
32 <description>ONOS OpenFlow protocol group provider</description> 32 <description>ONOS OpenFlow protocol group provider</description>
33 33
34 + <dependencies>
35 + <dependency>
36 + <groupId>org.onosproject</groupId>
37 + <artifactId>onos-of-provider-flow</artifactId>
38 + <version>${project.version}</version>
39 + </dependency>
40 + </dependencies>
41 +
34 </project> 42 </project>
...\ No newline at end of file ...\ No newline at end of file
......