private boolean resolvePackage(FeaturePackRuntimeBuilder origin, String name, PackageRuntime.Builder parent, int type) throws ProvisioningException {
final FeaturePackDepsConfig fpDeps;
if (origin != null) {
if(origin.resolvePackage(name, this, parent, type)) {
return true;
}
fpDeps = origin.getSpec();
} else {
fpDeps = config;
}
if (!fpDeps.hasFeaturePackDeps()) {
return false;
}
for (FeaturePackConfig fpDep : fpDeps.getFeaturePackDeps()) {
final FeaturePackRuntimeBuilder fpDepBuilder = layout.getFeaturePack(fpDep.getLocation().getProducer());
if (setVisited(fpDepBuilder) && resolvePackage(fpDepBuilder, name, parent, type)) {
return true;
}
}
return false;
}