package io.cattle.platform.object.util;
import static io.cattle.platform.object.meta.ObjectMetaDataManager.*;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.object.meta.ObjectMetaDataManager;
import io.cattle.platform.util.exception.ExecutionException;
import io.cattle.platform.util.type.CollectionUtils;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import com.netflix.config.DynamicBooleanProperty;
public class TransitioningUtils {
public static final DynamicBooleanProperty SHOW_INTERNAL_MESSAGES = ArchaiusUtil.getBoolean("api.show.transitioning.internal.message");
public static Map<String, Object> getTransitioningData(ExecutionException e) {
if (e == null) {
return Collections.emptyMap();
}
return getTransitioningData(e.getTransitioningMessage(), e.getTransitioningInternalMessage());
}
public static Map<String, Object> getTransitioningErrorData(Object obj) {
String state = io.cattle.platform.object.util.ObjectUtils.getState(obj);
String error = DataAccessor.fieldString(obj, TRANSITIONING_FIELD);
String message = DataAccessor.fieldString(obj, TRANSITIONING_MESSAGE_FIELD);
if (TRANSITIONING_ERROR.equals(error) || TRANSITIONING_ERROR.equals(state)) {
return CollectionUtils.asMap(TRANSITIONING_FIELD, error, TRANSITIONING_MESSAGE_FIELD, message);
}
return Collections.emptyMap();
}
public static String getTransitioningError(Object obj) {
return ObjectUtils.toString(getTransitioningErrorData(obj).get(TRANSITIONING_MESSAGE_FIELD), null);
}
public static String getTransitioningMessage(Object obj) {
return DataAccessor.fieldString(obj, TRANSITIONING_MESSAGE_FIELD);
}
public static Map<String, Object> getTransitioningData(String message, String internalMessage) {
Map<String, Object> data = new HashMap<String, Object>();
String finalMessage = message == null ? "" : message;
if (SHOW_INTERNAL_MESSAGES.get() && !StringUtils.isBlank(internalMessage)) {
if (StringUtils.isBlank(finalMessage)) {
finalMessage = internalMessage;
} else {
finalMessage = finalMessage + " : " + internalMessage;
}
}
if (StringUtils.isBlank(finalMessage)) {
finalMessage = null;
}
data.put(ObjectMetaDataManager.TRANSITIONING_FIELD, finalMessage == null ? null : ObjectMetaDataManager.TRANSITIONING_ERROR);
data.put(ObjectMetaDataManager.TRANSITIONING_MESSAGE_FIELD, finalMessage);
return data;
}
}