/** * Get the roles specified by a property policy and class policy. * @param elementPolicy the policy on the property ({@code null} if unspecified) * @param classPolicy the policy on the class ({@code null} if unspecified). * @return the roles specified by the policies. * @throws IllegalArgumentException if both {@code elementPolicy} and {@code classPolicy} are * {@code null}. */ public static Set<PropertyRole> getRoles( PojomaticPolicy elementPolicy, DefaultPojomaticPolicy classPolicy) { if (elementPolicy != null) { Set<PropertyRole> roles = elementPolicy.getRoles(); if (roles == null) { // this will be the case for PojomaticPolicy.DEFAULT return classPolicy != null ? classPolicy.getRoles() : PojomaticPolicy.ALL.getRoles(); } else { return roles; } } else if(classPolicy != null) { return classPolicy.getRoles(); } else { return Collections.emptySet(); } } }