Skip to content

Commit

Permalink
repo-sqale+audit: usage of *RepoContext.getInstance() hidden in mappings
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed May 3, 2021
1 parent 03848f2 commit 20ef7b0
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 23 deletions.
Expand Up @@ -66,6 +66,14 @@ protected SqaleTableMapping(
super(tableName, defaultAliasName, schemaType, queryType);
}

public SqaleRepoContext repositoryContext() {
SqaleRepoContext repositoryContext = (SqaleRepoContext) super.repositoryContext();
return repositoryContext != null
? repositoryContext
// TODO remove this branch
: SqaleRepoContext.getInstance();
}

/**
* Returns the mapper creating the string filter/delta processors from context.
*
Expand Down Expand Up @@ -232,8 +240,7 @@ protected ObjectReferenceType objectReferenceType(

return new ObjectReferenceType()
.oid(oid)
.type(SqaleRepoContext.getInstance()
.schemaClassToQName(repoObjectType.getSchemaType()))
.type(repositoryContext().schemaClassToQName(repoObjectType.getSchemaType()))
.description(targetName)
.targetName(targetName);
}
Expand All @@ -251,12 +258,12 @@ protected ObjectReferenceType objectReferenceType(
}

protected @NotNull Integer searchCachedRelationId(QName qName) {
return SqaleRepoContext.getInstance().searchCachedRelationId(qName);
return repositoryContext().searchCachedRelationId(qName);
}

/** Returns ID for cached URI without going to the database. */
protected Integer resolveUriToId(String uri) {
return SqaleRepoContext.getInstance().resolveUriToId(uri);
return repositoryContext().resolveUriToId(uri);
}

/**
Expand All @@ -265,21 +272,20 @@ protected Integer resolveUriToId(String uri) {
* Never returns null, returns default ID for configured default relation.
*/
protected Integer processCacheableRelation(QName qName) {
return SqaleRepoContext.getInstance().processCacheableRelation(qName);
return repositoryContext().processCacheableRelation(qName);
}

/** Returns ID for URI creating new cache row in DB as needed. */
protected Integer processCacheableUri(String uri) {
return uri != null
? SqaleRepoContext.getInstance().processCacheableUri(uri)
? repositoryContext().processCacheableUri(uri)
: null;
}

/** Returns ID for URI creating new cache row in DB as needed. */
protected Integer processCacheableUri(QName qName) {
return qName != null
? SqaleRepoContext.getInstance()
.processCacheableUri(QNameUtil.qNameToUri(qName))
? repositoryContext().processCacheableUri(QNameUtil.qNameToUri(qName))
: null;
}

