Add a builder for DefaultLink to hide multiplying constructors
Change-Id: Iaf073d07989c398a8f44541ffdb8dd93e5715162
diff --git a/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java b/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java
index 48851f7..8e77ac8 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/link/impl/ECLinkStore.java
@@ -317,7 +317,15 @@
});
boolean isDurable = Objects.equals(annotations.get().value(AnnotationKeys.DURABLE), "true");
- return new DefaultLink(baseProviderId, src, dst, type, ACTIVE, isDurable, annotations.get());
+ return DefaultLink.builder()
+ .providerId(baseProviderId)
+ .src(src)
+ .dst(dst)
+ .type(type)
+ .state(ACTIVE)
+ .isExpected(isDurable)
+ .annotations(annotations.get())
+ .build();
}
// Updates, if necessary the specified link and returns the appropriate event.
@@ -346,11 +354,15 @@
// FIXME: this will not sync link state!!!
return link.state() == INACTIVE ? null :
updateLink(linkKey(link.src(), link.dst()), link,
- new DefaultLink(link.providerId(),
- link.src(), link.dst(),
- link.type(), INACTIVE,
- link.isDurable(),
- link.annotations()));
+ DefaultLink.builder()
+ .providerId(link.providerId())
+ .src(link.src())
+ .dst(link.dst())
+ .type(link.type())
+ .state(INACTIVE)
+ .isExpected(link.isExpected())
+ .annotations(link.annotations())
+ .build());
}
return removeLink(src, dst);
}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java b/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
index f24a662..cf46b15 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/link/impl/GossipLinkStore.java
@@ -361,11 +361,15 @@
// FIXME: this is not the right thing to call for the gossip store; will not sync link state!!!
return link.state() == INACTIVE ? null :
updateLink(linkKey(link.src(), link.dst()), link,
- new DefaultLink(link.providerId(),
- link.src(), link.dst(),
- link.type(), INACTIVE,
- link.isDurable(),
- link.annotations()));
+ DefaultLink.builder()
+ .providerId(link.providerId())
+ .src(link.src())
+ .dst(link.dst())
+ .type(link.type())
+ .state(INACTIVE)
+ .isExpected(link.isExpected())
+ .annotations(link.annotations())
+ .build());
}
return removeLink(src, dst);
}
@@ -605,7 +609,15 @@
}
boolean isDurable = Objects.equals(annotations.value(AnnotationKeys.DURABLE), "true");
- return new DefaultLink(baseProviderId, src, dst, type, ACTIVE, isDurable, annotations);
+ return DefaultLink.builder()
+ .providerId(baseProviderId)
+ .src(src)
+ .dst(dst)
+ .type(type)
+ .state(ACTIVE)
+ .isExpected(isDurable)
+ .annotations(annotations)
+ .build();
}
private Map<ProviderId, Timestamped<LinkDescription>> getOrCreateLinkDescriptions(LinkKey key) {
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultLinkSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultLinkSerializer.java
index 6cc9066..7c9231a 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultLinkSerializer.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/DefaultLinkSerializer.java
@@ -56,6 +56,13 @@
Type linkType = (Type) kryo.readClassAndObject(input);
State state = (State) kryo.readClassAndObject(input);
boolean isDurable = input.readBoolean();
- return new DefaultLink(providerId, src, dst, linkType, state, isDurable);
+ return DefaultLink.builder()
+ .providerId(providerId)
+ .src(src)
+ .dst(dst)
+ .type(linkType)
+ .state(state)
+ .isExpected(isDurable)
+ .build();
}
}
diff --git a/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java b/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java
index ec676bd..54690ea 100644
--- a/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java
+++ b/core/store/serializers/src/test/java/org/onosproject/store/serializers/KryoSerializerTest.java
@@ -183,8 +183,19 @@
@Test
public void testDefaultLink() {
- testSerializedEquals(new DefaultLink(PID, CP1, CP2, Link.Type.DIRECT));
- testSerializedEquals(new DefaultLink(PID, CP1, CP2, Link.Type.DIRECT, A1));
+ testSerializedEquals(DefaultLink.builder()
+ .providerId(PID)
+ .src(CP1)
+ .dst(CP2)
+ .type(Link.Type.DIRECT)
+ .build());
+ testSerializedEquals(DefaultLink.builder()
+ .providerId(PID)
+ .src(CP1)
+ .dst(CP2)
+ .type(Link.Type.DIRECT)
+ .annotations(A1)
+ .build());
}
@Test
@@ -367,7 +378,9 @@
.addBandwidthRequest(32.195)
.build();
Map<Link, Set<ResourceAllocation>> allocations = new HashMap<>();
- allocations.put(new DefaultLink(PID, CP1, CP2, Type.DIRECT),
+ allocations.put(DefaultLink.builder()
+ .providerId(PID)
+ .src(CP1).dst(CP2).type(Type.DIRECT).build(),
ImmutableSet.of(new BandwidthResourceAllocation(new BandwidthResource(Bandwidth.bps(10.0))),
new LambdaResourceAllocation(LambdaResource.valueOf(1))));
testSerializable(new DefaultLinkResourceAllocations(request, allocations));