Extract common ID generation logic using IdBlockAllocator
- Define IdGenerator<T> interface
- Implement AbstractIdBlockAllocatorBasedIdGenerator<T>, which
has the common logic for the existing IntentId, FlowId, MatchActionId,
and MatchActionOperationsId generator implementations.
Change-Id: I7aeea249df1710719760ed477bffe62853577e0f
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java b/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java
index 37820fb..34d6776 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/PacketPathFlow.java
@@ -10,13 +10,14 @@
import net.onrc.onos.api.flowmanager.FlowBatchOperation.Operator;
import net.onrc.onos.core.matchaction.MatchAction;
-import net.onrc.onos.core.matchaction.MatchActionIdGenerator;
+import net.onrc.onos.core.matchaction.MatchActionId;
import net.onrc.onos.core.matchaction.MatchActionOperationEntry;
import net.onrc.onos.core.matchaction.MatchActionOperations;
-import net.onrc.onos.core.matchaction.MatchActionOperationsIdGenerator;
+import net.onrc.onos.core.matchaction.MatchActionOperationsId;
import net.onrc.onos.core.matchaction.action.Action;
import net.onrc.onos.core.matchaction.action.OutputAction;
import net.onrc.onos.core.matchaction.match.PacketMatch;
+import net.onrc.onos.core.util.IdGenerator;
import net.onrc.onos.core.util.PortNumber;
import net.onrc.onos.core.util.SwitchPort;
@@ -86,8 +87,8 @@
@Override
public List<MatchActionOperations> compile(Operator op,
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
switch (op) {
case ADD:
return compileAddOperation(maIdGenerator, maoIdGenerator);
@@ -108,7 +109,7 @@
*/
private MatchAction createNextMatchAction(Iterator<SwitchPort> portIterator,
Iterator<List<Action>> actionsIterator,
- MatchActionIdGenerator maIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator) {
if (portIterator == null || actionsIterator == null ||
!portIterator.hasNext() || !actionsIterator.hasNext()) {
return null;
@@ -128,8 +129,8 @@
* @return the list of {@link MatchActionOperations} objects
*/
private List<MatchActionOperations> compileAddOperation(
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
Path path = checkNotNull(getPath());
checkState(path.size() > 0, "Path object has no link.");
@@ -183,8 +184,8 @@
* @return the list of {@link MatchActionOperations} objects
*/
private List<MatchActionOperations> compileRemoveOperation(
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
// TODO implement it
throw new UnsupportedOperationException(
"REMOVE operation is not implemented yet.");