public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof IRequirement)) return false; IRequirement other = (IRequirement) obj; if (filter == null) { if (other.getFilter() != null) return false; } else if (!filter.equals(other.getFilter())) return false; return min == other.getMin() && max == other.getMax() && greedy == other.isGreedy() && matchExpression.equals(other.getMatches()); }
protected boolean isApplicable(IRequirement req) { //Every filter in this method needs to continue except when the filter does not pass if (!includeOptionalDependencies) if (req.getMin() == 0) return false; if (considerOnlyStrictDependency) { if (!RequiredCapability.isVersionStrict(req.getMatches())) return false; } //deal with filters if (considerFilter) { if (onlyFilteredRequirements && req.getFilter() == null) { return false; } return super.isApplicable(req); } if (req.getFilter() == null) { if (onlyFilteredRequirements) return false; return true; } return evalFilterTo; }
private boolean isIncluded(IInstallableUnit iu, IRequirement req, IInstallableUnit match) { Set<String> includedIUs = FeatureDependenciesAction.getIncludedUIs(iu); if (includedIUs.contains(match.getId())) { return true; } return RequiredCapability.isStrictVersionRequirement(req.getMatches()); }
private void expandRequirement(IInstallableUnit iu, IRequirement req) { if (req.getMax() == 0) return; IQueryResult<IInstallableUnit> matches = possibilites.query(QueryUtil.createMatchQuery(req.getMatches()), null); int validMatches = 0; for (Iterator<IInstallableUnit> iterator = matches.iterator(); iterator.hasNext();) { IInstallableUnit match = iterator.next(); if (!isApplicable(match)) continue; validMatches++; Map<Version, IInstallableUnit> iuSlice = slice.get(match.getId()); if (iuSlice == null || !iuSlice.containsKey(match.getVersion())) consider(iu, match); } if (validMatches == 0) { if (req.getMin() == 0) { if (DEBUG) System.out.println("No IU found to satisfy optional dependency of " + iu + " on req " + req); //$NON-NLS-1$//$NON-NLS-2$ } else { result.add(new Status(IStatus.WARNING, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Planner_Unsatisfied_dependency, iu, req))); } } }
private boolean hasOnlySimpleRequirements(IInstallableUnit iu) { for (IRequirement r : iu.getRequirements()) if (r.getMax() == 0 || !RequiredCapability.isSimpleRequirement(r.getMatches())) return false; if (iu.getUpdateDescriptor() != null) { for (IMatchExpression<IInstallableUnit> m : iu.getUpdateDescriptor().getIUsBeingUpdated()) { if (!RequiredCapability.isSimpleRequirement(m)) return false; } } for (IRequirement r : iu.getMetaRequirements()) if (r.getMax() == 0 || !RequiredCapability.isSimpleRequirement(r.getMatches())) return false; if (iu instanceof IInstallableUnitFragment) { for (IRequirement r : ((IInstallableUnitFragment) iu).getHost()) if (!RequiredCapability.isSimpleRequirement(r.getMatches())) return false; } if (iu instanceof IInstallableUnitPatch) { IInstallableUnitPatch iuPatch = (IInstallableUnitPatch) iu; for (IRequirement[] rArr : iuPatch.getApplicabilityScope()) for (IRequirement r : rArr) if (!RequiredCapability.isSimpleRequirement(r.getMatches())) return false; IRequirement lifeCycle = iuPatch.getLifeCycle(); if (lifeCycle != null && !RequiredCapability.isSimpleRequirement(lifeCycle.getMatches())) return false; } return true; }
Collection<IRequirement> reqs = metaIu.getRequirements(); for (IRequirement req : reqs) { if (req.getMin() > 0 || !req.isGreedy()) continue; IQueryResult<IInstallableUnit> matches = picker.query(QueryUtil.createMatchQuery(req.getMatches()), null); for (IInstallableUnit match : matches) { if (match instanceof IInstallableUnitPatch) {
private void expandRequirement(IRequirement req, IInstallableUnit iu, List<AbstractVariable> optionalAbstractRequirements, boolean isRootIu) throws ContradictionException { if (req.getMax() == 0) { expandNegatedRequirement(req, iu, optionalAbstractRequirements, isRootIu); return; List<IInstallableUnit> matches = getApplicableMatches(req); determinePotentialHostsForFragment(iu); if (req.getMin() > 0) { if (matches.isEmpty()) { if (iu == entryPoint && emptyBecauseFiltered) { if (req.isGreedy()) { IInstallableUnit reqIu = matches.get(0); Explanation explanation; if (!matches.isEmpty()) { AbstractVariable abs; if (req.isGreedy()) { abs = getAbstractVariable(req); createImplication(new Object[] {abs, iu}, matches, Explanation.OPTIONAL_REQUIREMENT);
@Override public String toString() { if (isEntryPoint) { return NLS.bind(Messages.Explanation_missingRootRequired, req); } if (req.getFilter() == null) { return NLS.bind(Messages.Explanation_missingRequired, iu, req); } return NLS.bind(Messages.Explanation_missingRequiredFilter, new Object[] {req.getFilter(), iu, req}); }
public Collection<IUTreeViewer.IUTreeItem> getChildren() { if (children==null) { children = new ArrayList<IUTreeViewer.IUTreeItem>(); if (parent==null) { for (IRequirement r : iu.getRequirements()) { for (IInstallableUnit riu : provider.getInstallableUnits()) { if (r.isMatch(riu)) { IMatchExpression<IInstallableUnit> me = r.getFilter(); if (me!=null) { if (me.isMatch(riu)) children.add(new IUTreeItem(provider, this, riu)); } else children.add(new IUTreeItem(provider, this, riu)); } } } } } return children; }
protected boolean isGreedy(IRequirement req) { return req.isGreedy(); }
/** * @param req * @return a list of mandatory requirements if any, an empty list if req.isOptional(). */ private List<IInstallableUnit> getApplicableMatches(IRequirement req) { List<IInstallableUnit> target = new ArrayList<>(); IQueryResult<IInstallableUnit> matches = picker.query(QueryUtil.createMatchQuery(req.getMatches()), null); for (IInstallableUnit match : matches) { if (isApplicable(match)) { target.add(match); } } emptyBecauseFiltered = !matches.isEmpty() && target.isEmpty(); return target; }
private void expandRequirement(IInstallableUnit iu, IRequirement req) { if (req.getMax() == 0) return; IQueryResult<IInstallableUnit> matches = possibilites.query(QueryUtil.createMatchQuery(req.getMatches()), null); int validMatches = 0; for (Iterator<IInstallableUnit> iterator = matches.iterator(); iterator.hasNext();) { IInstallableUnit match = iterator.next(); if (!isApplicable(match)) continue; validMatches++; Map<Version, IInstallableUnit> iuSlice = slice.get(match.getId()); if (iuSlice == null || !iuSlice.containsKey(match.getVersion())) consider(match); } if (validMatches == 0) { if (req.getMin() == 0) { if (DEBUG) System.out.println("No IU found to satisfy optional dependency of " + iu + " on req " + req); //$NON-NLS-1$//$NON-NLS-2$ } else { result.add(new Status(IStatus.WARNING, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Planner_Unsatisfied_dependency, iu, req))); } } }
@Override protected boolean isApplicable(IRequirement req) { //Every filter in this method needs to continue except when the filter does not pass if (!includeOptionalDependencies) if (req.getMin() == 0) return false; if (considerOnlyStrictDependency) { if (!RequiredCapability.isStrictVersionRequirement(req.getMatches())) return false; } //deal with filters if (considerFilter) { if (onlyFilteredRequirements && req.getFilter() == null) { return false; } return super.isApplicable(req); } if (req.getFilter() == null) { if (onlyFilteredRequirements) return false; return true; } return evalFilterTo; }
private boolean hasOnlySimpleRequirements(IInstallableUnit iu) { for (IRequirement r : iu.getRequirements()) if (r.getMax() == 0 || !RequiredCapability.isSimpleRequirement(r.getMatches())) return false; if (iu.getUpdateDescriptor() != null) { for (IMatchExpression<IInstallableUnit> m : iu.getUpdateDescriptor().getIUsBeingUpdated()) { if (!RequiredCapability.isSimpleRequirement(m)) return false; } } for (IRequirement r : iu.getMetaRequirements()) if (r.getMax() == 0 || !RequiredCapability.isSimpleRequirement(r.getMatches())) return false; if (iu instanceof IInstallableUnitFragment) { for (IRequirement r : ((IInstallableUnitFragment) iu).getHost()) if (!RequiredCapability.isSimpleRequirement(r.getMatches())) return false; } if (iu instanceof IInstallableUnitPatch) { IInstallableUnitPatch iuPatch = (IInstallableUnitPatch) iu; for (IRequirement[] rArr : iuPatch.getApplicabilityScope()) for (IRequirement r : rArr) if (!RequiredCapability.isSimpleRequirement(r.getMatches())) return false; IRequirement lifeCycle = iuPatch.getLifeCycle(); if (lifeCycle != null && !RequiredCapability.isSimpleRequirement(lifeCycle.getMatches())) return false; } return true; }
if (reqs[i][0].getMax() == 0) { expandNegatedRequirement(reqs[i][0], iu, optionalAbstractRequirements, isRootIu); return; List<IInstallableUnit> matches = getApplicableMatches(req); determinePotentialHostsForFragment(iu); if (req.getMin() > 0) { if (matches.isEmpty()) { missingRequirement(patch, req); } else { if (req.isGreedy()) { IInstallableUnit reqIu = matches.get(0); Explanation explanation; if (!matches.isEmpty()) { AbstractVariable abs; if (req.isGreedy()) { abs = getAbstractVariable(req); createImplication(new Object[] {patch, abs, iu}, matches, Explanation.OPTIONAL_REQUIREMENT); List<IInstallableUnit> matches = getApplicableMatches(req); determinePotentialHostsForFragment(iu); if (req.getMin() > 0) { if (matches.isEmpty()) { matches.add(patch); if (req.isGreedy()) { IInstallableUnit reqIu = matches.get(0);///(IInstallableUnit) picker.query(new CapabilityQuery(req), new Collector(), null).iterator().next(); Explanation explanation;
@Override public IStatus toStatus() { if (isEntryPoint) { return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_missingRootRequired, req)); } if (req.getFilter() == null) { return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_missingRequired, getUserReadableName(iu), req)); } return new Status(IStatus.ERROR, DirectorActivator.PI_DIRECTOR, NLS.bind(Messages.Explanation_missingRequiredFilter, new Object[] {req.getFilter(), getUserReadableName(iu), req})); } }
protected boolean isGreedy(IRequirement req) { return req.isGreedy(); }
protected void writeRequirement(IRequirement requirement) { start(REQUIREMENT_ELEMENT); IMatchExpression<IInstallableUnit> match = requirement.getMatches(); if (requirement.getMax() > 0 && RequiredCapability.isSimpleRequirement(match)) { attribute(NAMESPACE_ATTRIBUTE, RequiredCapability.extractNamespace(match)); attribute(NAME_ATTRIBUTE, RequiredCapability.extractName(match)); attribute(VERSION_RANGE_ATTRIBUTE, RequiredCapability.extractRange(match)); attribute(CAPABILITY_OPTIONAL_ATTRIBUTE, requirement.getMin() == 0, false); attribute(CAPABILITY_MULTIPLE_ATTRIBUTE, requirement.getMax() > 1, false); } else { writeMatchExpression(match); if (requirement.getMin() != 1) attribute(MIN_ATTRIBUTE, requirement.getMin()); if (requirement.getMax() != 1) attribute(MAX_ATTRIBUTE, requirement.getMax()); } attribute(CAPABILITY_GREED_ATTRIBUTE, requirement.isGreedy(), true); if (requirement.getFilter() != null) writeTrimmedCdata(CAPABILITY_FILTER_ELEMENT, requirement.getFilter().getParameters()[0].toString()); if (requirement.getDescription() != null) writeTrimmedCdata(REQUIREMENT_DESCRIPTION_ELEMENT, requirement.getDescription()); end(REQUIREMENT_ELEMENT); }
MissingIU missingIU = (MissingIU) next; if (missingIU.req instanceof IRequiredCapability && missingIU.req.getMatches().getParameters().length == 3 && "A.PDE.Target.Platform".equals(((IRequiredCapability) missingIU.req).getNamespace())) {//$NON-NLS-1$