All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.okta.sdk.impl.resource.DefaultApplicationBuilder Maven / Gradle / Ivy

/*
 * Copyright 2020-Present Okta, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.okta.sdk.impl.resource;

import com.okta.commons.lang.Strings;
import com.okta.sdk.resource.application.ApplicationBuilder;
import com.okta.sdk.resource.client.ApiException;
import com.okta.sdk.resource.api.ApplicationApi;
import com.okta.sdk.resource.model.Application;
import com.okta.sdk.resource.model.ApplicationAccessibility;
import com.okta.sdk.resource.model.ApplicationSignOnMode;
import com.okta.sdk.resource.model.ApplicationVisibility;
import com.okta.sdk.resource.model.ApplicationVisibilityHide;

import java.util.Objects;

public class DefaultApplicationBuilder implements ApplicationBuilder {

    protected String name;
    protected String label;
    protected String errorRedirectUrl;
    protected String loginRedirectUrl;
    protected Boolean selfService;
    protected ApplicationSignOnMode signOnMode;
    protected Boolean iOS;
    protected Boolean web;

    @Override
    public T setName(String name) {
        this.name = name;
        return self();
    }

    @Override
    public T setLabel(String label) {
        this.label = label;
        return self();
    }

    @Override
    public T setErrorRedirectUrl(String errorRedirectUrl) {
        this.errorRedirectUrl = errorRedirectUrl;
        return self();
    }

    @Override
    public T setLoginRedirectUrl(String loginRedirectUrl) {
        this.loginRedirectUrl = loginRedirectUrl;
        return self();
    }

    @Override
    public T setSelfService(Boolean selfService) {
        this.selfService = selfService;
        return self();
    }

    @Override
    public T setSignOnMode(ApplicationSignOnMode signOnMode) {
        this.signOnMode = signOnMode;
        return self();
    }

    @Override
    public T setIOS(Boolean iOS) {
        this.iOS = iOS;
        return self();
    }

    @Override
    public T setWeb(Boolean web) {
        this.web = web;
        return self();
    }

    @SuppressWarnings("unchecked")
    protected T self() { return (T) this;}

    @Override
    public Application buildAndCreate(ApplicationApi client) throws ApiException {
        return client.createApplication(build(), false, null);
    }

    private Application build(){

        Application application = new Application();

        if (Strings.hasText(label)) application.setLabel(label);

        if (Objects.nonNull(signOnMode)) application.setSignOnMode(signOnMode);

        // Accessibility
        ApplicationAccessibility applicationAccessibility = new ApplicationAccessibility();

        if (Strings.hasText(loginRedirectUrl))
            applicationAccessibility.setLoginRedirectUrl(loginRedirectUrl);

        if (Strings.hasText(errorRedirectUrl))
            applicationAccessibility.setErrorRedirectUrl(errorRedirectUrl);

        if (Objects.nonNull(selfService))
            applicationAccessibility.setSelfService(selfService);

        application.setAccessibility(applicationAccessibility);

        // Visibility
        ApplicationVisibility applicationVisibility = new ApplicationVisibility();

        ApplicationVisibilityHide applicationVisibilityHide = new ApplicationVisibilityHide();

        if (Objects.nonNull(iOS))
            applicationVisibilityHide.setiOS(iOS);

        if (Objects.nonNull(web))
            applicationVisibilityHide.setWeb(web);

        applicationVisibility.setHide(applicationVisibilityHide);

        application.setVisibility(applicationVisibility);

        return application;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy