private void copyFullProps(AbstractTemplate from, AbstractTemplate to, Set<String> immutables)
throws TemplateImmutabilityException {
copyMainProps(from, to, immutables, false);
if(!from.constraints.equals(Constraints.EMPTY_CONSTRAINTS)) {
Map<String, ServiceConstraint> serviceConstraint = mergeMap(to.constraints.serviceConstraints,
from.constraints.serviceConstraints);
Set<Set<String>> servicesThatMustCoexist = mergeSet(to.constraints.layoutConstraint.servicesThatMustCoexist,
from.constraints.layoutConstraint.servicesThatMustCoexist);
Set<Set<String>> servicesThatMustNotCoexist = mergeSet(to.constraints.layoutConstraint.servicesThatMustNotCoexist,
from.constraints.layoutConstraint.servicesThatMustNotCoexist);
to.constraints = new Constraints(serviceConstraint,
new LayoutConstraint(servicesThatMustCoexist, servicesThatMustNotCoexist),
from.constraints.sizeConstraint);
}
if (!from.administration.equals(Administration.EMPTY_ADMINISTRATION)) {
to.administration = from.administration;
}
}