Ejemplo n.º 1
0
 /**
  * Respecifies the properties to match a tighter requirement.
  *
  * <p>This adds a new requirement to the specification. It requires {@code
  * requirement.isSatisfiedBy(this) == true}.
  *
  * @param requirement additional requirement to reduce properties against
  * @return the value specification based on this with the additional requirement added, not null
  */
 public ValueSpecification compose(final ValueRequirement requirement) {
   assert requirement.isSatisfiedBy(this);
   final ValueProperties oldProperties = getProperties();
   final ValueProperties newProperties = oldProperties.compose(requirement.getConstraints());
   if (newProperties == oldProperties) {
     return this;
   } else {
     return new ValueSpecification(getValueName(), getTargetSpecification(), newProperties);
   }
 }