package com.sequenceiq.cloudbreak.converter; import java.util.List; import java.util.Set; import org.springframework.core.convert.TypeDescriptor; import org.springframework.stereotype.Component; import com.sequenceiq.cloudbreak.api.model.SecurityGroupRequest; import com.sequenceiq.cloudbreak.api.model.SecurityRuleRequest; import com.sequenceiq.cloudbreak.common.type.ResourceStatus; import com.sequenceiq.cloudbreak.domain.SecurityGroup; import com.sequenceiq.cloudbreak.domain.SecurityRule; @Component public class JsonToSecurityGroupConverter extends AbstractConversionServiceAwareConverter<SecurityGroupRequest, SecurityGroup> { @Override public SecurityGroup convert(SecurityGroupRequest source) { SecurityGroup entity = new SecurityGroup(); entity.setName(source.getName()); entity.setDescription(source.getDescription()); entity.setStatus(ResourceStatus.USER_MANAGED); entity.setSecurityGroupId(source.getSecurityGroupId()); entity.setSecurityRules(convertSecurityRules(source.getSecurityRules(), entity)); entity.setCloudPlatform(source.getCloudPlatform()); return entity; } private Set<SecurityRule> convertSecurityRules(List<SecurityRuleRequest> securityRuleRequests, SecurityGroup securityGroup) { Set<SecurityRule> convertedSet = (Set<SecurityRule>) getConversionService().convert(securityRuleRequests, TypeDescriptor.forObject(securityRuleRequests), TypeDescriptor.collection(Set.class, TypeDescriptor.valueOf(SecurityRule.class))); for (SecurityRule securityRule : convertedSet) { securityRule.setSecurityGroup(securityGroup); } return convertedSet; } }