package com.integralblue.availability.properties;
import java.net.URI;
import java.util.Map;
import java.util.Set;
import javax.validation.constraints.NotNull;
import org.apache.commons.collections4.map.CaseInsensitiveMap;
import org.hibernate.validator.constraints.NotBlank;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.stereotype.Component;
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;
@Component
@ConfigurationProperties(prefix="exchange")
@Getter
@Setter
@ToString
@EqualsAndHashCode
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ExchangeConnectionProperties {
@Getter
@Setter
@ToString
@EqualsAndHashCode
public static class Credentials {
String domain;
@NotBlank
String username;
@NotBlank
String password;
}
@NestedConfigurationProperty
@NotNull
Credentials credentials;
@NotNull
URI uri;
/**
* Maps a room list name to a resources that compose that room. This method is provided in case the Exchange server doesn't have room lists configured.
* Note that room list names are case insensitive.
*/
Map<String, Set<String>> roomLists = new CaseInsensitiveMap<>();
/**
* Map of alias to room list.
* Note that aliases are case insensitive.
*/
Map<String, String> roomListAlias = new CaseInsensitiveMap<>();
}