keycloak
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1 クラス
org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1 の継承関係図
Inheritance graph
org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1 連携図
Collaboration graph

公開メンバ関数

ValidationErrors validate (Database database)
 
void setFileOpener (ResourceAccessor resourceAccessor)
 
String getConfirmationMessage ()
 
void setUp () throws SetupException
 
SqlStatement [] generateStatements (Database database) throws CustomChangeException
 

限定公開メンバ関数

String getTaskId ()
 
void generateStatementsImpl () throws CustomChangeException
 
void convertSocialToIdFedRealms () throws SQLException, DatabaseException
 
void convertSocialToIdFedUsers () throws SQLException, DatabaseException
 
void addAccessCodeLoginTimeout ()
 
void addNewMasterAdminRoles () throws SQLException, DatabaseException
 
void addNewRealmAdminRoles () throws SQLException, DatabaseException
 
void addDefaultProtocolMappers () throws SQLException, DatabaseException
 
boolean isApplicable () throws CustomChangeException
 
String getTableName (String tableName)
 

限定公開変数類

KeycloakSession kcSession
 
Database database
 
JdbcConnection jdbcConnection
 
Connection connection
 
StringBuilder confirmationMessage = new StringBuilder()
 
List< SqlStatement > statements = new ArrayList<SqlStatement>()
 

非公開メンバ関数

void addNewAdminRoles () throws SQLException, DatabaseException
 
String getAdminRoleId () throws SQLException, DatabaseException
 
void addAdminRole (String roleName, String realmId, String applicationId, String realmAdminAppRoleId)
 

非公開変数類

String realmTableName
 

詳解

著者
Marek Posolda

関数詳解

◆ addAccessCodeLoginTimeout()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addAccessCodeLoginTimeout ( )
inlineprotected
173  {
174  UpdateStatement statement = new UpdateStatement(null, null, realmTableName)
175  .addNewColumnValue("LOGIN_LIFESPAN", 1800)
176  .setWhereClause("LOGIN_LIFESPAN IS NULL");
177  statements.add(statement);
178 
179  confirmationMessage.append("Updated LOGIN_LIFESPAN of all realms to 1800 seconds. ");
180  }
List< SqlStatement > statements
Definition: CustomKeycloakTask.java:55
String realmTableName
Definition: JpaUpdate1_2_0_Beta1.java:43
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ addAdminRole()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addAdminRole ( String  roleName,
String  realmId,
String  applicationId,
String  realmAdminAppRoleId 
)
inlineprivate
279  {
280  String roleTableName = database.correctObjectName("KEYCLOAK_ROLE", Table.class);
281  String compositeRoleTableName = database.correctObjectName("COMPOSITE_ROLE", Table.class);
282  String newRoleId = KeycloakModelUtils.generateId();
283 
284  InsertStatement insertRole = new InsertStatement(null, null, roleTableName)
285  .addColumnValue("ID", newRoleId)
286  .addColumnValue("APP_REALM_CONSTRAINT", applicationId)
287  .addColumnValue("APPLICATION_ROLE", true)
288  .addColumnValue("NAME", roleName)
289  .addColumnValue("REALM_ID", realmId)
290  .addColumnValue("APPLICATION", applicationId);
291 
292  // Add newly created role to the composite roles of 'realm-admin' role
293  InsertStatement insertCompRole = new InsertStatement(null, null, compositeRoleTableName)
294  .addColumnValue("COMPOSITE", realmAdminAppRoleId)
295  .addColumnValue("CHILD_ROLE", newRoleId);
296 
297  statements.add(insertRole);
298  statements.add(insertCompRole);
299  }
List< SqlStatement > statements
Definition: CustomKeycloakTask.java:55
Database database
Definition: CustomKeycloakTask.java:51

◆ addDefaultProtocolMappers()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addDefaultProtocolMappers ( ) throws SQLException, DatabaseException
inlineprotected
301  {
302  String protocolMapperTableName = database.correctObjectName("PROTOCOL_MAPPER", Table.class);
303  String protocolMapperCfgTableName = database.correctObjectName("PROTOCOL_MAPPER_CONFIG", Table.class);
304 
305  PreparedStatement statement = jdbcConnection.prepareStatement("select ID, NAME, ALLOWED_CLAIMS_MASK from " + getTableName("CLIENT"));
306 
307  try {
308  ResultSet resultSet = statement.executeQuery();
309  try {
310  boolean first = true;
311  while (resultSet.next()) {
312  if (first) {
313  confirmationMessage.append("Migrating claimsMask to protocol mappers for clients: ");
314  first = false;
315  }
316 
317  Object acmObj = resultSet.getObject("ALLOWED_CLAIMS_MASK");
318  long mask = (acmObj != null) ? ((Number) acmObj).longValue() : ClaimMask.ALL;
319 
320  MigrationProvider migrationProvider = this.kcSession.getProvider(MigrationProvider.class);
321  List<ProtocolMapperRepresentation> protocolMappers = migrationProvider.getMappersForClaimMask(mask);
322 
323  for (ProtocolMapperRepresentation protocolMapper : protocolMappers) {
324  String mapperId = KeycloakModelUtils.generateId();
325 
326  InsertStatement insert = new InsertStatement(null, null, protocolMapperTableName)
327  .addColumnValue("ID", mapperId)
328  .addColumnValue("PROTOCOL", protocolMapper.getProtocol())
329  .addColumnValue("NAME", protocolMapper.getName())
330  .addColumnValue("CONSENT_REQUIRED", false)
331  .addColumnValue("PROTOCOL_MAPPER_NAME", protocolMapper.getProtocolMapper())
332  .addColumnValue("CLIENT_ID", resultSet.getString("ID"));
333  statements.add(insert);
334 
335  for (Map.Entry<String, String> cfgEntry : protocolMapper.getConfig().entrySet()) {
336  InsertStatement cfgInsert = new InsertStatement(null, null, protocolMapperCfgTableName)
337  .addColumnValue("PROTOCOL_MAPPER_ID", mapperId)
338  .addColumnValue("NAME", cfgEntry.getKey())
339  .addColumnValue("VALUE", cfgEntry.getValue());
340  statements.add(cfgInsert);
341  }
342 
343  }
344 
345  confirmationMessage.append(resultSet.getString("NAME") + ", ");
346  }
347 
348  // It means that some provider where processed
349  if (!first) {
350  confirmationMessage.append(". ");
351  }
352  } finally {
353  resultSet.close();
354  }
355  } finally {
356  statement.close();
357  }
358  }
KeycloakSession kcSession
Definition: CustomKeycloakTask.java:49
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132
List< SqlStatement > statements
Definition: CustomKeycloakTask.java:55
< T extends Provider > T getProvider(Class< T > clazz)
Database database
Definition: CustomKeycloakTask.java:51
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ addNewAdminRoles()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addNewAdminRoles ( ) throws SQLException, DatabaseException
inlineprivate
182  {
185 
186  confirmationMessage.append("Adding new admin roles. ");
187  }
void addNewRealmAdminRoles()
Definition: JpaUpdate1_2_0_Beta1.java:254
void addNewMasterAdminRoles()
Definition: JpaUpdate1_2_0_Beta1.java:189
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ addNewMasterAdminRoles()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addNewMasterAdminRoles ( ) throws SQLException, DatabaseException
inlineprotected
189  {
190  // Retrieve ID of admin role of master realm
191  String adminRoleId = getAdminRoleId();
192  String masterRealmId = Config.getAdminRealm();
193 
194  PreparedStatement statement = jdbcConnection.prepareStatement("select NAME from " + getTableName("REALM"));
195  try {
196  ResultSet resultSet = statement.executeQuery();
197  try {
198  while (resultSet.next()) {
199  String realmName = resultSet.getString("NAME");
200  String masterAdminAppName = realmName + "-realm";
201 
202  PreparedStatement statement2 = jdbcConnection.prepareStatement("select ID from " + getTableName("CLIENT") + " where REALM_ID = ? AND NAME = ?");
203  statement2.setString(1, masterRealmId);
204  statement2.setString(2, masterAdminAppName);
205 
206  try {
207  ResultSet resultSet2 = statement2.executeQuery();
208  try {
209  if (resultSet2.next()) {
210  String masterAdminAppId = resultSet2.getString("ID");
211 
212  addAdminRole(AdminRoles.VIEW_IDENTITY_PROVIDERS, masterRealmId, masterAdminAppId, adminRoleId);
213  addAdminRole(AdminRoles.MANAGE_IDENTITY_PROVIDERS, masterRealmId, masterAdminAppId, adminRoleId);
214  } else {
215  throw new IllegalStateException("Couldn't find ID of '" + masterAdminAppName + "' application in 'master' realm. ");
216  }
217  } finally {
218  resultSet2.close();
219  }
220  } finally {
221  statement2.close();
222  }
223  }
224  } finally {
225  resultSet.close();
226  }
227  } finally {
228  statement.close();
229  }
230  }
String getAdminRoleId()
Definition: JpaUpdate1_2_0_Beta1.java:232
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132
void addAdminRole(String roleName, String realmId, String applicationId, String realmAdminAppRoleId)
Definition: JpaUpdate1_2_0_Beta1.java:279

◆ addNewRealmAdminRoles()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addNewRealmAdminRoles ( ) throws SQLException, DatabaseException
inlineprotected
254  {
255  PreparedStatement statement = jdbcConnection.prepareStatement("select CLIENT.ID REALM_ADMIN_APP_ID, CLIENT.REALM_ID REALM_ID, KEYCLOAK_ROLE.ID ADMIN_ROLE_ID from " +
256  getTableName("CLIENT") + " CLIENT," + getTableName("KEYCLOAK_ROLE") + " KEYCLOAK_ROLE where KEYCLOAK_ROLE.APPLICATION = CLIENT.ID AND CLIENT.NAME = 'realm-management' AND KEYCLOAK_ROLE.NAME = ?");
257  statement.setString(1, AdminRoles.REALM_ADMIN);
258 
259  try {
260  ResultSet resultSet = statement.executeQuery();
261  try {
262 
263  while (resultSet.next()) {
264  String realmAdminAppId = resultSet.getString("REALM_ADMIN_APP_ID");
265  String realmId = resultSet.getString("REALM_ID");
266  String adminRoleId = resultSet.getString("ADMIN_ROLE_ID");
267 
268  addAdminRole(AdminRoles.VIEW_IDENTITY_PROVIDERS, realmId, realmAdminAppId, adminRoleId);
269  addAdminRole(AdminRoles.MANAGE_IDENTITY_PROVIDERS, realmId, realmAdminAppId, adminRoleId);
270  }
271  } finally {
272  resultSet.close();
273  }
274  } finally {
275  statement.close();
276  }
277  }
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132
void addAdminRole(String roleName, String realmId, String applicationId, String realmAdminAppRoleId)
Definition: JpaUpdate1_2_0_Beta1.java:279

