Skip to content

Commit

Permalink
MID-6319: AuditService added noop countObjects and searchObjects methods
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Jun 21, 2020
1 parent 7224283 commit a364a90
Show file tree
Hide file tree
Showing 6 changed files with 180 additions and 46 deletions.
@@ -1,17 +1,27 @@
/*
* Copyright (c) 2010-2017 Evolveum and contributors
* Copyright (c) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.audit.api;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CleanupPolicyType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationAuditType;

/**
Expand Down Expand Up @@ -60,4 +70,17 @@ public interface AuditService {
*/
default void applyAuditConfiguration(SystemConfigurationAuditType configuration) {
}

// TODO MID-6319 cleanup after done
// see com.evolveum.midpoint.repo.api.RepositoryService.countObjects for javadoc and rephrase it here
<T extends ObjectType> long countObjects(
Class<T> type, ObjectQuery query,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult)
throws SchemaException;

@NotNull
<T extends ObjectType> SearchResultList<PrismObject<T>> searchObjects(
Class<T> type, ObjectQuery query,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult)
throws SchemaException;
}
53 changes: 30 additions & 23 deletions repo/audit-impl/pom.xml
Expand Up @@ -24,34 +24,35 @@
<dependency>
<groupId>com.evolveum.midpoint.infra</groupId>
<artifactId>prism-api</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.infra</groupId>
<artifactId>prism-impl</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.infra</groupId>
<artifactId>schema</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.infra</groupId>
<artifactId>common</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.repo</groupId>
<artifactId>task-api</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.repo</groupId>
<artifactId>audit-api</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
Expand All @@ -65,21 +66,16 @@
<artifactId>slf4j-api</artifactId>
</dependency>

<!-- Testing dependencies -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
</dependency>

<!-- Testing dependencies -->
<dependency>
<groupId>com.evolveum.midpoint.repo</groupId>
<artifactId>repo-sql-impl</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -91,7 +87,24 @@
<dependency>
<groupId>com.evolveum.midpoint.repo</groupId>
<artifactId>repo-test-util</artifactId>
<version>4.2-SNAPSHOT</version>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.repo</groupId>
<artifactId>system-init</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -104,12 +117,6 @@
<artifactId>opendj</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.repo</groupId>
<artifactId>system-init</artifactId>
<version>4.2-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

<!-- TODO: reconsider, currently there is just one test commented out in the suite file -->
Expand Down
Expand Up @@ -14,6 +14,7 @@
import java.util.List;
import java.util.Map;

import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -23,7 +24,11 @@
import com.evolveum.midpoint.common.LoggingConfigurationManager;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CleanupPolicyType;
Expand Down Expand Up @@ -178,6 +183,20 @@ public void listRecordsIterative(String query, Map<String, Object> params,
@Override
public void reindexEntry(AuditEventRecord record) {
throw new UnsupportedOperationException("Reindex entry not supported");
}

@Override
public <T extends ObjectType> long countObjects(
Class<T> type, ObjectQuery query,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) {
throw new UnsupportedOperationException("countObjects not supported");
}

@Override
@NotNull
public <T extends ObjectType> SearchResultList<PrismObject<T>> searchObjects(
Class<T> type, ObjectQuery query,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) {
throw new UnsupportedOperationException("searchObjects not supported");
}
}
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010-2013 Evolveum and contributors
* Copyright (c) 2010-2020 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
Expand All @@ -17,10 +17,6 @@
import javax.persistence.criteria.CriteriaQuery;
import javax.xml.datatype.Duration;

import com.evolveum.midpoint.prism.util.CloneUtil;

import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationAuditType;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.hibernate.FlushMode;
Expand All @@ -30,6 +26,7 @@
import org.hibernate.engine.spi.RowSelection;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;

import com.evolveum.midpoint.audit.api.AuditEventRecord;
Expand All @@ -41,6 +38,8 @@
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.CanonicalItemPath;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.util.CloneUtil;
import com.evolveum.midpoint.repo.sql.SqlRepositoryConfiguration.Database;
import com.evolveum.midpoint.repo.sql.data.BatchSqlQuery;
import com.evolveum.midpoint.repo.sql.data.SelectQueryBuilder;
Expand All @@ -53,7 +52,10 @@
import com.evolveum.midpoint.repo.sql.util.GetObjectResult;
import com.evolveum.midpoint.repo.sql.util.RUtil;
import com.evolveum.midpoint.repo.sql.util.TemporaryTableDialect;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.SearchResultList;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DebugUtil;
Expand All @@ -64,6 +66,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CleanupPolicyType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationAuditType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

