package io.cattle.platform.iaas.api.auditing; import io.cattle.platform.core.model.AuditLog; import io.cattle.platform.core.model.ProcessInstance; import io.github.ibuildthecloud.gdapi.context.ApiContext; import io.github.ibuildthecloud.gdapi.model.Resource; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.response.ResourceOutputFilter; import org.apache.commons.lang3.StringUtils; import org.jooq.Field; import org.jooq.impl.UpdatableRecordImpl; public class ResourceIdOutputFilter implements ResourceOutputFilter { public static final String RESOURCE_ID_FIELD = "resource_id"; public static final String RESOURCE_TYPE_FIELD = "resource_type"; public static final String RESOURCE_ID = "resourceId"; @Override public Resource filter(ApiRequest request, Object original, Resource converted) { if (original instanceof UpdatableRecordImpl){ UpdatableRecordImpl<?> record = (UpdatableRecordImpl<?>) original; for (Field<?> field: record.fields()){ if (RESOURCE_ID_FIELD.equalsIgnoreCase(field.getName()) && StringUtils.isNotBlank(String.valueOf(record.getValue(RESOURCE_ID_FIELD)))){ converted.getFields().put(RESOURCE_ID , ApiContext.getContext() .getIdFormatter().formatId(String.valueOf(record.getValue(RESOURCE_TYPE_FIELD)), record.getValue(RESOURCE_ID_FIELD))); break; } } } return converted; } @Override public String[] getTypes() { return new String[0]; } @Override public Class<?>[] getTypeClasses() { return new Class<?>[] { AuditLog.class , ProcessInstance.class }; } }