private UpdateStudioComponentRequest fromResourceModel()

in aws-nimblestudio-studiocomponent/src/main/java/software/amazon/nimblestudio/studiocomponent/UpdateHandler.java [122:228]


    private UpdateStudioComponentRequest fromResourceModel(final ResourceModel model, final String requestClientToken) {
        // Only StudioId and StudioComponentId are required
        final UpdateStudioComponentRequest.Builder updateStudioComponentRequestBuilder = UpdateStudioComponentRequest.builder()
            .clientToken(requestClientToken)
            .studioComponentId(model.getStudioComponentId())
            .studioId(model.getStudioId());

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

        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()
            );
        }

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

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

        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()
                );
        }

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

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

        if (!StringUtils.isEmpty(model.getName())) {
            updateStudioComponentRequestBuilder.name(model.getName());
        }

        if (model.getScriptParameters() != null) {
            updateStudioComponentRequestBuilder.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) {
            updateStudioComponentRequestBuilder.ec2SecurityGroupIds(model.getEc2SecurityGroupIds());
        }

        if (!StringUtils.isEmpty(model.getType())) {
            updateStudioComponentRequestBuilder.type(model.getType());
        }

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

        updateStudioComponentRequestBuilder.configuration(studioComponentConfigurationBuilder.build());

        return updateStudioComponentRequestBuilder.build();
    }