public String getNuxeoId() { return pkg.getId(); }
@Override public List<Version> findLocalPackageInstalledVersions(String packageName) { List<Version> versions = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackages()) { if (pkg.getName().equals(packageName) && pkg.getPackageState().isInstalled()) { versions.add(pkg.getVersion()); } } } return versions; }
/** * Browse the given package's "dependencies", "conflicts" and "provides" to populate the list of involved packages * * @param installedOrRequiredSNAPSHOTPackages * @since 1.4.18 */ protected void computeInvolvedReferences(Set<String> involvedPackages, List<String> installedOrRequiredSNAPSHOTPackages, DownloadablePackage pkg, Map<String, List<DownloadablePackage>> allPackagesMap) { if (involvedPackages.contains(pkg.getName())) { computeInvolvedReferences(involvedPackages, installedOrRequiredSNAPSHOTPackages, pkg.getDependencies(), allPackagesMap); computeInvolvedReferences(involvedPackages, installedOrRequiredSNAPSHOTPackages, pkg.getConflicts(), allPackagesMap); for (PackageDependency pkgDep : pkg.getProvides()) { involvedPackages.add(pkgDep.getName()); } } }
@Override public List<Version> findLocalPackageVersions(String packageName) { List<Version> versions = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackages()) { if (pkg.getName().equals(packageName)) { versions.add(pkg.getVersion()); } } } return versions; }
/** * @param pkg * @since 1.4.11 */ public void setPkg(DownloadablePackage pkg) { this.pkg = pkg; cudfName = pkg.getName(); setInstalled(pkg.getPackageState().isInstalled()); }
Map<String, List<DownloadablePackage>> allPackagesMap = new HashMap<>(); for (DownloadablePackage pkg : allPackages) { String key = pkg.getName(); List<DownloadablePackage> list; if (!allPackagesMap.containsKey(key)) { if (keep && pkg.getPackageState().isInstalled()) { involvedPackages.add(pkg.getName()); if (!involvedPackages.contains(pkg.getName())) { if (installedOrRequiredSNAPSHOTPackages.contains(pkg.getName())) { log.error("Ignore installedOrRequiredSNAPSHOTPackage " + pkg); PackageDependency[] provides = pkg.getProvides(); for (PackageDependency provide : provides) { if (involvedPackages.contains(provide.getName())) { if (!pkg.getPackageState().isInstalled() && !TargetPlatformFilterHelper.isCompatibleWithTargetPlatform(pkg, targetPlatform)) { log.debug("Ignore " + pkg + " (incompatible target platform)"); if (!allowSNAPSHOT && pkg.getVersion().isSnapshot() && pkg.getType() != PackageType.STUDIO && !installedOrRequiredSNAPSHOTPackages.contains(pkg.getName())) { log.debug("Ignore " + pkg + " (excluded SNAPSHOT)"); continue; if (pkg.getVersion().isSnapshot() && pkg.isLocal() && upgradesMap.containsKey(pkg.getName())) { PackageDependency upgrade = upgradesMap.get(pkg.getName()); if (upgrade.getVersionRange().matchVersion(pkg.getVersion())) {
PackageDependency[] pkgDeps = remotePkg.getDependencies(); log.debug("{} target platforms: {}", () -> remotePkg, () -> ArrayUtils.toString(remotePkg.getTargetPlatforms())); log.debug("{} dependencies: {}", () -> remotePkg, () -> ArrayUtils.toString(pkgDeps)); String packageId = remotePkg.getId(); if (!dependency.contains(remotePkg.getName())) { dependencies.add(dependency); if (!useCompatReload) { log.info("Use hot reload update mechanism"); ReloadHelper.hotReloadPackage(remotePkg.getId()); return jsonHelper(SUCCESS, "Studio package installed.", null); String packageId = remotePkg.getId(); LocalPackage pkg = pus.getPackage(packageId);
Set<DownloadablePackage> packagesToReinstall = new HashSet<>(); for (DownloadablePackage installedPkg : installedPackages) { if (res.getOrderedPackageIdsToRemove().contains(installedPkg.getId())) { PackageDependency[] optionalDependencies = installedPkg.getOptionalDependencies(); for (PackageDependency pkgOptDep : optionalDependencies) { if (matchDependency(pkgOptDep, pkgToInstall)) { res.addReinstallForNewlyInstalledOptional(installedPkg.getId(), pkgToInstall.getId()); packagesToReinstall.add(installedPkg); break; if (matchDependency(pkgOptDep, pkgToRemove)) { res.addReinstallForNewlyRemovedOptional(installedPkg.getId(), pkgToRemove.getId()); packagesToReinstall.add(installedPkg); break; res.getOrderedPackageIdsToInstall().add(pkg.getId()); res.markPackageForRemoval(pkg.getName(), pkg.getVersion());
public String getNuxeoName() { return pkg.getName(); }
for (DownloadablePackage pkg : allPackages) { String[] targetPlatforms = targetPlatform != null ? new String[] { targetPlatform } : pkg.getTargetPlatforms(); if (targetPlatforms == null) { // if the package doesn't specify any target platform targetPlatforms = new String[] { null }; packagesByIdAndTargetPlatform.put(tp, packagesById); String key = pkg.getId(); if (packagesById.containsKey(key)) { if (pkg.getVersion().greaterThan(packagesById.get(key).getVersion())) { packagesById.put(key, pkg);
nbImpactedPackages = pkgNamesToRemove.size(); for (DownloadablePackage p : installedPackages) { if (!pkgNamesToRemove.contains(p.getName())) { for (PackageDependency dep : p.getDependencies()) { if (pkgNamesToRemove.contains(dep.getName())) { pkgNamesToRemove.add(p.getName()); break;
/** * Installs a list of packages and uninstalls the rest (no dependency check) * * @since 6.0 */ public boolean pkgSet(List<String> pkgList, boolean ignoreMissing) { boolean cmdOK = true; cmdOK = cmdOK && pkgInstall(pkgList, ignoreMissing); List<DownloadablePackage> installedPkgs = getPackageManager().listInstalledPackages(); List<String> pkgsToUninstall = new ArrayList<>(); for (DownloadablePackage pkg : installedPkgs) { if ((!pkgList.contains(pkg.getName())) && (!pkgList.contains(pkg.getId()))) { pkgsToUninstall.add(pkg.getId()); } } if (pkgsToUninstall.size() != 0) { cmdOK = cmdOK && pkgUninstall(pkgsToUninstall); } return cmdOK; }
PackageDependency[] pkgDeps = remotePkg.getDependencies(); if (log.isDebugEnabled()) { log.debug(String.format("%s target platforms: %s", remotePkg, ArrayUtils.toString(remotePkg.getTargetPlatforms()))); log.debug(String.format("%s dependencies: %s", remotePkg, ArrayUtils.toString(pkgDeps)));
for (String id : listToOrder) { DownloadablePackage pkg = allPackagesByID.get(id); if (pkg.getDependencies().length == 0 && pkg.getOptionalDependencies().length == 0) { CollectionUtils.addAll(allDependencies, pkg.getDependencies()); List<PackageDependency> optionalDependencies = Arrays.asList(pkg.getOptionalDependencies()); allDependencies.addAll(optionalDependencies); for (PackageDependency pkgDep : allDependencies) { orderedRemoveList.remove(pkg.getName()); hasChanged = true;
public Version getNuxeoVersion() { return pkg.getVersion(); }
@Override public List<Version> getPreferedVersions(String pkgName) { List<Version> versions = new ArrayList<>(); List<Version> installedVersions = new ArrayList<>(); List<Version> localVersions = new ArrayList<>(); List<Version> remoteVersions = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackagesByName(pkgName)) { if (pkg.getPackageState().isInstalled()) { installedVersions.add(pkg.getVersion()); } else { localVersions.add(pkg.getVersion()); } } } for (PackageSource source : remoteSources) { for (DownloadablePackage pkg : source.listPackagesByName(pkgName, currentTargetPlatform)) { remoteVersions.add(pkg.getVersion()); } } Collections.sort(localVersions); Collections.sort(remoteVersions); versions.addAll(installedVersions); versions.addAll(localVersions); versions.addAll(remoteVersions); return versions; }
@Override public List<DownloadablePackage> listInstalledPackages() { List<DownloadablePackage> res = new ArrayList<>(); for (PackageSource source : localSources) { for (DownloadablePackage pkg : source.listPackages()) { if (pkg.getPackageState().isInstalled()) { res.add(pkg); } } } Collections.sort(res, new PackageComparator()); return res; }
@Override public PackageDependency[] getDependencies() { return pkg.getDependencies(); }
@Override public List<DownloadablePackage> listPackages(PackageType type, String currentTargetPlatform) { List<DownloadablePackage> all = listPackages(); return all.stream().filter(pkg -> { // the TP filter only applies on remote packages return (pkg.getPackageState() != PackageState.REMOTE || StringUtils.isBlank(currentTargetPlatform) || TargetPlatformFilterHelper.isCompatibleWithTargetPlatform(pkg, currentTargetPlatform)) && (type == null || type.equals(pkg.getType())); }).collect(Collectors.toList()); }
@Override protected List<DownloadablePackage> getDownloads(String fileSuffix, String urlSuffix) throws ConnectServerError { String targetPlatform = StringUtils.substringAfter(urlSuffix, "?targetPlatform="); return super.getDownloads(fileSuffix, urlSuffix).stream().filter(pkg -> { return TargetPlatformFilterHelper.isCompatibleWithTargetPlatform(pkg.getTargetPlatforms(), targetPlatform); }).collect(Collectors.toList()); }