blob: 44aad93d70a13ac52162a34a549584e783005086 [file] [log] [blame]
/*
* 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
*
* https://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.settings.IvySettings;
/**
* A set of options used to do a deliver.
*/
public class DeliverOptions {
private String status;
private Date pubdate;
private PublishingDependencyRevisionResolver pdrResolver = new DefaultPublishingDRResolver();
private boolean validate = true;
private boolean resolveDynamicRevisions = true;
private boolean replaceForcedRevisions = false;
private String resolveId;
private String[] confs;
private String pubBranch;
/**
* True to indicate that the revConstraint attribute should be generated if applicable, false to
* never generate the revConstraint attribute.
*/
private boolean generateRevConstraint = true;
/** true to merge parent descriptor elements into delivered child descriptor */
private boolean merge = 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(), new DefaultPublishingDRResolver(),
settings.doValidate(), true, null);
}
/**
* 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.
* @param status String
* @param pubDate Date
* @param pdrResolver PublishingDependencyRevisionResolver
* @param validate boolean
* @param resolveDynamicRevisions boolean
* @param confs String[]
*/
public DeliverOptions(String status, Date pubDate,
PublishingDependencyRevisionResolver pdrResolver, boolean validate,
boolean resolveDynamicRevisions, String[] confs) {
this.status = status;
this.pubdate = pubDate;
this.pdrResolver = pdrResolver;
this.validate = validate;
this.resolveDynamicRevisions = resolveDynamicRevisions;
this.confs = confs;
}
/**
* 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.
*
* @param pdrResolver PublishingDependencyRevisionResolver
* @return the instance of DeliverOptions on which the method has been called, for easy method
* chaining
*/
public DeliverOptions setPdrResolver(PublishingDependencyRevisionResolver pdrResolver) {
this.pdrResolver = pdrResolver;
return this;
}
public boolean isResolveDynamicRevisions() {
return resolveDynamicRevisions;
}
public DeliverOptions setResolveDynamicRevisions(boolean resolveDynamicRevisions) {
this.resolveDynamicRevisions = resolveDynamicRevisions;
return this;
}
public boolean isReplaceForcedRevisions() {
return replaceForcedRevisions;
}
public DeliverOptions setReplaceForcedRevisions(boolean replaceForcedRevisions) {
this.replaceForcedRevisions = replaceForcedRevisions;
return this;
}
public boolean isValidate() {
return validate;
}
public DeliverOptions setValidate(boolean validate) {
this.validate = validate;
return this;
}
public Date getPubdate() {
return pubdate;
}
public DeliverOptions setPubdate(Date pubdate) {
this.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.
*
* @param status String
* @return the instance of DeliverOptions on which the method has been called, for easy method
* chaining
*/
public DeliverOptions setStatus(String status) {
this.status = status;
return this;
}
/**
* Returns the id of a previous resolve to use for delivering.
*
* @return the id of a previous resolve
*/
public String getResolveId() {
return resolveId;
}
/**
* Sets the id of a previous resolve to use for delivering.
*
* @param resolveId
* the id of a previous resolve
* @return the instance of DeliverOptions on which the method has been called, for easy method
* chaining
*/
public DeliverOptions setResolveId(String resolveId) {
this.resolveId = resolveId;
return this;
}
/**
* Return the configurations which must be delivered. Returns <tt>null</tt> if all
* configurations has to be delivered. Attention: the returned array can contain wildcards!
*
* @return the configurations to deliver
*/
public String[] getConfs() {
return confs;
}
/**
* Sets the configurations to deliver.
*
* @param confs
* the configurations to deliver
* @return the instance of DeliverOptions on which the method has been called, for easy method
* chaining
*/
public DeliverOptions setConfs(String[] confs) {
this.confs = confs;
return this;
}
/**
* Returns the branch with which the Ivy file should be delivered, or <code>null</code> if
* branch info shouldn't be changed.
*
* @return the branch with which the Ivy file should be delivered
*/
public String getPubBranch() {
return pubBranch;
}
/**
* Sets the branch with which the Ivy file should be delivered.
*
* @param pubBranch
* the branch with which the Ivy file should be delivered
* @return the instance of DeliverOptions on which the method has been called, for easy method
* chaining
*/
public DeliverOptions setPubBranch(String pubBranch) {
this.pubBranch = pubBranch;
return this;
}
public boolean isGenerateRevConstraint() {
return generateRevConstraint;
}
public DeliverOptions setGenerateRevConstraint(boolean generateRevConstraint) {
this.generateRevConstraint = generateRevConstraint;
return this;
}
public boolean isMerge() {
return merge;
}
public DeliverOptions setMerge(boolean merge) {
this.merge = merge;
return this;
}
public String toString() {
return "status=" + status + " pubdate=" + pubdate + " validate=" + validate
+ " resolveDynamicRevisions=" + resolveDynamicRevisions + " merge=" + merge
+ " resolveId=" + resolveId + " pubBranch=" + pubBranch;
}
}