keycloak-service
クラス | 公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
org.keycloak.exportimport.util.MultipleStepsExportProvider クラスabstract
org.keycloak.exportimport.util.MultipleStepsExportProvider の継承関係図
Inheritance graph
org.keycloak.exportimport.util.MultipleStepsExportProvider 連携図
Collaboration graph

クラス

class  FederatedUsersHolder
 
class  RealmsHolder
 
class  UsersHolder
 

公開メンバ関数

void exportModel (KeycloakSessionFactory factory) throws IOException
 
void exportRealm (KeycloakSessionFactory factory, String realmName) throws IOException
 

限定公開メンバ関数

void exportRealmImpl (KeycloakSessionFactory factory, final String realmName) throws IOException
 
abstract void writeRealm (String fileName, RealmRepresentation rep) throws IOException
 
abstract void writeUsers (String fileName, KeycloakSession session, RealmModel realm, List< UserModel > users) throws IOException
 
abstract void writeFederatedUsers (String fileName, KeycloakSession session, RealmModel realm, List< String > users) throws IOException
 

限定公開変数類

final Logger logger = Logger.getLogger(getClass())
 

詳解

著者
Marek Posolda

関数詳解

◆ exportModel()

void org.keycloak.exportimport.util.MultipleStepsExportProvider.exportModel ( KeycloakSessionFactory  factory) throws IOException
inline
43  {
44  final RealmsHolder holder = new RealmsHolder();
45 
46  KeycloakModelUtils.runJobInTransaction(factory, new KeycloakSessionTask() {
47 
48  @Override
49  public void run(KeycloakSession session) {
50  List<RealmModel> realms = session.realms().getRealms();
51  holder.realms = realms;
52  }
53 
54  });
55 
56  for (RealmModel realm : holder.realms) {
57  exportRealmImpl(factory, realm.getName());
58  }
59  }
void exportRealmImpl(KeycloakSessionFactory factory, final String realmName)
Definition: MultipleStepsExportProvider.java:66

◆ exportRealm()

void org.keycloak.exportimport.util.MultipleStepsExportProvider.exportRealm ( KeycloakSessionFactory  factory,
String  realmName 
) throws IOException
inline
62  {
63  exportRealmImpl(factory, realmName);
64  }
void exportRealmImpl(KeycloakSessionFactory factory, final String realmName)
Definition: MultipleStepsExportProvider.java:66

◆ exportRealmImpl()

