KEYCLOAK-1542 - code formatting cleanup

This commit is contained in:
Vlastimil Elias 2015-07-22 14:28:08 +02:00
parent 85816be967
commit 1c142cb170
4 changed files with 420 additions and 403 deletions

View file

@ -1,19 +1,5 @@
package org.keycloak.connections.jpa; package org.keycloak.connections.jpa;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.naming.InitialContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.sql.DataSource;
import org.hibernate.ejb.AvailableSettings; import org.hibernate.ejb.AvailableSettings;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.Config; import org.keycloak.Config;
@ -22,215 +8,232 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory; import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.provider.ProviderOperationalInfo; import org.keycloak.provider.ProviderOperationalInfo;
import javax.naming.InitialContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/ */
public class DefaultJpaConnectionProviderFactory implements JpaConnectionProviderFactory { public class DefaultJpaConnectionProviderFactory implements JpaConnectionProviderFactory {
private static final Logger logger = Logger.getLogger(DefaultJpaConnectionProviderFactory.class); private static final Logger logger = Logger.getLogger(DefaultJpaConnectionProviderFactory.class);
private volatile EntityManagerFactory emf; private volatile EntityManagerFactory emf;
private Config.Scope config; private Config.Scope config;
private DatabaseInfo databaseInfo; private DatabaseInfo databaseInfo;
@Override @Override
public JpaConnectionProvider create(KeycloakSession session) { public JpaConnectionProvider create(KeycloakSession session) {
lazyInit(session); lazyInit(session);
EntityManager em = emf.createEntityManager(); EntityManager em = emf.createEntityManager();
em = PersistenceExceptionConverter.create(em); em = PersistenceExceptionConverter.create(em);
session.getTransaction().enlist(new JpaKeycloakTransaction(em)); session.getTransaction().enlist(new JpaKeycloakTransaction(em));
return new DefaultJpaConnectionProvider(em); return new DefaultJpaConnectionProvider(em);
} }
@Override @Override
public void close() { public void close() {
if (emf != null) { if (emf != null) {
emf.close(); emf.close();
} }
} }
@Override @Override
public String getId() { public String getId() {
return "default"; return "default";
} }
@Override @Override
public void init(Config.Scope config) { public void init(Config.Scope config) {
this.config = config; this.config = config;
} }
@Override @Override
public void postInit(KeycloakSessionFactory factory) { public void postInit(KeycloakSessionFactory factory) {
} }
private void lazyInit(KeycloakSession session) { private void lazyInit(KeycloakSession session) {
if (emf == null) { if (emf == null) {
synchronized (this) { synchronized (this) {
if (emf == null) { if (emf == null) {
logger.debug("Initializing JPA connections"); logger.debug("Initializing JPA connections");
Connection connection = null; Connection connection = null;
String databaseSchema = config.get("databaseSchema"); String databaseSchema = config.get("databaseSchema");
Map<String, Object> properties = new HashMap<String, Object>(); Map<String, Object> properties = new HashMap<String, Object>();
String unitName = "keycloak-default"; String unitName = "keycloak-default";
String dataSource = config.get("dataSource"); String dataSource = config.get("dataSource");
if (dataSource != null) { if (dataSource != null) {
if (config.getBoolean("jta", false)) { if (config.getBoolean("jta", false)) {
properties.put(AvailableSettings.JTA_DATASOURCE, dataSource); properties.put(AvailableSettings.JTA_DATASOURCE, dataSource);
} else { } else {
properties.put(AvailableSettings.NON_JTA_DATASOURCE, dataSource); properties.put(AvailableSettings.NON_JTA_DATASOURCE, dataSource);
} }
} else { } else {
properties.put(AvailableSettings.JDBC_URL, config.get("url")); properties.put(AvailableSettings.JDBC_URL, config.get("url"));
properties.put(AvailableSettings.JDBC_DRIVER, config.get("driver")); properties.put(AvailableSettings.JDBC_DRIVER, config.get("driver"));
String user = config.get("user"); String user = config.get("user");
if (user != null) { if (user != null) {
properties.put(AvailableSettings.JDBC_USER, user); properties.put(AvailableSettings.JDBC_USER, user);
} }
String password = config.get("password"); String password = config.get("password");
if (password != null) { if (password != null) {
properties.put(AvailableSettings.JDBC_PASSWORD, password); properties.put(AvailableSettings.JDBC_PASSWORD, password);
} }
} }
String driverDialect = config.get("driverDialect"); String driverDialect = config.get("driverDialect");
if (driverDialect != null && driverDialect.length() > 0) { if (driverDialect != null && driverDialect.length() > 0) {
properties.put("hibernate.dialect", driverDialect); properties.put("hibernate.dialect", driverDialect);
} }
String schema = config.get("schema"); String schema = config.get("schema");
if (schema != null) { if (schema != null) {
properties.put("hibernate.default_schema", schema); properties.put("hibernate.default_schema", schema);
} }
if (databaseSchema != null) { if (databaseSchema != null) {
if (databaseSchema.equals("development-update")) { if (databaseSchema.equals("development-update")) {
properties.put("hibernate.hbm2ddl.auto", "update"); properties.put("hibernate.hbm2ddl.auto", "update");
databaseSchema = null; databaseSchema = null;
} else if (databaseSchema.equals("development-validate")) { } else if (databaseSchema.equals("development-validate")) {
properties.put("hibernate.hbm2ddl.auto", "validate"); properties.put("hibernate.hbm2ddl.auto", "validate");
databaseSchema = null; databaseSchema = null;
} }
} }
properties.put("hibernate.show_sql", config.getBoolean("showSql", false)); properties.put("hibernate.show_sql", config.getBoolean("showSql", false));
properties.put("hibernate.format_sql", config.getBoolean("formatSql", true)); properties.put("hibernate.format_sql", config.getBoolean("formatSql", true));
connection = getConnection(); connection = getConnection();
prepareDatabaseInfo(connection); try{
prepareDatabaseInfo(connection);
if (databaseSchema != null) { if (databaseSchema != null) {
logger.trace("Updating database"); logger.trace("Updating database");
JpaUpdaterProvider updater = session.getProvider(JpaUpdaterProvider.class); JpaUpdaterProvider updater = session.getProvider(JpaUpdaterProvider.class);
if (updater == null) { if (updater == null) {
throw new RuntimeException("Can't update database: JPA updater provider not found"); throw new RuntimeException("Can't update database: JPA updater provider not found");
} }
if (databaseSchema.equals("update")) { if (databaseSchema.equals("update")) {
String currentVersion = null; String currentVersion = null;
try { try {
ResultSet resultSet = connection.createStatement().executeQuery(updater.getCurrentVersionSql(schema)); ResultSet resultSet = connection.createStatement().executeQuery(updater.getCurrentVersionSql(schema));
if (resultSet.next()) { if (resultSet.next()) {
currentVersion = resultSet.getString(1); currentVersion = resultSet.getString(1);
} }
} catch (SQLException e) { } catch (SQLException e) {
} }
if (currentVersion == null || !JpaUpdaterProvider.LAST_VERSION.equals(currentVersion)) { if (currentVersion == null || !JpaUpdaterProvider.LAST_VERSION.equals(currentVersion)) {
updater.update(session, connection, schema); updater.update(session, connection, schema);
} else { } else {
logger.debug("Database is up to date"); logger.debug("Database is up to date");
} }
} else if (databaseSchema.equals("validate")) { } else if (databaseSchema.equals("validate")) {
updater.validate(connection, schema); updater.validate(connection, schema);
} else { } else {
throw new RuntimeException("Invalid value for databaseSchema: " + databaseSchema); throw new RuntimeException("Invalid value for databaseSchema: " + databaseSchema);
} }
logger.trace("Database update completed"); logger.trace("Database update completed");
} }
logger.trace("Creating EntityManagerFactory"); logger.trace("Creating EntityManagerFactory");
emf = Persistence.createEntityManagerFactory(unitName, properties); emf = Persistence.createEntityManagerFactory(unitName, properties);
logger.trace("EntityManagerFactory created"); logger.trace("EntityManagerFactory created");
// Close after creating EntityManagerFactory to prevent in-mem databases from closing } finally {
if (connection != null) { // Close after creating EntityManagerFactory to prevent in-mem databases from closing
try { if (connection != null) {
connection.close(); try {
} catch (SQLException e) { connection.close();
logger.warn(e); } catch (SQLException e) {
} logger.warn(e);
} }
} }
} }
} }
} }
}
}
protected void prepareDatabaseInfo(Connection connection) { protected void prepareDatabaseInfo(Connection connection) {
try { try {
databaseInfo = new DatabaseInfo(); databaseInfo = new DatabaseInfo();
DatabaseMetaData md = connection.getMetaData(); DatabaseMetaData md = connection.getMetaData();
databaseInfo.databaseDriver = md.getDriverName() + " " + md.getDriverVersion(); databaseInfo.databaseDriver = md.getDriverName() + " " + md.getDriverVersion();
databaseInfo.databaseProduct = md.getDatabaseProductName() + " " + md.getDatabaseProductVersion(); databaseInfo.databaseProduct = md.getDatabaseProductName() + " " + md.getDatabaseProductVersion();
databaseInfo.databaseUser = md.getUserName(); databaseInfo.databaseUser = md.getUserName();
databaseInfo.jdbcUrl = md.getURL(); databaseInfo.jdbcUrl = md.getURL();
} catch (SQLException e) { } catch (SQLException e) {
logger.warn("Unable to get database info due " + e.getMessage()); logger.warn("Unable to get database info due " + e.getMessage());
} }
} }
private Connection getConnection() { private Connection getConnection() {
try { try {
String dataSourceLookup = config.get("dataSource"); String dataSourceLookup = config.get("dataSource");
if (dataSourceLookup != null) { if (dataSourceLookup != null) {
DataSource dataSource = (DataSource) new InitialContext().lookup(dataSourceLookup); DataSource dataSource = (DataSource) new InitialContext().lookup(dataSourceLookup);
return dataSource.getConnection(); return dataSource.getConnection();
} else { } else {
Class.forName(config.get("driver")); Class.forName(config.get("driver"));
return DriverManager.getConnection(config.get("url"), config.get("user"), config.get("password")); return DriverManager.getConnection(config.get("url"), config.get("user"), config.get("password"));
} }
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("Failed to connect to database", e); throw new RuntimeException("Failed to connect to database", e);
} }
} }
@Override @Override
public DatabaseInfo getOperationalInfo() { public DatabaseInfo getOperationalInfo() {
return databaseInfo; return databaseInfo;
} }
public static class DatabaseInfo implements ProviderOperationalInfo { public static class DatabaseInfo implements ProviderOperationalInfo {
protected String jdbcUrl; protected String jdbcUrl;
protected String databaseUser; protected String databaseUser;
protected String databaseProduct; protected String databaseProduct;
protected String databaseDriver; protected String databaseDriver;
public String getJdbcUrl() { public String getJdbcUrl() {
return jdbcUrl; return jdbcUrl;
} }
public String getDatabaseDriver() { public String getDatabaseDriver() {
return databaseDriver; return databaseDriver;
} }
public String getDatabaseUser() { public String getDatabaseUser() {
return databaseUser; return databaseUser;
} }
public String getDatabaseProduct() { public String getDatabaseProduct() {
return databaseProduct; return databaseProduct;
} }
} }
} }

