Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Apr 15, 2024
2 parents 343f6aa + 9bae8ff commit 1bec6c1
Show file tree
Hide file tree
Showing 40 changed files with 689 additions and 392 deletions.
6 changes: 6 additions & 0 deletions config/sql/native/postgres-audit-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,12 @@ call apply_audit_change(8, $aa$
ALTER TYPE AuditEventTypeType ADD VALUE IF NOT EXISTS 'INFORMATION_DISCLOSURE' AFTER 'DISCOVER_OBJECT';
$aa$);


--- Policy Type
call apply_audit_change(9, $aa$
ALTER TYPE ObjectType ADD VALUE IF NOT EXISTS 'POLICY' AFTER 'ORG';
$aa$);

-- WRITE CHANGES ABOVE ^^

-- IMPORTANT: update apply_audit_change number at the end of postgres-audit.sql
Expand Down
1 change: 1 addition & 0 deletions config/sql/native/postgres-audit.sql
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ DO $$ BEGIN
'OBJECT_COLLECTION',
'OBJECT_TEMPLATE',
'ORG',
'POLICY',
'REPORT',
'REPORT_DATA',
'RESOURCE',
Expand Down
32 changes: 32 additions & 0 deletions config/sql/native/postgres-upgrade.sql
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,38 @@ call apply_change(26, $aa$
ALTER TABLE m_ref_role_membership ADD COLUMN fullObject BYTEA;
$aa$);



--- Policy Type

