private void visitPathExpression(AbstractPathExpression expression, boolean nullAllowed, int lastIndex) { PathResolver resolver = new PathResolver(); resolver.length = lastIndex; resolver.nullAllowed = nullAllowed; resolver.checkMappingType = false; resolver.localExpression = null; resolver.descriptor = null; expression.accept(resolver); queryExpression = resolver.localExpression; }
private void visitPathExpression(AbstractPathExpression expression, boolean nullAllowed, int lastIndex) { PathResolver resolver = new PathResolver(); resolver.length = lastIndex; resolver.nullAllowed = nullAllowed; resolver.checkMappingType = false; resolver.localExpression = null; resolver.descriptor = null; resolver.nullAllowedInSortBy = nullAllowedInSortBy; resolver.isNullExpression = isNullExpression; expression.accept(resolver); queryExpression = resolver.localExpression; }
/** * Determines whether the given {@link AbstractPathExpression} is found within a declaration expression. * * @param expression The {@link AbstractPathExpression} to visit * @return <code>true</code> if the visited {@link CollectionValuedPathExpression} is owned by * a {@link RangeVariableDeclaration}, which indicates it is used to define the "root" object; * <code>false</code> if it is not */ protected boolean isDeclaration(AbstractPathExpression expression) { DeclarationVisitor visitor = getDeclarationVisitor(); try { expression.accept(visitor); return visitor.isDeclaration(); } finally { visitor.dispose(); } }
/** * Determines whether the given {@link AbstractPathExpression} could potentially represent a * fully qualified enum constant, which is dictated by the location of the path expression within * the query. Only a few location allows an enum constant. * * @param expression The {@link AbstractPathExpression} to visit * @return <code>true</code> if the path expression represents a enum constant; * <code>false</code> otherwise */ protected boolean isEnumAllowed(AbstractPathExpression expression) { EnumVisitor visitor = getEnumVisitor(); try { visitor.pathExpression = expression; expression.accept(visitor); return visitor.isValid(); } finally { visitor.dispose(); } }
private Class<?> resolveMappingType(AbstractPathExpression expression) { PathResolver resolver = pathResolver(); QueryKey oldQueryKey = resolver.queryKey; DatabaseMapping oldMapping = resolver.mapping; ClassDescriptor oldDescriptor = resolver.descriptor; try { resolver.mapping = null; resolver.descriptor = null; resolver.queryKey = null; expression.accept(resolver); if (resolver.mapping != null) { return calculateMappingType(resolver.mapping); } else if (resolver.queryKey != null) { return calculateQueryKeyType(resolver.queryKey); } else { return queryContext.getEnumType(expression.toParsedText()); } } finally { resolver.mapping = oldMapping; resolver.queryKey = oldQueryKey; resolver.descriptor = oldDescriptor; } }
private Class<?> resolveMappingType(AbstractPathExpression expression) { PathResolver resolver = pathResolver(); QueryKey oldQueryKey = resolver.queryKey; DatabaseMapping oldMapping = resolver.mapping; ClassDescriptor oldDescriptor = resolver.descriptor; try { resolver.mapping = null; resolver.descriptor = null; resolver.queryKey = null; expression.accept(resolver); if (resolver.mapping != null) { return calculateMappingType(resolver.mapping); } else if (resolver.queryKey != null) { return calculateQueryKeyType(resolver.queryKey); } else { return queryContext.getEnumType(expression.toParsedText()); } } finally { resolver.mapping = oldMapping; resolver.queryKey = oldQueryKey; resolver.descriptor = oldDescriptor; } }