@Override public Capacity buildConstraint(VJobElementBuilder eBuilder, List<PBVJob.vjob.Param> args) throws ConstraintBuilderException { PBPlacementConstraintBuilders.ensureArity(this, args, 2); ManagedElementSet<Node> ns = PBPlacementConstraintBuilders.makeNodes(eBuilder, args.get(0)); if (ns.isEmpty()) { throw new ConstraintBuilderException(args.get(0) + " is an empty set"); } int v = PBPlacementConstraintBuilders.makeInt(args.get(1)); if (v < 0) { throw new ConstraintBuilderException("capacity can not be negative (" + v + ")"); } return new Capacity(ns, v); }
@Override public Root buildConstraint(List<VJobElement> args) throws ConstraintBuilderException { if (args.size() != 1) { throw new ConstraintBuilderException(this); } try { ManagedElementSet<VirtualMachine> vms = (ManagedElementSet<VirtualMachine>) args.get(0); if (vms.isEmpty()) { throw new ConstraintBuilderException("Empty set not allowed"); } return new Root(vms); } catch (ClassCastException e) { throw new ConstraintBuilderException(getSignature(), e); } }