Expand All @@ -302,8 +308,7 @@ protected Integer[] processCacheableUris(List<String> uris) {

protected MObjectType schemaTypeToObjectType(QName schemaType) {
return schemaType == null ? null :
MObjectType.fromSchemaType(
SqaleRepoContext.getInstance().qNameToSchemaClass(schemaType));
MObjectType.fromSchemaType(repositoryContext().qNameToSchemaClass(schemaType));
}

protected void setPolyString(PolyStringType polyString,
Expand Down
Expand Up @@ -22,7 +22,6 @@
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.SerializationOptions;
import com.evolveum.midpoint.repo.sqale.SqaleRepoContext;
import com.evolveum.midpoint.repo.sqale.SqaleUtils;
import com.evolveum.midpoint.repo.sqale.qmodel.SqaleTableMapping;
import com.evolveum.midpoint.repo.sqale.qmodel.assignment.QAssignmentMapping;
Expand Down Expand Up @@ -199,7 +198,7 @@ public S toSchemaObject(Tuple row, Q entityPath,
String serializedForm = new String(fullObject, StandardCharsets.UTF_8);
try {
RepositoryObjectParseResult<S> result =
SqaleRepoContext.getInstance().parsePrismObject(serializedForm);
repositoryContext().parsePrismObject(serializedForm);
prismObject = result.prismObject;
if (result.parsingContext.hasWarnings()) {
logger.warn("Object {} parsed with {} warnings",
Expand Down Expand Up @@ -354,7 +353,7 @@ public byte[] createFullObject(S schemaObject) throws SchemaException {
"Serialized object must have assigned OID and version: " + schemaObject);
}

return SqaleRepoContext.getInstance().createStringSerializer()
return repositoryContext().createStringSerializer()
.itemsToSkip(fullObjectItemsToSkip())
.options(SerializationOptions
.createSerializeReferenceNamesForNullOids()
Expand Down
Expand Up @@ -63,8 +63,7 @@ protected ObjectReferenceType objectReferenceType(

return new ObjectReferenceType()
.oid(oid)
.type(SqlRepoContext.getInstance()
.schemaClassToQName(repoObjectType.getJaxbClass()))
.type(repositoryContext().schemaClassToQName(repoObjectType.getJaxbClass()))
.description(targetName)
.targetName(targetName);
}
Expand Down
Expand Up @@ -15,7 +15,6 @@
import com.evolveum.midpoint.repo.sql.audit.beans.MAuditDelta;
import com.evolveum.midpoint.repo.sql.audit.querymodel.QAuditDelta;
import com.evolveum.midpoint.repo.sql.util.RUtil;
import com.evolveum.midpoint.repo.sqlbase.SqlRepoContext;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectDeltaOperationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType;
Expand Down Expand Up @@ -44,8 +43,7 @@ protected QAuditDelta newAliasInstance(String alias) {

public ObjectDeltaOperationType toSchemaObject(MAuditDelta row) {
ObjectDeltaOperationType odo = new ObjectDeltaOperationType();
SQLTemplates querydslTemplates =
SqlRepoContext.getInstance().getQuerydslTemplates();
SQLTemplates querydslTemplates = repositoryContext().getQuerydslTemplates();

boolean usingSqlServer = querydslTemplates instanceof SQLServerTemplates;
odo.setObjectDelta(parseBytes(row.delta, usingSqlServer, ObjectDeltaType.class));
Expand All @@ -70,7 +68,7 @@ private <T> T parseBytes(byte[] bytes, boolean usingSqlServer, Class<T> clazz) {
}

try {
return SqlRepoContext.getInstance()
return repositoryContext()
.createStringParser(RUtil.getSerializedFormFromBytes(bytes, usingSqlServer))
.compat()
.parseRealValue(clazz);
Expand Down
Expand Up @@ -28,7 +28,6 @@
import com.evolveum.midpoint.repo.sql.data.audit.RAuditEventType;
import com.evolveum.midpoint.repo.sql.data.common.enums.ROperationResultStatus;
import com.evolveum.midpoint.repo.sql.data.common.other.RObjectType;
import com.evolveum.midpoint.repo.sqlbase.SqlRepoContext;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.CanonicalItemPathItemFilterProcessor;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.DetailTableItemFilterProcessor;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.EnumOrdinalItemFilterProcessor;
Expand Down Expand Up @@ -149,7 +148,7 @@ public AuditEventRecordType toSchemaObject(MAuditEventRecord row) {

private AuditEventRecordType mapSimpleAttributes(MAuditEventRecord row) {
// prismContext in constructor ensures complex type definition
return new AuditEventRecordType(SqlRepoContext.getInstance().prismContext())
return new AuditEventRecordType(repositoryContext().prismContext())
.repoId(row.id)
.channel(row.channel)
.eventIdentifier(row.eventIdentifier)
Expand Down Expand Up @@ -326,8 +325,7 @@ public MAuditEventRecord toRowObject(AuditEventRecord record) {

private Integer targetTypeToRepoOrdinal(PrismReferenceValue targetOwner) {
//noinspection rawtypes
Class objectClass = SqlRepoContext.getInstance()
.qNameToSchemaClass(targetOwner.getTargetType());
Class objectClass = repositoryContext().qNameToSchemaClass(targetOwner.getTargetType());
//noinspection unchecked
return MiscUtil.enumOrdinal(RObjectType.getByJaxbType(objectClass));
}
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.evolveum.midpoint.repo.sqlbase.QueryException;
import com.evolveum.midpoint.repo.sqlbase.RepositoryException;
import com.evolveum.midpoint.repo.sqlbase.SqlQueryContext;
import com.evolveum.midpoint.repo.sqlbase.SqlRepoContext;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.PolyStringItemFilterProcessor;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.SimpleItemFilterProcessor;
import com.evolveum.midpoint.repo.sqlbase.filtering.item.TimestampItemFilterProcessor;
Expand Down Expand Up @@ -68,6 +69,7 @@ public abstract class QueryTableMapping<S, Q extends FlexibleRelationalPathBase<

private final String tableName;
private final String defaultAliasName;
private final SqlRepoContext repositoryContext;

/**
* Extension columns, key = propertyName which may differ from ColumnMetadata.getName().
Expand All @@ -88,6 +90,28 @@ public abstract class QueryTableMapping<S, Q extends FlexibleRelationalPathBase<
* @param defaultAliasName default alias name, some short abbreviation, must be unique
* across mapped types
*/
protected QueryTableMapping(
@NotNull String tableName,
@NotNull String defaultAliasName,
@NotNull Class<S> schemaType,
@NotNull Class<Q> queryType,
@NotNull SqlRepoContext repositoryContext) {
super(schemaType, queryType);
this.tableName = tableName;
this.defaultAliasName = defaultAliasName;
this.repositoryContext = repositoryContext;
}

/**
* Creates metamodel for the table described by designated type (Q-class) related to schema type.
* Allows registration of any number of columns - typically used for static properties
* (non-extensions).
*
* @param tableName database table name
* @param defaultAliasName default alias name, some short abbreviation, must be unique
* across mapped types
*/
@Deprecated
protected QueryTableMapping(
@NotNull String tableName,
@NotNull String defaultAliasName,
Expand All @@ -96,6 +120,9 @@ protected QueryTableMapping(
super(schemaType, queryType);
this.tableName = tableName;
this.defaultAliasName = defaultAliasName;

// TODO remove this constructor, use the one above only
this.repositoryContext = null;
}

/**
Expand Down Expand Up @@ -219,6 +246,13 @@ public String defaultAliasName() {
return defaultAliasName;
}

public SqlRepoContext repositoryContext() {
return repositoryContext != null
? repositoryContext
// TODO remove this branch
: SqlRepoContext.getInstance();
}

/**
* Creates new alias (entity path instance) with a defined name.
* You can also use {@link #defaultAlias()} if one alias in a query is enough.
Expand Down

0 comments on commit 20ef7b0

Please sign in to comment.