/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.ivy; import java.io.File; import java.io.IOException; import java.net.URL; import java.text.ParseException; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.ivy.core.deliver.DeliverOptions; import org.apache.ivy.core.deliver.PublishingDependencyRevisionResolver; import org.apache.ivy.core.install.InstallOptions; import org.apache.ivy.core.module.descriptor.Artifact; import org.apache.ivy.core.module.descriptor.ModuleDescriptor; import org.apache.ivy.core.module.id.ModuleId; import org.apache.ivy.core.module.id.ModuleRevisionId; import org.apache.ivy.core.publish.PublishOptions; import org.apache.ivy.core.report.ArtifactDownloadReport; import org.apache.ivy.core.report.ResolveReport; import org.apache.ivy.core.resolve.DownloadOptions; import org.apache.ivy.core.resolve.IvyNode; import org.apache.ivy.core.resolve.ResolveOptions; import org.apache.ivy.core.resolve.ResolvedModuleRevision; import org.apache.ivy.core.retrieve.RetrieveOptions; import org.apache.ivy.core.search.ModuleEntry; import org.apache.ivy.core.search.OrganisationEntry; import org.apache.ivy.core.search.RevisionEntry; import org.apache.ivy.core.sort.SilentNonMatchingVersionReporter; import org.apache.ivy.core.sort.SortOptions; import org.apache.ivy.plugins.matcher.PatternMatcher; import org.apache.ivy.plugins.resolver.DependencyResolver; import org.apache.ivy.util.Message; import org.apache.ivy.util.filter.Filter; import org.apache.ivy.util.filter.FilterHelper; /** * This class can be used for easy migration from Ivy 1.4 API. *

* Indeed, Ivy 2.0 API has changed substantially, so it can take time to migrate existing code using * Ivy 1.4 API to the new API. Using this class it's really easy: replace your instance of Ivy by an * instance of this class. *

* For instance, where you were doing: * *

 * Ivy ivy = new Ivy();
 * 
* * do instead: * *
 * Ivy14 ivy = new Ivy14();
 * 
* * And that should be enough in most cases! */ public class Ivy14 { // CheckStyle:ParameterNumberCheck OFF // don't check parameter numbers, since this class is here for backward compatibility private Ivy ivy; public Ivy14() { this(Ivy.newInstance()); } public Ivy14(Ivy ivy) { this.ivy = ivy; } public boolean check(URL ivyFile, String resolvername) { return ivy.check(ivyFile, resolvername); } public void configure(File settingsFile) throws ParseException, IOException { ivy.configure(settingsFile); } public void configure(URL settingsURL) throws ParseException, IOException { ivy.configure(settingsURL); } public void configureDefault() throws ParseException, IOException { ivy.configureDefault(); } public void deliver(ModuleRevisionId mrid, String revision, File cache, String destIvyPattern, String status, Date pubdate, PublishingDependencyRevisionResolver pdrResolver, boolean validate, boolean resolveDynamicRevisions) throws IOException, ParseException { ivy.deliver(mrid, revision, destIvyPattern, new DeliverOptions(status, pubdate, pdrResolver, validate, resolveDynamicRevisions, null)); } public void deliver(ModuleRevisionId mrid, String revision, File cache, String destIvyPattern, String status, Date pubdate, PublishingDependencyRevisionResolver pdrResolver, boolean validate) throws IOException, ParseException { deliver(mrid, revision, cache, destIvyPattern, status, pubdate, pdrResolver, validate, true); } public Map determineArtifactsToCopy(ModuleId moduleId, String[] confs, File cache, String destFilePattern, String destIvyPattern, Filter artifactFilter) throws ParseException, IOException { return ivy.getRetrieveEngine().determineArtifactsToCopy( new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs).setDestIvyPattern(destIvyPattern) .setArtifactFilter(artifactFilter)); } public Map determineArtifactsToCopy(ModuleId moduleId, String[] confs, File cache, String destFilePattern, String destIvyPattern) throws ParseException, IOException { return ivy.getRetrieveEngine().determineArtifactsToCopy( new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs).setDestIvyPattern(destIvyPattern)); } public ArtifactDownloadReport download(Artifact artifact, File cache, boolean useOrigin) { Message.deprecated("using cache and useOrigin when calling download is not supported anymore"); return ivy.getResolveEngine().download(artifact, new DownloadOptions()); } public ResolvedModuleRevision findModule(ModuleRevisionId id) { ResolveOptions options = new ResolveOptions(); options.setValidate(false); return ivy.getResolveEngine().findModule(id, options); } public IvyNode[] getDependencies(ModuleDescriptor md, String[] confs, File cache, Date date, ResolveReport report, boolean validate, boolean transitive) { return ivy.getResolveEngine().getDependencies( md, newResolveOptions(confs, null, cache, date, validate, false, transitive, false, true, true, FilterHelper.NO_FILTER), report); } public IvyNode[] getDependencies(ModuleDescriptor md, String[] confs, File cache, Date date, ResolveReport report, boolean validate) { return ivy.getResolveEngine().getDependencies( md, newResolveOptions(confs, null, cache, date, validate, false, true, false, true, true, FilterHelper.NO_FILTER), report); } public IvyNode[] getDependencies(URL ivySource, String[] confs, File cache, Date date, boolean validate) throws ParseException, IOException { return ivy.getResolveEngine().getDependencies( ivySource, newResolveOptions(confs, null, cache, date, validate, false, true, false, true, true, FilterHelper.NO_FILTER)); } public String getVariable(String name) { return ivy.getVariable(name); } public ResolveReport install(ModuleRevisionId mrid, String from, String to, boolean transitive, boolean validate, boolean overwrite, Filter artifactFilter, File cache, String matcherName) throws IOException { return ivy.install(mrid, from, to, new InstallOptions().setTransitive(transitive) .setValidate(validate).setOverwrite(overwrite).setArtifactFilter(artifactFilter) .setMatcherName(matcherName)); } public void interrupt() { ivy.interrupt(); } public void interrupt(Thread operatingThread) { ivy.interrupt(operatingThread); } public boolean isInterrupted() { return ivy.isInterrupted(); } public ModuleEntry[] listModuleEntries(OrganisationEntry org) { return ivy.listModuleEntries(org); } public ModuleId[] listModules(ModuleId criteria, PatternMatcher matcher) { return ivy.listModules(criteria, matcher); } public ModuleRevisionId[] listModules(ModuleRevisionId criteria, PatternMatcher matcher) { return ivy.listModules(criteria, matcher); } public String[] listModules(String org) { return ivy.listModules(org); } public OrganisationEntry[] listOrganisationEntries() { return ivy.listOrganisationEntries(); } public String[] listOrganisations() { return ivy.listOrganisations(); } public RevisionEntry[] listRevisionEntries(ModuleEntry module) { return ivy.listRevisionEntries(module); } public String[] listRevisions(String org, String module) { return ivy.listRevisions(org, module); } public String[] listTokenValues(String token, Map otherTokenValues) { return ivy.listTokenValues(token, otherTokenValues); } public Collection publish(ModuleDescriptor md, DependencyResolver resolver, Collection srcArtifactPattern, String srcIvyPattern, Artifact[] extraArtifacts, boolean overwrite, String conf) throws IOException { return ivy.getPublishEngine().publish( md, srcArtifactPattern, resolver, new PublishOptions().setSrcIvyPattern(srcIvyPattern).setExtraArtifacts(extraArtifacts) .setOverwrite(overwrite).setConfs(splitConfs(conf))); } public Collection publish(ModuleRevisionId mrid, String pubrevision, File cache, Collection srcArtifactPattern, String resolverName, String srcIvyPattern, String status, Date pubdate, Artifact[] extraArtifacts, boolean validate, boolean overwrite, boolean update, String conf) throws IOException { return ivy.publish( mrid, srcArtifactPattern, resolverName, new PublishOptions().setStatus(status).setPubdate(pubdate).setPubrevision(pubrevision) .setSrcIvyPattern(srcIvyPattern).setExtraArtifacts(extraArtifacts) .setUpdate(update).setValidate(validate).setOverwrite(overwrite) .setConfs(splitConfs(conf))); } public Collection publish(ModuleRevisionId mrid, String pubrevision, File cache, String srcArtifactPattern, String resolverName, String srcIvyPattern, boolean validate, boolean overwrite) throws IOException { return ivy.publish(mrid, Collections.singleton(srcArtifactPattern), resolverName, new PublishOptions().setPubrevision(pubrevision).setSrcIvyPattern(srcIvyPattern) .setValidate(validate).setOverwrite(overwrite)); } public Collection publish(ModuleRevisionId mrid, String pubrevision, File cache, String srcArtifactPattern, String resolverName, String srcIvyPattern, boolean validate) throws IOException { return ivy.publish(mrid, Collections.singleton(srcArtifactPattern), resolverName, new PublishOptions().setPubrevision(pubrevision).setSrcIvyPattern(srcIvyPattern) .setValidate(validate)); } public Collection publish(ModuleRevisionId mrid, String pubrevision, File cache, String srcArtifactPattern, String resolverName, String srcIvyPattern, String status, Date pubdate, Artifact[] extraArtifacts, boolean validate, boolean overwrite, boolean update, String conf) throws IOException { return ivy.publish( mrid, Collections.singleton(srcArtifactPattern), resolverName, new PublishOptions().setStatus(status).setPubdate(pubdate).setPubrevision(pubrevision) .setSrcIvyPattern(srcIvyPattern).setExtraArtifacts(extraArtifacts) .setUpdate(update).setValidate(validate).setOverwrite(overwrite) .setConfs(splitConfs(conf))); } public ResolveReport resolve(File ivySource) throws ParseException, IOException { return ivy.resolve(ivySource); } public ResolveReport resolve(ModuleDescriptor md, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, boolean transitive, boolean useOrigin, boolean download, boolean outputReport, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( md, newResolveOptions(confs, null, cache, date, validate, useCacheOnly, transitive, useOrigin, download, outputReport, artifactFilter)); } private ResolveOptions newResolveOptions(String[] confs, String revision, File cache, Date date, boolean validate, boolean useCacheOnly, boolean transitive, boolean useOrigin, boolean download, boolean outputReport, Filter artifactFilter) { if (useOrigin) { ivy.getSettings().useDeprecatedUseOrigin(); } return new ResolveOptions().setConfs(confs).setRevision(revision).setValidate(validate) .setUseCacheOnly(useCacheOnly).setTransitive(transitive).setDownload(download) .setOutputReport(outputReport).setArtifactFilter(artifactFilter); } public ResolveReport resolve(ModuleDescriptor md, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, boolean transitive, boolean download, boolean outputReport, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( md, newResolveOptions(confs, null, cache, date, validate, useCacheOnly, transitive, false, download, outputReport, artifactFilter)); } public ResolveReport resolve(ModuleDescriptor md, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, boolean transitive, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( md, newResolveOptions(confs, null, cache, date, validate, useCacheOnly, transitive, false, true, true, artifactFilter)); } public ResolveReport resolve(ModuleDescriptor md, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( md, newResolveOptions(confs, null, cache, date, validate, useCacheOnly, true, false, true, true, artifactFilter)); } public ResolveReport resolve(ModuleRevisionId mrid, String[] confs, boolean transitive, boolean changing, File cache, Date date, boolean validate, boolean useCacheOnly, boolean useOrigin, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( mrid, newResolveOptions(confs, null, cache, date, validate, useCacheOnly, transitive, useOrigin, true, true, artifactFilter), changing); } public ResolveReport resolve(ModuleRevisionId mrid, String[] confs, boolean transitive, boolean changing, File cache, Date date, boolean validate, boolean useCacheOnly, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( mrid, newResolveOptions(confs, null, cache, date, validate, useCacheOnly, transitive, false, true, true, artifactFilter), changing); } public ResolveReport resolve(ModuleRevisionId mrid, String[] confs) throws ParseException, IOException { return ivy.resolve( mrid, newResolveOptions(confs, null, ivy.getSettings().getDefaultCache(), null, true, false, true, false, true, true, FilterHelper.NO_FILTER), false); } public ResolveReport resolve(URL ivySource, String revision, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, boolean transitive, boolean useOrigin, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( ivySource, newResolveOptions(confs, revision, cache, date, validate, useCacheOnly, transitive, useOrigin, true, true, artifactFilter)); } public ResolveReport resolve(URL ivySource, String revision, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, boolean transitive, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( ivySource, newResolveOptions(confs, revision, cache, date, validate, useCacheOnly, transitive, false, true, true, artifactFilter)); } public ResolveReport resolve(URL ivySource, String revision, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly, Filter artifactFilter) throws ParseException, IOException { return ivy.resolve( ivySource, newResolveOptions(confs, revision, cache, date, validate, useCacheOnly, true, false, true, true, artifactFilter)); } public ResolveReport resolve(URL ivySource, String revision, String[] confs, File cache, Date date, boolean validate, boolean useCacheOnly) throws ParseException, IOException { return ivy.resolve( ivySource, newResolveOptions(confs, revision, cache, date, validate, useCacheOnly, true, false, true, true, FilterHelper.NO_FILTER)); } public ResolveReport resolve(URL ivySource, String revision, String[] confs, File cache, Date date, boolean validate) throws ParseException, IOException { return ivy.resolve( ivySource, newResolveOptions(confs, revision, cache, date, validate, false, true, false, true, true, FilterHelper.NO_FILTER)); } public ResolveReport resolve(URL ivySource) throws ParseException, IOException { return ivy.resolve(ivySource); } public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern, String destIvyPattern, Filter artifactFilter, boolean sync, boolean useOrigin, boolean makeSymlinks) { try { return ivy.retrieve(new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs).setDestIvyPattern(destIvyPattern) .setArtifactFilter(artifactFilter).setSync(sync).setUseOrigin(useOrigin) .setMakeSymlinks(makeSymlinks)); } catch (IOException e) { throw new RuntimeException(e); } } public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern, String destIvyPattern, Filter artifactFilter, boolean sync, boolean useOrigin) { try { return ivy.retrieve(new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs).setDestIvyPattern(destIvyPattern) .setArtifactFilter(artifactFilter).setSync(sync).setUseOrigin(useOrigin)); } catch (IOException e) { throw new RuntimeException(e); } } public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern, String destIvyPattern, Filter artifactFilter) { try { return ivy.retrieve(new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs).setDestIvyPattern(destIvyPattern) .setArtifactFilter(artifactFilter)); } catch (IOException e) { throw new RuntimeException(e); } } public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern, String destIvyPattern) { try { return ivy.retrieve(new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs).setDestIvyPattern(destIvyPattern)); } catch (IOException e) { throw new RuntimeException(e); } } public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern) { try { return ivy.retrieve(new ModuleRevisionId(moduleId, Ivy.getWorkingRevision()), destFilePattern, new RetrieveOptions().setConfs(confs)); } catch (IOException e) { throw new RuntimeException(e); } } public void setVariable(String varName, String value) { ivy.setVariable(varName, value); } public List sortModuleDescriptors(Collection moduleDescriptors) { return ivy .sortModuleDescriptors(moduleDescriptors, new SortOptions() .setNonMatchingVersionReporter(new SilentNonMatchingVersionReporter())); } public List sortNodes(Collection nodes) { return ivy .sortNodes(nodes, new SortOptions() .setNonMatchingVersionReporter(new SilentNonMatchingVersionReporter())); } public String substitute(String str) { return ivy.substitute(str); } private String[] splitConfs(String conf) { if (conf == null || "".equals(conf)) { return null; } String[] confs = conf.split(","); for (int i = 0; i < confs.length; i++) { confs[i] = confs[i].trim(); } return confs; } // CheckStyle:ParameterNumberCheck ON }