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/Flow.java b/src/main/java/net/onrc/onos/api/flowmanager/Flow.java
index 8608adb..65dc00e 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/Flow.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/Flow.java
@@ -5,10 +5,11 @@
import java.util.List;
import net.onrc.onos.api.batchoperation.BatchOperationTarget;
-import net.onrc.onos.core.matchaction.MatchActionIdGenerator;
+import net.onrc.onos.core.matchaction.MatchActionId;
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.match.Match;
+import net.onrc.onos.core.util.IdGenerator;
/**
* An abstract class to define flow object which is managed by
@@ -67,8 +68,8 @@
*/
public abstract List<MatchActionOperations> compile(
FlowBatchOperation.Operator op,
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator);
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator);
/**
* Generates a hash code using the FlowId.
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java b/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java
index 3e94c7b..3bf9a30 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/FlowId.java
@@ -26,7 +26,8 @@
/**
* Creates new instance with string ID.
* <p>
- * This FlowId instance should be generated with {@link FlowIdGenerator}.
+ * This FlowId instance should be generated with
+ * {@link net.onrc.onos.core.util.IdGenerator} of flow ID.
*
* @param id String representation of the ID.
*/
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java b/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java
deleted file mode 100644
index 9b85e22..0000000
--- a/src/main/java/net/onrc/onos/api/flowmanager/FlowIdGenerator.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package net.onrc.onos.api.flowmanager;
-
-/**
- * An generator of {@link FlowId}.
- */
-public interface FlowIdGenerator {
- /**
- * Generates a global unique {@link FlowId} instance.
- *
- * @return a global unique {@link FlowId} instance.
- */
- FlowId getNewId();
-}
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/FlowManagerService.java b/src/main/java/net/onrc/onos/api/flowmanager/FlowManagerService.java
index 93a4e6c..4c19cbd 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/FlowManagerService.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/FlowManagerService.java
@@ -1,5 +1,7 @@
package net.onrc.onos.api.flowmanager;
+import net.onrc.onos.core.util.IdGenerator;
+
import java.util.Collection;
/**
@@ -65,7 +67,7 @@
* Gets ID generator for Flow objects.
* @return the ID generator for Flow objects
*/
- FlowIdGenerator getFlowIdGenerator();
+ IdGenerator<FlowId> getFlowIdGenerator();
/**
* Sets a conflict detection policy.
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/OpticalPathFlow.java b/src/main/java/net/onrc/onos/api/flowmanager/OpticalPathFlow.java
index 51dce43..a352f05 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/OpticalPathFlow.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/OpticalPathFlow.java
@@ -3,12 +3,13 @@
import java.util.List;
import net.onrc.onos.api.flowmanager.FlowBatchOperation.Operator;
-import net.onrc.onos.core.matchaction.MatchActionIdGenerator;
+import net.onrc.onos.core.matchaction.MatchActionId;
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.match.PacketMatch;
import net.onrc.onos.core.matchaction.match.PacketMatchBuilder;
+import net.onrc.onos.core.util.IdGenerator;
import net.onrc.onos.core.util.PortNumber;
/**
@@ -67,8 +68,8 @@
@Override
public List<MatchActionOperations> compile(Operator op,
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
// TODO Auto-generated method stub
return null;
}
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.");
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/SingleDstTreeFlow.java b/src/main/java/net/onrc/onos/api/flowmanager/SingleDstTreeFlow.java
index 0caef51..d02351b 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/SingleDstTreeFlow.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/SingleDstTreeFlow.java
@@ -18,14 +18,15 @@
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.Dpid;
+import net.onrc.onos.core.util.IdGenerator;
import net.onrc.onos.core.util.PortNumber;
import net.onrc.onos.core.util.SwitchPort;
@@ -110,8 +111,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);
@@ -123,7 +124,7 @@
}
private MatchAction createMatchAction(SwitchPort port, List<Action> actions,
- MatchActionIdGenerator maIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator) {
checkNotNull(port);
checkNotNull(actions);
@@ -145,8 +146,8 @@
Dpid egressSwitch,
Map<Dpid, Set<PortNumber>> inPorts,
Map<Dpid, PortNumber> outPorts,
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
MatchActionOperations firstOps =
new MatchActionOperations(maoIdGenerator.getNewId());
for (Entry<Dpid, Set<PortNumber>> innerSw : inPorts.entrySet()) {
@@ -183,8 +184,8 @@
private MatchActionOperations generateSecondAddOperations(
Dpid egressSwitch,
Map<Dpid, PortNumber> outPorts,
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
MatchActionOperations secondOps =
new MatchActionOperations(maoIdGenerator.getNewId());
for (SwitchPort port : getIngressPorts()) {
@@ -213,8 +214,8 @@
}
private List<MatchActionOperations> compileAddOperation(
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
checkNotNull(tree);
checkState(tree.size() > 0, "Tree object has no link.");
diff --git a/src/main/java/net/onrc/onos/api/flowmanager/SingleSrcTreeFlow.java b/src/main/java/net/onrc/onos/api/flowmanager/SingleSrcTreeFlow.java
index 3e70f4b..89f1efd 100644
--- a/src/main/java/net/onrc/onos/api/flowmanager/SingleSrcTreeFlow.java
+++ b/src/main/java/net/onrc/onos/api/flowmanager/SingleSrcTreeFlow.java
@@ -6,12 +6,13 @@
import java.util.Set;
import net.onrc.onos.api.flowmanager.FlowBatchOperation.Operator;
-import net.onrc.onos.core.matchaction.MatchActionIdGenerator;
+import net.onrc.onos.core.matchaction.MatchActionId;
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.OutputAction;
import net.onrc.onos.core.matchaction.match.PacketMatch;
import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.IdGenerator;
import net.onrc.onos.core.util.SwitchPort;
import org.apache.commons.lang3.tuple.Pair;
@@ -84,8 +85,8 @@
@Override
public List<MatchActionOperations> compile(Operator op,
- MatchActionIdGenerator maIdGenerator,
- MatchActionOperationsIdGenerator maoIdGenerator) {
+ IdGenerator<MatchActionId> maIdGenerator,
+ IdGenerator<MatchActionOperationsId> maoIdGenerator) {
// TODO Auto-generated method stub
return null;
}