call apply_change(27, $aa$
ALTER TYPE ObjectType ADD VALUE IF NOT EXISTS 'POLICY' AFTER 'ORG';
$aa$);
call apply_change(28, $aa$
CREATE TABLE m_policy (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectType ObjectType GENERATED ALWAYS AS ('POLICY') STORED
CHECK (objectType = 'POLICY')
)
INHERITS (m_abstract_role);

CREATE TRIGGER m_policy_oid_insert_tr BEFORE INSERT ON m_policy
FOR EACH ROW EXECUTE FUNCTION insert_object_oid();
CREATE TRIGGER m_policy_update_tr BEFORE UPDATE ON m_policy
FOR EACH ROW EXECUTE FUNCTION before_update_object();
CREATE TRIGGER m_policy_oid_delete_tr AFTER DELETE ON m_policy
FOR EACH ROW EXECUTE FUNCTION delete_object_oid();

CREATE INDEX m_policy_nameOrig_idx ON m_policy (nameOrig);
CREATE UNIQUE INDEX m_policy_nameNorm_key ON m_policy (nameNorm);
CREATE INDEX m_policy_subtypes_idx ON m_policy USING gin(subtypes);
CREATE INDEX m_policy_identifier_idx ON m_policy (identifier);
CREATE INDEX m_policy_validFrom_idx ON m_policy (validFrom);
CREATE INDEX m_policy_validTo_idx ON m_policy (validTo);
CREATE INDEX m_policy_fullTextInfo_idx ON m_policy USING gin(fullTextInfo gin_trgm_ops);
CREATE INDEX m_policy_createTimestamp_idx ON m_policy (createTimestamp);
CREATE INDEX m_policy_modifyTimestamp_idx ON m_policy (modifyTimestamp);
$aa$);
---
-- WRITE CHANGES ABOVE ^^
-- IMPORTANT: update apply_change number at the end of postgres-new.sql
Expand Down
31 changes: 30 additions & 1 deletion config/sql/native/postgres.sql
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ CREATE TYPE ObjectType AS ENUM (
'OBJECT_COLLECTION',
'OBJECT_TEMPLATE',
'ORG',
'POLICY',
'REPORT',
'REPORT_DATA',
'RESOURCE',
Expand Down Expand Up @@ -713,6 +714,34 @@ CREATE INDEX m_role_fullTextInfo_idx ON m_role USING gin(fullTextInfo gin_trgm_o
CREATE INDEX m_role_createTimestamp_idx ON m_role (createTimestamp);
CREATE INDEX m_role_modifyTimestamp_idx ON m_role (modifyTimestamp);


-- Represents PolicyType, see https://docs.evolveum.com/midpoint/architecture/archive/data-model/midpoint-common-schema/policytype/
CREATE TABLE m_policy (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
objectType ObjectType GENERATED ALWAYS AS ('POLICY') STORED
CHECK (objectType = 'POLICY')
)
INHERITS (m_abstract_role);

CREATE TRIGGER m_policy_oid_insert_tr BEFORE INSERT ON m_policy
FOR EACH ROW EXECUTE FUNCTION insert_object_oid();
CREATE TRIGGER m_policy_update_tr BEFORE UPDATE ON m_policy
FOR EACH ROW EXECUTE FUNCTION before_update_object();
CREATE TRIGGER m_policy_oid_delete_tr AFTER DELETE ON m_policy
FOR EACH ROW EXECUTE FUNCTION delete_object_oid();

CREATE INDEX m_policy_nameOrig_idx ON m_policy (nameOrig);
CREATE UNIQUE INDEX m_policy_nameNorm_key ON m_policy (nameNorm);
CREATE INDEX m_policy_subtypes_idx ON m_policy USING gin(subtypes);
CREATE INDEX m_policy_identifier_idx ON m_policy (identifier);
CREATE INDEX m_policy_validFrom_idx ON m_policy (validFrom);
CREATE INDEX m_policy_validTo_idx ON m_policy (validTo);
CREATE INDEX m_policy_fullTextInfo_idx ON m_policy USING gin(fullTextInfo gin_trgm_ops);
CREATE INDEX m_policy_createTimestamp_idx ON m_policy (createTimestamp);
CREATE INDEX m_policy_modifyTimestamp_idx ON m_policy (modifyTimestamp);



-- Represents ServiceType, see https://docs.evolveum.com/midpoint/reference/deployment/service-account-management/
CREATE TABLE m_service (
oid UUID NOT NULL PRIMARY KEY REFERENCES m_object_oid(oid),
Expand Down Expand Up @@ -2223,4 +2252,4 @@ END $$;
-- This is important to avoid applying any change more than once.
-- Also update SqaleUtils.CURRENT_SCHEMA_CHANGE_NUMBER
-- repo/repo-sqale/src/main/java/com/evolveum/midpoint/repo/sqale/SqaleUtils.java
call apply_change(26, $$ SELECT 1 $$, true);
call apply_change(28, $$ SELECT 1 $$, true);
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.common.cleanup.CleanupActionProcessor;
import com.evolveum.midpoint.common.cleanup.ObjectCleaner;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper;
Expand Down Expand Up @@ -131,7 +131,7 @@ public boolean isHeaderMenuItem() {
*/
public static <O extends ObjectType> PrismObject<O> duplicateObjectDefault(PrismObject<O> object) {
PrismObject<O> duplicate = object.cloneComplex(CloneStrategy.REUSE);
CleanupActionProcessor cleanupProcessor = new CleanupActionProcessor();
ObjectCleaner cleanupProcessor = new ObjectCleaner();
cleanupProcessor.setRemoveContainerIds(true);
cleanupProcessor.setPaths(List.of(new CleanupPath(CredentialsType.COMPLEX_TYPE, ItemPath.EMPTY_PATH, CleanupPathAction.REMOVE)));
cleanupProcessor.process(duplicate);
Expand All @@ -148,7 +148,7 @@ public static <C extends Containerable> PrismContainerValue<C> duplicateContaine
Collections.singletonList(container))
.iterator().next();
duplicate.setParent(container.getParent());
CleanupActionProcessor cleanupProcessor = new CleanupActionProcessor();
ObjectCleaner cleanupProcessor = new ObjectCleaner();
cleanupProcessor.setRemoveContainerIds(true);
cleanupProcessor.process(duplicate);
return duplicate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,9 @@ public enum ObjectTypeGuiDescriptor {

ASSIGNMENT_HOLDER_TYPE(ObjectTypes.ASSIGNMENT_HOLDER_TYPE, "ObjectTypeGuiDescriptor.assignmentHolderType", "", ""), //TODO icons

SIMULATION_RESULT(ObjectTypes.SIMULATION_RESULT, "ObjectType.SimulationResultType", "", "");
SIMULATION_RESULT(ObjectTypes.SIMULATION_RESULT, "ObjectType.SimulationResultType", "", ""),

POLICY(ObjectTypes.POLICY, "ObjectType.PolicyType", "", "");

public static final String ERROR_ICON = "fa-solid fa-triangle-exclamation text-warning";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,13 @@
package com.evolveum.midpoint.common.cleanup;

import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.PrismReference;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType;
import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType;

/**
* Listener that can be used to react on cleanup events created for items that are marked
* with action {@link CleanupPathAction#ASK}.
*/
public interface CleanupHandler {
public interface CleanerListener {

/**
* Method that allows consumers to react on cleanup event marked with action {@link CleanupPathAction#ASK}.
Expand All @@ -32,12 +28,4 @@ default boolean onConfirmOptionalCleanup(CleanupEvent<Item<?, ?>> event) {
default void onReferenceCleanup(CleanupEvent<PrismReference> event) {

}

default void onProtectedStringCleanup(CleanupEvent<PrismProperty<ProtectedStringType>> event) {

}

default void onMissingMappingNameCleanup(CleanupEvent<PrismContainer<MappingType>> event) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,9 @@

import com.evolveum.midpoint.util.LocalizableMessage;

public record CleanupMessage<D>(Type type, LocalizableMessage message, D data) {
public record CleanupItem<D>(
CleanupItemType type,
LocalizableMessage message,
D data) {

public enum Type {

MISSING_REFERENCE,

OPTIONAL_CLEANUP,

PROTECTED_STRING,

MISSING_MAPPING_NAME,

MULTIVALUE_REF_WITHOUT_OID
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.evolveum.midpoint.common.cleanup;

public enum CleanupItemType {

MISSING_REFERENCE,

OPTIONAL_CLEANUP
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ public enum CleanupPathAction {
/**
* Consumer is asked what to do.
*
* @see CleanupHandler
* @see CleanupActionProcessor#setHandler(CleanupHandler)
* @see CleanerListener
* @see ObjectCleaner#setListener(CleanerListener)
*/
ASK;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@

public class CleanupResult {

private List<CleanupMessage<?>> messages;
private List<CleanupItem<?>> messages;

public List<CleanupMessage<?>> getMessages() {
public List<CleanupItem<?>> getMessages() {
if (messages == null) {
messages = new ArrayList<>();
}
return messages;
}

public void setMessages(List<CleanupMessage<?>> messages) {
public void setMessages(List<CleanupItem<?>> messages) {
this.messages = messages;
}
}

0 comments on commit 1bec6c1

Please sign in to comment.