incubator-ivy-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From xav...@apache.org
Subject svn commit: r501916 - in /incubator/ivy/core/trunk/src/java/org/apache/ivy: ./ ant/ core/ core/cache/ core/check/ core/deliver/
Date Wed, 31 Jan 2007 17:29:51 GMT
Author: xavier
Date: Wed Jan 31 09:29:49 2007
New Revision: 501916

URL: http://svn.apache.org/viewvc?view=rev&rev=501916
Log:
REFACTOR: review deliver API

Added:
    incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverOptions.java
Modified:
    incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/check/CheckEngine.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverEngine.java

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy.java Wed Jan 31 09:29:49 2007
@@ -33,7 +33,7 @@
 import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.check.CheckEngine;
 import org.apache.ivy.core.deliver.DeliverEngine;
-import org.apache.ivy.core.deliver.PublishingDependencyRevisionResolver;
+import org.apache.ivy.core.deliver.DeliverOptions;
 import org.apache.ivy.core.event.EventManager;
 import org.apache.ivy.core.install.InstallEngine;
 import org.apache.ivy.core.module.descriptor.Artifact;
@@ -347,13 +347,26 @@
     //                         DELIVER
     /////////////////////////////////////////////////////////////////////////
 
-	public void deliver(ModuleRevisionId mrid, String revision, File cache, String destIvyPattern,
String status, Date pubdate, PublishingDependencyRevisionResolver pdrResolver, boolean validate,
boolean resolveDynamicRevisions) throws IOException, ParseException {
-		_deliverEngine.deliver(mrid, revision, cache, destIvyPattern, status, pubdate, pdrResolver,
validate, resolveDynamicRevisions);
+	public void deliver(ModuleRevisionId mrid, String revision,	String destIvyPattern) throws
IOException, ParseException {
+		_deliverEngine.deliver(mrid, revision, destIvyPattern, DeliverOptions.newInstance(_settings));
 	}
 
-	public void deliver(ModuleRevisionId mrid, String revision, File cache, String destIvyPattern,
String status, Date pubdate, PublishingDependencyRevisionResolver pdrResolver, boolean validate)
throws IOException, ParseException {
-		_deliverEngine.deliver(mrid, revision, cache, destIvyPattern, status, pubdate, pdrResolver,
validate);
+	/**
+	 * Example of use:
+	 * deliver(mrid, "1.5", "target/ivy/ivy-[revision].xml", 
+	 *         DeliverOptions.newInstance(settings).setStatus("release").setValidate(false));
+	 *         
+	 * @param mrid
+	 * @param revision
+	 * @param destIvyPattern
+	 * @param options
+	 * @throws IOException
+	 * @throws ParseException
+	 */
+	public void deliver(ModuleRevisionId mrid, String revision,	String destIvyPattern, DeliverOptions
options) throws IOException, ParseException {
+		_deliverEngine.deliver(mrid, revision, destIvyPattern, options);
 	}
+
 
     /////////////////////////////////////////////////////////////////////////
     //                         PUBLISH

Added: incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java?view=auto&rev=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java (added)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Ivy14.java Wed Jan 31 09:29:49 2007
@@ -0,0 +1,303 @@
+/*
+ *  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.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ivy.core.cache.CacheManager;
+import org.apache.ivy.core.deliver.DeliverOptions;
+import org.apache.ivy.core.deliver.PublishingDependencyRevisionResolver;
+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.report.ArtifactDownloadReport;
+import org.apache.ivy.core.report.ResolveReport;
+import org.apache.ivy.core.resolve.IvyNode;
+import org.apache.ivy.core.resolve.ResolvedModuleRevision;
+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.plugins.matcher.PatternMatcher;
+import org.apache.ivy.plugins.resolver.DependencyResolver;
+import org.apache.ivy.util.filter.Filter;
+
+
+
+/**
+ * This class can be used for easy migration from Ivy 1.4 API.
+ * 
+ * Indeed, Ivy 1.5 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!
+ *  
+ * @author Xavier Hanin
+ */
+public class Ivy14 {
+	private Ivy _ivy;
+    
+    public Ivy14() {
+    	this(Ivy.newInstance());
+    }
+
+	public Ivy14(Ivy ivy) {
+		_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, CacheManager.getInstance(_ivy.getSettings(),
cache), pdrResolver, validate, resolveDynamicRevisions));
+	}
+
+	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.determineArtifactsToCopy(moduleId, confs, cache, destFilePattern, destIvyPattern,
artifactFilter);
+	}
+
+	public Map determineArtifactsToCopy(ModuleId moduleId, String[] confs, File cache, String
destFilePattern, String destIvyPattern) throws ParseException, IOException {
+		return _ivy.determineArtifactsToCopy(moduleId, confs, cache, destFilePattern, destIvyPattern);
+	}
+
+	public ArtifactDownloadReport download(Artifact artifact, File cache, boolean useOrigin)
{
+		return _ivy.download(artifact, cache, useOrigin);
+	}
+
+	public void downloadArtifacts(ResolveReport report, CacheManager cacheManager, boolean useOrigin,
Filter artifactFilter) {
+		_ivy.downloadArtifacts(report, cacheManager, useOrigin, artifactFilter);
+	}
+
+	public ResolvedModuleRevision findModule(ModuleRevisionId id) {
+		return _ivy.findModule(id);
+	}
+
+	public IvyNode[] getDependencies(ModuleDescriptor md, String[] confs, File cache, Date date,
ResolveReport report, boolean validate, boolean transitive) {
+		return _ivy.getDependencies(md, confs, cache, date, report, validate, transitive);
+	}
+
+	public IvyNode[] getDependencies(ModuleDescriptor md, String[] confs, File cache, Date date,
ResolveReport report, boolean validate) {
+		return _ivy.getDependencies(md, confs, cache, date, report, validate);
+	}
+
+	public IvyNode[] getDependencies(URL ivySource, String[] confs, File cache, Date date, boolean
validate) throws ParseException, IOException {
+		return _ivy.getDependencies(ivySource, confs, cache, date, validate);
+	}
+
+	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, transitive, validate, overwrite, artifactFilter, cache,
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.publish(md, resolver, srcArtifactPattern, srcIvyPattern, extraArtifacts, overwrite,
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, pubrevision, cache, srcArtifactPattern, resolverName, srcIvyPattern,
status, pubdate, extraArtifacts, validate, overwrite, update, 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, pubrevision, cache, srcArtifactPattern, resolverName, srcIvyPattern,
validate, overwrite);
+	}
+
+	public Collection publish(ModuleRevisionId mrid, String pubrevision, File cache, String
srcArtifactPattern, String resolverName, String srcIvyPattern, boolean validate) throws IOException
{
+		return _ivy.publish(mrid, pubrevision, cache, srcArtifactPattern, resolverName, srcIvyPattern,
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, pubrevision, cache, srcArtifactPattern, resolverName, srcIvyPattern,
status, pubdate, extraArtifacts, validate, overwrite, update, 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, FileNotFoundException
{
+		return _ivy.resolve(md, confs, cache, date, validate, useCacheOnly, transitive, useOrigin,
download, outputReport, 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, FileNotFoundException {
+		return _ivy.resolve(md, confs, cache, date, validate, useCacheOnly, transitive, 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, FileNotFoundException {
+		return _ivy.resolve(md, confs, cache, date, validate, useCacheOnly, transitive, artifactFilter);
+	}
+
+	public ResolveReport resolve(ModuleDescriptor md, String[] confs, File cache, Date date,
boolean validate, boolean useCacheOnly, Filter artifactFilter) throws ParseException, IOException,
FileNotFoundException {
+		return _ivy.resolve(md, confs, cache, date, validate, useCacheOnly, 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, confs, transitive, changing, cache, date, validate, useCacheOnly,
useOrigin, artifactFilter);
+	}
+
+	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, confs, transitive, changing, cache, date, validate, useCacheOnly,
artifactFilter);
+	}
+
+	public ResolveReport resolve(ModuleRevisionId mrid, String[] confs) throws ParseException,
IOException {
+		return _ivy.resolve(mrid, confs);
+	}
+
+	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, revision, confs, cache, date, validate, useCacheOnly, transitive,
useOrigin, 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, revision, confs, cache, date, validate, useCacheOnly, transitive,
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, revision, confs, cache, date, validate, useCacheOnly, 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, revision, confs, cache, date, validate, useCacheOnly);
+	}
+
+	public ResolveReport resolve(URL ivySource, String revision, String[] confs, File cache,
Date date, boolean validate) throws ParseException, IOException {
+		return _ivy.resolve(ivySource, revision, confs, cache, date, validate);
+	}
+
+	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)
{
+		return _ivy.retrieve(moduleId, confs, cache, destFilePattern, destIvyPattern, artifactFilter,
sync, useOrigin, makeSymlinks);
+	}
+
+	public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern,
String destIvyPattern, Filter artifactFilter, boolean sync, boolean useOrigin) {
+		return _ivy.retrieve(moduleId, confs, cache, destFilePattern, destIvyPattern, artifactFilter,
sync, useOrigin);
+	}
+
+	public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern,
String destIvyPattern, Filter artifactFilter) {
+		return _ivy.retrieve(moduleId, confs, cache, destFilePattern, destIvyPattern, artifactFilter);
+	}
+
+	public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern,
String destIvyPattern) {
+		return _ivy.retrieve(moduleId, confs, cache, destFilePattern, destIvyPattern);
+	}
+
+	public int retrieve(ModuleId moduleId, String[] confs, File cache, String destFilePattern)
{
+		return _ivy.retrieve(moduleId, confs, cache, destFilePattern);
+	}
+
+	public void setVariable(String varName, String value) {
+		_ivy.setVariable(varName, value);
+	}
+
+	public List sortModuleDescriptors(Collection moduleDescriptors) {
+		return _ivy.sortModuleDescriptors(moduleDescriptors);
+	}
+
+	public List sortNodes(Collection nodes) {
+		return _ivy.sortNodes(nodes);
+	}
+
+	public String substitute(String str) {
+		return _ivy.substitute(str);
+	}
+    
+	
+}

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/Main.java Wed Jan 31 09:29:49 2007
@@ -39,7 +39,8 @@
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-import org.apache.ivy.core.deliver.DefaultPublishingDRResolver;
+import org.apache.ivy.core.cache.CacheManager;
+import org.apache.ivy.core.deliver.DeliverOptions;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
 import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
