![JAR search and dependency download from the Maven repository](/logo.png)
com.maxifier.mxcache.impl.resource.CollectingChangedDependencyNodeVisitor Maven / Gradle / Ivy
/*
* Copyright (c) 2008-2014 Maxifier Ltd. All Rights Reserved.
*/
package com.maxifier.mxcache.impl.resource;
import com.maxifier.mxcache.impl.resource.nodes.ResourceViewable;
import gnu.trove.map.hash.TCustomHashMap;
import gnu.trove.strategy.IdentityHashingStrategy;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
/**
* @author Elena Saymanina ([email protected]) (04.06.13)
*/
public class CollectingChangedDependencyNodeVisitor implements DependencyNodeVisitor {
private final Set nodes;
private final Queue queue;
private final Map changedCache = new TCustomHashMap(IdentityHashingStrategy.INSTANCE);
public CollectingChangedDependencyNodeVisitor(Set nodes, Queue queue) {
this.nodes = nodes;
this.queue = queue;
}
@Override
public void visit(DependencyNode node) {
if (node instanceof ResourceViewable) {
ResourceViewable resourceViewable = (ResourceViewable) node;
if (nodes.contains(node) || !isChanged(resourceViewable)) {
return;
}
}
if (nodes.add(node)) {
queue.add(node);
}
}
private boolean isChanged(ResourceViewable resourceViewable) {
Boolean res = changedCache.get(resourceViewable);
if (res == null) {
res = resourceViewable.isChanged();
changedCache.put(resourceViewable, res);
}
return res;
}
@Override
public Set getNodes() {
return nodes;
}
@Override
public Queue getQueue() {
return queue;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy