@Override void clearPossibleSuppliers() { super.clearPossibleSuppliers(); supplierHasUses = false; }
private ResolverBundle[] getConflictedBundles(List<ResolverConstraint> bestConflicts) { if (bestConflicts == null) return new ResolverBundle[0]; List<ResolverBundle> conflictedBundles = new ArrayList<ResolverBundle>(bestConflicts.size()); for (ResolverConstraint constraint : bestConflicts) if (!conflictedBundles.contains(constraint.getBundle())) conflictedBundles.add(constraint.getBundle()); return conflictedBundles.toArray(new ResolverBundle[conflictedBundles.size()]); }
public String getName() { if (name != null) return name; // return the required package set for a dynamic import return super.getName(); }
private boolean getNextCombination(ResolverConstraint[][] multipleSuppliers) { int current = 0; while (current < multipleSuppliers.length) { if (multipleSuppliers[current][0].selectNextSupplier()) { for (int i = 1; i < multipleSuppliers[current].length; i++) multipleSuppliers[current][i].selectNextSupplier(); return true; // the current slot has a next supplier } for (int i = 0; i < multipleSuppliers[current].length; i++) multipleSuppliers[current][i].setSelectedSupplier(0); // reset the current slot current++; // move to the next slot } return false; }
private void checkUsesConstraints(ResolverBundle[] bundles, Dictionary<Object, Object>[] platformProperties) { List<ResolverConstraint> conflictingConstraints = findBestCombination(bundles, platformProperties); if (conflictingConstraints == null) return; Set<ResolverBundle> conflictedBundles = null; for (ResolverConstraint conflict : conflictingConstraints) { if (conflict.isOptional()) { conflict.clearPossibleSuppliers(); continue; } if (conflictedBundles == null) conflictedBundles = new HashSet<ResolverBundle>(conflictingConstraints.size()); ResolverBundle conflictedBundle; if (conflict.isFromFragment()) conflictedBundle = bundleMapping.get(conflict.getVersionConstraint().getBundle()); else conflictedBundle = conflict.getBundle(); if (conflictedBundle != null) { if (DEBUG_USES) System.out.println("Found conflicting constraint: " + conflict + " in bundle " + conflictedBundle); //$NON-NLS-1$//$NON-NLS-2$ conflictedBundles.add(conflictedBundle); int type = conflict instanceof ResolverImport ? ResolverError.IMPORT_PACKAGE_USES_CONFLICT : ResolverError.REQUIRE_BUNDLE_USES_CONFLICT; state.addResolverError(conflictedBundle.getBundleDescription(), type, conflict.getVersionConstraint().toString(), conflict.getVersionConstraint()); conflictedBundle.setResolvable(false); // We pass false for keepFragmentsAttached because we need to redo the attachments (bug 272561) setBundleUnresolved(conflictedBundle, false, false); } } reResolveBundles(conflictedBundles, bundles, platformProperties); }
for (int j = 0; j < multipleSuppliers[i].length; j++) { ResolverConstraint constraint = multipleSuppliers[i][j]; constraint.setSelectedSupplier(bestCombination[i]); VersionSupplier selectedSupplier = constraint.getSelectedSupplier(); if (selectedSupplier != null) selectedSupplier.setSubstitute(null);
private int getConflictCount(List<ResolverConstraint> conflicts) { if (conflicts == null || conflicts.size() == 0) return 0; int result = 0; for (ResolverConstraint constraint : conflicts) if (!constraint.isOptional()) result += 1; return result; }
private int[] getCombination(ResolverConstraint[][] multipleSuppliers, int[] combination) { for (int i = 0; i < combination.length; i++) combination[i] = multipleSuppliers[i][0].getSelectedSupplierIndex(); return combination; }
private void addMutipleSupplierConstraint(Map<String, List<List<ResolverConstraint>>> constraints, ResolverConstraint constraint, String key) { List<List<ResolverConstraint>> mergedConstraintLists = constraints.get(key); if (mergedConstraintLists == null) { mergedConstraintLists = new ArrayList<List<ResolverConstraint>>(0); List<ResolverConstraint> constraintList = new ArrayList<ResolverConstraint>(1); constraintList.add(constraint); mergedConstraintLists.add(constraintList); constraints.put(key, mergedConstraintLists); return; } for (List<ResolverConstraint> constraintList : mergedConstraintLists) { ResolverConstraint mergedConstraint = constraintList.get(0); VersionSupplier[] suppliers1 = constraint.getPossibleSuppliers(); VersionSupplier[] suppliers2 = mergedConstraint.getPossibleSuppliers(); if (suppliers1.length != suppliers2.length) continue; for (int i = 0; i < suppliers1.length; i++) if (suppliers1[i] != suppliers2[i]) continue; constraintList.add(constraint); return; } List<ResolverConstraint> constraintList = new ArrayList<ResolverConstraint>(1); constraintList.add(constraint); mergedConstraintLists.add(constraintList); }
multipleSuppliers[i][j].setSelectedSupplier(bestCombination[i]);
private void checkUsesConstraints(ResolverBundle[] bundles, Dictionary<Object, Object>[] platformProperties) { List<ResolverConstraint> conflictingConstraints = findBestCombination(bundles, platformProperties); if (conflictingConstraints == null) return; Set<ResolverBundle> conflictedBundles = null; for (ResolverConstraint conflict : conflictingConstraints) { if (conflict.isOptional()) { conflict.clearPossibleSuppliers(); continue; } if (conflictedBundles == null) conflictedBundles = new HashSet<>(conflictingConstraints.size()); ResolverBundle conflictedBundle; if (conflict.isFromFragment()) conflictedBundle = bundleMapping.get(conflict.getVersionConstraint().getBundle()); else conflictedBundle = conflict.getBundle(); if (conflictedBundle != null) { if (DEBUG_USES) System.out.println("Found conflicting constraint: " + conflict + " in bundle " + conflictedBundle); //$NON-NLS-1$//$NON-NLS-2$ conflictedBundles.add(conflictedBundle); int type = conflict instanceof ResolverImport ? ResolverError.IMPORT_PACKAGE_USES_CONFLICT : ResolverError.REQUIRE_BUNDLE_USES_CONFLICT; state.addResolverError(conflictedBundle.getBundleDescription(), type, conflict.getVersionConstraint().toString(), conflict.getVersionConstraint()); conflictedBundle.setResolvable(false); // We pass false for keepFragmentsAttached because we need to redo the attachments (bug 272561) setBundleUnresolved(conflictedBundle, false, false); } } reResolveBundles(conflictedBundles, bundles, platformProperties); }
private boolean getNextCombination(ResolverConstraint[][] multipleSuppliers) { int current = 0; while (current < multipleSuppliers.length) { if (multipleSuppliers[current][0].selectNextSupplier()) { for (int i = 1; i < multipleSuppliers[current].length; i++) multipleSuppliers[current][i].selectNextSupplier(); return true; // the current slot has a next supplier } for (int i = 0; i < multipleSuppliers[current].length; i++) multipleSuppliers[current][i].setSelectedSupplier(0); // reset the current slot current++; // move to the next slot } return false; }
for (int j = 0; j < multipleSuppliers[i].length; j++) { ResolverConstraint constraint = multipleSuppliers[i][j]; constraint.setSelectedSupplier(bestCombination[i]); VersionSupplier selectedSupplier = constraint.getSelectedSupplier(); if (selectedSupplier != null) selectedSupplier.setSubstitute(null);
private int getConflictCount(List<ResolverConstraint> conflicts) { if (conflicts == null || conflicts.size() == 0) return 0; int result = 0; for (ResolverConstraint constraint : conflicts) if (!constraint.isOptional()) result += 1; return result; }
private int[] getCombination(ResolverConstraint[][] multipleSuppliers, int[] combination) { for (int i = 0; i < combination.length; i++) combination[i] = multipleSuppliers[i][0].getSelectedSupplierIndex(); return combination; }
private void addMutipleSupplierConstraint(Map<String, List<List<ResolverConstraint>>> constraints, ResolverConstraint constraint, String key) { List<List<ResolverConstraint>> mergedConstraintLists = constraints.get(key); if (mergedConstraintLists == null) { mergedConstraintLists = new ArrayList<List<ResolverConstraint>>(0); List<ResolverConstraint> constraintList = new ArrayList<ResolverConstraint>(1); constraintList.add(constraint); mergedConstraintLists.add(constraintList); constraints.put(key, mergedConstraintLists); return; } for (List<ResolverConstraint> constraintList : mergedConstraintLists) { ResolverConstraint mergedConstraint = constraintList.get(0); VersionSupplier[] suppliers1 = constraint.getPossibleSuppliers(); VersionSupplier[] suppliers2 = mergedConstraint.getPossibleSuppliers(); if (suppliers1.length != suppliers2.length) continue; for (int i = 0; i < suppliers1.length; i++) if (suppliers1[i] != suppliers2[i]) continue; constraintList.add(constraint); return; } List<ResolverConstraint> constraintList = new ArrayList<ResolverConstraint>(1); constraintList.add(constraint); mergedConstraintLists.add(constraintList); }
private void checkUsesConstraints(ResolverBundle[] bundles, Dictionary<Object, Object>[] platformProperties) { List<ResolverConstraint> conflictingConstraints = findBestCombination(bundles, platformProperties); if (conflictingConstraints == null) return; Set<ResolverBundle> conflictedBundles = null; for (ResolverConstraint conflict : conflictingConstraints) { if (conflict.isOptional()) { conflict.clearPossibleSuppliers(); continue; } if (conflictedBundles == null) conflictedBundles = new HashSet<ResolverBundle>(conflictingConstraints.size()); ResolverBundle conflictedBundle; if (conflict.isFromFragment()) conflictedBundle = bundleMapping.get(conflict.getVersionConstraint().getBundle()); else conflictedBundle = conflict.getBundle(); if (conflictedBundle != null) { if (DEBUG_USES) System.out.println("Found conflicting constraint: " + conflict + " in bundle " + conflictedBundle); //$NON-NLS-1$//$NON-NLS-2$ conflictedBundles.add(conflictedBundle); int type = conflict instanceof ResolverImport ? ResolverError.IMPORT_PACKAGE_USES_CONFLICT : ResolverError.REQUIRE_BUNDLE_USES_CONFLICT; state.addResolverError(conflictedBundle.getBundleDescription(), type, conflict.getVersionConstraint().toString(), conflict.getVersionConstraint()); conflictedBundle.setResolvable(false); // We pass false for keepFragmentsAttached because we need to redo the attachments (bug 272561) setBundleUnresolved(conflictedBundle, false, false); } } reResolveBundles(conflictedBundles, bundles, platformProperties); }
private boolean getNextCombination(ResolverConstraint[][] multipleSuppliers) { int current = 0; while (current < multipleSuppliers.length) { if (multipleSuppliers[current][0].selectNextSupplier()) { for (int i = 1; i < multipleSuppliers[current].length; i++) multipleSuppliers[current][i].selectNextSupplier(); return true; // the current slot has a next supplier } for (int i = 0; i < multipleSuppliers[current].length; i++) multipleSuppliers[current][i].setSelectedSupplier(0); // reset the current slot current++; // move to the next slot } return false; }
public String getName() { if (name != null) return name; // return the required package set for a dynamic import return super.getName(); }
for (int j = 0; j < multipleSuppliers[i].length; j++) { ResolverConstraint constraint = multipleSuppliers[i][j]; constraint.setSelectedSupplier(bestCombination[i]); VersionSupplier selectedSupplier = constraint.getSelectedSupplier(); if (selectedSupplier != null) selectedSupplier.setSubstitute(null);