Package io.jmix.data.accesscontext
Class ReadEntityQueryContext
java.lang.Object
io.jmix.data.accesscontext.ReadEntityQueryContext
- All Implemented Interfaces:
AccessContext
Defines an authorization point for modifying JPQL queries by adding JOIN and WHERE clauses.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected List<ReadEntityQueryContext.Condition>
protected final MetaClass
protected final JmixQuery
protected final QueryTransformerFactory
protected final boolean
-
Constructor Summary
ConstructorsConstructorDescriptionReadEntityQueryContext
(JmixQuery originalQuery, MetaClass entityClass, QueryTransformerFactory transformerFactory) ReadEntityQueryContext
(JmixQuery originalQuery, QueryTransformerFactory transformerFactory, Metadata metadata) -
Method Summary
Modifier and TypeMethodDescriptionprotected String
actualizePlaceholder
(String queryPart, String actualEntityName, String actualEntityPath) ReplacesQueryTransformer.ALIAS_PLACEHOLDER
with actual entity path if query returns nested entity instead of the one specified in from clause.void
addJoinAndWhere
(String join, String where) protected void
Returns a human-readable explanation of constraints applied to the current context instance for logging of authorization decisions.protected static String
printQuery
(String query)
-
Field Details
-
queryTransformerFactory
-
originalQuery
-
entityClass
-
singleResult
protected final boolean singleResult -
conditions
-
-
Constructor Details
-
ReadEntityQueryContext
public ReadEntityQueryContext(JmixQuery originalQuery, MetaClass entityClass, QueryTransformerFactory transformerFactory) -
ReadEntityQueryContext
public ReadEntityQueryContext(JmixQuery originalQuery, QueryTransformerFactory transformerFactory, Metadata metadata)
-
-
Method Details
-
getEntityClass
-
addJoinAndWhere
-
getResultQuery
-
buildQuery
protected void buildQuery() -
actualizePlaceholder
protected String actualizePlaceholder(String queryPart, String actualEntityName, String actualEntityPath) ReplacesQueryTransformer.ALIAS_PLACEHOLDER
with actual entity path if query returns nested entity instead of the one specified in from clause.Example:
select u.group from sec$User u
u.group
should be used instead of{E}
. Otherwise, constraint will be applied to the user instead of the group.- Parameters:
queryPart
- to actualizeactualEntityName
- nested entity or null if query return type is the same as type in from clauseactualEntityPath
- query return entity path- Returns:
- queryPart with replaced placeholder if needed
-
printQuery
-
explainConstraints
Description copied from interface:AccessContext
Returns a human-readable explanation of constraints applied to the current context instance for logging of authorization decisions. Null if the current context does not impose any constraints.- Specified by:
explainConstraints
in interfaceAccessContext
-