◆ convertSocialToIdFedRealms()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.convertSocialToIdFedRealms ( ) throws SQLException, DatabaseException
inlineprotected
66  {
67  String identityProviderTableName = database.correctObjectName("IDENTITY_PROVIDER", Table.class);
68  String idpConfigTableName = database.correctObjectName("IDENTITY_PROVIDER_CONFIG", Table.class);
69 
70  String realmSocialConfigTable = getTableName("REALM_SOCIAL_CONFIG");
71  String realmTableName = getTableName("REALM");
72  PreparedStatement statement = jdbcConnection.prepareStatement("select RSC.NAME, VALUE, REALM_ID, UPDATE_PROFILE_ON_SOC_LOGIN from " + realmSocialConfigTable + " RSC," + realmTableName +
73  " REALM where RSC.REALM_ID = REALM.ID ORDER BY RSC.REALM_ID, RSC.NAME");
74  try {
75  ResultSet resultSet = statement.executeQuery();
76  try {
77  boolean providerInProgress = false;
78  String socialProviderId = null;
79  String clientId = null;
80  String clientSecret;
81  String realmId = null;
82  boolean updateProfileOnSocialLogin = false;
83  boolean first = true;
84 
85  while (resultSet.next()) {
86  if (first) {
87  confirmationMessage.append("Migrating social to identity providers: ");
88  first = false;
89  }
90 
91  if (!providerInProgress) {
92  String key = resultSet.getString("NAME");
93  int keyIndex = key.indexOf(".key");
94  if (keyIndex == -1) {
95  throw new IllegalStateException("Can't parse the provider from column: " + key);
96  }
97 
98  socialProviderId = key.substring(0, keyIndex);
99  clientId = resultSet.getString("VALUE");
100  realmId = resultSet.getString("REALM_ID");
101  updateProfileOnSocialLogin = resultSet.getBoolean("UPDATE_PROFILE_ON_SOC_LOGIN");
102  providerInProgress = true;
103  } else {
104  clientSecret = resultSet.getString("VALUE");
105 
106  String internalId = KeycloakModelUtils.generateId();
107  InsertStatement idpInsert = new InsertStatement(null, null, identityProviderTableName)
108  .addColumnValue("INTERNAL_ID", internalId)
109  .addColumnValue("ENABLED", true)
110  .addColumnValue("PROVIDER_ALIAS", socialProviderId)
111  .addColumnValue("PROVIDER_ID", socialProviderId)
112  .addColumnValue("UPDATE_PROFILE_FIRST_LOGIN", updateProfileOnSocialLogin)
113  .addColumnValue("STORE_TOKEN", false)
114  .addColumnValue("AUTHENTICATE_BY_DEFAULT", false)
115  .addColumnValue("REALM_ID", realmId);
116  InsertStatement clientIdInsert = new InsertStatement(null, null, idpConfigTableName)
117  .addColumnValue("IDENTITY_PROVIDER_ID", internalId)
118  .addColumnValue("NAME", "clientId")
119  .addColumnValue("VALUE", clientId);
120  InsertStatement clientSecretInsert = new InsertStatement(null, null, idpConfigTableName)
121  .addColumnValue("IDENTITY_PROVIDER_ID", internalId)
122  .addColumnValue("NAME", "clientSecret")
123  .addColumnValue("VALUE", clientSecret);
124 
125  statements.add(idpInsert);
126  statements.add(clientIdInsert);
127  statements.add(clientSecretInsert);
128  confirmationMessage.append(socialProviderId + " in realm " + realmId + ", ");
129 
130  providerInProgress = false;
131  }
132  }
133 
134  // It means that some provider where processed
135  if (!first) {
136  confirmationMessage.append(". ");
137  }
138  } finally {
139  resultSet.close();
140  }
141  } finally {
142  statement.close();
143  }
144  }
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132
List< SqlStatement > statements
Definition: CustomKeycloakTask.java:55
String realmTableName
Definition: JpaUpdate1_2_0_Beta1.java:43
Database database
Definition: CustomKeycloakTask.java:51
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ convertSocialToIdFedUsers()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.convertSocialToIdFedUsers ( ) throws SQLException, DatabaseException
inlineprotected
146  {
147  String federatedIdentityTableName = database.correctObjectName("FEDERATED_IDENTITY", Table.class);
148  PreparedStatement statement = jdbcConnection.prepareStatement("select REALM_ID, USER_ID, SOCIAL_PROVIDER, SOCIAL_USER_ID, SOCIAL_USERNAME from " + getTableName("USER_SOCIAL_LINK"));
149  try {
150  ResultSet resultSet = statement.executeQuery();
151  try {
152  int count = 0;
153  while (resultSet.next()) {
154  InsertStatement insert = new InsertStatement(null, null, federatedIdentityTableName)
155  .addColumnValue("REALM_ID", resultSet.getString("REALM_ID"))
156  .addColumnValue("USER_ID", resultSet.getString("USER_ID"))
157  .addColumnValue("IDENTITY_PROVIDER", resultSet.getString("SOCIAL_PROVIDER"))
158  .addColumnValue("FEDERATED_USER_ID", resultSet.getString("SOCIAL_USER_ID"))
159  .addColumnValue("FEDERATED_USERNAME", resultSet.getString("SOCIAL_USERNAME"));
160  count++;
161  statements.add(insert);
162  }
163 
164  confirmationMessage.append("Updating " + count + " social links to federated identities. ");
165  } finally {
166  resultSet.close();
167  }
168  } finally {
169  statement.close();
170  }
171  }
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132
List< SqlStatement > statements
Definition: CustomKeycloakTask.java:55
Database database
Definition: CustomKeycloakTask.java:51
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ generateStatements()

SqlStatement [] org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.generateStatements ( Database  database) throws CustomChangeException
inlineinherited
91  {
92  this.database = database;
93  jdbcConnection = (JdbcConnection) database.getConnection();
94  connection = jdbcConnection.getWrappedConnection();
95 
96  if (isApplicable()) {
97  confirmationMessage.append(getTaskId() + ": ");
99  } else {
100  confirmationMessage.append(getTaskId() + ": no update applicable for this task");
101  }
102 
103  return statements.toArray(new SqlStatement[statements.size()]);
104  }
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
List< SqlStatement > statements
Definition: CustomKeycloakTask.java:55
boolean isApplicable()
Definition: CustomKeycloakTask.java:106
Database database
Definition: CustomKeycloakTask.java:51
Connection connection
Definition: CustomKeycloakTask.java:53
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ generateStatementsImpl()

void org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.generateStatementsImpl ( ) throws CustomChangeException
inlineprotected
51  {
52  realmTableName = database.correctObjectName("REALM", Table.class);
53 
54  try {
60  } catch (Exception e) {
61  throw new CustomChangeException(getTaskId() + ": Exception when updating data from previous version", e);
62  }
63  }
void convertSocialToIdFedRealms()
Definition: JpaUpdate1_2_0_Beta1.java:66
void addAccessCodeLoginTimeout()
Definition: JpaUpdate1_2_0_Beta1.java:173
void addNewAdminRoles()
Definition: JpaUpdate1_2_0_Beta1.java:182
void convertSocialToIdFedUsers()
Definition: JpaUpdate1_2_0_Beta1.java:146
String realmTableName
Definition: JpaUpdate1_2_0_Beta1.java:43
void addDefaultProtocolMappers()
Definition: JpaUpdate1_2_0_Beta1.java:301
Database database
Definition: CustomKeycloakTask.java:51
String getTaskId()
Definition: JpaUpdate1_2_0_Beta1.java:46

