package org.revapi.standalone;
import java.io.File;
import java.util.Set;
import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.manager.maven.addon.AddonInfoBuilder;
import org.jboss.forge.furnace.manager.spi.AddonDependencyResolver;
import org.jboss.forge.furnace.manager.spi.AddonInfo;
import org.jboss.forge.furnace.manager.spi.Response;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
/**
* @author Lukas Krejci
* @since 0.1
*/
final class LazyAddonInfo implements AddonInfo {
private final AddonDependencyResolver resolver;
private AddonInfoBuilder builder;
public LazyAddonInfo(AddonDependencyResolver resolver, AddonInfoBuilder builder) {
this.resolver = resolver;
this.builder = builder;
}
@Override
public Set<File> getResources() {
resolveResources(builder);
return builder.getResources();
}
@Override
public Set<AddonInfo> getRequiredAddons() {
return builder.getRequiredAddons();
}
@Override
public Set<AddonInfo> getOptionalAddons() {
return builder.getOptionalAddons();
}
@Override
public AddonId getAddon() {
return builder.getAddon();
}
@Override
public Set<AddonDependencyEntry> getDependencyEntries() {
return builder.getDependencyEntries();
}
@Override
public boolean equals(Object obj) {
return builder.equals(obj);
}
@Override
public int hashCode() {
return builder.hashCode();
}
@Override
public String toString() {
return builder.toString();
}
public void resolveResources(AddonInfoBuilder addonInfo) {
AddonId addon = addonInfo.getAddon();
Response<File[]> resources = resolver.resolveResources(addon);
for (File resource : resources.get()) {
addonInfo.addResource(resource);
}
}
}