keycloak-memoizeit
Changes
model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java 6(+2 -4)
model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java 38(+38 -0)
model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/DefaultMongoUpdaterProvider.java 4(+3 -1)
model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/AbstractMigrateUserFedToComponent.java 167(+167 -0)
Details
diff --git a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java
index 8d22fbd..bb29830 100644
--- a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java
+++ b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java
@@ -29,19 +29,17 @@ import java.sql.PreparedStatement;
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 {
@Override
protected void generateStatementsImpl() throws CustomChangeException {
- String providerId = LDAPConstants.LDAP_PROVIDER;
- convertFedProviderToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper");
convertFedProviderToComponent("kerberos", null);
}
@Override
protected String getTaskId() {
- return "Update 2.4.0.Final";
+ return "Update 2.4.1.Final";
}
}
diff --git a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java
new file mode 100644
index 0000000..dc9e607
--- /dev/null
+++ b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java
@@ -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";
+ }
+}
diff --git a/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.0.xml b/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.0.xml
index e8af8da..0aebd9a 100755
--- a/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.0.xml
+++ b/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.0.xml
@@ -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">
<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>
</databaseChangeLog>
\ No newline at end of file
diff --git a/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.1.xml b/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.1.xml
new file mode 100755
index 0000000..216ce65
--- /dev/null
+++ b/model/jpa/src/main/resources/META-INF/jpa-changelog-2.4.1.xml
@@ -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>
\ No newline at end of file
diff --git a/model/jpa/src/main/resources/META-INF/jpa-changelog-master.xml b/model/jpa/src/main/resources/META-INF/jpa-changelog-master.xml
index ebe8cf3..4fe18b6 100755
--- a/model/jpa/src/main/resources/META-INF/jpa-changelog-master.xml
+++ b/model/jpa/src/main/resources/META-INF/jpa-changelog-master.xml
@@ -44,4 +44,5 @@
<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.4.0.xml"/>
+ <include file="META-INF/jpa-changelog-2.4.1.xml"/>
</databaseChangeLog>
diff --git a/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/DefaultMongoUpdaterProvider.java b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/DefaultMongoUpdaterProvider.java
index c7f5be8..78adfb7 100755
--- a/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/DefaultMongoUpdaterProvider.java
+++ b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/DefaultMongoUpdaterProvider.java
@@ -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.Update2_3_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 java.util.Date;
@@ -61,7 +62,8 @@ public class DefaultMongoUpdaterProvider implements MongoUpdaterProvider {
Update1_8_0.class,
Update1_9_2.class,
Update2_3_0.class,
- Update2_4_0.class
+ Update2_4_0.class,
+ Update2_4_1.class
};
@Override
diff --git a/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/AbstractMigrateUserFedToComponent.java b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/AbstractMigrateUserFedToComponent.java
new file mode 100644
index 0000000..d4db6d3
--- /dev/null
+++ b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/AbstractMigrateUserFedToComponent.java
@@ -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);
+ }
+ }
+}
diff --git a/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_0.java b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_0.java
index 8900b3a..883a051 100644
--- a/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_0.java
+++ b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_0.java
@@ -37,8 +37,7 @@ import java.util.Set;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
-public class Update2_4_0 extends Update {
- private final Logger logger = Logger.getLogger(getClass());
+public class Update2_4_0 extends AbstractMigrateUserFedToComponent {
@Override
public String getId() {
@@ -49,134 +48,6 @@ public class Update2_4_0 extends Update {
public void update(KeycloakSession session) {
portUserFedMappersToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper");
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);
- }
- }
}
diff --git a/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_1.java b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_1.java
new file mode 100644
index 0000000..206579f
--- /dev/null
+++ b/model/mongo/src/main/java/org/keycloak/connections/mongo/updater/impl/updates/Update2_4_1.java
@@ -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");
+ }
+
+}