package org.easysoa.runtime.api;
import java.util.ArrayList;
import java.util.List;
/**
* Convenience class to build {@link DeployableDescriptor} classes.
* Handles basic dependencies storage and implements its API.
*
* Should handle most needs, with the following limitations:
* - There is only support for one deployable ID interface ;
* - Setters are made public.
*
* @author mkalam-alami
*
* @param <T> The deployable ID class
*/
public abstract class AbstractDeployableDescriptor<T> implements DeployableDescriptor<T> {
protected List<DeployableDescriptor<?>> dependencies;
protected boolean allDependenciesKnown;
protected T id;
public AbstractDeployableDescriptor(T id) {
this(id, null, false);
}
public AbstractDeployableDescriptor(T id, List<DeployableDescriptor<?>> dependencies) {
this(id, dependencies, false);
}
public AbstractDeployableDescriptor(T id, List<DeployableDescriptor<?>> dependencies, boolean allDependenciesKnown) {
this.id = id;
this.dependencies = dependencies;
this.allDependenciesKnown = allDependenciesKnown;
if (this.dependencies == null) {
this.dependencies = new ArrayList<DeployableDescriptor<?>>();
}
}
@Override
public T getId() {
return id;
}
public List<DeployableDescriptor<?>> getDependencies() {
return dependencies;
}
public void addDependency(DeployableDescriptor<?> dependency) {
this.dependencies.add(dependency);
}
public boolean areAllDependenciesKnown() {
return allDependenciesKnown;
}
public void setAllDependenciesKnown(boolean value) {
this.allDependenciesKnown = true;
}
}