
com.hazelcast.stabilizer.provisioner.HazelcastJars Maven / Gradle / Ivy
The newest version!
package com.hazelcast.stabilizer.provisioner;
import com.hazelcast.logging.ILogger;
import com.hazelcast.logging.Logger;
import com.hazelcast.stabilizer.Utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.lang.String.format;
public class HazelcastJars {
private final static ILogger log = Logger.getLogger(HazelcastJars.class);
private final Bash bash;
private final String versionSpec;
private File hazelcastJarsDir;
public HazelcastJars(Bash bash, String versionSpec) {
this.bash = bash;
this.versionSpec = versionSpec;
}
public String getAbsolutePath() {
return hazelcastJarsDir.getAbsolutePath();
}
public void prepare() {
File tmpDir = new File(System.getProperty("java.io.tmpdir"));
hazelcastJarsDir = new File(tmpDir, "hazelcastjars-" + UUID.randomUUID().toString());
hazelcastJarsDir.mkdirs();
log.info("Hazelcast version-spec: " + versionSpec);
if (versionSpec.equals("outofthebox")) {
//we don't need to do anything.
} else if (versionSpec.equals("bringmyown")) {
//we don't need to do anything
} else if (versionSpec.startsWith("maven=")) {
String version = versionSpec.substring(6);
mavenRetrieve("hazelcast", version);
mavenRetrieve("hazelcast-client", version);
} else {
log.severe("Unrecognized version spec:" + versionSpec);
System.exit(1);
}
}
private void mavenRetrieve(String artifact, String version) {
File userhome = new File(System.getProperty("user.home"));
File repositoryDir = Utils.newFile(userhome, ".m2", "repository");
File artifactFile = Utils.newFile(repositoryDir, "com", "hazelcast",
artifact, version, format("%s-%s.jar", artifact, version));
if (artifactFile.exists()) {
log.finest("Using artifact: " + artifactFile + " from local maven repository");
bash.execute(format("cp %s %s", artifactFile.getAbsolutePath(), hazelcastJarsDir.getAbsolutePath()));
} else {
log.finest("Artifact: " + artifactFile + " is not found in local maven repository, trying online one");
String url;
if (version.endsWith("-SNAPSHOT")) {
String baseUrl = "https://oss.sonatype.org/content/repositories/snapshots";
String mavenMetadataUrl = format("%s/com/hazelcast/%s/%s/maven-metadata.xml", baseUrl, artifact, version);
log.finest("Loading: " + mavenMetadataUrl);
String mavenMetadata = null;
try {
mavenMetadata = Utils.getText(mavenMetadataUrl);
} catch (FileNotFoundException e) {
log.severe("Failed to load " + artifact + "-" + version + ", because :"
+ mavenMetadataUrl + " was not found");
System.exit(1);
} catch (IOException e) {
log.severe("Could not load:" + mavenMetadataUrl);
System.exit(1);
}
log.finest(mavenMetadata);
String timestamp = getTagValue(mavenMetadata, "timestamp");
String buildnumber = getTagValue(mavenMetadata, "buildNumber");
String shortVersion = version.replace("-SNAPSHOT", "");
url = format("%s/com/hazelcast/%s/%s/%s-%s-%s-%s.jar",
baseUrl, artifact, version, artifact, shortVersion, timestamp, buildnumber);
} else {
String baseUrl = "http://repo1.maven.org/maven2";
url = format("%s/com/hazelcast/%s/%s/%s-%s.jar", baseUrl, artifact, version, artifact, version);
}
bash.execute(format("wget --no-verbose --directory-prefix=%s %s", hazelcastJarsDir.getAbsolutePath(), url));
}
}
private String getTagValue(String mavenMetadata, String tag) {
final Pattern pattern = Pattern.compile("<" + tag + ">(.+?)" + tag + ">");
final Matcher matcher = pattern.matcher(mavenMetadata);
if (!matcher.find()) {
throw new RuntimeException("Could not find " + tag + " in:" + mavenMetadata);
}
return matcher.group(1);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy