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

com.hp.autonomy.frontend.configuration.CasConfig Maven / Gradle / Ivy

There is a newer version: 3.5.0
Show newest version
/*
 * Copyright 2013-2015 Hewlett-Packard Development Company, L.P.
 * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
 */

package com.hp.autonomy.frontend.configuration;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.apache.commons.lang.StringUtils;

@JsonDeserialize(builder = CasConfig.Builder.class)
@Getter
@EqualsAndHashCode
/**
 * Configuration object for CAS SSO.
 */
public class CasConfig {

    private final String casServerLoginUrl;
    private final String casServerUrlPrefix;
    private final String serverName;

    private CasConfig(final Builder builder) {
        this.casServerLoginUrl = builder.casServerLoginUrl;
        this.casServerUrlPrefix = builder.casServerUrlPrefix;
        this.serverName = builder.serverName;
    }

    public CasConfig merge(final CasConfig casConfig) {
        if(casConfig != null) {
            final Builder builder = new Builder();

            builder.setCasServerLoginUrl(this.casServerLoginUrl == null ? casConfig.casServerLoginUrl : this.casServerLoginUrl);
            builder.setCasServerUrlPrefix(this.casServerUrlPrefix == null ? casConfig.casServerUrlPrefix : this.casServerUrlPrefix);
            builder.setServerName(this.serverName == null ? casConfig.serverName : this.serverName);

            return builder.build();
        }
        else {
            return this;
        }
    }

    public void basicValidate() throws ConfigException {
        if(StringUtils.isBlank(this.getCasServerLoginUrl())
                || StringUtils.isBlank(this.getCasServerUrlPrefix())
                || StringUtils.isBlank(this.getServerName())){
            throw new ConfigException("Login", "CAS attributes have not been defined in the config file. Please specify them in the config file");
        }
    }

    @JsonPOJOBuilder(withPrefix = "set")
    public static class Builder {
        private String casServerLoginUrl;
        private String casServerUrlPrefix;
        private String serverName;

        public Builder setCasServerLoginUrl(final String casServerLoginUrl) {
            this.casServerLoginUrl = casServerLoginUrl;
            return this;
        }

        public Builder setCasServerUrlPrefix(final String casServerUrlPrefix) {
            this.casServerUrlPrefix = casServerUrlPrefix;
            return this;
        }

        public Builder setServerName(final String serverName) {
            this.serverName = serverName;
            return this;
        }

        public CasConfig build() {
            return new CasConfig(this);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy