fix migration scripts
This commit is contained in:
parent
798fd84698
commit
50fc083d97
9 changed files with 276 additions and 136 deletions
|
@ -29,19 +29,17 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
* @author <a href="mailto:bburke@redhat.com">Bill Burke</a>
|
||||||
*/
|
*/
|
||||||
public class MigrateUserFedToComponent extends AbstractUserFedToComponent {
|
public class MigrateUserFedToComponent extends AbstractUserFedToComponent {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void generateStatementsImpl() throws CustomChangeException {
|
protected void generateStatementsImpl() throws CustomChangeException {
|
||||||
String providerId = LDAPConstants.LDAP_PROVIDER;
|
|
||||||
convertFedProviderToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper");
|
|
||||||
convertFedProviderToComponent("kerberos", null);
|
convertFedProviderToComponent("kerberos", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getTaskId() {
|
protected String getTaskId() {
|
||||||
return "Update 2.4.0.Final";
|
return "Update 2.4.1.Final";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.keycloak.connections.jpa.updater.liquibase.custom;
|
||||||
|
|
||||||
|
import liquibase.exception.CustomChangeException;
|
||||||
|
import org.keycloak.models.LDAPConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:bburke@redhat.com">Bill Burke</a>
|
||||||
|
*/
|
||||||
|
public class PortLdapUserFedToComponentModel extends AbstractUserFedToComponent {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void generateStatementsImpl() throws CustomChangeException {
|
||||||
|
String providerId = LDAPConstants.LDAP_PROVIDER;
|
||||||
|
convertFedProviderToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getTaskId() {
|
||||||
|
return "Update 2.4.0.Final";
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
|
|
||||||
<changeSet author="bburke@redhat.com" id="2.4.0">
|
<changeSet author="bburke@redhat.com" id="2.4.0">
|
||||||
<customChange class="org.keycloak.connections.jpa.updater.liquibase.custom.MigrateUserFedToComponent"/>
|
<customChange class="org.keycloak.connections.jpa.updater.liquibase.custom.PortLdapUserFedToComponentModel"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
25
model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.1.xml
Executable file
25
model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.1.xml
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||||
|
~ and other contributors as indicated by the @author tags.
|
||||||
|
~
|
||||||
|
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
~ you may not use this file except in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing, software
|
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
~ See the License for the specific language governing permissions and
|
||||||
|
~ limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
|
|
||||||
|
<changeSet author="bburke@redhat.com" id="2.4.1">
|
||||||
|
<customChange class="org.keycloak.connections.jpa.updater.liquibase.custom.MigrateUserFedToComponent"/>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
</databaseChangeLog>
|
|
@ -44,4 +44,5 @@
|
||||||
<include file="META-INF/jpa-changelog-2.2.0.xml"/>
|
<include file="META-INF/jpa-changelog-2.2.0.xml"/>
|
||||||
<include file="META-INF/jpa-changelog-2.3.0.xml"/>
|
<include file="META-INF/jpa-changelog-2.3.0.xml"/>
|
||||||
<include file="META-INF/jpa-changelog-2.4.0.xml"/>
|
<include file="META-INF/jpa-changelog-2.4.0.xml"/>
|
||||||
|
<include file="META-INF/jpa-changelog-2.4.1.xml"/>
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|
|
@ -35,6 +35,7 @@ import org.keycloak.connections.mongo.updater.impl.updates.Update1_8_0;
|
||||||
import org.keycloak.connections.mongo.updater.impl.updates.Update1_9_2;
|
import org.keycloak.connections.mongo.updater.impl.updates.Update1_9_2;
|
||||||
import org.keycloak.connections.mongo.updater.impl.updates.Update2_3_0;
|
import org.keycloak.connections.mongo.updater.impl.updates.Update2_3_0;
|
||||||
import org.keycloak.connections.mongo.updater.impl.updates.Update2_4_0;
|
import org.keycloak.connections.mongo.updater.impl.updates.Update2_4_0;
|
||||||
|
import org.keycloak.connections.mongo.updater.impl.updates.Update2_4_1;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -61,7 +62,8 @@ public class DefaultMongoUpdaterProvider implements MongoUpdaterProvider {
|
||||||
Update1_8_0.class,
|
Update1_8_0.class,
|
||||||
Update1_9_2.class,
|
Update1_9_2.class,
|
||||||
Update2_3_0.class,
|
Update2_3_0.class,
|
||||||
Update2_4_0.class
|
Update2_4_0.class,
|
||||||
|
Update2_4_1.class
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.keycloak.connections.mongo.updater.impl.updates;
|
||||||
|
|
||||||
|
import com.mongodb.BasicDBList;
|
||||||
|
import com.mongodb.BasicDBObject;
|
||||||
|
import com.mongodb.DBCollection;
|
||||||
|
import com.mongodb.DBCursor;
|
||||||
|
import org.jboss.logging.Logger;
|
||||||
|
import org.keycloak.storage.UserStorageProvider;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
||||||
|
* @version $Revision: 1 $
|
||||||
|
*/
|
||||||
|
public abstract class AbstractMigrateUserFedToComponent extends Update {
|
||||||
|
private final Logger logger = Logger.getLogger(getClass());
|
||||||
|
|
||||||
|
public void portUserFedToComponent(String providerId) {
|
||||||
|
DBCollection realms = db.getCollection("realms");
|
||||||
|
DBCursor cursor = realms.find();
|
||||||
|
while (cursor.hasNext()) {
|
||||||
|
BasicDBObject realm = (BasicDBObject) cursor.next();
|
||||||
|
|
||||||
|
String realmId = realm.getString("_id");
|
||||||
|
Set<String> removedProviders = new HashSet<>();
|
||||||
|
|
||||||
|
BasicDBList componentEntities = (BasicDBList) realm.get("componentEntities");
|
||||||
|
BasicDBList federationProviders = (BasicDBList) realm.get("userFederationProviders");
|
||||||
|
for (Object obj : federationProviders) {
|
||||||
|
BasicDBObject fedProvider = (BasicDBObject)obj;
|
||||||
|
if (fedProvider.getString("providerName").equals(providerId)) {
|
||||||
|
String id = fedProvider.getString("id");
|
||||||
|
removedProviders.add(id);
|
||||||
|
int priority = fedProvider.getInt("priority");
|
||||||
|
String displayName = fedProvider.getString("displayName");
|
||||||
|
int fullSyncPeriod = fedProvider.getInt("fullSyncPeriod");
|
||||||
|
int changedSyncPeriod = fedProvider.getInt("changedSyncPeriod");
|
||||||
|
int lastSync = fedProvider.getInt("lastSync");
|
||||||
|
BasicDBObject component = new BasicDBObject();
|
||||||
|
component.put("id", id);
|
||||||
|
component.put("name", displayName);
|
||||||
|
component.put("providerType", UserStorageProvider.class.getName());
|
||||||
|
component.put("providerId", providerId);
|
||||||
|
component.put("parentId", realmId);
|
||||||
|
|
||||||
|
BasicDBObject config = new BasicDBObject();
|
||||||
|
config.put("priority", Collections.singletonList(Integer.toString(priority)));
|
||||||
|
config.put("fullSyncPeriod", Collections.singletonList(Integer.toString(fullSyncPeriod)));
|
||||||
|
config.put("changedSyncPeriod", Collections.singletonList(Integer.toString(changedSyncPeriod)));
|
||||||
|
config.put("lastSync", Collections.singletonList(Integer.toString(lastSync)));
|
||||||
|
|
||||||
|
BasicDBObject fedConfig = (BasicDBObject)fedProvider.get("config");
|
||||||
|
if (fedConfig != null) {
|
||||||
|
for (Map.Entry<String, Object> attr : new HashSet<>(fedConfig.entrySet())) {
|
||||||
|
String attrName = attr.getKey();
|
||||||
|
String attrValue = attr.getValue().toString();
|
||||||
|
config.put(attrName, Collections.singletonList(attrValue));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
component.put("config", config);
|
||||||
|
|
||||||
|
componentEntities.add(component);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Iterator<Object> it = federationProviders.iterator();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
BasicDBObject fedProvider = (BasicDBObject)it.next();
|
||||||
|
String id = fedProvider.getString("id");
|
||||||
|
if (removedProviders.contains(id)) {
|
||||||
|
it.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
realms.update(new BasicDBObject().append("_id", realmId), realm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void portUserFedMappersToComponent(String providerId, String mapperType) {
|
||||||
|
//logger.info("*** port mappers");
|
||||||
|
DBCollection realms = db.getCollection("realms");
|
||||||
|
DBCursor cursor = realms.find();
|
||||||
|
while (cursor.hasNext()) {
|
||||||
|
BasicDBObject realm = (BasicDBObject) cursor.next();
|
||||||
|
|
||||||
|
String realmId = realm.getString("_id");
|
||||||
|
Set<String> removedProviders = new HashSet<>();
|
||||||
|
|
||||||
|
BasicDBList componentEntities = (BasicDBList) realm.get("componentEntities");
|
||||||
|
BasicDBList federationProviders = (BasicDBList) realm.get("userFederationProviders");
|
||||||
|
BasicDBList fedMappers = (BasicDBList) realm.get("userFederationMappers");
|
||||||
|
for (Object obj : federationProviders) {
|
||||||
|
BasicDBObject fedProvider = (BasicDBObject)obj;
|
||||||
|
String providerName = fedProvider.getString("providerName");
|
||||||
|
//logger.info("looking for mappers of fed provider: " + providerName);
|
||||||
|
if (providerName.equals(providerId)) {
|
||||||
|
String id = fedProvider.getString("id");
|
||||||
|
//logger.info("found fed provider: " + id + ", looking at mappers");
|
||||||
|
for (Object obj2 : fedMappers) {
|
||||||
|
BasicDBObject fedMapper = (BasicDBObject)obj2;
|
||||||
|
String federationProviderId = fedMapper.getString("federationProviderId");
|
||||||
|
//logger.info("looking at mapper with federationProviderId: " + federationProviderId);
|
||||||
|
if (federationProviderId.equals(id)) {
|
||||||
|
String name = fedMapper.getString("name");
|
||||||
|
String mapperId = fedMapper.getString("id");
|
||||||
|
removedProviders.add(mapperId);
|
||||||
|
String mapperProviderId = fedMapper.getString("federationMapperType");
|
||||||
|
BasicDBObject component = new BasicDBObject();
|
||||||
|
component.put("id", mapperId);
|
||||||
|
component.put("name", name);
|
||||||
|
component.put("providerType", mapperType);
|
||||||
|
component.put("providerId", mapperProviderId);
|
||||||
|
component.put("parentId", id);
|
||||||
|
|
||||||
|
BasicDBObject fedConfig = (BasicDBObject)fedMapper.get("config");
|
||||||
|
BasicDBObject config = new BasicDBObject();
|
||||||
|
if (fedConfig != null) {
|
||||||
|
for (Map.Entry<String, Object> attr : new HashSet<>(fedConfig.entrySet())) {
|
||||||
|
String attrName = attr.getKey();
|
||||||
|
String attrValue = attr.getValue().toString();
|
||||||
|
config.put(attrName, Collections.singletonList(attrValue));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
component.put("config", config);
|
||||||
|
componentEntities.add(component);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Iterator<Object> it = fedMappers.iterator();
|
||||||
|
while (it.hasNext()) {
|
||||||
|
BasicDBObject fedMapper = (BasicDBObject)it.next();
|
||||||
|
String id = fedMapper.getString("id");
|
||||||
|
if (removedProviders.contains(id)) {
|
||||||
|
it.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
realms.update(new BasicDBObject().append("_id", realmId), realm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -37,8 +37,7 @@ import java.util.Set;
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||||
*/
|
*/
|
||||||
public class Update2_4_0 extends Update {
|
public class Update2_4_0 extends AbstractMigrateUserFedToComponent {
|
||||||
private final Logger logger = Logger.getLogger(getClass());
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public String getId() {
|
||||||
|
@ -49,134 +48,6 @@ public class Update2_4_0 extends Update {
|
||||||
public void update(KeycloakSession session) {
|
public void update(KeycloakSession session) {
|
||||||
portUserFedMappersToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper");
|
portUserFedMappersToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper");
|
||||||
portUserFedToComponent(LDAPConstants.LDAP_PROVIDER);
|
portUserFedToComponent(LDAPConstants.LDAP_PROVIDER);
|
||||||
portUserFedToComponent("kerberos");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void portUserFedToComponent(String providerId) {
|
|
||||||
DBCollection realms = db.getCollection("realms");
|
|
||||||
DBCursor cursor = realms.find();
|
|
||||||
while (cursor.hasNext()) {
|
|
||||||
BasicDBObject realm = (BasicDBObject) cursor.next();
|
|
||||||
|
|
||||||
String realmId = realm.getString("_id");
|
|
||||||
Set<String> removedProviders = new HashSet<>();
|
|
||||||
|
|
||||||
BasicDBList componentEntities = (BasicDBList) realm.get("componentEntities");
|
|
||||||
BasicDBList federationProviders = (BasicDBList) realm.get("userFederationProviders");
|
|
||||||
for (Object obj : federationProviders) {
|
|
||||||
BasicDBObject fedProvider = (BasicDBObject)obj;
|
|
||||||
if (fedProvider.getString("providerName").equals(providerId)) {
|
|
||||||
String id = fedProvider.getString("id");
|
|
||||||
removedProviders.add(id);
|
|
||||||
int priority = fedProvider.getInt("priority");
|
|
||||||
String displayName = fedProvider.getString("displayName");
|
|
||||||
int fullSyncPeriod = fedProvider.getInt("fullSyncPeriod");
|
|
||||||
int changedSyncPeriod = fedProvider.getInt("changedSyncPeriod");
|
|
||||||
int lastSync = fedProvider.getInt("lastSync");
|
|
||||||
BasicDBObject component = new BasicDBObject();
|
|
||||||
component.put("id", id);
|
|
||||||
component.put("name", displayName);
|
|
||||||
component.put("providerType", UserStorageProvider.class.getName());
|
|
||||||
component.put("providerId", providerId);
|
|
||||||
component.put("parentId", realmId);
|
|
||||||
|
|
||||||
BasicDBObject config = new BasicDBObject();
|
|
||||||
config.put("priority", Collections.singletonList(Integer.toString(priority)));
|
|
||||||
config.put("fullSyncPeriod", Collections.singletonList(Integer.toString(fullSyncPeriod)));
|
|
||||||
config.put("changedSyncPeriod", Collections.singletonList(Integer.toString(changedSyncPeriod)));
|
|
||||||
config.put("lastSync", Collections.singletonList(Integer.toString(lastSync)));
|
|
||||||
|
|
||||||
BasicDBObject fedConfig = (BasicDBObject)fedProvider.get("config");
|
|
||||||
if (fedConfig != null) {
|
|
||||||
for (Map.Entry<String, Object> attr : new HashSet<>(fedConfig.entrySet())) {
|
|
||||||
String attrName = attr.getKey();
|
|
||||||
String attrValue = attr.getValue().toString();
|
|
||||||
config.put(attrName, Collections.singletonList(attrValue));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
component.put("config", config);
|
|
||||||
|
|
||||||
componentEntities.add(component);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Iterator<Object> it = federationProviders.iterator();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
BasicDBObject fedProvider = (BasicDBObject)it.next();
|
|
||||||
String id = fedProvider.getString("id");
|
|
||||||
if (removedProviders.contains(id)) {
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
realms.update(new BasicDBObject().append("_id", realmId), realm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void portUserFedMappersToComponent(String providerId, String mapperType) {
|
|
||||||
//logger.info("*** port mappers");
|
|
||||||
DBCollection realms = db.getCollection("realms");
|
|
||||||
DBCursor cursor = realms.find();
|
|
||||||
while (cursor.hasNext()) {
|
|
||||||
BasicDBObject realm = (BasicDBObject) cursor.next();
|
|
||||||
|
|
||||||
String realmId = realm.getString("_id");
|
|
||||||
Set<String> removedProviders = new HashSet<>();
|
|
||||||
|
|
||||||
BasicDBList componentEntities = (BasicDBList) realm.get("componentEntities");
|
|
||||||
BasicDBList federationProviders = (BasicDBList) realm.get("userFederationProviders");
|
|
||||||
BasicDBList fedMappers = (BasicDBList) realm.get("userFederationMappers");
|
|
||||||
for (Object obj : federationProviders) {
|
|
||||||
BasicDBObject fedProvider = (BasicDBObject)obj;
|
|
||||||
String providerName = fedProvider.getString("providerName");
|
|
||||||
//logger.info("looking for mappers of fed provider: " + providerName);
|
|
||||||
if (providerName.equals(providerId)) {
|
|
||||||
String id = fedProvider.getString("id");
|
|
||||||
//logger.info("found fed provider: " + id + ", looking at mappers");
|
|
||||||
for (Object obj2 : fedMappers) {
|
|
||||||
BasicDBObject fedMapper = (BasicDBObject)obj2;
|
|
||||||
String federationProviderId = fedMapper.getString("federationProviderId");
|
|
||||||
//logger.info("looking at mapper with federationProviderId: " + federationProviderId);
|
|
||||||
if (federationProviderId.equals(id)) {
|
|
||||||
String name = fedMapper.getString("name");
|
|
||||||
String mapperId = fedMapper.getString("id");
|
|
||||||
removedProviders.add(mapperId);
|
|
||||||
String mapperProviderId = fedMapper.getString("federationMapperType");
|
|
||||||
BasicDBObject component = new BasicDBObject();
|
|
||||||
component.put("id", mapperId);
|
|
||||||
component.put("name", name);
|
|
||||||
component.put("providerType", mapperType);
|
|
||||||
component.put("providerId", mapperProviderId);
|
|
||||||
component.put("parentId", id);
|
|
||||||
|
|
||||||
BasicDBObject fedConfig = (BasicDBObject)fedMapper.get("config");
|
|
||||||
BasicDBObject config = new BasicDBObject();
|
|
||||||
if (fedConfig != null) {
|
|
||||||
for (Map.Entry<String, Object> attr : new HashSet<>(fedConfig.entrySet())) {
|
|
||||||
String attrName = attr.getKey();
|
|
||||||
String attrValue = attr.getValue().toString();
|
|
||||||
config.put(attrName, Collections.singletonList(attrValue));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
component.put("config", config);
|
|
||||||
componentEntities.add(component);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Iterator<Object> it = fedMappers.iterator();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
BasicDBObject fedMapper = (BasicDBObject)it.next();
|
|
||||||
String id = fedMapper.getString("id");
|
|
||||||
if (removedProviders.contains(id)) {
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
realms.update(new BasicDBObject().append("_id", realmId), realm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2016 Red Hat, Inc. and/or its affiliates
|
||||||
|
* and other contributors as indicated by the @author tags.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.keycloak.connections.mongo.updater.impl.updates;
|
||||||
|
|
||||||
|
import org.keycloak.models.KeycloakSession;
|
||||||
|
import org.keycloak.models.LDAPConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
|
||||||
|
*/
|
||||||
|
public class Update2_4_1 extends AbstractMigrateUserFedToComponent {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getId() {
|
||||||
|
return "2.4.1";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(KeycloakSession session) {
|
||||||
|
portUserFedToComponent("kerberos");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue