Committed by
Gerrit Code Review
Use Stream API instead of for loop
Change-Id: Ic5ce334a6d3891d2d43d1e5bb573e59efd0a9461
Showing
1 changed file
with
18 additions
and
17 deletions
... | @@ -17,6 +17,7 @@ package org.onosproject.net.intent.impl.compiler; | ... | @@ -17,6 +17,7 @@ package org.onosproject.net.intent.impl.compiler; |
17 | 17 | ||
18 | import com.google.common.collect.ImmutableList; | 18 | import com.google.common.collect.ImmutableList; |
19 | import com.google.common.collect.ImmutableSet; | 19 | import com.google.common.collect.ImmutableSet; |
20 | +import com.google.common.collect.Maps; | ||
20 | import com.google.common.collect.Sets; | 21 | import com.google.common.collect.Sets; |
21 | import org.apache.felix.scr.annotations.Activate; | 22 | import org.apache.felix.scr.annotations.Activate; |
22 | import org.apache.felix.scr.annotations.Component; | 23 | import org.apache.felix.scr.annotations.Component; |
... | @@ -56,6 +57,8 @@ import org.slf4j.LoggerFactory; | ... | @@ -56,6 +57,8 @@ import org.slf4j.LoggerFactory; |
56 | import java.util.ArrayList; | 57 | import java.util.ArrayList; |
57 | import java.util.Collections; | 58 | import java.util.Collections; |
58 | import java.util.List; | 59 | import java.util.List; |
60 | +import java.util.Map; | ||
61 | +import java.util.Optional; | ||
59 | import java.util.Set; | 62 | import java.util.Set; |
60 | import java.util.stream.Collectors; | 63 | import java.util.stream.Collectors; |
61 | import java.util.stream.Stream; | 64 | import java.util.stream.Stream; |
... | @@ -158,27 +161,25 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical | ... | @@ -158,27 +161,25 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical |
158 | return ImmutableList.of(createIntent(intent, firstPath, lambda)); | 161 | return ImmutableList.of(createIntent(intent, firstPath, lambda)); |
159 | } | 162 | } |
160 | 163 | ||
161 | - // Use first path that can be successfully reserved | 164 | + // remaining cases |
162 | - for (Path path : paths) { | 165 | + // Use first path that the required resources are available |
163 | - // find common lambda on path | 166 | + Optional<Map.Entry<Path, List<OchSignal>>> found = paths.stream() |
164 | - // a list of OchSignal indicates consecutive OchSignals | 167 | + .map(path -> Maps.immutableEntry(path, findFirstAvailableOch(path))) |
165 | - List<OchSignal> lambda = findFirstAvailableOch(path); | 168 | + .filter(entry -> !entry.getValue().isEmpty()) |
166 | - if (lambda.isEmpty()) { | 169 | + .filter(entry -> convertToResources(entry.getKey().links(), |
167 | - continue; | 170 | + entry.getValue()).stream().allMatch(resourceService::isAvailable)) |
168 | - } | 171 | + .findFirst(); |
169 | - List<Resource> lambdaResources = convertToResources(path.links(), lambda); | 172 | + |
170 | - if (!lambdaResources.stream().allMatch(resourceService::isAvailable)) { | 173 | + if (found.isPresent()) { |
171 | - continue; | 174 | + resources.addAll(convertToResources(found.get().getKey().links(), found.get().getValue())); |
172 | - } | ||
173 | - resources.addAll(lambdaResources); | ||
174 | 175 | ||
175 | allocateResources(intent, resources); | 176 | allocateResources(intent, resources); |
176 | 177 | ||
177 | - OchSignal ochSignal = OchSignal.toFixedGrid(lambda, ChannelSpacing.CHL_50GHZ); | 178 | + OchSignal ochSignal = OchSignal.toFixedGrid(found.get().getValue(), ChannelSpacing.CHL_50GHZ); |
178 | - return ImmutableList.of(createIntent(intent, path, ochSignal)); | 179 | + return ImmutableList.of(createIntent(intent, found.get().getKey(), ochSignal)); |
180 | + } else { | ||
181 | + throw new IntentCompilationException("Unable to find suitable lightpath for intent " + intent); | ||
179 | } | 182 | } |
180 | - | ||
181 | - throw new IntentCompilationException("Unable to find suitable lightpath for intent " + intent); | ||
182 | } | 183 | } |
183 | 184 | ||
184 | private Intent createIntent(OpticalConnectivityIntent parentIntent, Path path, OchSignal lambda) { | 185 | private Intent createIntent(OpticalConnectivityIntent parentIntent, Path path, OchSignal lambda) { | ... | ... |
-
Please register or login to post a comment