}
IvyContext.getContext().set(contextId, dd);
ModuleRevisionId dependencyMrid = dd.getDependencyRevisionId();
VersionMatcher versionMatcher = getSettings().getVersionMatcher();
// Iterate over workspace to find Java project which has an Ivy
// container for this dependency
for (int i = 0; i < projects.length; i++) {
IProject p = projects[i];
if (!p.exists()) {
continue;
}
List/* <IvyClasspathContainer> */containers = IvyClasspathUtil
.getIvyClasspathContainers(p);
Iterator/* <IvyClasspathContainer> */itContainer = containers.iterator();
while (itContainer.hasNext()) {
IvyClasspathContainer ivycp = (IvyClasspathContainer) itContainer.next();
ModuleDescriptor md = ivycp.getState().getCachedModuleDescriptor();
if (md == null) {
continue;
}
ModuleRevisionId candidateMrid = md.getModuleRevisionId();
if (!candidateMrid.getModuleId().equals(dependencyMrid.getModuleId())) {
// it doesn't match org#module
continue;
}
if (!ignoreBranchOnWorkspaceProjects) {
ModuleId mid = dependencyMrid.getModuleId();
String defaultBranch = getSettings().getDefaultBranch(mid);
String dependencyBranch = dependencyMrid.getBranch();
String candidateBranch = candidateMrid.getBranch();
if (dependencyBranch == null) {
dependencyBranch = defaultBranch;
}
if (candidateBranch == null) {
candidateBranch = defaultBranch;
}
if (dependencyBranch != candidateBranch) {
// Both cannot be null
if (dependencyBranch == null || candidateBranch == null) {
// One set, the other isn't, so no match
continue;
}
if (!dependencyBranch.equals(candidateBranch)) {
// Both set but to different branches, so no match
continue;
}
}
}
// Found one; check if it is for the module we need
if (ignoreVersionOnWorkspaceProjects
|| md.getModuleRevisionId().getRevision().equals(Ivy.getWorkingRevision())
|| versionMatcher.accept(dd.getDependencyRevisionId(), md)) {
Artifact af = new DefaultArtifact(md.getModuleRevisionId(),
md.getPublicationDate(), p.getFullPath().toString(),
ECLIPSE_PROJECT_TYPE, ECLIPSE_PROJECT_EXTENSION);