/** * (C) Copyright IBM Corporation 2014. * * 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.install; import java.io.File; import java.net.URL; import java.util.Iterator; import java.util.List; import org.apache.tools.ant.BuildException; public class WasDevInstaller implements Installer { private static final String LICENSE_REGEX = "D/N:\\s*(.*?)\\s*\\<"; private String url; private String licenseCode; private String version; private String type; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getLicenseCode() { return licenseCode; } public void setLicenseCode(String licenseCode) { this.licenseCode = licenseCode; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getType() { return type; } public void setType(String type) { this.type = type; } public void install(InstallLibertyTask task) throws Exception { if (url == null) { url = "https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml"; } if (type == null) { type = (licenseCode == null) ? "webProfile7" : "webProfile6"; } File cacheDir = new File(task.getCacheDir()); InstallUtils.createDirectory(cacheDir); // download yml file URL ymlURL = new URL(url); File ymlFile = new File(cacheDir, InstallUtils.getFile(ymlURL)); task.downloadFile(ymlURL, ymlFile); // parse yml List<LibertyInfo> versions = LibertyYaml.parse(ymlFile); // select version from yml Version baseVersion; if (version == null) { // select the highest stable release // trim off any monthly releases first Iterator<LibertyInfo> iterator = versions.iterator(); while (iterator.hasNext()) { LibertyInfo info = iterator.next(); if (info.getVersion().getMajor() > 2000) { iterator.remove(); } } baseVersion = Version.parseVersion("+", true); } else { baseVersion = Version.parseVersion(version, true); } LibertyInfo selectedVersion = InstallUtils.selectVersion(baseVersion, versions); File versionCacheDir = new File(task.getCacheDir(), selectedVersion.getVersion().toString()); InstallUtils.createDirectory(versionCacheDir); String uri = getRuntimeURI(selectedVersion); if (uri.endsWith(".jar")) { // ensure licenseCode is set task.checkLicenseSet(); // download license URL licenseURL = new URL(selectedVersion.getLicenseUri()); File licenseFile = new File(versionCacheDir, InstallUtils.getFile(licenseURL)); task.downloadFile(licenseURL, licenseFile); // do license check task.checkLicense(InstallUtils.getLicenseCode(licenseFile, LICENSE_REGEX)); // download Liberty jar URL libertyURL = new URL(uri); File libertyFile = new File(versionCacheDir, InstallUtils.getFile(libertyURL)); task.downloadFile(libertyURL, libertyFile); // install Liberty jar task.installLiberty(libertyFile); } else { // download zip file URL libertyURL = new URL(uri); File libertyFile = new File(versionCacheDir, InstallUtils.getFile(libertyURL)); task.downloadFile(libertyURL, libertyFile); // unzip task.unzipLiberty(libertyFile); } } private String getRuntimeURI(LibertyInfo selected) { String propertyName = ("webProfile6".equalsIgnoreCase(type)) ? "uri" : type; String value = selected.getProperty(propertyName); if (value == null) { throw new BuildException("Archive type " + propertyName + " is not available for Liberty version " + selected.getVersion()); } return value; } }