in src/java/org/apache/ivy/osgi/repo/ResolverManifestIterable.java [101:189]
public boolean hasNext() {
while (next == null) {
if (organisation == null) {
if (indexOrganisation >= organisations.length) {
return false;
}
organisation = organisations[indexOrganisation++];
modules = resolver.listModules(organisation);
indexModule = 0;
module = null;
}
if (module == null) {
if (indexModule >= modules.length) {
organisation = null;
continue;
}
module = modules[indexModule++];
revisions = resolver.listRevisions(module);
indexRevision = 0;
revision = null;
}
if (revision == null) {
if (indexRevision >= revisions.length) {
module = null;
continue;
}
revision = revisions[indexRevision++];
mrid = ModuleRevisionId.newInstance(organisation.getOrganisation(),
module.getModule(), revision.getRevision());
DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(mrid, false);
ResolvedModuleRevision dependency;
try {
dependency = resolver.getDependency(dd, data);
} catch (ParseException e) {
Message.error("Error while resolving " + mrid + " : " + e.getMessage());
revision = null;
continue;
}
if (dependency == null) {
revision = null;
continue;
}
ModuleDescriptor md = dependency.getDescriptor();
mrid = md.getModuleRevisionId();
artifacts = md.getAllArtifacts();
indexArtifact = 0;
artifact = null;
}
if (artifact == null) {
if (indexArtifact >= artifacts.length) {
revision = null;
continue;
}
artifact = artifacts[indexArtifact++];
}
ResolvedResource resource = resolver.doFindArtifactRef(artifact, null);
if (resource == null) {
artifact = null;
continue;
}
JarInputStream in;
try {
in = new JarInputStream(resource.getResource().openStream());
} catch (IOException e) {
Message.warn("Unreadable jar " + resource.getResource().getName() + " ("
+ e.getMessage() + ")");
artifact = null;
continue;
}
Manifest manifest;
try {
manifest = in.getManifest();
} finally {
try {
in.close();
} catch (IOException e) {
// don't care
}
}
if (manifest == null) {
Message.debug("No manifest on " + artifact);
} else {
URI uri = BundleInfoAdapter.buildIvyURI(artifact);
next = new ManifestAndLocation(manifest, uri, null);
}
artifact = null;
}
return true;
}