/**
* (C) Copyright IBM Corporation 2014, 2017.
*
* Licensed 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 net.wasdev.wlp.ant;
import java.util.ArrayList;
import java.util.List;
import org.apache.tools.ant.BuildException;
/**
* Install feature task.
*/
public class InstallFeatureTask extends FeatureManagerTask {
// accept license
private boolean acceptLicense = false;
// install as user or product extension (usr|extension)
private String to;
// action to take if a file to be installed already exists (fail|ignore|replace)
private String whenFileExists;
// a single directory-based repository as the source of the assets for the installUtility command
private String from;
@Override
public void execute() {
initTask();
try {
doInstall();
} catch (BuildException e) {
throw e;
} catch (Exception e) {
throw new BuildException(e);
}
}
private void doInstall() throws Exception {
List<String> command;
command = initCommand();
if (name != null && !name.isEmpty()) {
// The name field can hold a comma separated list of features
// Remove any spaces at the beginning, end or around the separator
String[] names = name.trim().split("\\s*,\\s*");
for (String featureName : names) {
if (!name.isEmpty()) {
command.add(featureName);
}
}
}
if (!features.isEmpty()) {
for (Feature feature : features) {
command.add(feature.getFeature());
}
}
if (features.isEmpty() && (name == null || name.isEmpty())) {
command.add(serverName);
}
processCommand(command);
}
/** Generate a String list containing all the parameter for the command.
* @returns A List<String> containing the command to be executed.
*/
private List<String> initCommand(){
List<String> command = new ArrayList<String>();
command.add(cmd);
command.add("install");
if (acceptLicense) {
command.add("--acceptLicense");
} else {
command.add("--viewLicenseAgreement");
}
if (to != null) {
command.add("--to=" + to);
}
if (from != null) {
command.add("--from=" + from);
}
return command;
}
/** Process the command.
* @param command A String list containing the command to be executed.
*/
private void processCommand(List<String> command) throws Exception {
processBuilder.command(command);
Process p = processBuilder.start();
checkReturnCode(p, processBuilder.command().toString(), ReturnCode.OK.getValue(), ReturnCode.ALREADY_EXISTS.getValue());
if (!acceptLicense) {
throw new BuildException("To install a feature, you must accept the feature's license terms and conditions.");
}
}
/**
* @return the acceptLicense
*/
public boolean isAcceptLicense() {
return acceptLicense;
}
/**
* @param acceptLicense the acceptLicense to set
*/
public void setAcceptLicense(boolean acceptLicense) {
this.acceptLicense = acceptLicense;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
/**
* @deprecated installUtility does not have a whenFileExist parameter.
*/
@Deprecated
public String getWhenFileExists() {
return whenFileExists;
}
/**
* @deprecated installUtility does not have a whenFileExist parameter.
*/
@Deprecated
public void setWhenFileExists(String whenFileExists) {
this.whenFileExists = whenFileExists;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
}