package org.qi4j.api.query.grammar;
import org.qi4j.api.association.Association;
import org.qi4j.api.composite.Composite;
/**
* Association null Specification.
*/
public class AssociationNullSpecification<T>
extends ExpressionSpecification
{
private AssociationFunction<T> association;
public AssociationNullSpecification( AssociationFunction<T> association )
{
this.association = association;
}
public AssociationFunction<T> association()
{
return association;
}
@Override
public boolean satisfiedBy( Composite item )
{
try
{
Association<T> assoc = association.map( item );
if( assoc == null )
{
return true;
}
return assoc.get() == null;
}
catch( IllegalArgumentException e )
{
return true;
}
}
@Override
public String toString()
{
return association.toString() + "is null";
}
}