Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Aug 23, 2021
2 parents 40469e9 + 44c520b commit 06a86ae
Show file tree
Hide file tree
Showing 33 changed files with 89 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,18 @@ public SqaleRepoContext(
querydslConfig.register(new EnumAsObjectType<>(MObjectType.class));
querydslConfig.register(new EnumAsObjectType<>(MReferenceType.class));
querydslConfig.register(new EnumAsObjectType<>(LockoutStatusType.class));
querydslConfig.register(new EnumAsObjectType<>(NodeOperationalStateType.class));
querydslConfig.register(new EnumAsObjectType<>(OperationExecutionRecordTypeType.class));
querydslConfig.register(new EnumAsObjectType<>(OperationResultStatusType.class));
querydslConfig.register(new EnumAsObjectType<>(OrientationType.class));
querydslConfig.register(new EnumAsObjectType<>(ResourceAdministrativeStateType.class));
querydslConfig.register(new EnumAsObjectType<>(ShadowKindType.class));
querydslConfig.register(new EnumAsObjectType<>(SynchronizationSituationType.class));
querydslConfig.register(new EnumAsObjectType<>(TaskAutoScalingModeType.class));
querydslConfig.register(new EnumAsObjectType<>(TaskBindingType.class));
querydslConfig.register(new EnumAsObjectType<>(TaskExecutionStateType.class));
querydslConfig.register(new EnumAsObjectType<>(TaskRecurrenceType.class));
querydslConfig.register(new EnumAsObjectType<>(TaskSchedulingStateType.class));
querydslConfig.register(new EnumAsObjectType<>(TaskWaitingReasonType.class));
querydslConfig.register(new EnumAsObjectType<>(ThreadStopActionType.class));
querydslConfig.register(new EnumAsObjectType<>(TimeIntervalStatusType.class));
Expand All @@ -85,7 +88,7 @@ public void clearCaches() {
*/
public @NotNull Integer searchCachedUriId(@NotNull Object uri) {
if (uri instanceof QName) {
return uriCache.searchId((QName) uri);
return uriCache.searchId(uri);
} else {
return uriCache.searchId(uri.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,8 @@ RootUpdateContext<S, Q, R> prepareUpdateContext(
throw new ObjectNotFoundException(schemaType, oid.toString());
}

S object = rootMapping.toSchemaObject(result, entityPath, Collections.emptyList(), jdbcSession, true);
S object = rootMapping.toSchemaObject(
result, entityPath, Collections.emptyList(), jdbcSession, true);

R rootRow = rootMapping.newRowObject();
rootRow.oid = oid;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import com.evolveum.midpoint.repo.sqlbase.filtering.item.SimpleItemFilterProcessor;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.TimestampItemFilterProcessor;
import com.evolveum.midpoint.repo.sqlbase.mapping.ItemSqlMapper;
import com.evolveum.midpoint.repo.sqlbase.mapping.QueryModelMappingRegistry;
import com.evolveum.midpoint.repo.sqlbase.mapping.QueryTableMapping;
import com.evolveum.midpoint.repo.sqlbase.querydsl.FlexibleRelationalPathBase;
import com.evolveum.midpoint.repo.sqlbase.querydsl.UuidPath;
Expand All @@ -65,7 +64,7 @@
* Mapping superclass with common functions for {@link QObject} and non-objects (e.g. containers).
* See javadoc in {@link QueryTableMapping} for more.
*
* Mappings are often initialized using static `init*(repositoryContext)` methods, various
* Mappings are typically initialized using static `init*(repositoryContext)` methods, various
* suffixes are used for these reasons:
*
* * To differentiate various instances for the same mapping type, e.g. various references
Expand All @@ -75,10 +74,12 @@
* * And finally, to avoid accidental use of static method from the superclass (this should not
* be even a thing!).
*
* Some subclasses (typically containers and refs) track their instances and avoid unnecessary
* instance creation for the same init method; the instance is available via matching `get*()`.
* Other subclasses (most objects) don't have `get*()` methods but can be obtained using
* {@link QueryModelMappingRegistry#getByQueryType(Class)}, or by schema type (e.g. in tests).
* For object mappings the reuse is not that important and mapping is simply reinitialized.
* For container and ref mappings the same instance can be reused from various subclasses
* of object mapping and reuse is desired.
* Initialization method does not check only `null` but also forces reinitialization if different
* `repositoryContext` is provided; this is only used for testing purposes.
* Mappings are not built to be run with multiple repository contexts in the same runtime.
*
* [IMPORTANT]
* ====
Expand Down Expand Up @@ -111,6 +112,11 @@ protected SqaleTableMapping(

}

protected static boolean needsInitialization(
SqaleTableMapping<?, ?, ?> instance, SqaleRepoContext repositoryContext) {
return instance == null || instance.repositoryContext() != repositoryContext;
}

@Override
public SqaleRepoContext repositoryContext() {
return (SqaleRepoContext) super.repositoryContext();
Expand Down Expand Up @@ -183,7 +189,7 @@ protected ItemSqlMapper<Q, R> polyStringMapper(
@NotNull Function<Q, StringPath> origMapping,
@NotNull Function<Q, StringPath> normMapping) {
return new SqaleItemSqlMapper<>(
ctx -> new PolyStringItemFilterProcessor(ctx, origMapping, normMapping),
ctx -> new PolyStringItemFilterProcessor<>(ctx, origMapping, normMapping),
ctx -> new PolyStringItemDeltaProcessor(ctx, origMapping, normMapping),
origMapping);
}
Expand Down Expand Up @@ -470,8 +476,12 @@ protected Collection<? extends QName> fullObjectItemsToSkip() {
return Collections.emptyList();
}

public S toSchemaObject(Tuple result, Q root,
Collection<SelectorOptions<GetOperationOptions>> options, @NotNull JdbcSession jdbcSession, boolean forceFull) throws SchemaException {
public S toSchemaObject(
Tuple result,
Q root,
Collection<SelectorOptions<GetOperationOptions>> options,
@NotNull JdbcSession jdbcSession,
boolean forceFull) throws SchemaException {
return toSchemaObject(result, root, options);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,7 @@ public class QAccessCertificationCampaignMapping
// Explanation in class Javadoc for SqaleTableMapping
public static QAccessCertificationCampaignMapping initAccessCertificationCampaignMapping(
@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QAccessCertificationCampaignMapping(repositoryContext);
}
instance = new QAccessCertificationCampaignMapping(repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public class QAccessCertificationCaseMapping
// Explanation in class Javadoc for SqaleTableMapping
public static QAccessCertificationCaseMapping initAccessCertificationCaseMapping(
@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
if (needsInitialization(instance, repositoryContext)) {
instance = new QAccessCertificationCaseMapping(repositoryContext);
}
return instance;
Expand Down Expand Up @@ -226,8 +226,11 @@ public void afterModify(
updateContext.set(updateContext.entityPath().fullObject, fullObject);
}

public void storeWorkItems(@NotNull MAccessCertificationCampaign campaignRow,
@NotNull MAccessCertificationCase caseRow, @NotNull AccessCertificationCaseType schemaObject, @NotNull JdbcSession jdbcSession) throws SchemaException {
public void storeWorkItems(
@NotNull MAccessCertificationCampaign campaignRow,
@NotNull MAccessCertificationCase caseRow,
@NotNull AccessCertificationCaseType schemaObject,
@NotNull JdbcSession jdbcSession) throws SchemaException {

List<AccessCertificationWorkItemType> wis = schemaObject.getWorkItem();
if (!wis.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,7 @@ public class QAccessCertificationDefinitionMapping
// Explanation in class Javadoc for SqaleTableMapping
public static QAccessCertificationDefinitionMapping init(
@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QAccessCertificationDefinitionMapping(repositoryContext);
}
instance = new QAccessCertificationDefinitionMapping(repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class QAccessCertificationWorkItemMapping

public static QAccessCertificationWorkItemMapping init(
@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
if (needsInitialization(instance, repositoryContext)) {
instance = new QAccessCertificationWorkItemMapping(repositoryContext);
}
return get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class QAccessCertificationWorkItemReferenceMapping

public static QAccessCertificationWorkItemReferenceMapping
initForCaseWorkItemAssignee(@NotNull SqaleRepoContext repositoryContext) {
if (instanceAssignee == null) {
if (needsInitialization(instanceAssignee, repositoryContext)) {
instanceAssignee = new QAccessCertificationWorkItemReferenceMapping(
"m_access_cert_wi_assignee", "acwirefa", repositoryContext,
new RefTableTargetResolver<>(QUserMapping::getUserMapping));
Expand All @@ -50,7 +50,7 @@ public static QAccessCertificationWorkItemReferenceMapping getForCaseWorkItemAss

public static QAccessCertificationWorkItemReferenceMapping
initForCaseWorkItemCandidate(@NotNull SqaleRepoContext repositoryContext) {
if (instanceCandidate == null) {
if (needsInitialization(instanceCandidate, repositoryContext)) {
instanceCandidate = new QAccessCertificationWorkItemReferenceMapping(
"m_access_cert_wi_candidate", "acwirefc", repositoryContext,
new RefTableTargetResolver<>(QFocusMapping::getFocusMapping));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public class QAssignmentMapping<OR extends MObject>
// Explanation in class Javadoc for SqaleTableMapping
public static <OR extends MObject> QAssignmentMapping<OR>
initAssignmentMapping(@NotNull SqaleRepoContext repositoryContext) {
if (instanceAssignment == null) {
if (needsInitialization(instanceAssignment, repositoryContext)) {
instanceAssignment = new QAssignmentMapping<>(
MContainerType.ASSIGNMENT, repositoryContext);
}
Expand All @@ -70,7 +70,7 @@ public static <OR extends MObject> QAssignmentMapping<OR> getAssignmentMapping()
// Explanation in class Javadoc for SqaleTableMapping
public static <OR extends MObject> QAssignmentMapping<OR>
initInducementMapping(@NotNull SqaleRepoContext repositoryContext) {
if (instanceInducement == null) {
if (needsInitialization(instanceInducement, repositoryContext)) {
instanceInducement = new QAssignmentMapping<>(
MContainerType.INDUCEMENT, repositoryContext);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class QAssignmentReferenceMapping<AOR extends MObject>

public static <OR extends MObject> QAssignmentReferenceMapping<OR>
initForAssignmentCreateApprover(@NotNull SqaleRepoContext repositoryContext) {
if (instanceAssignmentCreateApprover == null) {
if (needsInitialization(instanceAssignmentCreateApprover, repositoryContext)) {
instanceAssignmentCreateApprover = new QAssignmentReferenceMapping<>(
"m_assignment_ref_create_approver", "arefca", repositoryContext,
new RefTableTargetResolver<>(QUserMapping::getUserMapping));
Expand All @@ -53,7 +53,7 @@ public class QAssignmentReferenceMapping<AOR extends MObject>

public static <OR extends MObject> QAssignmentReferenceMapping<OR>
initForAssignmentModifyApprover(@NotNull SqaleRepoContext repositoryContext) {
if (instanceAssignmentModifyApprover == null) {
if (needsInitialization(instanceAssignmentModifyApprover, repositoryContext)) {
instanceAssignmentModifyApprover = new QAssignmentReferenceMapping<>(
"m_assignment_ref_modify_approver", "arefma", repositoryContext,
new RefTableTargetResolver<>(QUserMapping::getUserMapping));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ public class QCaseMapping

// Explanation in class Javadoc for SqaleTableMapping
public static QCaseMapping initCaseMapping(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QCaseMapping(repositoryContext);
}
instance = new QCaseMapping(repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class QCaseWorkItemMapping
// Explanation in class Javadoc for SqaleTableMapping
public static QCaseWorkItemMapping initCaseWorkItemMapping(
@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
if (needsInitialization(instance, repositoryContext)) {
instance = new QCaseWorkItemMapping(repositoryContext);
}
return instance;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class QCaseWorkItemReferenceMapping

public static QCaseWorkItemReferenceMapping
initForCaseWorkItemAssignee(@NotNull SqaleRepoContext repositoryContext) {
if (instanceAssignee == null) {
if (needsInitialization(instanceAssignee, repositoryContext)) {
instanceAssignee = new QCaseWorkItemReferenceMapping(
"m_case_wi_assignee", "cwirefa", repositoryContext,
new RefTableTargetResolver<>(QUserMapping::getUserMapping));
Expand All @@ -50,7 +50,7 @@ public static QCaseWorkItemReferenceMapping getForCaseWorkItemAssignee() {

public static QCaseWorkItemReferenceMapping
initForCaseWorkItemCandidate(@NotNull SqaleRepoContext repositoryContext) {
if (instanceCandidate == null) {
if (needsInitialization(instanceCandidate, repositoryContext)) {
instanceCandidate = new QCaseWorkItemReferenceMapping(
"m_case_wi_candidate", "cwirefc", repositoryContext,
new RefTableTargetResolver<>(QFocusMapping::getFocusMapping));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@ public class QConnectorHostMapping

// Explanation in class Javadoc for SqaleTableMapping
public static QConnectorHostMapping init(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QConnectorHostMapping(repositoryContext);
}
instance = new QConnectorHostMapping(repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ public class QConnectorMapping

// Explanation in class Javadoc for SqaleTableMapping
public static QConnectorMapping init(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QConnectorMapping(repositoryContext);
}
instance = new QConnectorMapping(repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,9 @@ public class QFocusMapping<S extends FocusType, Q extends QFocus<R>, R extends M

// Explanation in class Javadoc for SqaleTableMapping
public static QFocusMapping<?, ?, ?> initFocusMapping(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QFocusMapping<>(QFocus.TABLE_NAME, DEFAULT_ALIAS_NAME,
FocusType.class, QFocus.CLASS,
repositoryContext);
}
instance = new QFocusMapping<>(QFocus.TABLE_NAME, DEFAULT_ALIAS_NAME,
FocusType.class, QFocus.CLASS,
repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ public class QUserMapping

// Explanation in class Javadoc for SqaleTableMapping
public static QUserMapping initUserMapping(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QUserMapping(repositoryContext);
}
instance = new QUserMapping(repositoryContext);
return instance;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@

import static com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType.F_ROW;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.UUID;

import java.util.*;
import javax.xml.namespace.QName;

import com.google.common.base.Strings;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.StringPath;
import com.querydsl.sql.SQLQuery;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand All @@ -33,11 +33,6 @@
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableRowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LookupTableType;
import com.google.common.base.Strings;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.StringPath;
import com.querydsl.sql.SQLQuery;

/**
* Mapping between {@link QLookupTable} and {@link LookupTableType}.
Expand All @@ -50,9 +45,7 @@ public class QLookupTableMapping

// Explanation in class Javadoc for SqaleTableMapping
public static QLookupTableMapping init(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QLookupTableMapping(repositoryContext);
}
instance = new QLookupTableMapping(repositoryContext);
return instance;
}

Expand Down Expand Up @@ -101,7 +94,7 @@ protected Collection<? extends QName> fullObjectItemsToSkip() {

@Override
public LookupTableType toSchemaObject(Tuple row, QLookupTable entityPath,
Collection<SelectorOptions<GetOperationOptions>> options, JdbcSession session, boolean forceFull) throws SchemaException {
Collection<SelectorOptions<GetOperationOptions>> options, @NotNull JdbcSession session, boolean forceFull) throws SchemaException {
LookupTableType base = super.toSchemaObject(row, entityPath, options);

if (forceFull || SelectorOptions.hasToLoadPath(F_ROW, options)) {
Expand All @@ -119,7 +112,6 @@ private void appendLookupTableRows(UUID ownerOid, LookupTableType base, GetOpera
QLookupTableRowMapping rowMapping = QLookupTableRowMapping.get();
QLookupTableRow alias = rowMapping.defaultAlias();


BooleanExpression whereQuery = appendConditions(alias, alias.ownerOid.eq(ownerOid), queryDef);
SQLQuery<MLookupTableRow> query = session.newQuery()
.from(alias)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class QLookupTableRowMapping

// Explanation in class Javadoc for SqaleTableMapping
public static QLookupTableRowMapping init(@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
if (needsInitialization(instance, repositoryContext)) {
instance = new QLookupTableRowMapping(repositoryContext);
}
return instance;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,9 @@ public class QAssignmentHolderMapping<
// Explanation in class Javadoc for SqaleTableMapping
public static QAssignmentHolderMapping<?, ?, ?> initAssignmentHolderMapping(
@NotNull SqaleRepoContext repositoryContext) {
if (instance == null) {
instance = new QAssignmentHolderMapping<>(QAssignmentHolder.TABLE_NAME, DEFAULT_ALIAS_NAME,
AssignmentHolderType.class, QAssignmentHolder.CLASS,
repositoryContext);
}
instance = new QAssignmentHolderMapping<>(QAssignmentHolder.TABLE_NAME, DEFAULT_ALIAS_NAME,
AssignmentHolderType.class, QAssignmentHolder.CLASS,
repositoryContext);
return instance;
}

Expand Down

0 comments on commit 06a86ae

Please sign in to comment.