@@ -220,7 +221,7 @@
             
             String confPath = line.getOptionValue("conf", "");
             if ("".equals(confPath)) {
-                ivy.getSettings().loadDefault();
+                ivy.configureDefault();
             } else {
                 File conffile = new File(confPath);
                 if (!conffile.exists()) {
@@ -237,6 +238,7 @@
             } else if (!cache.isDirectory()) {
                 error(options, cache+" is not a directory");
             }
+            CacheManager cacheManager = CacheManager.getInstance(ivy.getSettings(), cache);
             
             String[] confs;
             if (line.hasOption("confs")) {
@@ -303,15 +305,15 @@
             }
 
             if (line.hasOption("revision")) {
-                ivy.deliver(
+				ivy.deliver(
                     md.getResolvedModuleRevisionId(),
                     ivy.getSettings().substitute(line.getOptionValue("revision")),
-                    cache, 
                     ivy.getSettings().substitute(line.getOptionValue("deliverto", "ivy-[revision].xml")),
-                    ivy.getSettings().substitute(line.getOptionValue("status", "release")),
-                    null,
-                    new DefaultPublishingDRResolver(),
-                    validate);
+                    DeliverOptions.newInstance(ivy.getSettings())
+                    	.setStatus(ivy.getSettings().substitute(line.getOptionValue("status",
"release")))
+                    	.setValidate(validate)
+                    	.setCache(cacheManager)
+                    );
                 if (line.hasOption("publish")) {
                     ivy.publish(
                             md.getResolvedModuleRevisionId(), 

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java Wed Jan 31 09:29:49
2007
@@ -22,7 +22,9 @@
 
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.IvyContext;
+import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.deliver.DefaultPublishingDRResolver;
+import org.apache.ivy.core.deliver.DeliverOptions;
 import org.apache.ivy.core.deliver.PublishingDependencyRevisionResolver;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
@@ -359,8 +361,10 @@
             } else {
                 drResolver = new DefaultPublishingDRResolver();
             }
-            ivy.deliver(mrid, _pubRevision, _cache, _deliverpattern, _status,
-                    pubdate, drResolver, doValidate(settings), _replacedynamicrev);
+            ivy.deliver(mrid, _pubRevision, _deliverpattern, 
+            		new DeliverOptions(_status, pubdate, 
+            				CacheManager.getInstance(settings, _cache), 
+            				drResolver, doValidate(settings), _replacedynamicrev));
 
         } catch (Exception e) {
             throw new BuildException("impossible to deliver " + mrid + ": " + e, e);

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java Wed Jan 31 09:29:49
2007
@@ -148,8 +148,7 @@
 	}
 
 	public CacheManager getCacheManager() {
-		// TODO : reuse one instance
-		return new CacheManager(getSettings(), getCache());
+		return CacheManager.getInstance(getSettings(), getCache());
 	}
 
 	public void checkInterrupted() {

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/cache/CacheManager.java Wed Jan
31 09:29:49 2007
@@ -33,6 +33,13 @@
 import org.apache.ivy.util.PropertiesFile;
 
 public class CacheManager {
+	public static CacheManager getInstance(IvySettings settings, File cache) {
+		return new CacheManager(settings, cache);
+	}
+
+	public static CacheManager getInstance(IvySettings settings) {
+		return getInstance(settings, settings.getDefaultCache());
+	}
 	
 	private IvySettings _settings;
 	private File _cache;

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/check/CheckEngine.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/check/CheckEngine.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/check/CheckEngine.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/check/CheckEngine.java Wed Jan 31
09:29:49 2007
@@ -50,7 +50,7 @@
 
 
 	/**
-     * Checks the given ivy file using current configuration to see if all dependencies
+     * Checks the given ivy file using current settings to see if all dependencies
      * are available, with good confs. If a resolver name is given, it also checks that the
declared
      * publications are available in the corresponding resolver.
      * Note that the check is not performed recursively, i.e. if a dependency has itself
dependencies

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverEngine.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverEngine.java?view=diff&rev=501916&r1=501915&r2=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverEngine.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverEngine.java Wed Jan
31 09:29:49 2007
@@ -23,14 +23,12 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.text.ParseException;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
 
 import org.apache.ivy.core.IvyPatternHelper;
-import org.apache.ivy.core.cache.CacheManager;
 import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
@@ -47,51 +45,26 @@
 		_settings = settings;
 	}
 
-	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);
-    }
-    
     /**
-     * delivers a resolved ivy file based upon last resolve call status and
-     * the given PublishingDependencyRevisionResolver.
-     * If resolve report file cannot be found in cache, then it throws 
-     * an IllegalStateException (maybe resolve has not been called before ?)
-     * Moreover, the given PublishingDependencyRevisionResolver is used for each 
-     * dependency to get its published information. This can particularly useful
-     * when the publish is made for a delivery, and when we wish to deliver each
-     * dependency which is still in integration. The PublishingDependencyRevisionResolver
-     * can then do the delivering work for the dependency and return the new (delivered)
-     * dependency info (with the delivered revision). Note that 
-     * PublishingDependencyRevisionResolver is only called for each <b>direct</b>
dependency.
+     * Delivers a resolved ivy file based upon last resolve call status.
      * 
-     * @param status the new status, null to keep the old one
-     * @throws ParseException
+     * If resolve report file cannot be found in cache, then it throws 
+     * an IllegalStateException (maybe resolve has not been called before ?).
+     *
+     * @param mrid the module revision id of the module to deliver
+     * @param revision the revision to which the module should be delivered
+     * @param destIvyPattern the pattern to which the delivered ivy file should be written
+     * @param options the options with which deliver should be done 
      */
-    public void deliver(ModuleRevisionId mrid,
-            String revision,
-            File cache, 
-            String destIvyPattern, 
-            String status,
-            Date pubdate,
-            PublishingDependencyRevisionResolver pdrResolver, 
-            boolean validate,
-            boolean resolveDynamicRevisions) throws IOException, ParseException {
-        Message.info(":: delivering :: "+mrid+" :: "+revision+" :: "+status+" :: "+pubdate);
-        Message.verbose("\tvalidate = "+validate);
+    public void deliver(ModuleRevisionId mrid, String revision, 
+    		String destIvyPattern, DeliverOptions options) throws IOException, ParseException {
+        Message.info(":: delivering :: "+mrid+" :: "+revision+" :: "+options.getStatus()+"
:: "+options.getPubdate());
+        Message.verbose("\toptions = "+options);
         long start = System.currentTimeMillis();
         destIvyPattern = _settings.substitute(destIvyPattern);
-        CacheManager cacheManager = getCacheManager(cache);
         
         // 1) find the resolved module descriptor in cache
-        File ivyFile = cacheManager.getResolvedIvyFileInCache(mrid);
+        File ivyFile = options.getCache().getResolvedIvyFileInCache(mrid);
         if (!ivyFile.exists()) {
             throw new IllegalStateException("ivy file not found in cache for "+mrid+": please
resolve dependencies before publishing ("+ivyFile+")");
         }
@@ -99,9 +72,9 @@
         URL ivyFileURL = null;
         try {
             ivyFileURL = ivyFile.toURL();
-            md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_settings, ivyFileURL,
validate);
+            md = XmlModuleDescriptorParser.getInstance().parseDescriptor(_settings, ivyFileURL,
options.isValidate());
             md.setResolvedModuleRevisionId(ModuleRevisionId.newInstance(mrid, revision));
-            md.setResolvedPublicationDate(pubdate);
+            md.setResolvedPublicationDate(options.getPubdate());
         } catch (MalformedURLException e) {
             throw new RuntimeException("malformed url obtained for file "+ivyFile , e);
         } catch (ParseException e) {
@@ -111,7 +84,7 @@
         // 2) parse resolvedRevisions From properties file
         Map resolvedRevisions = new HashMap(); // Map (ModuleId -> String revision)
         Map dependenciesStatus = new HashMap(); // Map (ModuleId -> String status)
-        File ivyProperties = cacheManager.getResolvedIvyPropertiesInCache(mrid);
+        File ivyProperties = options.getCache().getResolvedIvyPropertiesInCache(mrid);
         if (!ivyProperties.exists()) {
             throw new IllegalStateException("ivy properties not found in cache for "+mrid+":
please resolve dependencies before publishing ("+ivyFile+")");
         }
@@ -122,7 +95,7 @@
             String depMridStr = (String)iter.next();
             String[] parts = props.getProperty(depMridStr).split(" ");
             ModuleRevisionId decodedMrid = ModuleRevisionId.decode(depMridStr);
-            if (resolveDynamicRevisions) {
+            if (options.isResolveDynamicRevisions()) {
                 resolvedRevisions.put(decodedMrid, parts[0]);
             }
             dependenciesStatus.put(decodedMrid, parts[1]);
@@ -138,7 +111,7 @@
             }
             String depStatus = (String)dependenciesStatus.get(dependencies[i].getDependencyRevisionId());
             resolvedDependencies.put(dependencies[i].getDependencyRevisionId(), 
-                    pdrResolver.resolve(md, status, 
+                    options.getPdrResolver().resolve(md, options.getStatus(), 
                             ModuleRevisionId.newInstance(dependencies[i].getDependencyRevisionId(),
rev), 
                             depStatus));
         }
@@ -151,17 +124,11 @@
         try {
             XmlModuleDescriptorUpdater.update(_settings, ivyFileURL, 
                     new File(publishedIvy),
-                    resolvedDependencies, status, revision, pubdate, null, true);
+                    resolvedDependencies, options.getStatus(), revision, options.getPubdate(),
null, true);
         } catch (SAXException ex) {
             throw new RuntimeException("bad ivy file in cache for "+mrid+": please clean
and resolve again" , ex);
         }
         
         Message.verbose("\tdeliver done ("+(System.currentTimeMillis()-start)+"ms)");
     }
-
-	private CacheManager getCacheManager(File cache) {
-		//TODO : reuse instance
-		CacheManager cacheManager = new CacheManager(_settings, cache);
-		return cacheManager;
-	}
 }

Added: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverOptions.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverOptions.java?view=auto&rev=501916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverOptions.java (added)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/deliver/DeliverOptions.java Wed
Jan 31 09:29:49 2007
@@ -0,0 +1,161 @@
+/*
+ *  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.core.deliver;
+
+import java.util.Date;
+
+import org.apache.ivy.core.cache.CacheManager;
+import org.apache.ivy.core.settings.IvySettings;
+
+/**
+ * A set of options used to do a deliver.
+ */
+public class DeliverOptions {
+	private String _status;
+	private Date _pubdate;
+	private CacheManager _cache;
+	private PublishingDependencyRevisionResolver _pdrResolver = new DefaultPublishingDRResolver();

+	private boolean _validate = true;
+	private boolean _resolveDynamicRevisions = true;
+	
+	/**
+	 * Returns an instance of DeliverOptions with options corresponding to default values
+	 * taken from the given settings.
+	 * 
+	 * @param settings The settings to use to get default option values
+	 * @return a DeliverOptions instance ready to be used or customized
+	 */
+	public static DeliverOptions newInstance(IvySettings settings) {
+		return new DeliverOptions(null, new Date(), CacheManager.getInstance(settings), 
+				new DefaultPublishingDRResolver(),
+				settings.doValidate(),
+				true);
+	}
+
+	/**
+	 * Creates an instance of DeliverOptions which require to be configured
+	 * using the appropriate setters.
+	 */
+	public DeliverOptions() {
+	}
+	
+	/**
+	 * Creates an instance of DeliverOptions with all options explicitly set.
+	 */
+	public DeliverOptions(String status, Date pubDate, CacheManager cache, PublishingDependencyRevisionResolver
pdrResolver, boolean validate, boolean resolveDynamicRevisions) {
+		_status = status;
+		_pubdate = pubDate;
+		_cache = cache;
+		_pdrResolver = pdrResolver;
+		_validate = validate;
+		_resolveDynamicRevisions = resolveDynamicRevisions;
+	}
+
+	public CacheManager getCache() {
+		return _cache;
+	}
+
+	public DeliverOptions setCache(CacheManager cache) {
+		_cache = cache;
+		return this;
+	}
+	
+	/**
+	 * Return the pdrResolver that will be used during deliver for each 
+	 * dependency to get its published information. 
+	 * This can particularly useful
+	 * when the deliver is made for a release, and when we wish to deliver each
+	 * dependency which is still in integration. The PublishingDependencyRevisionResolver
+	 * can then do the delivering work for the dependency and return the new (delivered)
+	 * dependency info (with the delivered revision). Note that 
+	 * PublishingDependencyRevisionResolver is only called for each <b>direct</b>
dependency.
+	 * @return the pdrResolver that will be used during deliver
+	 */
+	public PublishingDependencyRevisionResolver getPdrResolver() {
+		return _pdrResolver;
+	}
+
+	/**
+	 * Sets the pdrResolver that will be used during deliver for each 
+	 * dependency to get its published information. 
+	 * This can particularly useful
+	 * when the deliver is made for a release, and when we wish to deliver each
+	 * dependency which is still in integration. The PublishingDependencyRevisionResolver
+	 * can then do the delivering work for the dependency and return the new (delivered)
+	 * dependency info (with the delivered revision). Note that 
+	 * PublishingDependencyRevisionResolver is only called for each <b>direct</b>
dependency.
+	 * @return the instance of DeliverOptions on which the method has been called, 
+	 * for easy method chaining 
+	 */
+	public DeliverOptions setPdrResolver(PublishingDependencyRevisionResolver pdrResolver) {
+		_pdrResolver = pdrResolver;
+		return this;
+	}
+
+	public boolean isResolveDynamicRevisions() {
+		return _resolveDynamicRevisions;
+	}
+
+	public DeliverOptions setResolveDynamicRevisions(boolean resolveDynamicRevisions) {
+		_resolveDynamicRevisions = resolveDynamicRevisions;
+		return this;
+	}
+
+	public boolean isValidate() {
+		return _validate;
+	}
+
+	public DeliverOptions setValidate(boolean validate) {
+		_validate = validate;
+		return this;
+	}
+
+	public Date getPubdate() {
+		return _pubdate;
+	}
+
+	public DeliverOptions setPubdate(Date pubdate) {
+		_pubdate = pubdate;
+		return this;
+	}
+
+	/**
+	 * Returns the status to which the module should be delivered,
+	 * or null if the current status should be kept.
+	 * @return the status to which the module should be delivered
+	 */
+	public String getStatus() {
+		return _status;
+	}
+
+	/**
+	 * Sets the status to which the module should be delivered,
+	 * use null if the current status should be kept.
+	 * @return the instance of DeliverOptions on which the method has been called, 
+	 * for easy method chaining 
+	 */
+	public DeliverOptions setStatus(String status) {
+		_status = status;
+		return this;
+	}
+	
+	public String toString() {
+		return "status="+_status+" pubdate="+_pubdate+" validate="+_validate+" resolveDynamicRevisions="+_resolveDynamicRevisions+"
cache="+_cache;
+	}
+	
+}



Mime
View raw message