private CreateStudioComponentRequest fromResourceModel()

in aws-nimblestudio-studiocomponent/src/main/java/software/amazon/nimblestudio/studiocomponent/CreateHandler.java [104:214]


    private CreateStudioComponentRequest fromResourceModel(final ResourceModel model, final String requestClientToken) {
        // Only studioId, configuration, Name and Type are required
        final CreateStudioComponentRequest.Builder createStudioComponentRequestBuilder = CreateStudioComponentRequest.builder()
            .clientToken(requestClientToken)
            .studioId(model.getStudioId())
            .name(model.getName())
            .type(model.getType())
            .tags(model.getTags());

        final StudioComponentConfiguration.Builder studioComponentConfigurationBuilder = StudioComponentConfiguration.builder();

        boolean hasConfiguration = false;

        if (model.getConfiguration() != null && model.getConfiguration().getActiveDirectoryConfiguration() != null) {
            final ActiveDirectoryConfiguration.Builder adConfig = ActiveDirectoryConfiguration.builder();
            if (model.getConfiguration().getActiveDirectoryConfiguration().getComputerAttributes() != null) {
                final List<ActiveDirectoryComputerAttribute> modelComputerAttribute =
                    model.getConfiguration().getActiveDirectoryConfiguration().getComputerAttributes();

                adConfig.computerAttributes(
                    modelComputerAttribute.stream()
                        .map(ca -> software.amazon.awssdk.services.nimble.model.ActiveDirectoryComputerAttribute.builder()
                            .name(ca.getName())
                            .value(ca.getValue())
                            .build())
                        .collect(toList()));
            }
            studioComponentConfigurationBuilder.activeDirectoryConfiguration(
                adConfig
                    .directoryId(model.getConfiguration().getActiveDirectoryConfiguration().getDirectoryId())
                    .organizationalUnitDistinguishedName(model.getConfiguration().getActiveDirectoryConfiguration().getOrganizationalUnitDistinguishedName())
                    .build()
            );
            hasConfiguration = true;
        }

        if (model.getConfiguration() != null && model.getConfiguration().getComputeFarmConfiguration() != null) {
            studioComponentConfigurationBuilder.computeFarmConfiguration(
                ComputeFarmConfiguration.builder()
                    .activeDirectoryUser(model.getConfiguration().getComputeFarmConfiguration().getActiveDirectoryUser())
                    .endpoint(model.getConfiguration().getComputeFarmConfiguration().getEndpoint())
                    .build()
                );
            hasConfiguration = true;
        }

        if (model.getConfiguration() != null && model.getConfiguration().getLicenseServiceConfiguration() != null) {
            studioComponentConfigurationBuilder.licenseServiceConfiguration(
                LicenseServiceConfiguration.builder()
                    .endpoint(model.getConfiguration().getLicenseServiceConfiguration().getEndpoint())
                    .build()
                );
            hasConfiguration = true;
        }

        if (model.getConfiguration() != null && model.getConfiguration().getSharedFileSystemConfiguration() != null) {
            studioComponentConfigurationBuilder.sharedFileSystemConfiguration(
                SharedFileSystemConfiguration.builder()
                    .endpoint(model.getConfiguration().getSharedFileSystemConfiguration().getEndpoint())
                    .fileSystemId(model.getConfiguration().getSharedFileSystemConfiguration().getFileSystemId())
                    .linuxMountPoint(model.getConfiguration().getSharedFileSystemConfiguration().getLinuxMountPoint())
                    .shareName(model.getConfiguration().getSharedFileSystemConfiguration().getShareName())
                    .windowsMountDrive(model.getConfiguration().getSharedFileSystemConfiguration().getWindowsMountDrive())
                    .build()
                );
            hasConfiguration = true;
        }

        if (!StringUtils.isEmpty(model.getDescription())) {
            createStudioComponentRequestBuilder.description(model.getDescription());
        }

        if (model.getInitializationScripts() != null) {
            createStudioComponentRequestBuilder.initializationScripts(
                model.getInitializationScripts().stream()
                    .map(is -> StudioComponentInitializationScript.builder()
                        .launchProfileProtocolVersion(is.getLaunchProfileProtocolVersion())
                        .platform(is.getPlatform())
                        .runContext(is.getRunContext())
                        .script(is.getScript())
                        .build())
                    .collect(toList())
                );
        }


        if (model.getScriptParameters() != null) {
            createStudioComponentRequestBuilder.scriptParameters(
                model.getScriptParameters().stream()
                    .map(sp -> software.amazon.awssdk.services.nimble.model.ScriptParameterKeyValue.builder()
                        .key(sp.getKey())
                        .value(sp.getValue())
                        .build())
                .collect(toList())
            );
        }

        if (model.getEc2SecurityGroupIds() != null) {
            createStudioComponentRequestBuilder.ec2SecurityGroupIds(model.getEc2SecurityGroupIds());
        }

        if (!StringUtils.isEmpty(model.getSubtype())) {
            createStudioComponentRequestBuilder.subtype(model.getSubtype());
        }

        if (hasConfiguration) {
            createStudioComponentRequestBuilder.configuration(studioComponentConfigurationBuilder.build());
        }

        return createStudioComponentRequestBuilder.build();
    }