This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 7f10123d46 Upgrading ConnId Okta bundle
7f10123d46 is described below
commit 7f10123d461625d1e26fc6f4437d61d8322a255c
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Wed Jul 9 09:32:18 2025 +0200
Upgrading ConnId Okta bundle
---
.../jpa/upgrade/GenerateUpgradeSQL.java | 111 +++++++++++++++++----
.../persistence/jpa/upgrade/WiserSchemaTool.java | 5 +
.../src/main/resources/schema.xml | 2 +-
pom.xml | 2 +-
4 files changed, 101 insertions(+), 19 deletions(-)
diff --git
a/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
b/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
index 1122fe4693..df88a1872b 100644
---
a/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
+++
b/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/GenerateUpgradeSQL.java
@@ -37,11 +37,18 @@ public class GenerateUpgradeSQL {
private static final JsonMapper MAPPER =
JsonMapper.builder().findAndAddModules().build();
- private static final List<String> INIT_SQL_STATEMENTS = List.of(
- "ALTER TABLE PullPolicy RENAME TO InboundPolicy",
- "ALTER TABLE PullCorrelationRuleEntity RENAME TO
InboundCorrelationRuleEntity",
- "ALTER TABLE ExternalResource RENAME COLUMN pullPolicy_id TO
inboundPolicy_id",
- "ALTER TABLE InboundCorrelationRuleEntity RENAME COLUMN
pullPolicy_id TO inboundPolicy_id");
+ private static final String INIT_SQL_STATEMENTS =
+ """
+ INSERT INTO InboundPolicy SELECT * FROM PullPolicy;
+ UPDATE ExternalResource SET inboundPolicy_id=pullPolicy_id;
+ ALTER TABLE ExternalResource DROP COLUMN pullPolicy_id;
+
+ INSERT INTO InboundCorrelationRuleEntity(id, inboundPolicy_id,
anyType_id, implementation_id)
+ SELECT id, pullPolicy_id, anyType_id, implementation_id FROM
PullCorrelationRuleEntity;
+
+ DROP TABLE PullCorrelationRuleEntity;
+ DROP TABLE PullPolicy;
+ """;
private static final String FINAL_SQL_STATEMENTS =
"""
@@ -55,7 +62,7 @@ public class GenerateUpgradeSQL {
DROP TABLE IF EXISTS qrtz_scheduler_state CASCADE;
DROP TABLE IF EXISTS qrtz_simple_triggers CASCADE;
DROP TABLE IF EXISTS qrtz_simprop_triggers CASCADE;
- DROP TABLE IF EXISTS qrtz_triggers CASCADE;
+ DROP TABLE IF EXISTS qrtz_triggers CASCADE;
""";
private final JDBCConfiguration jdbcConf;
@@ -165,7 +172,7 @@ public class GenerateUpgradeSQL {
return result.toString();
}
- private String roles() {
+ private String roles() throws JsonProcessingException {
StringBuilder result = new StringBuilder();
List<Map<String, Object>> dynMembershipConds =
jdbcTemplate.queryForList(
@@ -178,6 +185,28 @@ public class GenerateUpgradeSQL {
result.append("DROP TABLE DynRoleMembership;\n");
+ List<Map<String, Object>> roles = jdbcTemplate.queryForList(
+ "SELECT id, anyLayout from SyncopeRole WHERE anyLayout IS NOT
NULL");
+
+ for (Map<String, Object> role : roles) {
+ JsonNode anyLayout =
MAPPER.readTree(role.get("anyLayout").toString());
+ for (JsonNode child : anyLayout) {
+ if (child.isObject()) {
+ if (child.has("virAttrs")) {
+ ((ObjectNode) child).remove("virAttrs");
+ }
+ if (child.has("whichVirAttrs")) {
+ ((ObjectNode) child).remove("whichVirAttrs");
+ }
+ }
+ }
+
+ result.append(String.format(
+ "UPDATE SyncopeRole SET anyLayout='%s' WHERE id='%s';\n",
+ MAPPER.writeValueAsString(anyLayout).replace("'", "'"),
+ role.get("id").toString()));
+ }
+
return result.toString();
}
@@ -237,7 +266,54 @@ public class GenerateUpgradeSQL {
result.append("UPDATE Implementation ").
append("SET type='INBOUND_ACTIONS' WHERE
type='PULL_ACTIONS';\n");
result.append("UPDATE Implementation ").
- append("SET type='INBOUND_CORRELATION_RULE' WHERE
type='PULL_CORRELATION_RULE';\n\n");
+ append("SET type='INBOUND_CORRELATION_RULE' WHERE
type='PULL_CORRELATION_RULE';\n");
+
+ List<Map<String, Object>> implementations = jdbcTemplate.queryForList(
+ "SELECT id, body from Implementation "
+ + "WHERE body LIKE
'org.apache.syncope.core.persistence.jpa.attrvalue.validation.%'");
+
+ implementations.forEach(implementation -> result.append(String.format(
+ "UPDATE Implementation SET body='%s' WHERE id='%s';\n",
+ implementation.get("body").toString().replace(
+
"org.apache.syncope.core.persistence.jpa.attrvalue.validation.",
+
"org.apache.syncope.core.persistence.common.attrvalue."),
+ implementation.get("id").toString())));
+
+ return result.toString();
+ }
+
+ private String anyTemplates() throws JsonProcessingException {
+ StringBuilder result = new StringBuilder();
+
+ List<Map<String, Object>> templates = jdbcTemplate.queryForList(
+ "SELECT id, template from AnyTemplateRealm");
+
+ for (Map<String, Object> template : templates) {
+ JsonNode t = MAPPER.readTree(template.get("template").toString());
+ if (t.has("virAttrs")) {
+ ((ObjectNode) t).remove("virAttrs");
+
+ result.append(String.format(
+ "UPDATE AnyTemplateRealm SET template='%s' WHERE
id='%s';\n",
+ MAPPER.writeValueAsString(t).replace("'", "'"),
+ template.get("id").toString()));
+ }
+ }
+
+ templates = jdbcTemplate.queryForList(
+ "SELECT id, template from AnyTemplatePullTask");
+
+ for (Map<String, Object> template : templates) {
+ JsonNode t = MAPPER.readTree(template.get("template").toString());
+ if (t.has("virAttrs")) {
+ ((ObjectNode) t).remove("virAttrs");
+
+ result.append(String.format(
+ "UPDATE AnyTemplatePullTask SET template='%s' WHERE
id='%s';\n",
+ MAPPER.writeValueAsString(t).replace("'", "'"),
+ template.get("id").toString()));
+ }
+ }
return result.toString();
}
@@ -257,8 +333,6 @@ public class GenerateUpgradeSQL {
}
public void run(final Writer out) throws IOException, SQLException {
- INIT_SQL_STATEMENTS.forEach(jdbcTemplate::execute);
-
WiserSchemaTool schemaTool = new WiserSchemaTool(jdbcConf,
SchemaTool.ACTION_ADD);
schemaTool.setSchemaGroup(jdbcConf.getSchemaFactoryInstance().readSchema());
schemaTool.setWriter(out);
@@ -267,13 +341,16 @@ public class GenerateUpgradeSQL {
// run OpenJPA's SchemaTool to get the update statements
schemaTool.run();
- out.append(connInstances());
- out.append(resources());
- out.append(plainSchemas());
- out.append(roles());
- out.append(relationshipTypes());
- out.append(implementations());
- out.append(audit());
+ out.append('\n').append(INIT_SQL_STATEMENTS).append('\n');
+
+ out.append(connInstances()).append('\n');
+ out.append(resources()).append('\n');
+ out.append(plainSchemas()).append('\n');
+ out.append(roles()).append('\n');
+ out.append(relationshipTypes()).append('\n');
+ out.append(implementations()).append('\n');
+ out.append(anyTemplates()).append('\n');
+ out.append(audit()).append('\n');
out.append(FINAL_SQL_STATEMENTS);
}
diff --git
a/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/WiserSchemaTool.java
b/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/WiserSchemaTool.java
index f7b80ee0d2..491121e981 100644
---
a/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/WiserSchemaTool.java
+++
b/core/persistence-jpa-upgrader/src/main/java/org/apache/syncope/core/persistence/jpa/upgrade/WiserSchemaTool.java
@@ -49,6 +49,11 @@ public class WiserSchemaTool extends SchemaTool {
super(conf, action);
}
+ @Override
+ protected void add() throws SQLException {
+ add(getDBSchemaGroup(true), assertSchemaGroup());
+ }
+
@Override
protected void buildSchema(
final SchemaGroup db,
diff --git a/core/persistence-jpa-upgrader/src/main/resources/schema.xml
b/core/persistence-jpa-upgrader/src/main/resources/schema.xml
index e0de4a63b3..d50923beb7 100644
--- a/core/persistence-jpa-upgrader/src/main/resources/schema.xml
+++ b/core/persistence-jpa-upgrader/src/main/resources/schema.xml
@@ -442,7 +442,7 @@ under the License.
</table>
<table name="FormPropertyDef">
<pk column="id"/>
- <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
<column name="datePattern" type="varchar" size="255"/>
<column name="dropdownFreeForm" type="bit"/>
<column name="dropdownSingleSelection" type="bit"/>
diff --git a/pom.xml b/pom.xml
index 9dc87d5acd..ddce0d07a0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -406,7 +406,7 @@ under the License.
<connid.azure.version>3.0.0</connid.azure.version>
<connid.scim.version>1.0.5</connid.scim.version>
<connid.servicenow.version>1.0.3</connid.servicenow.version>
- <connid.okta.version>3.0.7</connid.okta.version>
+ <connid.okta.version>3.0.8</connid.okta.version>
<connid.cmd.version>0.5</connid.cmd.version>
<connid.kafka.version>1.0.0</connid.kafka.version>
<connid.ldup.version>0.1.0</connid.ldup.version>