blob: 0a1a8cc03373e10dd2b596b821cf29ed566c2197 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_252) on Fri Jul 16 09:38:45 UTC 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ExpressionRegistry (EclipseLink 3.0.2, API Reference)</title>
<meta name="date" content="2021-07-16">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ExpressionRegistry (EclipseLink 3.0.2, API Reference)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionVisitor.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" target="_top">Frames</a></li>
<li><a href="ExpressionRegistry.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.persistence.jpa.jpql.parser</div>
<h2 title="Class ExpressionRegistry" class="title">Class ExpressionRegistry</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.persistence.jpa.jpql.parser.ExpressionRegistry</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">ExpressionRegistry</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">This registry contains the necessary information used by Hermes parser. When parsing a JPQL query,
the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> given to <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLExpression.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLExpression</code></a> will give access to this registry.
<p>
Provisional API: This interface is part of an interim API that is still under development and
expected to change significantly before reaching stability. It is available at this early stage
to solicit feedback from pioneering adopters on the understanding that any code that uses this
API will almost certainly be broken (repeatedly) as the API evolves.</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>2.5</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a>,
<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a>,
<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a></dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Pascal Filion</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.4</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#ExpressionRegistry--">ExpressionRegistry</a></span>()</code>
<div class="block">Creates the only instance of <code>ExpressionRegistry</code>.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#addChildBNF-java.lang.String-java.lang.String-">addChildBNF</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;childQueryBNFId)</code>
<div class="block">Adds to the given query BNF a child BNF.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#addChildFactory-java.lang.String-java.lang.String-">addChildFactory</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;childExpressionFactoryId)</code>
<div class="block">Adds to the given unique identifier of an <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to the given query BNF.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#addIdentifier-java.lang.String-java.lang.String-">addIdentifier</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expressionFactoryId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</code>
<div class="block">Adds the given JPQL identifier to this factory.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#addIdentifiers-java.lang.String-java.lang.String...-">addIdentifiers</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expressionFactoryId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;identifiers)</code>
<div class="block">Adds the given JPQL identifiers to this factory.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#expressionFactoryForIdentifier-java.lang.String-">expressionFactoryForIdentifier</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</code>
<div class="block">Retrieves the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> that is responsible for creating the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/Expression.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>Expression</code></a>
object that represents the given JPQL identifier.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionFactory</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#getExpressionFactory-java.lang.String-">getExpressionFactory</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expressionFactoryId)</code>
<div class="block">Retrieves the registered <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> that was registered for the given unique identifier.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser">IdentifierRole</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#getIdentifierRole-java.lang.String-">getIdentifierRole</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</code>
<div class="block">Retrieves the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser"><code>IdentifierRole</code></a> of the given JPQL identifier.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#getIdentifiers--">getIdentifiers</a></span>()</code>
<div class="block">Returns the JPQL identifiers that are supported by the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQL grammar</code></a>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#getIdentifiers-java.lang.String-">getIdentifiers</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId)</code>
<div class="block">Retrieves the JPQL identifiers that are supported by the BNF rule with the given unique
identifier.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql">JPAVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#getIdentifierVersion-java.lang.String-">getIdentifierVersion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</code>
<div class="block">Retrieves the JPA version in which the identifier was first introduced.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLQueryBNF</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#getQueryBNF-java.lang.String-">getQueryBNF</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId)</code>
<div class="block">Retrieves the BNF object that was registered for the given unique identifier.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#initialize--">initialize</a></span>()</code>
<div class="block">Instantiates the only instance of various API used by the parser.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#isIdentifier-java.lang.String-">isIdentifier</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;text)</code>
<div class="block">Determines if the given word is a JPQL identifier.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#registerBNF-org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF-">registerBNF</a></span>(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLQueryBNF</a>&nbsp;queryBNF)</code>
<div class="block">Registers the given <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a>.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#registerFactory-org.eclipse.persistence.jpa.jpql.parser.ExpressionFactory-">registerFactory</a></span>(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionFactory</a>&nbsp;expressionFactory)</code>
<div class="block">Registers the given <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> by storing it for all its identifiers.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#registerIdentifierRole-java.lang.String-org.eclipse.persistence.jpa.jpql.parser.IdentifierRole-">registerIdentifierRole</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser">IdentifierRole</a>&nbsp;role)</code>
<div class="block">Registers the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser"><code>IdentifierRole</code></a> for the given JPQL identifier.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#registerIdentifierVersion-java.lang.String-org.eclipse.persistence.jpa.jpql.JPAVersion-">registerIdentifierVersion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
<a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql">JPAVersion</a>&nbsp;version)</code>
<div class="block">Registers the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql"><code>JPAVersion</code></a> for which the given JPQL identifier was defined.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#setFallbackBNFId-java.lang.String-java.lang.String-">setFallbackBNFId</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fallbackBNFId)</code>
<div class="block">When parsing the query and no <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNFs</code></a> can help to parse the query,
then it will fall back on the given one.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#setFallbackExpressionFactoryId-java.lang.String-java.lang.String-">setFallbackExpressionFactoryId</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fallbackExpressionFactoryId)</code>
<div class="block">Sets the unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to use when the fall back BNF
ID is not <code>null</code>.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#setHandleCollection-java.lang.String-boolean-">setHandleCollection</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
boolean&nbsp;handleCollection)</code>
<div class="block">Determines whether the <code>Expression</code> handles a collection of sub-expressions that
are separated by commas.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#setHandleNestedArray-java.lang.String-boolean-">setHandleNestedArray</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
boolean&nbsp;handleNestedArray)</code>
<div class="block">Sets whether the BNF with the given ID supports nested array or not.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#setHandleSubExpression-java.lang.String-boolean-">setHandleSubExpression</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
boolean&nbsp;handleSubExpression)</code>
<div class="block">Sets whether the query BNF with the given ID handles parsing a sub-expression, i.e.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html#unregisterBNF-org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF-">unregisterBNF</a></span>(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLQueryBNF</a>&nbsp;queryBNF)</code>
<div class="block">Unregisters the given <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="ExpressionRegistry--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ExpressionRegistry</h4>
<pre>public&nbsp;ExpressionRegistry()</pre>
<div class="block">Creates the only instance of <code>ExpressionRegistry</code>.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="addChildBNF-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addChildBNF</h4>
<pre>public&nbsp;void&nbsp;addChildBNF(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;childQueryBNFId)</pre>
<div class="block">Adds to the given query BNF a child BNF.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the parent BNF to add a child BNF</dd>
<dd><code>childQueryBNFId</code> - The unique identifier of the child to add to the parent BNF</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> identified by the given ID does not exist</dd>
</dl>
</li>
</ul>
<a name="addChildFactory-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addChildFactory</h4>
<pre>public&nbsp;void&nbsp;addChildFactory(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;childExpressionFactoryId)</pre>
<div class="block">Adds to the given unique identifier of an <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to the given query BNF.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the parent BNF</dd>
<dd><code>childExpressionFactoryId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to add
to the given query BNF</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> identified by the given ID does not exist</dd>
</dl>
</li>
</ul>
<a name="addIdentifier-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addIdentifier</h4>
<pre>public&nbsp;void&nbsp;addIdentifier(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expressionFactoryId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</pre>
<div class="block">Adds the given JPQL identifier to this factory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expressionFactoryId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to add more
JPQL identifiers</dd>
<dd><code>identifier</code> - The JPQL identifier this factory will parse</dd>
</dl>
</li>
</ul>
<a name="addIdentifiers-java.lang.String-java.lang.String...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addIdentifiers</h4>
<pre>public&nbsp;void&nbsp;addIdentifiers(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expressionFactoryId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;identifiers)</pre>
<div class="block">Adds the given JPQL identifiers to this factory.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expressionFactoryId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to add more
JPQL identifiers</dd>
<dd><code>identifiers</code> - The JPQL identifiers this factory will parse</dd>
</dl>
</li>
</ul>
<a name="expressionFactoryForIdentifier-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>expressionFactoryForIdentifier</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionFactory</a>&nbsp;expressionFactoryForIdentifier(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</pre>
<div class="block">Retrieves the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> that is responsible for creating the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/Expression.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>Expression</code></a>
object that represents the given JPQL identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>identifier</code> - The JPQL identifier for which its factory is searched</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Either the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> that creates the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/Expression.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>Expression</code></a> or
<code>null</code> if none was found</dd>
</dl>
</li>
</ul>
<a name="getExpressionFactory-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExpressionFactory</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionFactory</a>&nbsp;getExpressionFactory(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expressionFactoryId)</pre>
<div class="block">Retrieves the registered <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> that was registered for the given unique identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expressionFactoryId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to retrieve</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> mapped with the given unique identifier</dd>
</dl>
</li>
</ul>
<a name="getIdentifierRole-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdentifierRole</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser">IdentifierRole</a>&nbsp;getIdentifierRole(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</pre>
<div class="block">Retrieves the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser"><code>IdentifierRole</code></a> of the given JPQL identifier. A role helps to describe
the purpose of the identifier in a JPQL query.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>identifier</code> - The JPQL identifier for which its role is returned</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser"><code>IdentifierRole</code></a> of the given JPQL identifier</dd>
</dl>
</li>
</ul>
<a name="getIdentifiers--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdentifiers</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;getIdentifiers()</pre>
<div class="block">Returns the JPQL identifiers that are supported by the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQL grammar</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The supported JPQL identifiers</dd>
</dl>
</li>
</ul>
<a name="getIdentifiers-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdentifiers</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;getIdentifiers(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId)</pre>
<div class="block">Retrieves the JPQL identifiers that are supported by the BNF rule with the given unique
identifier. The JPQL identifiers are retrieved by scanning the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a>
registered with the BNF rule and its child BNF rules.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The list of JPQL identifiers that are supported by a BNF rule</dd>
</dl>
</li>
</ul>
<a name="getIdentifierVersion-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdentifierVersion</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql">JPAVersion</a>&nbsp;getIdentifierVersion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier)</pre>
<div class="block">Retrieves the JPA version in which the identifier was first introduced.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The version in which the identifier was introduced</dd>
</dl>
</li>
</ul>
<a name="getQueryBNF-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getQueryBNF</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLQueryBNF</a>&nbsp;getQueryBNF(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId)</pre>
<div class="block">Retrieves the BNF object that was registered for the given unique identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> to retrieve</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> representing a section of the grammar</dd>
</dl>
</li>
</ul>
<a name="initialize--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre>protected&nbsp;void&nbsp;initialize()</pre>
<div class="block">Instantiates the only instance of various API used by the parser.</div>
</li>
</ul>
<a name="isIdentifier-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isIdentifier</h4>
<pre>public&nbsp;boolean&nbsp;isIdentifier(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;text)</pre>
<div class="block">Determines if the given word is a JPQL identifier. The check is case insensitive.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>text</code> - The string value to test if it's a JPQL identifier based on what is registered
with this <code>ExpressionRegistry</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the word is an identifier, <code>false</code> otherwise</dd>
</dl>
</li>
</ul>
<a name="registerBNF-org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerBNF</h4>
<pre>public&nbsp;void&nbsp;registerBNF(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLQueryBNF</a>&nbsp;queryBNF)</pre>
<div class="block">Registers the given <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a>. The BNF will be registered using its unique
identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNF</code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> to store</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> cannot be <code>null</code></dd>
</dl>
</li>
</ul>
<a name="registerFactory-org.eclipse.persistence.jpa.jpql.parser.ExpressionFactory-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerFactory</h4>
<pre>public&nbsp;void&nbsp;registerFactory(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionFactory</a>&nbsp;expressionFactory)</pre>
<div class="block">Registers the given <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> by storing it for all its identifiers.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expressionFactory</code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to store</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> cannot be <code>null</code></dd>
</dl>
</li>
</ul>
<a name="registerIdentifierRole-java.lang.String-org.eclipse.persistence.jpa.jpql.parser.IdentifierRole-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerIdentifierRole</h4>
<pre>public&nbsp;void&nbsp;registerIdentifierRole(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser">IdentifierRole</a>&nbsp;role)</pre>
<div class="block">Registers the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser"><code>IdentifierRole</code></a> for the given JPQL identifier.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>identifier</code> - The JPQL identifier to register its role within a JPQL query</dd>
<dd><code>role</code> - The role of the given JPQL identifier</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The JPQL identifier and the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentifierRole.html" title="enum in org.eclipse.persistence.jpa.jpql.parser"><code>IdentifierRole</code></a> cannot be
<code>null</code></dd>
</dl>
</li>
</ul>
<a name="registerIdentifierVersion-java.lang.String-org.eclipse.persistence.jpa.jpql.JPAVersion-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerIdentifierVersion</h4>
<pre>public&nbsp;void&nbsp;registerIdentifierVersion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
<a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql">JPAVersion</a>&nbsp;version)</pre>
<div class="block">Registers the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql"><code>JPAVersion</code></a> for which the given JPQL identifier was defined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>identifier</code> - The JPQL identifier to register in which version it was added to the grammar</dd>
<dd><code>version</code> - The version when the JPQL identifier was added to the grammar</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The JPQL identifier and the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql"><code>JPAVersion</code></a> cannot be
<code>null</code></dd>
</dl>
</li>
</ul>
<a name="setFallbackBNFId-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFallbackBNFId</h4>
<pre>public&nbsp;void&nbsp;setFallbackBNFId(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fallbackBNFId)</pre>
<div class="block">When parsing the query and no <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNFs</code></a> can help to parse the query,
then it will fall back on the given one.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the BNF to modify its fallback BNF unique identifier</dd>
<dd><code>fallbackBNFId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> to use in the last resort</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> identified by the given ID does not exist</dd>
</dl>
</li>
</ul>
<a name="setFallbackExpressionFactoryId-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFallbackExpressionFactoryId</h4>
<pre>public&nbsp;void&nbsp;setFallbackExpressionFactoryId(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fallbackExpressionFactoryId)</pre>
<div class="block">Sets the unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> to use when the fall back BNF
ID is not <code>null</code>. This will be used to parse a portion of the query when the
registered <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>expression factories</code></a> cannot parse it.
<p>
Note: This method is only called if <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html#getFallbackBNFId--"><code>JPQLQueryBNF.
getFallbackBNFId()</code></a> does not return <code>null</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the BNF to modify its fallback expression factory
unique identifier</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> identified by the given ID does not exist</dd>
</dl>
</li>
</ul>
<a name="setHandleCollection-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setHandleCollection</h4>
<pre>public&nbsp;void&nbsp;setHandleCollection(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
boolean&nbsp;handleCollection)</pre>
<div class="block">Determines whether the <code>Expression</code> handles a collection of sub-expressions that
are separated by commas.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a></dd>
<dd><code>handleCollection</code> - <code>true</code> if the sub-expression to parse might have several
sub-expressions separated by commas; <code>false</code> otherwise</dd>
</dl>
</li>
</ul>
<a name="setHandleNestedArray-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setHandleNestedArray</h4>
<pre>public&nbsp;void&nbsp;setHandleNestedArray(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
boolean&nbsp;handleNestedArray)</pre>
<div class="block">Sets whether the BNF with the given ID supports nested array or not. A nested array is a sub-
expression with its child being a collection expression: (item_1, item_2, ..., item_n).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a></dd>
<dd><code>handleNestedArray</code> - <code>true</code> if the expression represented by this BNF can be
a nested array; <code>false</code> otherwise</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.5</dd>
</dl>
</li>
</ul>
<a name="setHandleSubExpression-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setHandleSubExpression</h4>
<pre>public&nbsp;void&nbsp;setHandleSubExpression(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queryBNFId,
boolean&nbsp;handleSubExpression)</pre>
<div class="block">Sets whether the query BNF with the given ID handles parsing a sub-expression, i.e. parsing an
expression encapsulated by parenthesis. Which in fact would be handled by the fallback <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a>. The default behavior is to not handle it.
<p>
A good example for using this option is when an <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/Expression.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>Expression</code></a> cannot use any <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> for creating a child object, parsing will use the fallback <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a>, if one was specified. So when this is set to <code>true</code>, the
fallback <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> will be immediately invoked.
<p>
Let's say we want to parse "SELECT e FROM (SELECT a FROM Address a) e", <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/FromClause.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>FromClause</code></a>
cannot use a factory for parsing the entity name (that's what usually the <code>FROM</code>
clause has) so it uses the fallback factory to create <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/IdentificationVariableDeclaration.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>IdentificationVariableDeclaration</code></a>.
Then <code>IdentificationVariableDeclaration</code> also cannot use any factory to create its
child object so it uses the fallback factory to create <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/RangeVariableDeclaration.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>RangeVariableDeclaration</code></a>.
By changing the status of for handling the sub-expression for the BNFs for those objects, then
a subquery can be created by <code>RangeVariableDeclaration</code>.
<pre><code>FromClause
|- IdentificationVariableDeclaration
|- RangeVariableDeclaration
|- SubExpression(subquery)</code></pre>
In order to get this working, the following would have to be done into the grammar:
<pre><code> public class MyJPQLGrammar extends AbstractJPQLGrammar {
&#64;Override
protected void initializeBNFs() {
setHandleSubExpression(InternalFromClauseBNF.ID, true);
setHandleSubExpression(InternalSimpleFromClauseBNF.ID, true);
setHandleSubExpression(IdentificationVariableDeclarationBNF.ID, true);
setHandleSubExpression(RangeVariableDeclarationBNF.ID, true);
}
}</code></pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNFId</code> - The unique identifier of the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a></dd>
<dd><code>handleSubExpression</code> - <code>true</code> to let the creation of a sub-expression be
created by the fallback <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> registered with this BNF; <code>false</code>
otherwise (which is the default value)</dd>
</dl>
</li>
</ul>
<a name="unregisterBNF-org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>unregisterBNF</h4>
<pre>public&nbsp;void&nbsp;unregisterBNF(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLQueryBNF</a>&nbsp;queryBNF)</pre>
<div class="block">Unregisters the given <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queryBNF</code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> to unregister</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNF</code></a> cannot be <code>null</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionVisitor.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" target="_top">Frames</a></li>
<li><a href="ExpressionRegistry.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="http://www.eclipse.org/eclipselink">Eclipse.org - EclipseLink Project</a>. All rights reserved.</small></p>
</body>
</html>