private void loadPatch(FPID patchId) throws ProvisioningException { final F patchFp = layoutFactory.resolveFeaturePack(patchId.getLocation(), FeaturePackLayout.PATCH, fpFactory); final FeaturePackSpec spec = patchFp.getSpec(); if(!spec.isPatch()) { throw new ProvisioningDescriptionException(patchId + " is not a patch but listed as one"); } allPatches = CollectionUtils.put(allPatches, patchId, patchFp); if(spec.hasFeaturePackDeps()) { for(FeaturePackConfig patchDep : spec.getFeaturePackDeps()) { final FPID patchDepId = patchDep.getLocation().getFPID(); if(allPatches.containsKey(patchDepId)) { continue; } loadPatch(patchDepId); } } final FPID patchFor = spec.getPatchFor(); List<F> patchList = fpPatches.get(patchFor); if(patchList == null) { fpPatches = CollectionUtils.put(fpPatches, patchFor, Collections.singletonList(patchFp)); } else if(patchList.size() == 1) { final List<F> tmp = new ArrayList<>(2); tmp.add(patchList.get(0)); tmp.add(patchFp); fpPatches = CollectionUtils.put(fpPatches, patchFor, tmp); } else { patchList.add(patchFp); } }
fp = layoutFactory.resolveFeaturePack(fpl, type, fpFactory); buildTracker.processed(fpl.getFPID()); featurePacks.put(fpl.getProducer(), fp);
fpl = layoutFactory.getUniverseResolver().resolveLatestBuild(fpl); final FeaturePackSpec fpSpec = layoutFactory.resolveFeaturePack(fpl, FeaturePackLayout.DIRECT_DEP, fpFactory).getSpec(); if(fpSpec.isPatch()) { F patchTarget = featurePacks.get(fpSpec.getPatchFor().getProducer());