Sapphire Developer Guide > Services

RequiredConstraintService

RequiredConstraintService determines whether a value or an element property is required to have content.

Although custom implementations are supported, in most cases the supplied implementation that is configured via @Required annotation should be sufficient.

Example

@Required

ValueProperty PROP_CATEGORY = new ValueProperty( TYPE, "Category" );

Value<String> getCategory();
void setCategory( String value );

If necessary, an expression can be used to specify the constraint.

Example

In this example, the Category property is required only if the Version property is in the given range.

@Required( "${ VersionMatches( Version, '[1.0-2.1)' ) }" )

ValueProperty PROP_CATEGORY = new ValueProperty( TYPE, "Category" );

Value<String> getCategory();
void setCategory( String value );

If declarative approach is not sufficient, a custom RequiredConstraintService implementation can be supplied.

Example

public class CustomRequiredConstraintService extends RequiredConstraintService
{
    @Override
    protected void initRequiredConstraintService()
    {
        // Optionally register listeners to invoke refresh method when the required constraint
        // may need to be updated.
    }

    @Override
    protected Boolean compute()
    {
        ...
    }

    @Override
    public void dispose()
    {
        super.dispose();

        // Remove any listeners that were added during initialization.
    }
}
@Service( impl = CustomRequiredConstraintService.class )

ValueProperty PROP_CATEGORY = new ValueProperty( TYPE, "Category" );

Value<String> getCategory();
void setCategory( String value );