diff --git a/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.2.0.Beta1.xml b/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.2.0.Beta1.xml
index 0de32d86506..8783ca18c57 100755
--- a/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.2.0.Beta1.xml
+++ b/connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-1.2.0.Beta1.xml
@@ -72,9 +72,19 @@
+
+
+
+
+
+
+
+
+
+
@@ -86,6 +96,7 @@
+
diff --git a/model/api/src/main/java/org/keycloak/models/RealmModel.java b/model/api/src/main/java/org/keycloak/models/RealmModel.java
index badc6bdbb90..af1610577aa 100755
--- a/model/api/src/main/java/org/keycloak/models/RealmModel.java
+++ b/model/api/src/main/java/org/keycloak/models/RealmModel.java
@@ -236,5 +236,11 @@ public interface RealmModel extends RoleContainerModel {
void updateProtocolMapper(ProtocolMapperModel mapping);
public ProtocolMapperModel getProtocolMapperById(String id);
-
+ //i18n
+ boolean isLocalizationEnabled();
+ void setLocalizationEnabled(boolean enabled);
+ Set getSupportedLocales();
+ void setSupportedLocales(Set locales);
+ String getDefaultLocale();
+ void setDefaultLocale(String locale);
}
diff --git a/model/api/src/main/java/org/keycloak/models/entities/RealmEntity.java b/model/api/src/main/java/org/keycloak/models/entities/RealmEntity.java
index 7db0bac78ff..7efd942dc67 100755
--- a/model/api/src/main/java/org/keycloak/models/entities/RealmEntity.java
+++ b/model/api/src/main/java/org/keycloak/models/entities/RealmEntity.java
@@ -65,6 +65,10 @@ public class RealmEntity extends AbstractIdentifiableEntity {
private String adminAppId;
+ private boolean localizationEnabled;
+ private List supportedLocales = new ArrayList();
+ private String defaultLocale;
+
public String getName() {
return name;
}
@@ -408,6 +412,30 @@ public class RealmEntity extends AbstractIdentifiableEntity {
public void setClaimMappings(List claimMappings) {
this.claimMappings = claimMappings;
}
+
+ public boolean isLocalizationEnabled() {
+ return localizationEnabled;
+ }
+
+ public void setLocalizationEnabled(boolean localizationEnabled) {
+ this.localizationEnabled = localizationEnabled;
+ }
+
+ public List getSupportedLocales() {
+ return supportedLocales;
+ }
+
+ public void setSupportedLocales(List supportedLocales) {
+ this.supportedLocales = supportedLocales;
+ }
+
+ public String getDefaultLocale() {
+ return defaultLocale;
+ }
+
+ public void setDefaultLocale(String defaultLocale) {
+ this.defaultLocale = defaultLocale;
+ }
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java
index 21d32cc0372..006e4ff29dc 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java
@@ -932,4 +932,39 @@ public class RealmAdapter implements RealmModel {
public int hashCode() {
return getId().hashCode();
}
+
+ @Override
+ public boolean isLocalizationEnabled() {
+ if (updated != null) return updated.isLocalizationEnabled();
+ return cached.isLocalizationEnabled();
+ }
+
+ @Override
+ public void setLocalizationEnabled(boolean enabled) {
+ getDelegateForUpdate();
+ updated.setLocalizationEnabled(enabled);
+ }
+
+ @Override
+ public Set getSupportedLocales() {
+ if (updated != null) return updated.getSupportedLocales();
+ return cached.getSupportedLocales();
+ }
+
+ @Override
+ public void setSupportedLocales(Set locales) {
+ getDelegateForUpdate();
+ updated.setSupportedLocales(locales);
+ }
+
+ @Override
+ public String getDefaultLocale() {
+ if (updated != null) return updated.getDefaultLocale();
+ return cached.getDefaultLocale();
+ }
+
+ @Override
+ public void setDefaultLocale(String locale) {
+ updated.setDefaultLocale(locale);
+ }
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
index 81ddc57cd94..5409c167b94 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
@@ -83,6 +83,9 @@ public class CachedRealm {
private Map realmRoles = new HashMap();
private Map applications = new HashMap();
private Map clients = new HashMap();
+ private boolean localizationEnabled;
+ private Set supportedLocales = new HashSet();
+ private String defaultLocale;
public CachedRealm() {
}
@@ -166,6 +169,10 @@ public class CachedRealm {
cache.addCachedOAuthClient(cachedApp);
}
+ localizationEnabled = model.isLocalizationEnabled();
+ supportedLocales.addAll(model.getSupportedLocales());
+ defaultLocale = model.getDefaultLocale();
+
}
@@ -356,4 +363,16 @@ public class CachedRealm {
public Set getClaimMappings() {
return claimMappings;
}
+
+ public boolean isLocalizationEnabled() {
+ return localizationEnabled;
+ }
+
+ public Set getSupportedLocales() {
+ return supportedLocales;
+ }
+
+ public String getDefaultLocale() {
+ return defaultLocale;
+ }
}
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
index f294bbde4b7..27689a6642b 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RealmAdapter.java
@@ -1342,4 +1342,37 @@ public class RealmAdapter implements RealmModel {
mapping.setSourceAttribute(entity.getSourceAttribute());
return mapping;
}
+
+ @Override
+ public boolean isLocalizationEnabled() {
+ return realm.isLocalizationEnabled();
+ }
+
+ @Override
+ public void setLocalizationEnabled(boolean enabled) {
+ realm.setLocalizationEnabled(enabled);
+ em.flush();
+ }
+
+ @Override
+ public Set getSupportedLocales() {
+ return realm.getSupportedLocales();
+ }
+
+ @Override
+ public void setSupportedLocales(Set locales) {
+ realm.setSupportedLocales(locales);
+ em.flush();
+ }
+
+ @Override
+ public String getDefaultLocale() {
+ return realm.getDefaultLocale();
+ }
+
+ @Override
+ public void setDefaultLocale(String locale) {
+ realm.setDefaultLocale(locale);
+ em.flush();
+ }
}
\ No newline at end of file
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RealmEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RealmEntity.java
index e9cdda1e782..83128140533 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RealmEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RealmEntity.java
@@ -139,6 +139,18 @@ public class RealmEntity {
@OneToMany(cascade ={CascadeType.REMOVE}, orphanRemoval = true, mappedBy = "realm")
protected List identityProviders = new ArrayList();
+ @Column(name="LOCALIZATION_ENABLED")
+ protected boolean localizationEnabled;
+
+ @ElementCollection
+ @Column(name="VALUE")
+ @CollectionTable(name="REALM_SUPPORTED_LOCALES", joinColumns={ @JoinColumn(name="REALM_ID") })
+ protected Set supportedLocales = new HashSet();
+
+ @Column(name="DEFAULT_LOCALE")
+ protected String defaultLocale;
+
+
public String getId() {
return id;
}
@@ -454,5 +466,29 @@ public class RealmEntity {
public void setProtocolClaimMappings(Collection protocolClaimMappings) {
this.protocolClaimMappings = protocolClaimMappings;
}
+
+ public boolean isLocalizationEnabled() {
+ return localizationEnabled;
+ }
+
+ public void setLocalizationEnabled(boolean localizationEnabled) {
+ this.localizationEnabled = localizationEnabled;
+ }
+
+ public Set getSupportedLocales() {
+ return supportedLocales;
+ }
+
+ public void setSupportedLocales(Set supportedLocales) {
+ this.supportedLocales = supportedLocales;
+ }
+
+ public String getDefaultLocale() {
+ return defaultLocale;
+ }
+
+ public void setDefaultLocale(String defaultLocale) {
+ this.defaultLocale = defaultLocale;
+ }
}
diff --git a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
index 0dfac8be716..e17beb1e970 100755
--- a/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
+++ b/model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/RealmAdapter.java
@@ -1192,5 +1192,40 @@ public class RealmAdapter extends AbstractMongoAdapter impleme
return getId().hashCode();
}
+ @Override
+ public boolean isLocalizationEnabled() {
+ return realm.isLocalizationEnabled();
+ }
+ @Override
+ public void setLocalizationEnabled(boolean enabled) {
+ realm.setLocalizationEnabled(enabled);
+ updateRealm();
+ }
+
+ @Override
+ public Set getSupportedLocales() {
+ return new HashSet(realm.getSupportedLocales());
+ }
+
+ @Override
+ public void setSupportedLocales(Set locales) {
+ if (locales != null) {
+ realm.setEventsListeners(new ArrayList(locales));
+ } else {
+ realm.setEventsListeners(Collections.EMPTY_LIST);
+ }
+ updateRealm();
+ }
+
+ @Override
+ public String getDefaultLocale() {
+ return realm.getDefaultLocale();
+ }
+
+ @Override
+ public void setDefaultLocale(String locale) {
+ realm.setDefaultLocale(locale);
+ updateRealm();
+ }
}