Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bootstrap refactor #267

Merged
merged 3 commits into from
Oct 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/main/java/it/smartcommunitylab/aac/SystemKeys.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ public class SystemKeys {
public static final String RESOURCE_IDENTITY_SERVICE = "identity_service";
public static final String RESOURCE_ATTRIBUTE_SERVICE = "attribute_service";
public static final String RESOURCE_ACCOUNT_SERVICE = "account_service";
public static final String RESOURCE_CREDENTIALS_SERVICE = "credentials_service";
public static final String RESOURCE_TEMPLATE_PROVIDER = "template_provider";
public static final String RESOURCE_TEMPLATE = "template";

public static final String PATH_SEPARATOR = "/-/";
Expand Down
1,374 changes: 732 additions & 642 deletions src/main/java/it/smartcommunitylab/aac/bootstrap/AACBootstrap.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -5,105 +5,40 @@

import javax.validation.Valid;

import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.validation.annotation.Validated;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

import it.smartcommunitylab.aac.core.model.ConfigurableProvider;
import it.smartcommunitylab.aac.internal.persistence.InternalUserAccount;
import it.smartcommunitylab.aac.model.ClientApp;
import it.smartcommunitylab.aac.model.Realm;
import it.smartcommunitylab.aac.services.Service;
import it.smartcommunitylab.aac.dto.RealmConfig;

//@Configuration
//@PropertySource(factory = YamlPropertySourceFactory.class, ignoreResourceNotFound = true, value = "${bootstrap.file}")
//@ConfigurationProperties(prefix = "bootstrap")
@Configuration
@PropertySource(factory = YamlPropertySourceFactory.class, ignoreResourceNotFound = true, value = "${bootstrap.file}")
@ConfigurationProperties(prefix = "bootstrap")
@Validated
@Valid
@JsonInclude(Include.ALWAYS)
@JsonIgnoreProperties(ignoreUnknown = true)
public class BootstrapConfig {

// @NestedConfigurationProperty
private List<Realm> realms;

// @NestedConfigurationProperty
private List<ConfigurableProvider> providers;

// @NestedConfigurationProperty
private List<ClientApp> clients;

private List<Service> services;

// @NestedConfigurationProperty
private UsersConfig users;
private List<RealmConfig> realms;

public BootstrapConfig() {
this.realms = new ArrayList<>();
this.clients = new ArrayList<>();
this.providers = new ArrayList<>();
this.users = new UsersConfig();

}

public List<Realm> getRealms() {
public List<RealmConfig> getRealms() {
return realms;
}

public void setRealms(List<Realm> realms) {
public void setRealms(List<RealmConfig> realms) {
this.realms = realms;
}

public List<ConfigurableProvider> getProviders() {
return providers;
}

public void setProviders(List<ConfigurableProvider> providers) {
this.providers = providers;
}

public List<ClientApp> getClients() {
return clients;
}

public void setClients(List<ClientApp> clients) {
this.clients = clients;
}

public List<Service> getServices() {
return services;
}

public void setServices(List<Service> services) {
this.services = services;
}

public UsersConfig getUsers() {
return users;
}

public void setUsers(UsersConfig users) {
this.users = users;
}

public class UsersConfig {
@NestedConfigurationProperty
private List<InternalUserAccount> internal;

public UsersConfig() {
this.internal = new ArrayList<>();
}

public List<InternalUserAccount> getInternal() {
return internal;
}

public void setInternal(List<InternalUserAccount> internal) {
this.internal = internal;
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ protected YAMLGenerator _createGenerator(Writer out, IOContext ctxt) throws IOEx
return new CustomYAMLFactory()
.configure(YAMLGenerator.Feature.WRITE_DOC_START_MARKER, false)
.configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, false)
.configure(YAMLGenerator.Feature.LITERAL_BLOCK_STYLE, true);
.configure(YAMLGenerator.Feature.LITERAL_BLOCK_STYLE, true)
.configure(YAMLGenerator.Feature.USE_NATIVE_TYPE_ID, false);
}

private YAMLGenerator yamlGenerator(IOContext ctxt, int jsonFeatures, int yamlFeatures,
Expand Down
204 changes: 4 additions & 200 deletions src/main/java/it/smartcommunitylab/aac/config/ProvidersProperties.java
Original file line number Diff line number Diff line change
@@ -1,222 +1,26 @@
package it.smartcommunitylab.aac.config;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import org.springframework.boot.context.properties.NestedConfigurationProperty;

import it.smartcommunitylab.aac.internal.provider.InternalAccountServiceConfigMap;
import it.smartcommunitylab.aac.openid.provider.OIDCIdentityProviderConfigMap;
import it.smartcommunitylab.aac.saml.provider.SamlIdentityProviderConfigMap;
import it.smartcommunitylab.aac.core.model.ConfigurableIdentityProvider;

public class ProvidersProperties {

@NestedConfigurationProperty
private List<ProviderConfiguration> identity;

@NestedConfigurationProperty
private List<ProviderConfiguration> attributes;

@NestedConfigurationProperty
private ProviderTemplates templates;
private List<ConfigurableIdentityProvider> identity;

public ProvidersProperties() {
identity = new ArrayList<>();
attributes = new ArrayList<>();
}

public List<ProviderConfiguration> getIdentity() {
public List<ConfigurableIdentityProvider> getIdentity() {
return identity;
}

public void setIdentity(List<ProviderConfiguration> identity) {
public void setIdentity(List<ConfigurableIdentityProvider> identity) {
this.identity = identity;
}

public List<ProviderConfiguration> getAttributes() {
return attributes;
}

public void setAttributes(List<ProviderConfiguration> attributes) {
this.attributes = attributes;
}

public ProviderTemplates getTemplates() {
return templates;
}

public void setTemplates(ProviderTemplates templates) {
this.templates = templates;
}

// TODO drop class in favor of configurableProvider
public static class ProviderConfiguration {
@NotBlank
private String authority;
@NotNull
private String provider;
@NotNull
private String type;

private String realm;

private String persistence;

private String events;

private String name;

private Map<String, String> title;

private Map<String, String> description;

private Map<String, String> configuration;

private Boolean enable;

public ProviderConfiguration() {
this.configuration = new HashMap<>();
}

public String getAuthority() {
return authority;
}

public void setAuthority(String authority) {
this.authority = authority;
}

public String getProvider() {
return provider;
}

public void setProvider(String provider) {
this.provider = provider;
}

public String getRealm() {
return realm;
}

public void setRealm(String realm) {
this.realm = realm;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public Map<String, String> getConfiguration() {
return configuration;
}

public void setConfiguration(Map<String, String> configuration) {
this.configuration = configuration;
}

public String getPersistence() {
return persistence;
}

public void setPersistence(String persistence) {
this.persistence = persistence;
}

public String getEvents() {
return events;
}

public void setEvents(String events) {
this.events = events;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Map<String, String> getTitle() {
return title;
}

public void setTitle(Map<String, String> title) {
this.title = title;
}

public Map<String, String> getDescription() {
return description;
}

public void setDescription(Map<String, String> description) {
this.description = description;
}

public boolean isEnabled() {
return enable != null ? enable.booleanValue() : false;
}

public Boolean getEnable() {
return enable;
}

public void setEnable(Boolean enable) {
this.enable = enable;
}

@Override
public String toString() {
return "ProviderConfiguration [authority=" + authority + ", provider=" + provider + ", realm=" + realm
+ ", type=" + type + "]";
}

}

public static class ProviderTemplates {
@NestedConfigurationProperty
private List<OIDCIdentityProviderConfigMap> oidc;

@NestedConfigurationProperty
private List<SamlIdentityProviderConfigMap> saml;

@NestedConfigurationProperty
private List<InternalAccountServiceConfigMap> internal;

public List<OIDCIdentityProviderConfigMap> getOidc() {
return oidc;
}

public void setOidc(List<OIDCIdentityProviderConfigMap> oidc) {
this.oidc = oidc;
}

public List<SamlIdentityProviderConfigMap> getSaml() {
return saml;
}

public void setSaml(List<SamlIdentityProviderConfigMap> saml) {
this.saml = saml;
}

public List<InternalAccountServiceConfigMap> getInternal() {
return internal;
}

public void setInternal(List<InternalAccountServiceConfigMap> internal) {
this.internal = internal;
}

}

}
Loading