com.memority.citadel.shared.api.im.HasAttributeValueHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of citadel-api Show documentation
Show all versions of citadel-api Show documentation
This artifact provides the API classes that are necessary to implement general configuration Rules on the Memority IM platform.
/*
* Copyright (c) 2016-2023 Memority. All Rights Reserved.
*
* This file is part of Memority Citadel API , a Memority project.
*
* This file is released under the Memority Public Artifacts End-User License Agreement,
* see
* Unauthorized copying of this file, via any medium is strictly prohibited.
*/
package com.memority.citadel.shared.api.im;
import java.util.Collections;
/**
* Helper methods to keep {@link HasAttributeValues} & co clean.
*/
class HasAttributeValueHelper {
@SuppressWarnings("unchecked")
static V doGet(HasAttributeValues obj, String propertyName) {
AttributeValue> attributeValue = obj.attributeValueMap().get(propertyName);
// Missing/empty attribute
if (attributeValue == null) {
return null;
}
if (!attributeValue.hasValue()) {
return attributeValue.isMultiValued() ? (V) Collections.emptyList() : null;
}
return attributeValue.isMultiValued() ?
(V) obj.values(propertyName) :
(V) obj.value(propertyName);
}
static Object doPut(HasMutableAttributeValues obj, String key, Object value) {
Object prev = doGet(obj, key);
obj.attributeValueMap().put(key, AttributeValue.from(key, value));
return prev;
}
}