package io.cattle.platform.schema.processor;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.util.type.Priority;
import io.github.ibuildthecloud.gdapi.factory.SchemaFactory;
import io.github.ibuildthecloud.gdapi.factory.impl.AbstractSchemaPostProcessor;
import io.github.ibuildthecloud.gdapi.factory.impl.SchemaPostProcessor;
import io.github.ibuildthecloud.gdapi.model.Field;
import io.github.ibuildthecloud.gdapi.model.impl.FieldImpl;
import io.github.ibuildthecloud.gdapi.model.impl.SchemaImpl;
import com.netflix.config.DynamicStringListProperty;
public class AuthSchemaAdditionsPostProcessor extends AbstractSchemaPostProcessor implements SchemaPostProcessor, Priority {
private static final DynamicStringListProperty AUTH_SERVICE_EXTERNAL_ID_TYPES = ArchaiusUtil.getList("auth.service.external.id.types");
@Override
public SchemaImpl postProcess(SchemaImpl schema, SchemaFactory factory) {
if(schema.getId().equals("projectMember")) {
FieldImpl field = getField(schema, "externalIdType");
if(field != null){
field.getOptions().addAll(AUTH_SERVICE_EXTERNAL_ID_TYPES.get());
}
}
return schema;
}
@Override
public int getPriority() {
return Priority.DEFAULT + 1;
}
protected FieldImpl getField(SchemaImpl schema, String name) {
Field field = schema.getResourceFields().get(name);
if (field instanceof FieldImpl) {
return (FieldImpl) field;
}
return null;
}
}