◆ getAdminRoleId()

String org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.getAdminRoleId ( ) throws SQLException, DatabaseException
inlineprivate
232  {
233  PreparedStatement statement = jdbcConnection.prepareStatement("select ID from " + getTableName("KEYCLOAK_ROLE") + " where NAME = ? AND REALM = ?");
234  statement.setString(1, AdminRoles.ADMIN);
235  statement.setString(2, Config.getAdminRealm());
236 
237  try {
238  ResultSet resultSet = statement.executeQuery();
239  try {
240  if (resultSet.next()) {
241  return resultSet.getString("ID");
242  } else {
243  throw new IllegalStateException("Couldn't find ID of 'admin' role in 'master' realm");
244  }
245  } finally {
246  resultSet.close();
247  }
248  } finally {
249  statement.close();
250  }
251  }
JdbcConnection jdbcConnection
Definition: CustomKeycloakTask.java:52
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132

◆ getConfirmationMessage()

String org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.getConfirmationMessage ( )
inlineinherited
68  {
69  return confirmationMessage.toString();
70  }
StringBuilder confirmationMessage
Definition: CustomKeycloakTask.java:54

◆ getTableName()

String org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.getTableName ( String  tableName)
inlineprotectedinherited
132  {
133  String correctedSchemaName = database.escapeObjectName(database.getDefaultSchemaName(), Schema.class);
134  return LiquibaseJpaUpdaterProvider.getTable(tableName, correctedSchemaName);
135  }
Database database
Definition: CustomKeycloakTask.java:51

◆ getTaskId()

String org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.getTaskId ( )
inlineprotected
46  {
47  return "Update 1.2.0.Beta1";
48  }

◆ isApplicable()

boolean org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.isApplicable ( ) throws CustomChangeException
inlineprotectedinherited
106  {
107  try {
108  String correctedTableName = database.correctObjectName("REALM", Table.class);
109  if (SnapshotGeneratorFactory.getInstance().has(new Table().setName(correctedTableName), database)) {
110  ResultSet resultSet = connection.createStatement().executeQuery("SELECT ID FROM " + getTableName(correctedTableName));
111  try {
112  return (resultSet.next());
113  } finally {
114  resultSet.close();
115  }
116  } else {
117  return false;
118  }
119  } catch (Exception e) {
120  throw new CustomChangeException("Failed to check database availability", e);
121  }
122  }
String getTableName(String tableName)
Definition: CustomKeycloakTask.java:132
Database database
Definition: CustomKeycloakTask.java:51
Connection connection
Definition: CustomKeycloakTask.java:53

◆ setFileOpener()

void org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.setFileOpener ( ResourceAccessor  resourceAccessor)
inlineinherited
63  {
64 
65  }

◆ setUp()

void org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.setUp ( ) throws SetupException
inlineinherited
73  {
74  this.kcSession = ThreadLocalSessionContext.getCurrentSession();
75 
76  if (this.kcSession == null) {
77  // Probably running Liquibase from maven plugin. Try to create kcSession programmatically
78  logger.info("No KeycloakSession provided in ThreadLocal. Initializing KeycloakSessionFactory");
79 
80  try {
81  DefaultKeycloakSessionFactory factory = new DefaultKeycloakSessionFactory();
82  factory.init();
83  this.kcSession = factory.create();
84  } catch (Exception e) {
85  throw new SetupException("Exception when initializing factory", e);
86  }
87  }
88  }
KeycloakSession kcSession
Definition: CustomKeycloakTask.java:49
final Logger logger
Definition: CustomKeycloakTask.java:47

◆ validate()

ValidationErrors org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.validate ( Database  database)
inlineinherited
58  {
59  return null;
60  }

メンバ詳解

◆ confirmationMessage

StringBuilder org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.confirmationMessage = new StringBuilder()
protectedinherited

◆ connection

Connection org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.connection
protectedinherited

◆ database

Database org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.database
protectedinherited

◆ jdbcConnection

JdbcConnection org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.jdbcConnection
protectedinherited

◆ kcSession

KeycloakSession org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.kcSession
protectedinherited

◆ realmTableName

String org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.realmTableName
private

◆ statements

List<SqlStatement> org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.statements = new ArrayList<SqlStatement>()
protectedinherited

このクラス詳解は次のファイルから抽出されました: