package org.jboss.tools.runtime.reddeer.requirement;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.jboss.reddeer.common.logging.Logger;
import org.jboss.reddeer.junit.requirement.CustomConfiguration;
import org.jboss.reddeer.junit.requirement.Requirement;
import org.jboss.tools.runtime.reddeer.RuntimeBase;
import org.jboss.tools.runtime.reddeer.requirement.RuntimeRequirement.Runtime;
/**
*
* @author apodhrad
*
*/
public class RuntimeRequirement implements Requirement<Runtime>, CustomConfiguration<RuntimeConfig> {
private static final Logger LOGGER = Logger.getLogger(RuntimeRequirement.class);
private RuntimeConfig config;
private Runtime runtime;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Runtime {
RuntimeReqType type();
}
@Override
public boolean canFulfill() {
return runtime.type().matches(config.getRuntimeFamily());
}
@Override
public void fulfill() {
RuntimeBase runtimeFamily = config.getRuntimeFamily();
if (!runtimeFamily.exists()) {
LOGGER.info("Creating runtime '" + runtimeFamily.getName() + "'.");
runtimeFamily.create();
} else {
LOGGER.info("Runtime '" + runtimeFamily.getName() + "' already exists.");
}
}
@Override
public void setDeclaration(Runtime server) {
this.runtime = server;
}
@Override
public Class<RuntimeConfig> getConfigurationClass() {
return RuntimeConfig.class;
}
@Override
public void setConfiguration(RuntimeConfig config) {
this.config = config;
}
public RuntimeConfig getConfig() {
return this.config;
}
@Override
public void cleanUp() {
// TODO cleanUp()
}
}