package org.wildfly.swarm.bootstrap.env;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.jboss.modules.maven.ArtifactCoordinates;
import org.wildfly.swarm.bootstrap.logging.BootstrapLogger;
import org.wildfly.swarm.bootstrap.modules.MavenResolvers;
/**
* [hb] TODO: rename to UberJarDependencies
*
* @author Heiko Braun
* @since 18/07/16
*/
public class MavenDependencyResolution implements DependencyResolution {
private static BootstrapLogger LOGGER = BootstrapLogger.logger("org.wildfly.swarm.bootstrap");
@Override
public Set<String> resolve(List<String> exclusions) throws IOException {
final Set<String> archivePaths = new HashSet<>();
ApplicationEnvironment env = ApplicationEnvironment.get();
env.getDependencies()
.forEach(dep -> {
String[] parts = dep.split(":");
ArtifactCoordinates coords = null;
if (parts.length == 4) {
coords = new ArtifactCoordinates(parts[0], parts[1], parts[3]);
} else if (parts.length == 5) {
coords = new ArtifactCoordinates(parts[0], parts[1], parts[3], parts[4]);
}
try {
final File artifact = MavenResolvers.get().resolveJarArtifact(coords);
if (artifact == null) {
LOGGER.error("Unable to resolve artifact: " + coords);
} else {
archivePaths.add(artifact.getAbsolutePath());
}
} catch (IOException e) {
LOGGER.error("Error resolving artifact " + coords, e);
}
});
return archivePaths;
}
}