}
private ResourceRequest copyRequest(ResourceRequest requestToCopy,
Set<String> excludedByTip) {
int requestId = resourceRequestId.incrementAndGet();
ResourceRequest req = new ResourceRequest(requestId, requestToCopy.getType());
req.setSpecs(requestToCopy.getSpecs());
Set<String> excluded = new HashSet<String>();
if (excludedByTip != null || requestToCopy.getExcludeHosts() != null) {
if (requestToCopy.getExcludeHosts() != null) {
excluded.addAll(requestToCopy.getExcludeHosts());
}
if (excludedByTip != null) {
excluded.addAll(excludedByTip);
}
}
req.setExcludeHosts(new ArrayList<String>(excluded));
if (requestToCopy.getHosts() != null) {
List<String> hosts = new ArrayList<String>();
for (String host : requestToCopy.getHosts()) {
if (excluded == null || !excluded.contains(host)) {
hosts.add(host);
}
}
if (!hosts.isEmpty()) {
req.setHosts(hosts);
}
}
return req;
}