package fr.imag.adele.apam.maven.plugin.validation;
import fr.imag.adele.apam.declarations.ConstrainedReference;
import fr.imag.adele.apam.declarations.ImplementationDeclaration;
import fr.imag.adele.apam.declarations.InstanceDeclaration;
import fr.imag.adele.apam.declarations.repository.maven.Classpath;
public class InstanceValidator extends ComponentValidator<InstanceDeclaration> {
private final ConstrainedReferenceValidator<ConstrainedReference> triggerValidator;
public InstanceValidator(CompositeValidator parent) {
super(parent);
this.triggerValidator = new ConstrainedReferenceValidator<ConstrainedReference>(this);
}
public InstanceValidator(ValidationContext context, Classpath classpath) {
super(context, classpath);
this.triggerValidator = new ConstrainedReferenceValidator<ConstrainedReference>(this);
}
@Override
public Void validate(InstanceDeclaration component) {
Void result = super.validate(component);
validateTriggers();
return result;
}
private void validateTriggers() {
for (ConstrainedReference trigger : getComponent().getTriggers()) {
validate(trigger,triggerValidator);
}
}
@Override
protected ImplementationDeclaration getGroup() {
return (ImplementationDeclaration) super.getGroup();
}
}