blob: bba34992e37beb4882cb252069c85f2c1d181acf [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:43 UTC 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>AbstractJPQLGrammar (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="AbstractJPQLGrammar (EclipseLink 3.0.2, API Reference)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":6,"i5":10,"i6":10,"i7":10,"i8":10,"i9":6,"i10":6,"i11":6,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/AbstractFromClause.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/AbstractLiteralExpressionFactory.html" title="class 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/AbstractJPQLGrammar.html" target="_top">Frames</a></li>
<li><a href="AbstractJPQLGrammar.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 AbstractJPQLGrammar" class="title">Class AbstractJPQLGrammar</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.AbstractJPQLGrammar</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar1.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar1</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_0.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_0</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_1.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_1</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_2.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_2</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_3.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_3</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_4.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_4</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_5.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_5</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/EclipseLinkJPQLGrammar2_6.html" title="class in org.eclipse.persistence.jpa.jpql.parser">EclipseLinkJPQLGrammar2_6</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar1_0.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar1_0</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar2_0.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar2_0</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar2_1.html" title="class in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar2_1</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">AbstractJPQLGrammar</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>
implements <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a></pre>
<div class="block"><p>The abstract definition of a <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a>. The grammar defines how a JPQL query is parsed,
which is based on the BNF defined for that grammar.</p>
<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.</p></div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>2.5</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="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#AbstractJPQLGrammar--">AbstractJPQLGrammar</a></span>()</code>
<div class="block">Creates a new <code>AbstractJPQLGrammar</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#AbstractJPQLGrammar-org.eclipse.persistence.jpa.jpql.parser.AbstractJPQLGrammar-">AbstractJPQLGrammar</a></span>(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html" title="class in org.eclipse.persistence.jpa.jpql.parser">AbstractJPQLGrammar</a>&nbsp;jpqlGrammar)</code>
<div class="block">Creates a new <code>AbstractJPQLGrammar</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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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/AbstractJPQLGrammar.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/AbstractJPQLGrammar.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/AbstractJPQLGrammar.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/AbstractJPQLGrammar.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>protected abstract <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#buildBaseGrammar--">buildBaseGrammar</a></span>()</code>
<div class="block">Creates the base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> this one extends, if one exists.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionRegistry</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#buildExpressionRegistry--">buildExpressionRegistry</a></span>()</code>
<div class="block">Creates a new <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionRegistry</code></a> that will be used to store the definition of the JPQL
grammar.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#getBaseGrammar--">getBaseGrammar</a></span>()</code>
<div class="block">Creates the base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> this one extends.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionRegistry</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#getExpressionRegistry--">getExpressionRegistry</a></span>()</code>
<div class="block">Returns the registry containing the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNFs</code></a> and the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactories</code></a> that are used
to properly parse a JPQL query.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#initialize--">initialize</a></span>()</code>
<div class="block">Initializes this JPQL grammar.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#initializeBNFs--">initializeBNFs</a></span>()</code>
<div class="block">Registers the JPQL query BNFs defining the JPQL grammar.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#initializeExpressionFactories--">initializeExpressionFactories</a></span>()</code>
<div class="block">Registers the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactories</code></a> required to properly parse JPQL
queries.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#initializeIdentifiers--">initializeIdentifiers</a></span>()</code>
<div class="block">Registers the JPQL identifiers support by this <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a>.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.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="i13" 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/AbstractJPQLGrammar.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="i14" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.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="i15" 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/AbstractJPQLGrammar.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="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/AbstractJPQLGrammar.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="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/AbstractJPQLGrammar.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="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/AbstractJPQLGrammar.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="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/AbstractJPQLGrammar.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="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/AbstractJPQLGrammar.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>
</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>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.eclipse.persistence.jpa.jpql.parser.JPQLGrammar">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.persistence.jpa.jpql.parser.<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a></h3>
<code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html#getJPAVersion--">getJPAVersion</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html#getProvider--">getProvider</a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html#getProviderVersion--">getProviderVersion</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="AbstractJPQLGrammar--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>AbstractJPQLGrammar</h4>
<pre>protected&nbsp;AbstractJPQLGrammar()</pre>
<div class="block">Creates a new <code>AbstractJPQLGrammar</code>.</div>
</li>
</ul>
<a name="AbstractJPQLGrammar-org.eclipse.persistence.jpa.jpql.parser.AbstractJPQLGrammar-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AbstractJPQLGrammar</h4>
<pre>protected&nbsp;AbstractJPQLGrammar(<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html" title="class in org.eclipse.persistence.jpa.jpql.parser">AbstractJPQLGrammar</a>&nbsp;jpqlGrammar)</pre>
<div class="block">Creates a new <code>AbstractJPQLGrammar</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>jpqlGrammar</code> - The <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> to extend with the content of this one without
instantiating the base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a></dd>
</dl>
</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>
</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>
</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="buildBaseGrammar--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildBaseGrammar</h4>
<pre>protected abstract&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a>&nbsp;buildBaseGrammar()</pre>
<div class="block">Creates the base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> this one extends, if one exists.
<p>
<b>IMPORTANT:</b> The singleton instance of any <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> (for example <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar1_0.html#instance--"><code>JPQLGrammar1_0.instance()</code></a> cannot be used, the API does not support
extending it, a new instance has to be created.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> or <code>null</code> if there is no base grammar</dd>
</dl>
</li>
</ul>
<a name="buildExpressionRegistry--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>buildExpressionRegistry</h4>
<pre>protected&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionRegistry</a>&nbsp;buildExpressionRegistry()</pre>
<div class="block">Creates a new <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionRegistry</code></a> that will be used to store the definition of the JPQL
grammar. This method is invoked if <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/AbstractJPQLGrammar.html#buildBaseGrammar--"><code>buildBaseGrammar()</code></a> returns <code>null</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The registry of <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNFs</code></a>, <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactories</code></a> and the JPQL identifiers</dd>
</dl>
</li>
</ul>
<a name="getBaseGrammar--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBaseGrammar</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a>&nbsp;getBaseGrammar()</pre>
<div class="block">Creates the base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> this one extends.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The base <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a> or <code>null</code> if this is the base grammar</dd>
</dl>
</li>
</ul>
<a name="getExpressionRegistry--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExpressionRegistry</h4>
<pre>public&nbsp;<a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionRegistry.html" title="class in org.eclipse.persistence.jpa.jpql.parser">ExpressionRegistry</a>&nbsp;getExpressionRegistry()</pre>
<div class="block">Returns the registry containing the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLQueryBNF.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLQueryBNFs</code></a> and the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactories</code></a> that are used
to properly parse a JPQL query.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html#getExpressionRegistry--">getExpressionRegistry</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser">JPQLGrammar</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The registry containing the information related to the JPQL 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">Initializes this JPQL grammar.</div>
</li>
</ul>
<a name="initializeBNFs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeBNFs</h4>
<pre>protected abstract&nbsp;void&nbsp;initializeBNFs()</pre>
<div class="block">Registers the JPQL query BNFs defining the JPQL grammar.</div>
</li>
</ul>
<a name="initializeExpressionFactories--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeExpressionFactories</h4>
<pre>protected abstract&nbsp;void&nbsp;initializeExpressionFactories()</pre>
<div class="block">Registers the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactories</code></a> required to properly parse JPQL
queries. An <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/ExpressionFactory.html" title="class in org.eclipse.persistence.jpa.jpql.parser"><code>ExpressionFactory</code></a> is responsible to create an <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 a portion of the JPQL query.</div>
</li>
</ul>
<a name="initializeIdentifiers--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeIdentifiers</h4>
<pre>protected abstract&nbsp;void&nbsp;initializeIdentifiers()</pre>
<div class="block">Registers the JPQL identifiers support by this <a href="../../../../../../org/eclipse/persistence/jpa/jpql/parser/JPQLGrammar.html" title="interface in org.eclipse.persistence.jpa.jpql.parser"><code>JPQLGrammar</code></a>. The registration
involves registering the <a href="../../../../../../org/eclipse/persistence/jpa/jpql/JPAVersion.html" title="enum in org.eclipse.persistence.jpa.jpql"><code>JPAVersion</code></a> 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>.</div>
</li>
</ul>
<a name="registerBNF-org.eclipse.persistence.jpa.jpql.parser.JPQLQueryBNF-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerBNF</h4>
<pre>protected&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>
</dl>
</li>
</ul>
<a name="registerFactory-org.eclipse.persistence.jpa.jpql.parser.ExpressionFactory-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerFactory</h4>
<pre>protected&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>
</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>protected&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>
</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>protected&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>
</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>
</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>
</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="blockListLast">
<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>
</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/AbstractFromClause.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/AbstractLiteralExpressionFactory.html" title="class 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/AbstractJPQLGrammar.html" target="_top">Frames</a></li>
<li><a href="AbstractJPQLGrammar.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>