Source:
<code>public boolean setAttributeWithoutCheck(PerunSession sess, Member member, Group group, Attribute attribute, boolean workWithUserAttributes) throws InternalErrorException, WrongAttributeAssignmentException, WrongAttributeValueException, WrongReferenceAttributeValueException { if(getAttributesManagerImpl().isCoreAttribute(sess, attribute)) throw new WrongAttributeAssignmentException(attribute); boolean changed = true; if(getAttributesManagerImpl().isFromNamespace(sess, attribute, AttributesManager.NS_MEMBER_GROUP_ATTR)) { if(getAttributesManagerImpl().isVirtAttribute(sess, attribute)) { throw new InternalErrorException("Virtual attribute can't be set this way yet. Please set physical attribute instead."); } else { changed = getAttributesManagerImpl().setAttribute(sess, member, group, attribute); if(changed) { getPerunBl().getAuditer().log(sess, "{} set for and {}.", attribute, member, group); getAttributesManagerImpl().changedAttributeHook(sess, member, group, attribute); } } } else if(workWithUserAttributes) { if(getAttributesManagerImpl().isFromNamespace(sess, attribute, AttributesManager.NS_USER_ATTR)) { User user = getPerunBl().getUsersManagerBl().getUserByMember(sess, member); if(getAttributesManagerImpl().isVirtAttribute(sess, attribute)) { <START> throw new InternalErrorException("Virtual attribute can't be set this way yet. Please set physical attribute instead."); <END> } else { changed = setAttributeWithoutCheck(sess, user, attribute); } } else if(getAttributesManagerImpl().isFromNamespace(sess, attribute, AttributesManager.NS_MEMBER_ATTR)) { if(getAttributesManagerImpl().isVirtAttribute(sess, attribute)) { changed = getAttributesManagerImpl().setVirtualAttribute(sess, member, attribute); } else { changed = setAttributeWithoutCheck(sess, member, attribute); } } else { throw new WrongAttributeAssignmentException(attribute); } } else { throw new WrongAttributeAssignmentException(attribute); } return changed; }</code><technical_language>can't? getAttributesManagerImpl().setVirtualAttribute(sess, user, attribute);</technical_language>

Target:
public boolean setAttributeWithoutCheck(PerunSession sess, Member member, Group group, Attribute attribute, boolean workWithUserAttributes) throws InternalErrorException, WrongAttributeAssignmentException, WrongAttributeValueException, WrongReferenceAttributeValueException { if(getAttributesManagerImpl().isCoreAttribute(sess, attribute)) throw new WrongAttributeAssignmentException(attribute); boolean changed = true; if(getAttributesManagerImpl().isFromNamespace(sess, attribute, AttributesManager.NS_MEMBER_GROUP_ATTR)) { if(getAttributesManagerImpl().isVirtAttribute(sess, attribute)) { changed = getAttributesManagerImpl().setVirtualAttribute(sess, member, group, attribute); } else { changed = getAttributesManagerImpl().setAttribute(sess, member, group, attribute); if(changed) { getPerunBl().getAuditer().log(sess, "{} set for and {}.", attribute, member, group); getAttributesManagerImpl().changedAttributeHook(sess, member, group, attribute); } } } else if(workWithUserAttributes) { if(getAttributesManagerImpl().isFromNamespace(sess, attribute, AttributesManager.NS_USER_ATTR)) { User user = getPerunBl().getUsersManagerBl().getUserByMember(sess, member); if(getAttributesManagerImpl().isVirtAttribute(sess, attribute)) { changed = getAttributesManagerImpl().setVirtualAttribute(sess, user, attribute); } else { changed = setAttributeWithoutCheck(sess, user, attribute); } } else if(getAttributesManagerImpl().isFromNamespace(sess, attribute, AttributesManager.NS_MEMBER_ATTR)) { if(getAttributesManagerImpl().isVirtAttribute(sess, attribute)) { changed = getAttributesManagerImpl().setVirtualAttribute(sess, member, attribute); } else { changed = setAttributeWithoutCheck(sess, member, attribute); } } else { throw new WrongAttributeAssignmentException(attribute); } } else { throw new WrongAttributeAssignmentException(attribute); } return changed; }