View file

@ -1,10 +1,10 @@
package org.keycloak.connections.mongo; package org.keycloak.connections.mongo;
import java.lang.reflect.Method; import com.mongodb.DB;
import java.net.UnknownHostException; import com.mongodb.MongoClient;
import java.util.Collections; import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import javax.net.ssl.SSLSocketFactory; import com.mongodb.ServerAddress;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.Config; import org.keycloak.Config;
@ -16,217 +16,234 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory; import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.provider.ProviderOperationalInfo; import org.keycloak.provider.ProviderOperationalInfo;
import com.mongodb.DB; import javax.net.ssl.SSLSocketFactory;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions; import java.lang.reflect.Method;
import com.mongodb.MongoCredential; import java.net.UnknownHostException;
import com.mongodb.ServerAddress; import java.util.Collections;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/ */
public class DefaultMongoConnectionFactoryProvider implements MongoConnectionProviderFactory { public class DefaultMongoConnectionFactoryProvider implements MongoConnectionProviderFactory {
// TODO Make configurable // TODO Make configurable
private String[] entities = new String[] { "org.keycloak.models.mongo.keycloak.entities.MongoRealmEntity", "org.keycloak.models.mongo.keycloak.entities.MongoUserEntity", "org.keycloak.models.mongo.keycloak.entities.MongoRoleEntity", private String[] entities = new String[]{
"org.keycloak.models.entities.IdentityProviderEntity", "org.keycloak.models.entities.ClientIdentityProviderMappingEntity", "org.keycloak.models.entities.RequiredCredentialEntity", "org.keycloak.models.entities.CredentialEntity", "org.keycloak.models.mongo.keycloak.entities.MongoRealmEntity",
"org.keycloak.models.entities.FederatedIdentityEntity", "org.keycloak.models.mongo.keycloak.entities.MongoClientEntity", "org.keycloak.models.sessions.mongo.entities.MongoUsernameLoginFailureEntity", "org.keycloak.models.mongo.keycloak.entities.MongoUserEntity",
"org.keycloak.models.sessions.mongo.entities.MongoUserSessionEntity", "org.keycloak.models.sessions.mongo.entities.MongoClientSessionEntity", "org.keycloak.models.entities.UserFederationProviderEntity", "org.keycloak.models.mongo.keycloak.entities.MongoRoleEntity",
"org.keycloak.models.entities.UserFederationMapperEntity", "org.keycloak.models.entities.ProtocolMapperEntity", "org.keycloak.models.entities.IdentityProviderMapperEntity", "org.keycloak.models.entities.IdentityProviderEntity",
"org.keycloak.models.mongo.keycloak.entities.MongoUserConsentEntity", "org.keycloak.models.mongo.keycloak.entities.MongoMigrationModelEntity", "org.keycloak.models.entities.AuthenticationExecutionEntity", "org.keycloak.models.entities.ClientIdentityProviderMappingEntity",
"org.keycloak.models.entities.AuthenticationFlowEntity", "org.keycloak.models.entities.AuthenticatorConfigEntity", "org.keycloak.models.entities.RequiredActionProviderEntity", }; "org.keycloak.models.entities.RequiredCredentialEntity",
"org.keycloak.models.entities.CredentialEntity",
"org.keycloak.models.entities.FederatedIdentityEntity",
"org.keycloak.models.mongo.keycloak.entities.MongoClientEntity",
"org.keycloak.models.sessions.mongo.entities.MongoUsernameLoginFailureEntity",
"org.keycloak.models.sessions.mongo.entities.MongoUserSessionEntity",
"org.keycloak.models.sessions.mongo.entities.MongoClientSessionEntity",
"org.keycloak.models.entities.UserFederationProviderEntity",
"org.keycloak.models.entities.UserFederationMapperEntity",
"org.keycloak.models.entities.ProtocolMapperEntity",
"org.keycloak.models.entities.IdentityProviderMapperEntity",
"org.keycloak.models.mongo.keycloak.entities.MongoUserConsentEntity",
"org.keycloak.models.mongo.keycloak.entities.MongoMigrationModelEntity",
"org.keycloak.models.entities.AuthenticationExecutionEntity",
"org.keycloak.models.entities.AuthenticationFlowEntity",
"org.keycloak.models.entities.AuthenticatorConfigEntity",
"org.keycloak.models.entities.RequiredActionProviderEntity",
};
private static final Logger logger = Logger.getLogger(DefaultMongoConnectionFactoryProvider.class); private static final Logger logger = Logger.getLogger(DefaultMongoConnectionFactoryProvider.class);
private volatile MongoClient client; private volatile MongoClient client;
private MongoStore mongoStore; private MongoStore mongoStore;
private DB db; private DB db;
protected Config.Scope config; protected Config.Scope config;
private MongoDbInfo mongoDbInfo; private MongoDbInfo mongoDbInfo;
@Override @Override
public MongoConnectionProvider create(KeycloakSession session) { public MongoConnectionProvider create(KeycloakSession session) {
lazyInit(session); lazyInit(session);
TransactionMongoStoreInvocationContext invocationContext = new TransactionMongoStoreInvocationContext(mongoStore); TransactionMongoStoreInvocationContext invocationContext = new TransactionMongoStoreInvocationContext(mongoStore);
session.getTransaction().enlist(new MongoKeycloakTransaction(invocationContext)); session.getTransaction().enlist(new MongoKeycloakTransaction(invocationContext));
return new DefaultMongoConnectionProvider(db, mongoStore, invocationContext); return new DefaultMongoConnectionProvider(db, mongoStore, invocationContext);
} }
@Override @Override
public void init(Config.Scope config) { public void init(Config.Scope config) {
this.config = config; this.config = config;
} }
@Override @Override
public void postInit(KeycloakSessionFactory factory) { public void postInit(KeycloakSessionFactory factory) {
} }
private void lazyInit(KeycloakSession session) {
if (client == null) {
synchronized (this) {
if (client == null) {
try {
this.client = createMongoClient();
String dbName = config.get("db", "keycloak"); private void lazyInit(KeycloakSession session) {
this.db = client.getDB(dbName); if (client == null) {
synchronized (this) {
if (client == null) {
try {
this.client = createMongoClient();
String databaseSchema = config.get("databaseSchema"); String dbName = config.get("db", "keycloak");
if (databaseSchema != null) { this.db = client.getDB(dbName);
if (databaseSchema.equals("update")) {
MongoUpdaterProvider mongoUpdater = session.getProvider(MongoUpdaterProvider.class);
if (mongoUpdater == null) { String databaseSchema = config.get("databaseSchema");
throw new RuntimeException("Can't update database: Mongo updater provider not found"); if (databaseSchema != null) {
} if (databaseSchema.equals("update")) {
MongoUpdaterProvider mongoUpdater = session.getProvider(MongoUpdaterProvider.class);
mongoUpdater.update(session, db); if (mongoUpdater == null) {
} else { throw new RuntimeException("Can't update database: Mongo updater provider not found");
throw new RuntimeException("Invalid value for databaseSchema: " + databaseSchema); }
}
}
this.mongoStore = new MongoStoreImpl(db, getManagedEntities()); mongoUpdater.update(session, db);
} catch (Exception e) { } else {
throw new RuntimeException(e); throw new RuntimeException("Invalid value for databaseSchema: " + databaseSchema);
} }
} }
}
}
}
private Class[] getManagedEntities() throws ClassNotFoundException { this.mongoStore = new MongoStoreImpl(db, getManagedEntities());
Class[] entityClasses = new Class[entities.length]; } catch (Exception e) {
for (int i = 0; i < entities.length; i++) { throw new RuntimeException(e);
entityClasses[i] = Thread.currentThread().getContextClassLoader().loadClass(entities[i]); }
} }
return entityClasses; }
} }
}
@Override private Class[] getManagedEntities() throws ClassNotFoundException {
public void close() { Class[] entityClasses = new Class[entities.length];
if (client != null) { for (int i = 0; i < entities.length; i++) {
client.close(); entityClasses[i] = Thread.currentThread().getContextClassLoader().loadClass(entities[i]);
} }
} return entityClasses;
}
@Override @Override
public String getId() { public void close() {
return "default"; if (client != null) {
} client.close();
}
}
/** @Override
* Override this method if you want more possibility to configure Mongo client. It can be also used to inject mongo public String getId() {
* client from different source. return "default";
* }
* This method can assume that "config" is already set and can use it.
*
* @return mongoClient instance, which will be shared for whole Keycloak
*
* @throws UnknownHostException
*/
protected MongoClient createMongoClient() throws UnknownHostException {
String host = config.get("host", ServerAddress.defaultHost());
int port = config.getInt("port", ServerAddress.defaultPort());
String dbName = config.get("db", "keycloak");
String user = config.get("user"); /**
String password = config.get("password"); * Override this method if you want more possibility to configure Mongo client. It can be also used to inject mongo client
* from different source.
*
* This method can assume that "config" is already set and can use it.
*
* @return mongoClient instance, which will be shared for whole Keycloak
*
* @throws UnknownHostException
*/
protected MongoClient createMongoClient() throws UnknownHostException {
String host = config.get("host", ServerAddress.defaultHost());
int port = config.getInt("port", ServerAddress.defaultPort());
String dbName = config.get("db", "keycloak");
MongoClientOptions clientOptions = getClientOptions(); String user = config.get("user");
String password = config.get("password");
MongoClient client; MongoClientOptions clientOptions = getClientOptions();
if (user != null && password != null) {
MongoCredential credential = MongoCredential.createMongoCRCredential(user, dbName, password.toCharArray());
client = new MongoClient(new ServerAddress(host, port), Collections.singletonList(credential), clientOptions);
} else {
client = new MongoClient(new ServerAddress(host, port), clientOptions);
}
mongoDbInfo = new MongoDbInfo(); MongoClient client;
mongoDbInfo.driverVersion = client.getVersion(); if (user != null && password != null) {
mongoDbInfo.address = client.getAddress().toString(); MongoCredential credential = MongoCredential.createMongoCRCredential(user, dbName, password.toCharArray());
mongoDbInfo.database = dbName; client = new MongoClient(new ServerAddress(host, port), Collections.singletonList(credential), clientOptions);
mongoDbInfo.user = user; } else {
client = new MongoClient(new ServerAddress(host, port), clientOptions);
}
logger.debugv("Initialized mongo model. host: %s, port: %d, db: %s", host, port, dbName); mongoDbInfo = new MongoDbInfo();
return client; mongoDbInfo.driverVersion = client.getVersion();
} mongoDbInfo.address = client.getAddress().toString();
mongoDbInfo.database = dbName;
mongoDbInfo.user = user;
protected MongoClientOptions getClientOptions() { logger.debugv("Initialized mongo model. host: %s, port: %d, db: %s", host, port, dbName);
MongoClientOptions.Builder builder = MongoClientOptions.builder(); return client;
checkIntOption("connectionsPerHost", builder); }
checkIntOption("threadsAllowedToBlockForConnectionMultiplier", builder);
checkIntOption("maxWaitTime", builder);
checkIntOption("connectTimeout", builder);
checkIntOption("socketTimeout", builder);
checkBooleanOption("socketKeepAlive", builder);
checkBooleanOption("autoConnectRetry", builder);
if (config.getLong("maxAutoConnectRetryTime") != null) {
builder.maxAutoConnectRetryTime(config.getLong("maxAutoConnectRetryTime"));
}
if (config.getBoolean("ssl", false)) {
builder.socketFactory(SSLSocketFactory.getDefault());
}
return builder.build(); protected MongoClientOptions getClientOptions() {
} MongoClientOptions.Builder builder = MongoClientOptions.builder();
checkIntOption("connectionsPerHost", builder);
checkIntOption("threadsAllowedToBlockForConnectionMultiplier", builder);
checkIntOption("maxWaitTime", builder);
checkIntOption("connectTimeout", builder);
checkIntOption("socketTimeout", builder);
checkBooleanOption("socketKeepAlive", builder);
checkBooleanOption("autoConnectRetry", builder);
if (config.getLong("maxAutoConnectRetryTime") != null) {
builder.maxAutoConnectRetryTime(config.getLong("maxAutoConnectRetryTime"));
}
if(config.getBoolean("ssl", false)) {
builder.socketFactory(SSLSocketFactory.getDefault());
}
protected void checkBooleanOption(String optionName, MongoClientOptions.Builder builder) { return builder.build();
Boolean val = config.getBoolean(optionName); }
if (val != null) {
try {
Method m = MongoClientOptions.Builder.class.getMethod(optionName, boolean.class);
m.invoke(builder, val);
} catch (Exception e) {
throw new IllegalStateException("Problem configuring boolean option " + optionName + " for mongo client. Ensure you used correct value true or false and if this option is supported by mongo driver", e);
}
}
}
protected void checkIntOption(String optionName, MongoClientOptions.Builder builder) { protected void checkBooleanOption(String optionName, MongoClientOptions.Builder builder) {
Integer val = config.getInt(optionName); Boolean val = config.getBoolean(optionName);
if (val != null) { if (val != null) {
try { try {
Method m = MongoClientOptions.Builder.class.getMethod(optionName, int.class); Method m = MongoClientOptions.Builder.class.getMethod(optionName, boolean.class);
m.invoke(builder, val); m.invoke(builder, val);
} catch (Exception e) { } catch (Exception e) {
throw new IllegalStateException("Problem configuring int option " + optionName + " for mongo client. Ensure you used correct value (number) and if this option is supported by mongo driver", e); throw new IllegalStateException("Problem configuring boolean option " + optionName + " for mongo client. Ensure you used correct value true or false and if this option is supported by mongo driver", e);
} }
} }
} }
@Override protected void checkIntOption(String optionName, MongoClientOptions.Builder builder) {
public ProviderOperationalInfo getOperationalInfo() { Integer val = config.getInt(optionName);
return mongoDbInfo; if (val != null) {
} try {
Method m = MongoClientOptions.Builder.class.getMethod(optionName, int.class);
m.invoke(builder, val);
} catch (Exception e) {
throw new IllegalStateException("Problem configuring int option " + optionName + " for mongo client. Ensure you used correct value (number) and if this option is supported by mongo driver", e);
}
}
}
public static class MongoDbInfo implements ProviderOperationalInfo { @Override
public ProviderOperationalInfo getOperationalInfo() {
return mongoDbInfo;
}
public String address; public static class MongoDbInfo implements ProviderOperationalInfo {
public String database;
public String driverVersion;
public String user;
public String getAddress() { public String address;
return address; public String database;
} public String driverVersion;
public String user;
public String getDatabase() { public String getAddress() {
return database; return address;
} }
public String getDriverVersion() { public String getDatabase() {
return driverVersion; return database;
} }
public String getUser() { public String getDriverVersion() {
return user; return driverVersion;
} }
}
public String getUser() {
return user;
}
}
} }

View file

@ -1,19 +1,5 @@
package org.keycloak.services.resources.admin; package org.keycloak.services.resources.admin;
import java.io.Serializable;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.Set;
import javax.ws.rs.GET;
import javax.ws.rs.core.Context;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
import org.keycloak.Version; import org.keycloak.Version;
import org.keycloak.broker.provider.IdentityProvider; import org.keycloak.broker.provider.IdentityProvider;
@ -43,6 +29,19 @@ import org.keycloak.representations.idm.ProtocolMapperRepresentation;
import org.keycloak.representations.idm.ProtocolMapperTypeRepresentation; import org.keycloak.representations.idm.ProtocolMapperTypeRepresentation;
import org.keycloak.social.SocialIdentityProvider; import org.keycloak.social.SocialIdentityProvider;
import javax.ws.rs.GET;
import javax.ws.rs.core.Context;
import java.io.Serializable;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.Set;
/** /**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a> * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/ */
@ -219,7 +218,6 @@ public class ServerInfoAdminResource {
public static class MemoryInfo implements Serializable { public static class MemoryInfo implements Serializable {
protected long total; protected long total;
protected long used; protected long used;
public MemoryInfo(){ public MemoryInfo(){

View file

@ -21,22 +21,6 @@
*/ */
package org.keycloak.testsuite.admin; package org.keycloak.testsuite.admin;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import org.junit.Assert; import org.junit.Assert;
import org.junit.ClassRule; import org.junit.ClassRule;
import org.junit.Test; import org.junit.Test;
@ -57,8 +41,23 @@ import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.managers.RealmManager; import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.admin.AdminRoot; import org.keycloak.services.resources.admin.AdminRoot;
import org.keycloak.testsuite.KeycloakServer;
import org.keycloak.testsuite.rule.AbstractKeycloakRule; import org.keycloak.testsuite.rule.AbstractKeycloakRule;
import org.keycloak.testsuite.KeycloakServer;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/** /**
* Tests Undertow Adapter * Tests Undertow Adapter