package de.is24.deadcode4j;
import com.google.common.base.Optional;
import java.io.File;
/**
* A <code>Resource</code> represents a required artifact/dependency of a <code>Module</code>.
* It can be a mere class path entry or a <code>Module</code> which is part of the analysis.
*
* @since 2.0.0
*/
public abstract class Resource {
public static Resource of(final File file) {
return new Resource() {
@Override
public Optional<File> getClassPathEntry() {
return Optional.of(file);
}
@Override
public Optional<Module> getReferencedModule() {
return Optional.absent();
}
};
}
public static Resource of(final Module module) {
return new Resource() {
@Override
public Optional<File> getClassPathEntry() {
Repository repository = module.getOutputRepository();
return repository != null ? Optional.of(repository.getDirectory()) : Optional.<File>absent();
}
@Override
public Optional<Module> getReferencedModule() {
return Optional.of(module);
}
};
}
public abstract Optional<File> getClassPathEntry();
public abstract Optional<Module> getReferencedModule();
}