/**
Expand Down Expand Up @@ -183,6 +186,7 @@ public void listRecordsIterative(String query, Map<String, Object> params, Audit

}

// Hibernate-based
@Override
public void reindexEntry(AuditEventRecord record) {
final String operation = "reindexEntry";
Expand All @@ -203,6 +207,7 @@ public void reindexEntry(AuditEventRecord record) {
}
}

// Hibernate-based
private void reindexEntryAttempt(AuditEventRecord record) {
Session session = baseHelper.beginTransaction();
try {
Expand All @@ -228,6 +233,7 @@ private void reindexEntryAttempt(AuditEventRecord record) {

}

// Hibernate-based
private void listRecordsIterativeAttempt(String query, Map<String, Object> params,
AuditResultHandler handler, OperationResult result) {

Expand Down Expand Up @@ -400,6 +406,7 @@ private void setParametersToQuery(SelectQueryBuilder queryBuilder, Map<String, O
queryBuilder.addParameters(params);
}

// Hibernate-based
// using generic parameter to avoid typing warnings
private <X extends ObjectType> PrismObject<X> resolve(Session session, String oid, String defaultName, RObjectType defaultType) throws SchemaException {
if (oid == null) {
Expand All @@ -426,6 +433,7 @@ private <X extends ObjectType> PrismObject<X> resolve(Session session, String oi
return result;
}

// Hibernate-based
private void auditAttempt(AuditEventRecord record) {
Session session = baseHelper.beginTransaction();
try {
Expand Down Expand Up @@ -529,6 +537,7 @@ private void auditAttempt(AuditEventRecord record) {
}
}

// Hibernate-based
@Override
public void cleanupAudit(CleanupPolicyType policy, OperationResult parentResult) {
Validate.notNull(policy, "Cleanup policy must not be null.");
Expand All @@ -540,6 +549,7 @@ public void cleanupAudit(CleanupPolicyType policy, OperationResult parentResult)
cleanupAuditMaxAge(policy, parentResult);
}

// Hibernate-based
private void cleanupAuditMaxAge(CleanupPolicyType policy, OperationResult parentResult) {

if (policy.getMaxAge() == null) {
Expand Down Expand Up @@ -597,6 +607,7 @@ private void cleanupAuditMaxAge(CleanupPolicyType policy, OperationResult parent
}
}

// Hibernate-based
private void cleanupAuditMaxRecords(CleanupPolicyType policy, OperationResult parentResult) {

if (policy.getMaxRecords() == null) {
Expand Down Expand Up @@ -649,6 +660,7 @@ private void cleanupAuditMaxRecords(CleanupPolicyType policy, OperationResult pa
}
}

// Hibernate-based
private void checkTemporaryTablesSupport(Dialect dialect) {
TemporaryTableDialect ttDialect = TemporaryTableDialect.getTempTableDialect(dialect);

Expand All @@ -660,6 +672,7 @@ private void checkTemporaryTablesSupport(Dialect dialect) {
}
}

// Hibernate-based
// deletes one batch of records (using recordsSelector to select records according to particular cleanup policy)
private int batchDeletionAttempt(BiFunction<Session, String, Integer> recordsSelector, Holder<Integer> totalCountHolder,
long batchStart, Dialect dialect, OperationResult subResult) {
Expand Down Expand Up @@ -715,6 +728,7 @@ private int batchDeletionAttempt(BiFunction<Session, String, Integer> recordsSel
}
}

// Hibernate-based
private int selectRecordsByMaxAge(Session session, String tempTable, Date minValue, Dialect dialect) {

// fill temporary table, we don't need to join task on object on
Expand Down Expand Up @@ -744,6 +758,7 @@ private int selectRecordsByMaxAge(Session session, String tempTable, Date minVal
return query.executeUpdate();
}

// Hibernate-based
private int selectRecordsByNumberToKeep(Session session, String tempTable, Integer recordsToKeep, Dialect dialect) {
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(RAuditEventRecord.class);
Expand Down Expand Up @@ -780,6 +795,7 @@ private int selectRecordsByNumberToKeep(Session session, String tempTable, Integ
/**
* This method creates temporary table for cleanup audit method.
*/
// Hibernate-based
private void createTemporaryTable(Session session, final Dialect dialect, final String tempTable) {
session.doWork(connection -> {
// check if table exists
Expand Down Expand Up @@ -885,4 +901,19 @@ public Map<String, String> getCustomColumn() {
public void applyAuditConfiguration(SystemConfigurationAuditType configuration) {
this.auditConfiguration = CloneUtil.clone(configuration);
}

@Override
public <T extends ObjectType> long countObjects(
Class<T> type, ObjectQuery query,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) {
return 0;
}

@Override
@NotNull
public <T extends ObjectType> SearchResultList<PrismObject<T>> searchObjects(
Class<T> type, ObjectQuery query,
Collection<SelectorOptions<GetOperationOptions>> options, OperationResult parentResult) {
return new SearchResultList<>();
}
}

0 comments on commit a364a90

Please sign in to comment.