void org.keycloak.exportimport.util.MultipleStepsExportProvider.exportRealmImpl ( KeycloakSessionFactory  factory,
final String  realmName 
) throws IOException
inlineprotected
66  {
67  final UsersExportStrategy usersExportStrategy = ExportImportConfig.getUsersExportStrategy();
68  final int usersPerFile = ExportImportConfig.getUsersPerFile();
69  final UsersHolder usersHolder = new UsersHolder();
70  final boolean exportUsersIntoRealmFile = usersExportStrategy == UsersExportStrategy.REALM_FILE;
71  FederatedUsersHolder federatedUsersHolder = new FederatedUsersHolder();
72 
73  KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {
74 
75  @Override
76  protected void runExportImportTask(KeycloakSession session) throws IOException {
77  RealmModel realm = session.realms().getRealmByName(realmName);
78  RealmRepresentation rep = ExportUtils.exportRealm(session, realm, exportUsersIntoRealmFile, true);
79  writeRealm(realmName + "-realm.json", rep);
80  logger.info("Realm '" + realmName + "' - data exported");
81 
82  // Count total number of users
83  if (!exportUsersIntoRealmFile) {
84  usersHolder.totalCount = session.users().getUsersCount(realm, true);
85  federatedUsersHolder.totalCount = session.userFederatedStorage().getStoredUsersCount(realm);
86  }
87  }
88 
89  });
90 
91  if (usersExportStrategy != UsersExportStrategy.SKIP && !exportUsersIntoRealmFile) {
92  // We need to export users now
93  usersHolder.currentPageStart = 0;
94 
95  // usersExportStrategy==SAME_FILE means exporting all users into single file (but separate to realm)
96  final int countPerPage = (usersExportStrategy == UsersExportStrategy.SAME_FILE) ? usersHolder.totalCount : usersPerFile;
97 
98  while (usersHolder.currentPageStart < usersHolder.totalCount) {
99  if (usersHolder.currentPageStart + countPerPage < usersHolder.totalCount) {
100  usersHolder.currentPageEnd = usersHolder.currentPageStart + countPerPage;
101  } else {
102  usersHolder.currentPageEnd = usersHolder.totalCount;
103  }
104 
105  KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {
106 
107  @Override
108  protected void runExportImportTask(KeycloakSession session) throws IOException {
109  RealmModel realm = session.realms().getRealmByName(realmName);
110  usersHolder.users = session.users().getUsers(realm, usersHolder.currentPageStart, usersHolder.currentPageEnd - usersHolder.currentPageStart, true);
111 
112  writeUsers(realmName + "-users-" + (usersHolder.currentPageStart / countPerPage) + ".json", session, realm, usersHolder.users);
113 
114  logger.info("Users " + usersHolder.currentPageStart + "-" + (usersHolder.currentPageEnd -1) + " exported");
115  }
116 
117  });
118 
119  usersHolder.currentPageStart = usersHolder.currentPageEnd;
120  }
121  }
122  if (usersExportStrategy != UsersExportStrategy.SKIP && !exportUsersIntoRealmFile) {
123  // We need to export users now
124  federatedUsersHolder.currentPageStart = 0;
125 
126  // usersExportStrategy==SAME_FILE means exporting all users into single file (but separate to realm)
127  final int countPerPage = (usersExportStrategy == UsersExportStrategy.SAME_FILE) ? federatedUsersHolder.totalCount : usersPerFile;
128 
129  while (federatedUsersHolder.currentPageStart < federatedUsersHolder.totalCount) {
130  if (federatedUsersHolder.currentPageStart + countPerPage < federatedUsersHolder.totalCount) {
131  federatedUsersHolder.currentPageEnd = federatedUsersHolder.currentPageStart + countPerPage;
132  } else {
133  federatedUsersHolder.currentPageEnd = federatedUsersHolder.totalCount;
134  }
135 
136  KeycloakModelUtils.runJobInTransaction(factory, new ExportImportSessionTask() {
137 
138  @Override
139  protected void runExportImportTask(KeycloakSession session) throws IOException {
140  RealmModel realm = session.realms().getRealmByName(realmName);
141  federatedUsersHolder.users = session.userFederatedStorage().getStoredUsers(realm, federatedUsersHolder.currentPageStart, federatedUsersHolder.currentPageEnd - federatedUsersHolder.currentPageStart);
142 
143  writeFederatedUsers(realmName + "-federated-users-" + (federatedUsersHolder.currentPageStart / countPerPage) + ".json", session, realm, federatedUsersHolder.users);
144 
145  logger.info("Users " + federatedUsersHolder.currentPageStart + "-" + (federatedUsersHolder.currentPageEnd -1) + " exported");
146  }
147 
148  });
149 
150  federatedUsersHolder.currentPageStart = federatedUsersHolder.currentPageEnd;
151  }
152  }
153  }
abstract void writeRealm(String fileName, RealmRepresentation rep)
final Logger logger
Definition: MultipleStepsExportProvider.java:40
abstract void writeFederatedUsers(String fileName, KeycloakSession session, RealmModel realm, List< String > users)
abstract void writeUsers(String fileName, KeycloakSession session, RealmModel realm, List< UserModel > users)

◆ writeFederatedUsers()

abstract void org.keycloak.exportimport.util.MultipleStepsExportProvider.writeFederatedUsers ( String  fileName,
KeycloakSession  session,
RealmModel  realm,
List< String >  users 
) throws IOException
abstractprotected

◆ writeRealm()

abstract void org.keycloak.exportimport.util.MultipleStepsExportProvider.writeRealm ( String  fileName,
RealmRepresentation  rep 
) throws IOException
abstractprotected

◆ writeUsers()

abstract void org.keycloak.exportimport.util.MultipleStepsExportProvider.writeUsers ( String  fileName,
KeycloakSession  session,
RealmModel  realm,
List< UserModel >  users 
) throws IOException
abstractprotected

メンバ詳解

◆ logger

final Logger org.keycloak.exportimport.util.MultipleStepsExportProvider.logger = Logger.getLogger(getClass())
protected

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