// Check if the source file and destination node point to the same file @Override public boolean isSameFile(ArtifactContext context, File srcFile) throws RepositoryException { boolean same = false; if (!cache.getRoot().isRemote()) { Node dstParent = getOrCreateParent(context); Node newChild = dstParent.getChild(srcFile.getName()); if (newChild != null) { try { File existing = newChild.getContent(File.class); same = FileUtil.sameFile(srcFile, existing); } catch (IOException e) { throw new RepositoryException(e); } } } return same; }
@Override public synchronized List<CmrRepository> getRepositories() { if (allRoots == null) { allRoots = new ArrayList<>(); boolean cacheAdded = false; for (CmrRepository root : roots) { if (!addCacheAsRoot && cache != null && !cacheAdded && root.getRoot().isRemote()) { allRoots.add(cache); cacheAdded = true; } allRoots.add(root); } if (!addCacheAsRoot && cache != null && !cacheAdded) { allRoots.add(cache); } } return allRoots; }
private void setupOverrides(CmrRepository repo) { repo.getRoot().addService(Overrides.class, overrides); }
protected OpenNode getCache() { if (cache == null) return null; return cache.getRoot(); }
private boolean canHandleFolders(CmrRepository repo) { ContentStore cs = repo.getRoot().getService(ContentStore.class); return cs != null && cs.canHandleFolders(); }
private ArtifactResult fetchDependencies( RepositoryManager manager, CmrRepository repository, String groupId, String artifactId, String version, boolean fetchSingleArtifact, String repositoryDisplayString) { String classifier = null; Overrides overrides = repository.getRoot().getService(Overrides.class); ArtifactOverrides ao = null; log.debug("Overrides: " + overrides); ArtifactContext context = getArtifactContext(groupId, artifactId, version, null, null); if (overrides != null) { ao = overrides.getArtifactOverrides(context); log.debug(" [" + context + "] => " + ao); } // entire replacement ArtifactContext replacementContext = null; if (ao != null && ao.getReplace() != null) { replacementContext = ao.getReplace().getArtifactContext(); } else if (overrides != null) { replacementContext = overrides.replace(context); } if (replacementContext != null) { log.debug( String.format("[Maven-Overrides] Replacing %s with %s.", context, replacementContext)); // replace fetched dependency String[] nameToGroupArtifactIds = nameToGroupArtifactIds(replacementContext.getName()); if (nameToGroupArtifactIds != null) { groupId = nameToGroupArtifactIds[0]; artifactId = nameToGroupArtifactIds[1]; version = replacementContext.getVersion(); // new AO context = getArtifactContext(groupId, artifactId, version, null, null); ao = overrides.getArtifactOverrides(context); } } // version replacement if (overrides != null && overrides.isVersionOverridden(context)) { version = overrides.getVersionOverride(context); context.setVersion(version); } // classifier replacement if (ao != null && ao.hasClassifier()) { classifier = ao.getClassifier(); log.debug("Using classifier " + classifier); } final String name = toCanonicalForm(groupId, artifactId); final String coordinates = toCanonicalForm(name, version); try { DependencyDescriptor info = impl.getDependencies(groupId, artifactId, version, classifier, null, fetchSingleArtifact); if (info == null) { log.debug("No artifact found: " + coordinates); return null; } final SingleArtifactResult result; if (fetchSingleArtifact) { result = new SingleArtifactResult( repository, name, version, info.getFile(), repositoryDisplayString); } else { final List<ArtifactResult> dependencies = new ArrayList<>(); for (DependencyDescriptor dep : info.getDependencies()) { String dGroupId = dep.getGroupId(); String dArtifactId = dep.getArtifactId(); String dVersion = dep.getVersion(); boolean export = false; boolean optional = dep.isOptional(); boolean isCeylon = false; ArtifactContext dContext = null; if (overrides != null) dContext = getArtifactContext(dGroupId, dArtifactId, dVersion, null, null); if (overrides != null) { if (overrides.isRemoved(dContext) || (ao != null && ao.isRemoved(dContext))) { log.debug(String.format("[Maven-Overrides] Removing %s from %s.", dep, context)); continue; // skip dependency } if (ao != null && ao.isAddedOrUpdated(dContext)) { log.debug(String.format("[Maven-Overrides] Replacing %s from %s.", dep, context)); continue; // skip dependency } ArtifactContext replace = overrides.replace(dContext); if (replace != null) { dContext = replace; String[] groupArtifactIds = nameToGroupArtifactIds(replace.getName()); if (groupArtifactIds == null) { isCeylon = true; } else { dGroupId = groupArtifactIds[0]; dArtifactId = groupArtifactIds[1]; } dVersion = replace.getVersion(); } if (ao != null) { if (ao.isShareOverridden(dContext)) export = ao.isShared(dContext); if (ao.isOptionalOverridden(dContext)) optional = ao.isOptional(dContext); } } // do we have a version update? if (overrides != null && overrides.isVersionOverridden(dContext)) { dVersion = overrides.getVersionOverride(dContext); } ArtifactResult dr; if (isCeylon) dr = createArtifactResult( manager, dContext.getName(), dVersion, export, optional, repositoryDisplayString); else dr = createArtifactResult( manager, repository, dGroupId, dArtifactId, dVersion, export, optional, repositoryDisplayString); dependencies.add(dr); } if (ao != null) { for (DependencyOverride addon : ao.getAdd()) { ArtifactContext dContext = addon.getArtifactContext(); String dVersion = overrides.getVersionOverride(dContext); dependencies.add( createArtifactResult( manager, repository, dContext, dVersion, addon.isShared(), addon.isOptional(), repositoryDisplayString)); log.debug( String.format( "[Maven-Overrides] Added %s to %s.", addon.getArtifactContext(), context)); } } result = new AetherArtifactResult( repository, name, version, info.getFile(), dependencies, repositoryDisplayString); } if (ao != null && ao.getFilter() != null) { result.setFilter(PathFilterParser.parse(ao.getFilter())); } return result; } catch (IOException e) { throw new IllegalStateException(e); } catch (AetherException e) { log.debug("Could not resolve artifact [" + coordinates + "] : " + e); return null; } }