<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
	<id>tag:n2.nabble.com,2006:forum-218414</id>
	<title>Nabble - OpenJPA Commits</title>
	<updated>2009-11-24T10:37:53Z</updated>
	<link rel="self" type="application/atom+xml" href="http://n2.nabble.com/OpenJPA-Commits-f218414.xml" />
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/OpenJPA-Commits-f218414.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:n2.nabble.com,2006:post-4059830</id>
	<title>svn commit: r883808 - /openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java</title>
	<published>2009-11-24T10:37:53Z</published>
	<updated>2009-11-24T10:37:53Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Tue Nov 24 18:37:52 2009
&lt;br&gt;New Revision: 883808
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=883808&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=883808&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Set proper return type on evaluated expression.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java?rev=883808&amp;r1=883807&amp;r2=883808&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java?rev=883808&amp;r1=883807&amp;r2=883808&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java Tue Nov 24 18:37:52 2009
&lt;br&gt;@@ -281,7 +281,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.abs(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.abs(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public StringBuilder asValue(AliasContext q) {
&lt;br&gt;@@ -321,7 +323,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.avg(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.avg(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;@@ -337,7 +341,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.sqrt(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.sqrt(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public StringBuilder asValue(AliasContext q) {
&lt;br&gt;@@ -352,7 +358,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.max(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.max(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public StringBuilder asValue(AliasContext q) {
&lt;br&gt;@@ -367,7 +375,9 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.min(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.min(Expressions.toValue(e, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public StringBuilder asValue(AliasContext q) {
&lt;br&gt;@@ -649,11 +659,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (e2 == null) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value= (e2 == null) 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? &amp;nbsp; factory.sum(Expressions.toValue(e1, factory, q))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: &amp;nbsp; factory.add(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Expressions.toValue(e1, factory, q), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Expressions.toValue(e2, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;@@ -705,9 +717,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.subtract(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.subtract(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expressions.toValue(e1, factory, q), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expressions.toValue(e2, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;@@ -732,9 +746,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.divide(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.divide(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expressions.toValue(e1, factory, q), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expressions.toValue(e2, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;@@ -756,9 +772,11 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.mod(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value = factory.mod(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expressions.toValue(e1, factory, q), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expressions.toValue(e2, factory, q));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value.setImplicitType(getJavaType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;@@ -1277,8 +1295,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value[] vs = new Value[values.size()];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int i = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Expression&amp;lt;?&amp;gt; e : values)
&lt;br&gt;@@ -1312,8 +1329,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value1 = Expressions.toValue((ExpressionImpl&amp;lt;?&amp;gt;)val1, factory, q); 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value value2 = Expressions.toValue((ExpressionImpl&amp;lt;?&amp;gt;)val2, factory, q); 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.nullIfExpression(value1, value2);
&lt;br&gt;@@ -1495,8 +1511,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int size = whens.size();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.kernel.exps.Expression[] exps = new org.apache.openjpa.kernel.exps.Expression[size];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; size; i++) {
&lt;br&gt;@@ -1575,8 +1590,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value caseOperandExpr = Expressions.toValue((ExpressionImpl&amp;lt;?&amp;gt;)caseOperand, factory, q);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int size = whens.size();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.kernel.exps.Expression[] exps = new org.apache.openjpa.kernel.exps.Expression[size];
&lt;br&gt;@@ -1769,8 +1783,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.kernel.exps.Value e = actual.toValue(factory, q);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.setImplicitType(getJavaType());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return e;
&lt;br&gt;@@ -1799,8 +1812,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Arguments toValue(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public org.apache.openjpa.kernel.exps.Arguments toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.kernel.exps.Value[] kvs = new org.apache.openjpa.kernel.exps.Value[_args.length];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int i = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (ExpressionImpl&amp;lt;?&amp;gt; arg : _args) {
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r883808-openjpa-trunk-openjpa-persistence-src-main-java-org-apache-openjpa-persistence-cra-tp4059830p4059830.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4035092</id>
	<title>svn commit: r882358 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/</title>
	<published>2009-11-19T15:28:46Z</published>
	<updated>2009-11-19T15:28:46Z</updated>
	<author>
		<name>allee8285-2</name>
	</author>
	<content type="html">Author: allee8285
&lt;br&gt;Date: Thu Nov 19 23:28:45 2009
&lt;br&gt;New Revision: 882358
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=882358&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=882358&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1394 - DB2 supports Order By clause with recording locking using &amp;quot;WITH R*&amp;quot; construct. By enabling this feature in the DB2 dictionary, row locking can be perform with the fetch and eliminate the time window other thread snike in to fetch the same row.
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java &amp;nbsp; (with props)
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java &amp;nbsp; (with props)
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java &amp;nbsp; (with props)
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?rev=882358&amp;r1=882357&amp;r2=882358&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?rev=882358&amp;r1=882357&amp;r2=882358&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Thu Nov 19 23:28:45 2009
&lt;br&gt;@@ -122,6 +122,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsDeferredConstraints = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsDefaultDeleteAction = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsAlterTableWithDropColumn = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsLockingWithOrderClause = true;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsNullTableForGetColumns = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;requiresCastForMathFunctions = true;
&lt;br&gt;&lt;br&gt;Added: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java?rev=882358&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java?rev=882358&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java (added)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java Thu Nov 19 23:28:45 2009
&lt;br&gt;@@ -0,0 +1,79 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.openjpa.persistence.lockmgr;
&lt;br&gt;+
&lt;br&gt;+import java.io.Externalizable;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.ObjectInput;
&lt;br&gt;+import java.io.ObjectOutput;
&lt;br&gt;+import java.util.Collection;
&lt;br&gt;+
&lt;br&gt;+import javax.persistence.CascadeType;
&lt;br&gt;+import javax.persistence.Entity;
&lt;br&gt;+import javax.persistence.Id;
&lt;br&gt;+import javax.persistence.OneToMany;
&lt;br&gt;+
&lt;br&gt;+@Entity
&lt;br&gt;+public class Department implements Externalizable {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private int id;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private String name;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Collection&amp;lt;Employee&amp;gt; employees;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@OneToMany(cascade=CascadeType.ALL, mappedBy=&amp;quot;department&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public Collection&amp;lt;Employee&amp;gt; getEmployees() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return employees;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@Id
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public int getId() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return id;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setId(int id) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.id = id;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public String getName() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return name;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setName(String name) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.name = name;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public String toString() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this.getClass().getName() + '@'
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ Integer.toHexString(System.identityHashCode(this)) + &amp;quot;[id=&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ getId() + &amp;quot;] first=&amp;quot; + getName();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void readExternal(ObjectInput in) throws IOException,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClassNotFoundException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id = in.readInt();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = (String) in.readObject();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void writeExternal(ObjectOutput out) throws IOException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out.writeInt(id);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out.writeObject(name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Department.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Added: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java?rev=882358&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java?rev=882358&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java (added)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java Thu Nov 19 23:28:45 2009
&lt;br&gt;@@ -0,0 +1,94 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.openjpa.persistence.lockmgr;
&lt;br&gt;+
&lt;br&gt;+import java.io.Externalizable;
&lt;br&gt;+import java.io.IOException;
&lt;br&gt;+import java.io.ObjectInput;
&lt;br&gt;+import java.io.ObjectOutput;
&lt;br&gt;+
&lt;br&gt;+import javax.persistence.Entity;
&lt;br&gt;+import javax.persistence.Id;
&lt;br&gt;+import javax.persistence.JoinColumn;
&lt;br&gt;+import javax.persistence.ManyToOne;
&lt;br&gt;+
&lt;br&gt;+@Entity
&lt;br&gt;+public class Employee implements Externalizable {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private int id;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private String firstName;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private String lastName;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Department department;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@Id
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public int getId() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return id;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setId(int id) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.id = id;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public String getFirstName() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return firstName;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setFirstName(String firstName) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.firstName = firstName;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public String getLastName() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return lastName;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setLastName(String lastName) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.lastName = lastName;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@ManyToOne
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@JoinColumn(name=&amp;quot;FK_DEPT&amp;quot;)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public Department getDepartment() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return department;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setDepartment(Department department) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.department = department;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public String toString() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this.getClass().getName() + '@'
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ Integer.toHexString(System.identityHashCode(this)) + &amp;quot;[id=&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ getId() + &amp;quot;] first=&amp;quot; + getFirstName()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;, last=&amp;quot; + getLastName();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void readExternal(ObjectInput in) throws IOException,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClassNotFoundException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id = in.readInt();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;firstName = (String) in.readObject();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lastName = (String) in.readObject();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void writeExternal(ObjectOutput out) throws IOException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out.writeInt(id);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out.writeObject(firstName);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;out.writeObject(lastName);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/Employee.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;Added: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java?rev=882358&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java?rev=882358&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java (added)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java Thu Nov 19 23:28:45 2009
&lt;br&gt;@@ -0,0 +1,242 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.openjpa.persistence.lockmgr;
&lt;br&gt;+
&lt;br&gt;+import java.util.HashMap;
&lt;br&gt;+import java.util.List;
&lt;br&gt;+import java.util.Map;
&lt;br&gt;+
&lt;br&gt;+import javax.persistence.EntityManager;
&lt;br&gt;+import javax.persistence.LockModeType;
&lt;br&gt;+import javax.persistence.PessimisticLockException;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;+import javax.persistence.QueryTimeoutException;
&lt;br&gt;+
&lt;br&gt;+import org.apache.openjpa.persistence.test.SQLListenerTestCase;
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ * Test Pessimistic Lock and exception behavior against EntityManager and Query interface methods.
&lt;br&gt;+ */
&lt;br&gt;+public class TestPessimisticLocks extends SQLListenerTestCase {
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setSupportedDatabases(
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DerbyDictionary.class,
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.OracleDictionary.class,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.jdbc.sql.DB2Dictionary.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (isTestsDisabled()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setUp(Employee.class, Department.class, &amp;quot;openjpa.LockManager&amp;quot;, &amp;quot;mixed&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String empTable = getMapping(Employee.class).getTable().getFullName();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String deptTable = getMapping(Department.class).getTable().getFullName();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.createQuery(&amp;quot;delete from &amp;quot; + empTable).executeUpdate();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.createQuery(&amp;quot;delete from &amp;quot; + deptTable).executeUpdate();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().commit();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Employee e1, e2;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Department d1, d2;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d1 = new Department();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d1.setId(10);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d1.setName(&amp;quot;D10&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e1 = new Employee();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e1.setId(1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e1.setDepartment(d1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e1.setFirstName(&amp;quot;first.1&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e1.setLastName(&amp;quot;last.1&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d2 = new Department();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d2.setId(20);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d2.setName(&amp;quot;D20&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e2 = new Employee();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e2.setId(2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e2.setDepartment(d2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e2.setFirstName(&amp;quot;first.2&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e2.setLastName(&amp;quot;last.2&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.persist(d1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.persist(d2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.persist(e1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.persist(e2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().commit();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.printStackTrace();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (em != null &amp;&amp; em.isOpen()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Test a find with pessimistic lock after a query with pessimistic lock and expect PessimisticLockException.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testFindWithLockTimeoutAfterQueryWithPessimisticLocks() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em1 = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em2 = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query query = em1.createQuery(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;select e from Employee e where e.id &amp;lt; 10 order by e.id&amp;quot;).setFirstResult(1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query.setLockMode(LockModeType.PESSIMISTIC_READ);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Employee&amp;gt; q = query.getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Expected 1 element with emplyee id=2&amp;quot;, q.size(), 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Test Employee first name = 'first.2'&amp;quot;, q.get(0).getFirstName(), &amp;quot;first.2&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String,Object&amp;gt; map = new HashMap&amp;lt;String,Object&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;map.put(&amp;quot;javax.persistence.lock.timeout&amp;quot;, 2000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.find(Employee.class, 2, LockModeType.PESSIMISTIC_READ, map);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Unexcpected find succeeded. Should throw a PessimisticLockException.&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (QueryTimeoutException e) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO: DB2: This is the current unexpected exception due to OPENJPA-991.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Remove this when the problem is fixed
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;Caught &amp;quot; + e.getClass().getName() + &amp;quot;:&amp;quot; + e.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (PessimisticLockException e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO: This is the expected exception but will be fixed under OPENJPA-991
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;Caught &amp;quot; + e.getClass().getName() + &amp;quot;:&amp;quot; + e.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception ex) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Caught unexpected &amp;quot; + ex.getClass().getName() + &amp;quot;:&amp;quot; + ex.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em1.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em2.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query query = em1.createQuery(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;select e.department from Employee e where e.id &amp;lt; 10 order by e.department.id&amp;quot;).setFirstResult(1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query.setLockMode(LockModeType.PESSIMISTIC_READ);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Department&amp;gt; q = query.getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Expected 1 element with department id=20&amp;quot;, q.size(), 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Test department name = 'D20'&amp;quot;, q.get(0).getName(), &amp;quot;D20&amp;quot;);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String,Object&amp;gt; map = new HashMap&amp;lt;String,Object&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;map.put(&amp;quot;javax.persistence.lock.timeout&amp;quot;, 2000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Employee emp = em2.find(Employee.class, 1, LockModeType.PESSIMISTIC_READ, map);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(&amp;quot;Query locks department but find locks Employee.&amp;quot;, emp);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Unexcpected find succeeded. Should throw a PessimisticLockException.&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (QueryTimeoutException e) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO: This is the current unexpected exception due to OPENJPA-991. Remove this when the problem is fixed 
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;Caught &amp;quot; + e.getClass().getName() + &amp;quot;:&amp;quot; + e.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (PessimisticLockException e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO: This is the expected exception but will be fixed under OPENJPA-991
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;Caught &amp;quot; + e.getClass().getName() + &amp;quot;:&amp;quot; + e.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception ex) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Caught unexpected &amp;quot; + ex.getClass().getName() + &amp;quot;:&amp;quot; + ex.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em1.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em2.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Test a query with pessimistic lock after a find with pessimistic lock and expect PessimisticLockException.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testQueryAfterFindWithPessimisticLocks() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em1 = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em2 = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String,Object&amp;gt; map = new HashMap&amp;lt;String,Object&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;map.put(&amp;quot;javax.persistence.lock.timeout&amp;quot;, 2000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.find(Employee.class, 1, LockModeType.PESSIMISTIC_READ, map);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query query = em1.createQuery(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;select e.department from Employee e where e.id &amp;lt; 10 order by e.department.id&amp;quot;).setFirstResult(1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query.setLockMode(LockModeType.PESSIMISTIC_READ);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Department&amp;gt; q = query.getResultList();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Unexcpected find succeeded. Should throw a PessimisticLockException.&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (PessimisticLockException e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// This is the expected exception.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception ex) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Caught unexpected &amp;quot; + ex.getClass().getName() + &amp;quot;:&amp;quot; + ex.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em1.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (em2.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Test a query with pessimistic lock with query timeout set after a find
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * with pessimistic lock and expect QueryTimeoutException.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testQueryWithQueryTimeoutAfterFindWithPessimisticLocks() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em1 = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityManager em2 = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map&amp;lt;String,Object&amp;gt; map = new HashMap&amp;lt;String,Object&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;map.put(&amp;quot;javax.persistence.lock.timeout&amp;quot;, 2000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.find(Employee.class, 1, LockModeType.PESSIMISTIC_READ, map);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().begin();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query query = em1.createQuery(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;select e.department from Employee e where e.id &amp;lt; 10 order by e.department.id&amp;quot;).setFirstResult(1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query.setLockMode(LockModeType.PESSIMISTIC_READ);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query.setHint(&amp;quot;javax.persistence.query.timeout&amp;quot;, 2000);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Department&amp;gt; q = query.getResultList();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Unexcpected find succeeded. Should throw a PessimisticLockException.&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (QueryTimeoutException e) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// This is the expected exception.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception ex) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;Caught unexpected &amp;quot; + ex.getClass().getName() + &amp;quot;:&amp;quot; + ex.getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em1.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if( em2.getTransaction().isActive())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.getTransaction().rollback();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em1.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em2.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r882358-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-sql-openjpa-p-tp4035092p4035092.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4034230</id>
	<title>svn commit: r882285 - /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java</title>
	<published>2009-11-19T12:37:46Z</published>
	<updated>2009-11-19T12:37:46Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Thu Nov 19 20:37:45 2009
&lt;br&gt;New Revision: 882285
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=882285&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=882285&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1350: Test case (by Rick Curtis) to test early registration of type alias to avoid/minimze risk of multi-threaded repository initialization. Original change was revision 826944
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java &amp;nbsp; (with props)
&lt;br&gt;&lt;br&gt;Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java?rev=882285&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java?rev=882285&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java (added)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java Thu Nov 19 20:37:45 2009
&lt;br&gt;@@ -0,0 +1,106 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License. &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.openjpa.persistence.meta;
&lt;br&gt;+
&lt;br&gt;+import java.util.ArrayList;
&lt;br&gt;+import java.util.HashSet;
&lt;br&gt;+import java.util.List;
&lt;br&gt;+import java.util.Set;
&lt;br&gt;+
&lt;br&gt;+import javax.persistence.EntityManagerFactory;
&lt;br&gt;+
&lt;br&gt;+import org.apache.openjpa.meta.MetaDataRepository;
&lt;br&gt;+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
&lt;br&gt;+import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
&lt;br&gt;+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
&lt;br&gt;+
&lt;br&gt;+public class TestQueryTypeAliasRegistration extends SingleEMFTestCase {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private final int threads = 100;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setUp() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp(MdrTestEntity.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertNotNull(emf);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create the Entity which we're going to try to get MetaData for using
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// an alias. Do this to ensure that it has been registered to the PCRegistry.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new MdrTestEntity();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * This method tests a timing window where more than one thread requests MetaData using an alias
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * at the same time. All threads should get data back and no threads should receive an
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * exception.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testMultiThreadGetMetaDataAlias() throws Exception {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Worker&amp;gt; workers = new ArrayList&amp;lt;Worker&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;Exception&amp;gt; exceptions = new HashSet&amp;lt;Exception&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; threads; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Worker w = new Worker(emf);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;workers.add(w);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Worker w : workers) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;w.start();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Worker w : workers) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;w.join();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Exception e = w.getException();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exceptions.add(w.getException());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(&amp;quot;Caught &amp;quot; &amp;nbsp;+ exceptions.toString(), exceptions.size() == 0);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (emf != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;class Worker extends Thread {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManagerFactorySPI emf;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAEntityManagerSPI em;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MetaDataRepository repo;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Exception ex;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Worker(EntityManagerFactory e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emf = (OpenJPAEntityManagerFactorySPI) e;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Create an EM here because that triggers registering the MDR as a class registration
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// listener with the PCRegistry.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em = emf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;repo = em.getConfiguration().getMetaDataRepositoryInstance();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Exception getException() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ex;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void run() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;repo.getMetaData(&amp;quot;MdrTestEntity&amp;quot;, Thread.currentThread().getContextClassLoader(), true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ex = e;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.printStackTrace();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} finally {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.close();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Propchange: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestQueryTypeAliasRegistration.java
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r882285-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persistena-tp4034230p4034230.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4032338</id>
	<title>svn commit: r882172 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/ openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed...</title>
	<published>2009-11-19T07:12:37Z</published>
	<updated>2009-11-19T07:12:37Z</updated>
	<author>
		<name>faywang</name>
	</author>
	<content type="html">Author: faywang
&lt;br&gt;Date: Thu Nov 19 15:12:36 2009
&lt;br&gt;New Revision: 882172
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=882172&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=882172&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1396: fix metadata-complete problem so that it will override @Transient annotation in the entity class
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/EmbedXml.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed/embed-orm.xml
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -151,6 +151,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;populate(meta, access, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (meta.getDescribedType() == Object.class)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;meta.setAccessType(access);
&lt;br&gt;@@ -161,7 +165,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!_pcRegistry || !populateFromPCRegistry(meta)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (log.isTraceEnabled())
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.trace(_loc.get(&amp;quot;meta-reflect&amp;quot;));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;populateFromReflection(meta);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;populateFromReflection(meta, ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -197,15 +201,15 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected abstract List&amp;lt;Member&amp;gt; getPersistentMembers(ClassMetaData meta);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected abstract List&amp;lt;Member&amp;gt; getPersistentMembers(ClassMetaData meta, boolean ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Generate the given meta-data using reflection.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Adds FieldMetaData for each persistent state.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Delegate to concrete implementation to determine the persistent
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * members.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private void populateFromReflection(ClassMetaData meta) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Member&amp;gt; members = getPersistentMembers(meta);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private void populateFromReflection(ClassMetaData meta, boolean ignoreTransient) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Member&amp;gt; members = getPersistentMembers(meta, ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean iface = meta.getDescribedType().isInterface();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If access is mixed or if the default is currently unknown, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// process all fields, otherwise only process members of the class &amp;nbsp;
&lt;br&gt;@@ -220,7 +224,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name == null || isReservedFieldName(name))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;def = isDefaultPersistent(meta, member, name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;def = isDefaultPersistent(meta, member, name, ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!def &amp;&amp; _ignore)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -311,7 +315,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @param name the field name from {@link #getFieldName}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected abstract boolean isDefaultPersistent(ClassMetaData meta,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Member member, String name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Member member, String name, boolean ignoreTransient);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Gets the backing member of the given field. If the field has not been
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataDefaults.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -81,6 +81,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Populate the given metadata with default settings.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param access access type constant from {@link ClassMetaData}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access, boolean ignoreTransient);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Return the backing member for the given field metadata.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Member getBackingMember(FieldMetaData field);
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -889,11 +889,22 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;the access type to use in populating metadata
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public ClassMetaData addMetaData(Class&amp;lt;?&amp;gt; cls, int access) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return addMetaData(cls, access, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Create a new metadata, populate it with default information, add it to the repository, and
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * return it.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @param access
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;the access type to use in populating metadata
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public ClassMetaData addMetaData(Class&amp;lt;?&amp;gt; cls, int access, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (cls == null || cls.isPrimitive())
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClassMetaData meta = newClassMetaData(cls);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_factory.getDefaults().populate(meta, access);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_factory.getDefaults().populate(meta, access, ignoreTransient);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// synchronize on this rather than the map, because all other methods
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// that access _metas are synchronized on this
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/NoneMetaDataFactory.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -128,6 +128,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access, boolean ignoreTransient) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Member getBackingMember(FieldMetaData fmd) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/EmbedXml.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/EmbedXml.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/EmbedXml.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/EmbedXml.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/embed/EmbedXml.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -19,13 +19,17 @@
&lt;br&gt;&amp;nbsp;package org.apache.openjpa.persistence.embed;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.Embeddable;
&lt;br&gt;+import javax.persistence.Transient;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+@Embeddable
&lt;br&gt;&amp;nbsp;public class EmbedXml {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// owned by BasicA via Embed4
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// can not contain a collection of basic types if BasicA contains 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// a collection of Embed4 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected int intVal1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected int intVal2;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@Transient
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected int intVal3;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public int getIntVal1() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed/embed-orm.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed/embed-orm.xml?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed/embed-orm.xml?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed/embed-orm.xml (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/embed/embed-orm.xml Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -259,13 +259,7 @@
&lt;br&gt;&amp;nbsp;	&amp;lt;/embeddable&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	&amp;lt;embeddable class=&amp;quot;org.apache.openjpa.persistence.embed.EmbedXml&amp;quot;
&lt;br&gt;-		access=&amp;quot;FIELD&amp;quot;&amp;gt;
&lt;br&gt;-		&amp;lt;attributes&amp;gt;
&lt;br&gt;-			&amp;lt;basic name=&amp;quot;intVal1&amp;quot;&amp;gt;&amp;lt;/basic&amp;gt;
&lt;br&gt;-			&amp;lt;basic name=&amp;quot;intVal2&amp;quot;&amp;gt;&amp;lt;/basic&amp;gt;
&lt;br&gt;-			&amp;lt;basic name=&amp;quot;intVal3&amp;quot;&amp;gt;&amp;lt;/basic&amp;gt;
&lt;br&gt;-		&amp;lt;/attributes&amp;gt;
&lt;br&gt;-	&amp;lt;/embeddable&amp;gt;
&lt;br&gt;+		access=&amp;quot;FIELD&amp;quot; &amp;nbsp;metadata-complete=&amp;quot;true&amp;quot;/&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;embeddable class=&amp;quot;org.apache.openjpa.persistence.embed.attrOverrides.BasicEmbedXML&amp;quot;&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;attributes&amp;gt;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -145,11 +145,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * no strategy.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public static PersistenceStrategy getPersistenceStrategy
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(FieldMetaData fmd, Member member) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;(FieldMetaData fmd, Member member) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getPersistenceStrategy(fmd, member, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Return the code for the strategy of the given member. Return null if
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * no strategy.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static PersistenceStrategy getPersistenceStrategy
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(FieldMetaData fmd, Member member, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (member == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AnnotatedElement el = (AnnotatedElement) member;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ((AccessController.doPrivileged(J2DoPrivHelper
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!ignoreTransient &amp;&amp; (AccessController.doPrivileged(J2DoPrivHelper
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.isAnnotationPresentAction(el, Transient.class))).booleanValue())
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return TRANSIENT;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (fmd != null
&lt;br&gt;@@ -248,13 +257,26 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;populate(meta, access, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Populates the given class metadata. The access style determines which
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * field and/or getter method will contribute as the persistent property
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * of the given class. If the given access is unknown, then the access
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * type is to be determined at first. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @see #determineAccessType(ClassMetaData)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void populate(ClassMetaData meta, int access, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	if (AccessCode.isUnknown(access)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		access = determineAccessType(meta);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	if (AccessCode.isUnknown(access)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		error(meta, _loc.get(&amp;quot;access-unknown&amp;quot;, meta));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.populate(meta, access);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.populate(meta, access, ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;meta.setDetachable(true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// do not call get*Fields as it will lock down the fields.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -425,7 +447,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Gets the fields that are possible candidate for being persisted. The &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * result depends on the current access style of the given class. 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;List&amp;lt;Field&amp;gt; getPersistentFields(ClassMetaData meta) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;List&amp;lt;Field&amp;gt; getPersistentFields(ClassMetaData meta, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean explicit = meta.isExplicitAccess();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean unknown &amp;nbsp;= AccessCode.isUnknown(meta);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean isField &amp;nbsp;= AccessCode.isField(meta);
&lt;br&gt;@@ -434,7 +456,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		Field[] fields = AccessController.doPrivileged(J2DoPrivHelper.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getDeclaredFieldsAction(meta.getDescribedType()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	return filter(fields, fieldFilter, nonTransientFilter, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	return filter(fields, fieldFilter, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp;ignoreTransient ? null : nonTransientFilter, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;		unknown || isField &amp;nbsp;? null : annotatedFilter, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp;explicit ? (isField ? null : fieldAccessFilter) : null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	} 
&lt;br&gt;@@ -445,7 +468,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Gets the methods that are possible candidate for being persisted. The &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * result depends on the current access style of the given class. 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;List&amp;lt;Method&amp;gt; getPersistentMethods(ClassMetaData meta) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;List&amp;lt;Method&amp;gt; getPersistentMethods(ClassMetaData meta, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean explicit = meta.isExplicitAccess();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean unknown &amp;nbsp;= AccessCode.isUnknown(meta.getAccessType());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean isProperty &amp;nbsp;= AccessCode.isProperty(meta.getAccessType());
&lt;br&gt;@@ -455,7 +478,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.getDeclaredMethodsAction(meta.getDescribedType()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		List&amp;lt;Method&amp;gt; getters = filter(publicMethods, methodFilter, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getterFilter, nonTransientFilter, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getterFilter, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ignoreTransient ? null : nonTransientFilter, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;		unknown || isProperty ? null : annotatedFilter, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;explicit ? (isProperty ? null : propertyAccessFilter) : null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		List&amp;lt;Method&amp;gt; setters = filter(publicMethods, setterFilter);
&lt;br&gt;@@ -475,10 +499,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * no access type set, this method will set it.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public List&amp;lt;Member&amp;gt; getPersistentMembers(ClassMetaData meta) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public List&amp;lt;Member&amp;gt; getPersistentMembers(ClassMetaData meta, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	List&amp;lt;Member&amp;gt; members = new ArrayList&amp;lt;Member&amp;gt;();
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	List&amp;lt;Field&amp;gt; fields &amp;nbsp; = getPersistentFields(meta);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	List&amp;lt;Method&amp;gt; getters = getPersistentMethods(meta);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	List&amp;lt;Field&amp;gt; fields &amp;nbsp; = getPersistentFields(meta, ignoreTransient);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	List&amp;lt;Method&amp;gt; getters = getPersistentMethods(meta, ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean isMixed = !fields.isEmpty() &amp;&amp; !getters.isEmpty();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	boolean isEmpty = fields.isEmpty() &amp;&amp; getters.isEmpty();
&lt;br&gt;@@ -532,16 +556,21 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected List&amp;lt;String&amp;gt; getFieldAccessNames(ClassMetaData meta) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	return toNames(getPersistentFields(meta));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	return toNames(getPersistentFields(meta, false));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected List&amp;lt;String&amp;gt; getPropertyAccessNames(ClassMetaData meta) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	return toNames(getPersistentMethods(meta));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	return toNames(getPersistentMethods(meta, false));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean isDefaultPersistent(ClassMetaData meta, Member member,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return isDefaultPersistent(meta, member, name, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected boolean isDefaultPersistent(ClassMetaData meta, Member member,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name, boolean ignoreTransient) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int mods = member.getModifiers();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (Modifier.isTransient(mods))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;@@ -581,7 +610,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PersistenceStrategy strat = getPersistenceStrategy(null, member);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PersistenceStrategy strat = getPersistenceStrategy(null, member, ignoreTransient);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (strat == null || strat == PersistenceStrategy.TRANSIENT)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=882172&amp;r1=882171&amp;r2=882172&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java Thu Nov 19 15:12:36 2009
&lt;br&gt;@@ -829,8 +829,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean startClass(String elem, Attributes attrs)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws SAXException {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean metaDataComplete = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.startClass(elem, attrs);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (isMetaDataComplete(attrs)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;metaDataComplete = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	setAnnotationParser(null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (!_isXMLMappingMetaDataComplete){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	resetAnnotationParser();
&lt;br&gt;@@ -874,7 +876,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// be UNKNOWN)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (accessCode == AccessCode.UNKNOWN)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;accessCode = _access;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;meta = repos.addMetaData(_cls, accessCode);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;meta = repos.addMetaData(_cls, accessCode, metaDataComplete);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FieldMetaData[] fmds = meta.getFields();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (metaDataComplete) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; fmds.length; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fmds[i].setExplicit(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;meta.setEnvClassLoader(_envLoader);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;meta.setSourceMode(MODE_NONE);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r882172-in-openjpa-trunk-openjpa-kernel-src-main-java-org-apache-openjpa-meta-openjpa-per-tp4032338p4032338.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4028869</id>
	<title>svn commit: r881977 - in /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria: AbstractCriteriaTestCase.java TestJPQLSubquery.java TestTypesafeCriteria.java</title>
	<published>2009-11-18T14:44:02Z</published>
	<updated>2009-11-18T14:44:02Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Wed Nov 18 22:44:01 2009
&lt;br&gt;New Revision: 881977
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881977&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881977&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Run CriteriaTest on MySQL as well.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=881977&amp;r1=881976&amp;r2=881977&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=881977&amp;r1=881976&amp;r2=881977&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java Wed Nov 18 22:44:01 2009
&lt;br&gt;@@ -206,7 +206,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;JPQL &amp;quot; + jpql + &amp;quot; failed to execute\r\n&amp;quot; + w);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(dict instanceof DerbyDictionary))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(dict instanceof DerbyDictionary || dict instanceof MySQLDictionary))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; jSQL.size(); i++) {
&lt;br&gt;@@ -229,7 +229,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(w.toString());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(dict instanceof DerbyDictionary))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(dict instanceof DerbyDictionary || dict instanceof MySQLDictionary))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jSql = jSQL.get(0).trim();
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java?rev=881977&amp;r1=881976&amp;r2=881977&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java?rev=881977&amp;r1=881976&amp;r2=881977&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java Wed Nov 18 22:44:01 2009
&lt;br&gt;@@ -34,6 +34,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.SetJoin;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Subquery;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.DerbyDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.criteria.AbstractCriteriaTestCase.QueryDecorator;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.embed.Division;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -771,9 +772,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; (select distinct o.id from LineItem i, Order o&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; where i.quantity &amp;gt; 10 and o.count &amp;gt; 1000 and i.id = o.id)&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String crossJoin = (getDictionary() instanceof DerbyDictionary) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ? &amp;quot;JOIN CR_ODR t2 ON (1 = 1)&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &amp;quot;CROSS JOIN CR_ODR t2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT t0.id FROM CR_ODR t0 WHERE (t0.id IN (&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT DISTINCT t2.id &amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;FROM CR_ODR t1 JOIN CR_ODR t2 ON (1 = 1), CR_LI t3 WHERE (&amp;quot; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;FROM CR_ODR t1 &amp;quot; + crossJoin + &amp;quot;, CR_LI t3 WHERE (&amp;quot; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;t3.quantity &amp;gt; ? AND t2.cnt &amp;gt; ? AND t3.id = t2.id)))&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, expectedSQL);
&lt;br&gt;@@ -1086,8 +1090,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; where o1.quantity = &amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; any(select o2.quantity from in(c.orders) o2)&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String crossJoin = getDictionary() instanceof DerbyDictionary
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? &amp;quot;JOIN CR_CUST t1 ON (1 = 1)&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: &amp;quot;CROSS JOIN CR_CUST t1&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT t0.id, t1.name &amp;quot; + 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;FROM CR_ODR t0 JOIN CR_CUST t1 ON (1 = 1) WHERE (t0.quantity = ANY (&amp;quot; + 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;FROM CR_ODR t0 &amp;quot; + crossJoin + &amp;quot; WHERE (t0.quantity = ANY (&amp;quot; + 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;SELECT t3.quantity FROM CR_ODR t2, CR_ODR t3 WHERE (t2.id = t3.id) AND (t1.id = t2.CUSTOMER_ID)))&amp;quot;; 
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, expectedSQL);
&lt;br&gt;@@ -1182,8 +1189,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; (select o.quantity*2 from LineItem i, Order o&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; where i.quantity &amp;gt; 10 and o.quantity &amp;gt; 1000 and i.id = &amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;o.id)&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String crossJoin = (getDictionary() instanceof DerbyDictionary) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? &amp;quot;JOIN CR_ODR t2 ON (1 = 1)&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: &amp;quot;CROSS JOIN CR_ODR t2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT t0.id FROM CR_ODR t0 WHERE (t0.quantity &amp;gt; (&amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT (t2.quantity * ?) FROM CR_ODR t1 JOIN CR_ODR t2 ON (1 = 1), CR_LI t3 WHERE (&amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT (t2.quantity * ?) FROM CR_ODR t1 &amp;quot; + crossJoin + &amp;quot;, CR_LI t3 WHERE (&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;t3.quantity &amp;gt; ? AND t2.quantity &amp;gt; ? AND t3.id = t2.id)))&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, expectedSQL);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -1208,10 +1218,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select o.id from Order o where o.customer.name =&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; (select substring(o2.customer.name, 3) from Order o2&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; where o.customer.id = o2.customer.id)&amp;quot;;
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String useCast = (getDictionary() instanceof DerbyDictionary) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? &amp;quot;SUBSTR(CAST((t3.name) AS VARCHAR(1000)), 3) &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: &amp;quot;SUBSTRING(t3.name, 3) &amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT t0.id FROM CR_ODR t0 &amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id WHERE (t1.name = (&amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT SUBSTR(CAST((t3.name) AS VARCHAR(1000)), 3) &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT &amp;quot; + useCast
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;FROM CR_ODR t2 INNER JOIN CR_CUST t3 ON t2.CUSTOMER_ID = t3.id &amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;WHERE (t0.CUSTOMER_ID = t2.CUSTOMER_ID)))&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, expectedSQL);
&lt;br&gt;@@ -1280,10 +1293,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select o.id from Order o where o.customer.name in&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; (select CONCAT(o.customer.name, 'XX') from Order o&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot; where o.quantity &amp;gt; 10)&amp;quot;;
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String useCast = getDictionary() instanceof DerbyDictionary
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ? &amp;quot;(CAST(t1.name AS VARCHAR(1000)) || CAST(? AS VARCHAR(1000))) &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : &amp;quot;CONCAT(t1.name,?) &amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT t2.id FROM CR_ODR t2 &amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;INNER JOIN CR_CUST t3 ON t2.CUSTOMER_ID = t3.id WHERE (t3.name IN (&amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT (CAST(t1.name AS VARCHAR(1000)) || CAST(? AS VARCHAR(1000))) &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;SELECT &amp;quot; + useCast 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;+ &amp;quot;FROM CR_ODR t0 INNER JOIN CR_CUST t1 ON t0.CUSTOMER_ID = t1.id WHERE (t0.quantity &amp;gt; ?)))&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, expectedSQL);
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=881977&amp;r1=881976&amp;r2=881977&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=881977&amp;r1=881976&amp;r2=881977&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Wed Nov 18 22:44:01 2009
&lt;br&gt;@@ -1406,19 +1406,25 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testCountDistinct() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// JPQL Parser does not do well with the following 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select DISTINCT COUNT(a.name) from Account a&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select COUNT(DISTINCT a.name) from Account a&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Long&amp;gt; c = cb.createQuery(Long.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Account&amp;gt; a = c.from(Account.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.select(cb.countDistinct(a.get(Account_.name)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// hence we do not check equivalence against JPQL 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// assertEquivalence(c, jpql);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// but check against SQL
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT COUNT(DISTINCT t0.name) FROM CR_ACCT t0&amp;quot;;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(c, expectedSQL);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testCountDistinctOnJoin() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select COUNT(DISTINCT a.b.age) from A a&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Long&amp;gt; c = cb.createQuery(Long.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;A&amp;gt; a = c.from(A.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.select(cb.countDistinct(a.get(A_.b).get(B_.age)));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testSizeReturnsInteger() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select SIZE(c.accounts) from Customer c&amp;quot;;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881977-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persisa-tp4028869p4028869.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4028062</id>
	<title>svn commit: r881917 - /openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java</title>
	<published>2009-11-18T12:15:38Z</published>
	<updated>2009-11-18T12:15:38Z</updated>
	<author>
		<name>curtisr7</name>
	</author>
	<content type="html">Author: curtisr7
&lt;br&gt;Date: Wed Nov 18 20:15:38 2009
&lt;br&gt;New Revision: 881917
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881917&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881917&amp;view=rev&lt;/a&gt;&lt;br&gt;Log: (empty)
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=881917&amp;r1=881916&amp;r2=881917&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=881917&amp;r1=881916&amp;r2=881917&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Wed Nov 18 20:15:38 2009
&lt;br&gt;@@ -156,10 +156,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new LifecycleEventManager.ListenerList(3);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private ReentrantLock _lock = new ReentrantLock();
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected boolean _eagerPersistentMetaData = false;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected boolean _noLock = false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected boolean _preload = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final String EAGER_PERSISTENT_META_DATA = &amp;quot;EagerPersistentMetaData&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static final String PRELOAD_STR = &amp;quot;preload&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Default constructor. &amp;nbsp;Configure via {@link Configurable}.
&lt;br&gt;@@ -286,40 +285,33 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_sourceMode &amp;= ~mode;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Sets whether this repository will load all MetaData for all known persistent classes at initialization.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Defaults to false.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Sets whether this repository will load all MetaData for all known persistent classes at
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * initialization and remove all locking. Defaults to false.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void setEagerPersistentMetaData(boolean b) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_eagerPersistentMetaData = b;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setPreload(boolean p) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_preload = p;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Sets whether this repository will load all MetaData for all known persistent classes at initialization.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Defaults to false.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public boolean getEagerPersistentMetaData() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _eagerPersistentMetaData;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public boolean getPreload() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _preload;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void setNoLock(boolean b){
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_noLock = b;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public boolean getNoLock(){
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _noLock;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * If the openjpa.MetaDataRepository plugin value EagerPersistentMetaData=false , this method will noop. If EagerPersistentMetaData=true, this
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * method will load all persistent classes and ALL MetaData for those persistent classes.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * &amp;lt;p&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * If noLock=true, calling this method will remove ALL locking from this class if EagerPersistentMetaData=true.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * If the openjpa.MetaDataRepository plugin value Preload=true is set, this method will load all
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * MetaData for all persistent classes and will remove locking from this class.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;lt;p&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * NOTE : This method is not thread safe and should ONLY be called by the PersistenceProviderImpl.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * NOTE : This method is not thread safe and should ONLY be called by the
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * PersistenceProviderImpl.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void initializeEager() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerPersistentMetaData == false) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void preload() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_preload == false) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If pooling EMFs, this method may be invoked more than once. Only perform this work once.
&lt;br&gt;@@ -328,7 +320,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_log.isTraceEnabled()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_log.trace(&amp;quot;MetaDataRepository NoLock=&amp;quot; + _noLock + &amp;quot;, EagerPersistentMetaData=&amp;quot; + _eagerPersistentMetaData);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_log.trace(&amp;quot;MetaDataRepository Preload=&amp;quot; + _preload);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MultiClassLoader multi = AccessController.doPrivileged(J2DoPrivHelper.newMultiClassLoaderAction());
&lt;br&gt;@@ -361,9 +353,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Hook in this class as a listener and process registered classes list to populate _aliases list.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PCRegistry.addRegisterClassListener(this);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;processRegisteredClasses(multi);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_noLock == true) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_lock = null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_lock = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_eagerProcessingComplete = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;@@ -1748,7 +1738,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_implGen == null) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_implGen = new InterfaceImplGenerator(this);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_eagerPersistentMetaData == true &amp;&amp; _noLock == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_preload == true) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_oids = new HashMap();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_impls = new HashMap();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_ifaces = new HashMap();
&lt;br&gt;@@ -2268,11 +2258,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * This helper method returns true if Options paramater has the property EagerPersistentTypes or
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * EagerPersistentMetaData set to true.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * This helper method returns true if Options paramater has the property Preload
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * set to true.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public static boolean needsInitializeEager(Options o) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o.getBooleanProperty(EAGER_PERSISTENT_META_DATA) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public static boolean needsPreload(Options o) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (o.getBooleanProperty(PRELOAD_STR) == true) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881917-openjpa-sandboxes-perf-openjpa-kernel-src-main-java-org-apache-openjpa-meta-MetaDa-tp4028062p4028062.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4028063</id>
	<title>svn commit: r881916 - in /openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence: PersistenceProductDerivation.java PersistenceProviderImpl.java</title>
	<published>2009-11-18T12:15:33Z</published>
	<updated>2009-11-18T12:15:33Z</updated>
	<author>
		<name>curtisr7</name>
	</author>
	<content type="html">Author: curtisr7
&lt;br&gt;Date: Wed Nov 18 20:15:32 2009
&lt;br&gt;New Revision: 881916
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881916&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881916&amp;view=rev&lt;/a&gt;&lt;br&gt;Log: (empty)
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java?rev=881916&amp;r1=881915&amp;r2=881916&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java?rev=881916&amp;r1=881915&amp;r2=881916&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProductDerivation.java Wed Nov 18 20:15:32 2009
&lt;br&gt;@@ -30,7 +30,6 @@
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;import java.util.MissingResourceException;
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;import javax.persistence.spi.PersistenceUnitInfo;
&lt;br&gt;&amp;nbsp;import javax.persistence.spi.PersistenceUnitTransactionType;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -454,8 +453,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_source = source;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static final int MAX_PERF_LEVEL = 1;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void setInto(Configuration conf) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (conf instanceof OpenJPAConfiguration) {
&lt;br&gt;@@ -476,49 +473,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addProperty(key, Configurations.combinePlugins(orig, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(String) override));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Setup Performance configuration properties. 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Map props = getProperties();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object perfLevel = props.get(ProductDerivations.getConfigurationKey(&amp;quot;Performance&amp;quot;, getProperties()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (perfLevel instanceof String) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int level = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = Integer.parseInt((String) perfLevel);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(level &amp;gt; MAX_PERF_LEVEL){
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = MAX_PERF_LEVEL;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log log = oconf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// We missed translation. What to do about this?
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(log.isInfoEnabled()){
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// LOG ME
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NumberFormatException nfe) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (Boolean.parseBoolean((String) perfLevel) == true) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If true, set to maximum perfLevel.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = MAX_PERF_LEVEL;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;level = 0;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}// end catch
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The reason that there is a switch here is that in the future when(if) there is another
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// performance level, the new level will include the older(lower) levels. ie: Level 2 would include
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// changes that were a part of Level 1.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (level) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 1:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO -- add a trace point if we found a user property conflicting with
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// the performance prop?
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String key = ProductDerivations.getConfigurationKey(&amp;quot;MetaDataRepository&amp;quot;, getProperties());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (props.containsKey(key) == false) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addProperty(key, &amp;quot;NoLock=true,EagerPersistentMetaData=true&amp;quot;);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;key = ProductDerivations.getConfigurationKey(&amp;quot;BrokerImpl&amp;quot;, getProperties());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (props.containsKey(key) == false) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addProperty(key, &amp;quot;SuppressBatchOleLogging=true&amp;quot;);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setInto(conf, null);
&lt;br&gt;&lt;br&gt;Modified: openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java?rev=881916&amp;r1=881915&amp;r2=881916&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java?rev=881916&amp;r1=881915&amp;r2=881916&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java (original)
&lt;br&gt;+++ openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java Wed Nov 18 20:15:32 2009
&lt;br&gt;@@ -85,22 +85,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;BrokerFactory factory = getBrokerFactory(cp, poolValue, null);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// We need to wait to initializeEager until after we get back a fully configured/instantiated
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// BrokerFactory. This is because it is possible that someone has extended OpenJPA
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// functions and they need to be allowed time to configure themselves before we go off and
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// start instanting configurable objects (ie:openjpa.MetaDataRepository). Don't catch
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// any exceptions here because we want to fail-fast.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = factory.getConfiguration();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (MetaDataRepository.needsInitializeEager(o) == true) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MetaDataRepository mdr = conf.getMetaDataRepositoryInstance(); 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setValidate(MetaDataRepository.VALIDATE_RUNTIME, true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setResolve(MetaDataRepository.MODE_MAPPING_INIT, true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((AbstractBrokerFactory) factory).loadPersistentTypes((ClassLoader) AccessController.doPrivileged(
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.getContextClassLoaderAction()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conf.getMetaDataRepositoryInstance().initializeEager();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;preloadMetaDataRepository(factory);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return JPAFacadeHelper.toEntityManagerFactory(factory);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;@@ -176,22 +161,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_loc.get(&amp;quot;transformer-registration-error&amp;quot;, pui));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// We need to wait to initializeEager until after we get back a fully configured/instantiated
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// BrokerFactory. This is because it is possible that someone has extended OpenJPA
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// functions and they need to be allowed time to configure themselves before we go off and
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// start instanting configurable objects (ie:openjpa.MetaDataRepository). Don't catch
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// any exceptions here because we want to fail-fast.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = factory.getConfiguration();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (MetaDataRepository.needsInitializeEager(o) == true) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MetaDataRepository mdr = conf.getMetaDataRepositoryInstance(); 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setValidate(MetaDataRepository.VALIDATE_RUNTIME, true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setResolve(MetaDataRepository.MODE_MAPPING_INIT, true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((AbstractBrokerFactory) factory).loadPersistentTypes((ClassLoader) AccessController
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;conf.getMetaDataRepositoryInstance().initializeEager();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;preloadMetaDataRepository(factory); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return JPAFacadeHelper.toEntityManagerFactory(factory);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw PersistenceExceptions.toPersistenceException(e);
&lt;br&gt;@@ -216,6 +186,30 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected OpenJPAConfiguration newConfigurationImpl() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new OpenJPAConfigurationImpl();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Private worker method that will call to the MetaDataRepository to preload if the provided
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * BrokerFactory is configured to do so.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private void preloadMetaDataRepository(BrokerFactory factory){
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// We need to wait to preload until after we get back a fully configured/instantiated
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// BrokerFactory. This is because it is possible that someone has extended OpenJPA
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// functions and they need to be allowed time to configure themselves before we go off and
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// start instanting configurable objects (ie:openjpa.MetaDataRepository). Don't catch
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// any exceptions here because we want to fail-fast.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;OpenJPAConfiguration conf = factory.getConfiguration();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (MetaDataRepository.needsPreload(o) == true) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MetaDataRepository mdr = conf.getMetaDataRepositoryInstance(); 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setValidate(MetaDataRepository.VALIDATE_RUNTIME, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.setResolve(MetaDataRepository.MODE_MAPPING_INIT, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Load persistent classes and hook in subclasser
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((AbstractBrokerFactory) factory).loadPersistentTypes((ClassLoader) AccessController
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.doPrivileged(J2DoPrivHelper.getContextClassLoaderAction()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mdr.preload();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Java EE 5 class transformer.
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881916-in-openjpa-sandboxes-perf-openjpa-persistence-src-main-java-org-apache-openjpa-pea-tp4028063p4028063.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4027768</id>
	<title>svn commit: r881892 - in /openjpa/branches/1.3.x: openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/ openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/</title>
	<published>2009-11-18T11:29:13Z</published>
	<updated>2009-11-18T11:29:13Z</updated>
	<author>
		<name>fancy</name>
	</author>
	<content type="html">Author: fancy
&lt;br&gt;Date: Wed Nov 18 19:29:13 2009
&lt;br&gt;New Revision: 881892
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881892&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881892&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1388 JPQL named parameter using a reserved word (:vlaue) resulting in ArgumentException
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java
&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java?rev=881892&amp;r1=881891&amp;r2=881892&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java?rev=881892&amp;r1=881891&amp;r2=881892&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java Wed Nov 18 19:29:13 2009
&lt;br&gt;@@ -810,7 +810,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return eval(firstChild(node));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case JJTNAMEDINPUTPARAMETER:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(node.text, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(onlyChild(node).text, false);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case JJTPOSITIONALINPUTPARAMETER:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(node.text, true);
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt?rev=881892&amp;r1=881891&amp;r2=881892&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt?rev=881892&amp;r1=881891&amp;r2=881892&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt Wed Nov 18 19:29:13 2009
&lt;br&gt;@@ -1,1308 +1,1307 @@
&lt;br&gt;-/*
&lt;br&gt;- * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;- * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;- * distributed with this work for additional information
&lt;br&gt;- * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;- * to you under the Apache License, Version 2.0 (the
&lt;br&gt;- * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;- * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;- * &amp;nbsp;
&lt;br&gt;- * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;- * &amp;nbsp;
&lt;br&gt;- * Unless required by applicable law or agreed to in writing,
&lt;br&gt;- * software distributed under the License is distributed on an
&lt;br&gt;- * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;- * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;- * specific language governing permissions and limitations
&lt;br&gt;- * under the License. &amp;nbsp; 
&lt;br&gt;- */
&lt;br&gt;-
&lt;br&gt;-/**
&lt;br&gt;- * &amp;nbsp;An JP QL grammar parser.
&lt;br&gt;- * 
&lt;br&gt;- * &amp;nbsp;Samples:
&lt;br&gt;- *	 &amp;nbsp;SELECT COUNT(p) FROM Person AS p
&lt;br&gt;- *	 &amp;nbsp;SELECT OBJECT(identifier) FROM schema identifier
&lt;br&gt;- *	 &amp;nbsp;SELECT identifier FROM schema AS identifier
&lt;br&gt;- *	
&lt;br&gt;- *	@author Patrick Linskey
&lt;br&gt;- *	@author Marc Prud'hommeaux
&lt;br&gt;- */
&lt;br&gt;-options {
&lt;br&gt;-	NODE_PREFIX = &amp;quot;JPQL&amp;quot;;
&lt;br&gt;-	NODE_PACKAGE = &amp;quot;org.apache.openjpa.kernel.jpql&amp;quot;;
&lt;br&gt;-	MULTI = false;
&lt;br&gt;-	NODE_DEFAULT_VOID = true;
&lt;br&gt;-	JAVA_UNICODE_ESCAPE = true;
&lt;br&gt;-	STATIC = false;
&lt;br&gt;-	NODE_USES_PARSER = true;
&lt;br&gt;-
&lt;br&gt;-	LOOKAHEAD = 1;
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-	// debugging variables
&lt;br&gt;-	// DEBUG_PARSER = true; 		// simple parser debug
&lt;br&gt;-	// DEBUG_TOKEN_MANAGER = true; 	// more verbose token manager debug
&lt;br&gt;-	// DEBUG_LOOKAHEAD = true; 		// more verbose lookahead debug
&lt;br&gt;-
&lt;br&gt;-	SANITY_CHECK = true; // check for left-recursion, etc (must always be true)
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-	// FORCE_LA_CHECK = true;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-PARSER_BEGIN(JPQL)
&lt;br&gt;-package org.apache.openjpa.kernel.jpql;
&lt;br&gt;-
&lt;br&gt;-import java.io.*;
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/**
&lt;br&gt;- *	@nojavadoc
&lt;br&gt;- */
&lt;br&gt;-public class JPQL
&lt;br&gt;-{
&lt;br&gt;-	String jpql;
&lt;br&gt;-	boolean inEnumPath;
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-	public JPQL (String jpql)
&lt;br&gt;-	{
&lt;br&gt;-		this (new StringReader (jpql));
&lt;br&gt;-
&lt;br&gt;-		this.jpql = jpql;
&lt;br&gt;-	}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-	public static void main (String[] args)
&lt;br&gt;-		throws Exception
&lt;br&gt;-	{
&lt;br&gt;-		if (args.length &amp;gt; 0)
&lt;br&gt;-		{
&lt;br&gt;-			for (int i = 0; i &amp;lt; args.length; i++)
&lt;br&gt;-			{
&lt;br&gt;-				JPQL parser = new JPQL (args[i]);
&lt;br&gt;-				SimpleNode ast = (SimpleNode) parser.parseQuery ();
&lt;br&gt;-				ast.dump (System.out, &amp;quot;&amp;quot;);
&lt;br&gt;-			}
&lt;br&gt;-		}
&lt;br&gt;-		else
&lt;br&gt;-		{
&lt;br&gt;-			JPQL parser = new JPQL (System.in);
&lt;br&gt;-			while (true)
&lt;br&gt;-			{
&lt;br&gt;-				System.out.print (&amp;quot;Enter Expression: &amp;quot;);
&lt;br&gt;-				System.out.flush ();
&lt;br&gt;-				try
&lt;br&gt;-				{
&lt;br&gt;-					SimpleNode ast = (SimpleNode) parser.parseQuery ();
&lt;br&gt;-					if (ast == null)
&lt;br&gt;-						return;
&lt;br&gt;-					else
&lt;br&gt;-						ast.dump (System.out, &amp;quot;&amp;quot;);
&lt;br&gt;-				}
&lt;br&gt;-				catch (Throwable x)
&lt;br&gt;-				{
&lt;br&gt;-					x.printStackTrace ();
&lt;br&gt;-					return;
&lt;br&gt;-				}
&lt;br&gt;-			}
&lt;br&gt;-		}
&lt;br&gt;-	}
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-PARSER_END(JPQL)
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-SKIP :
&lt;br&gt;-{
&lt;br&gt;- 	&amp;quot; &amp;quot;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;| &amp;quot;\n&amp;quot;
&lt;br&gt;-	| &amp;quot;\r&amp;quot;
&lt;br&gt;-	| &amp;quot;\t&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* basics */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; COMMA: &amp;quot;,&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; DOT: &amp;quot;.&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; EQ: &amp;quot;=&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; NE: &amp;quot;&amp;lt;&amp;gt;&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; GT: &amp;quot;&amp;gt;&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; GE: &amp;quot;&amp;gt;=&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; LT: &amp;quot;&amp;lt;&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; LE: &amp;quot;&amp;lt;=&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; PLUS: &amp;quot;+&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; MINUS: &amp;quot;-&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; TIMES: &amp;quot;*&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; DIV: &amp;quot;/&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; NEW: &amp;quot;NEW&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; ALL: &amp;quot;ALL&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; ANY: &amp;quot;ANY&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; EXISTS: &amp;quot;EXISTS&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; SOME: &amp;quot;SOME&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; EMPTY: &amp;quot;EMPTY&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; ASC: &amp;quot;ASC&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; DESC: &amp;quot;DESC&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; ORDER: &amp;quot;ORDER&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; BY: &amp;quot;BY&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; IS: &amp;quot;IS&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; MEMBER: &amp;quot;MEMBER&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; OF: &amp;quot;OF&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; LIKE: &amp;quot;LIKE&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; ESCAPE: &amp;quot;ESCAPE&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; BETWEEN: &amp;quot;BETWEEN&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; NULL: &amp;quot;NULL&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* aggregates */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; AVG: &amp;quot;AVG&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; MIN: &amp;quot;MIN&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; MAX: &amp;quot;MAX&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; SUM: &amp;quot;SUM&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; COUNT: &amp;quot;COUNT&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* boolean arithmetic */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; OR: &amp;quot;OR&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; AND: &amp;quot;AND&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; NOT: &amp;quot;NOT&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* functions returning strings */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; CONCAT: &amp;quot;CONCAT&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; SUBSTRING: &amp;quot;SUBSTRING&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; TRIM: &amp;quot;TRIM&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; LOWER: &amp;quot;LOWER&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; UPPER: &amp;quot;UPPER&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* trim specification */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; LEADING: &amp;quot;LEADING&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; TRAILING: &amp;quot;TRAILING&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; BOTH: &amp;quot;BOTH&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* functions returning numerics */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; LENGTH: &amp;quot;LENGTH&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; LOCATE: &amp;quot;LOCATE&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; ABS: &amp;quot;ABS&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; SQRT: &amp;quot;SQRT&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; MOD: &amp;quot;MOD&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; SIZE: &amp;quot;SIZE&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* functions returning datetime */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; CURRENT_DATE: &amp;quot;CURRENT_DATE&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; CURRENT_TIME: &amp;quot;CURRENT_TIME&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; CURRENT_TIMESTAMP: &amp;quot;CURRENT_TIMESTAMP&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* type of query */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; SELECT: &amp;quot;SELECT&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; DISTINCT: &amp;quot;DISTINCT&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; FROM: &amp;quot;FROM&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; UPDATE: &amp;quot;UPDATE&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; DELETE: &amp;quot;DELETE&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; WHERE: &amp;quot;WHERE&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; GROUP: &amp;quot;GROUP&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; HAVING: &amp;quot;HAVING&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; AS: &amp;quot;AS&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; LEFT: &amp;quot;LEFT&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; OUTER: &amp;quot;OUTER&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; INNER: &amp;quot;INNER&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; JOIN: &amp;quot;JOIN&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; FETCH: &amp;quot;FETCH&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; IN: &amp;quot;IN&amp;quot; &amp;gt;
&lt;br&gt;-	|	&amp;lt; SET: &amp;quot;SET&amp;quot; &amp;gt;
&lt;br&gt;-
&lt;br&gt;-	|	&amp;lt; OBJECT: &amp;quot;OBJECT&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/* inspired by the Java 1.0.2 specification */
&lt;br&gt;-/* ### should we limit this to the length that is valid in java? */
&lt;br&gt;-TOKEN : /* literals */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; INTEGER_LITERAL: (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) ([&amp;quot;l&amp;quot;,&amp;quot;L&amp;quot;])? &amp;gt;
&lt;br&gt;-	| &amp;lt; DECIMAL_LITERAL:
&lt;br&gt;-		((([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])* &amp;quot;.&amp;quot; ([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) (&amp;lt;EXPONENT&amp;gt;)? ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?
&lt;br&gt;-		| (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+ &amp;quot;.&amp;quot;) (&amp;lt;EXPONENT&amp;gt;)? ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?
&lt;br&gt;-		| (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) (&amp;lt;EXPONENT&amp;gt;) ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?
&lt;br&gt;-		| (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) (&amp;lt;EXPONENT&amp;gt;)? ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?) &amp;gt;
&lt;br&gt;-	| &amp;lt; #EXPONENT: [&amp;quot;e&amp;quot;,&amp;quot;E&amp;quot;] ([&amp;quot;+&amp;quot;,&amp;quot;-&amp;quot;])? ([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+ &amp;gt;
&lt;br&gt;-	| &amp;lt; STRING_LITERAL: &amp;quot;'&amp;quot;
&lt;br&gt;-	 &amp;nbsp;((&amp;quot;''&amp;quot; | ~[&amp;quot;'&amp;quot;])
&lt;br&gt;-		/*
&lt;br&gt;-	 &amp;nbsp;((&amp;quot;''&amp;quot; | ~[&amp;quot;'&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;\n&amp;quot;,&amp;quot;\r&amp;quot;])
&lt;br&gt;-		| (&amp;quot;\\&amp;quot;
&lt;br&gt;-			( [&amp;quot;n&amp;quot;,&amp;quot;t&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;r&amp;quot;,&amp;quot;f&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;'&amp;quot;]
&lt;br&gt;-			| [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] ( [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] )?
&lt;br&gt;-			| [&amp;quot;0&amp;quot;-&amp;quot;3&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;]
&lt;br&gt;-			)
&lt;br&gt;-		 &amp;nbsp;)
&lt;br&gt;-		*/
&lt;br&gt;-	 &amp;nbsp;)*
&lt;br&gt;-	 &amp;nbsp;&amp;quot;'&amp;quot;
&lt;br&gt;-	&amp;gt;
&lt;br&gt;-	| &amp;lt; CHARACTER_LITERAL: &amp;quot;'&amp;quot;
&lt;br&gt;-	 &amp;nbsp;( &amp;nbsp; (~[&amp;quot;'&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;\n&amp;quot;,&amp;quot;\r&amp;quot;])
&lt;br&gt;-		| (&amp;quot;\\&amp;quot;
&lt;br&gt;-			( [&amp;quot;n&amp;quot;,&amp;quot;t&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;r&amp;quot;,&amp;quot;f&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;'&amp;quot;]
&lt;br&gt;-			| [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] ( [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] )?
&lt;br&gt;-			| [&amp;quot;0&amp;quot;-&amp;quot;3&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;]
&lt;br&gt;-			)
&lt;br&gt;-		 &amp;nbsp;)
&lt;br&gt;-	 &amp;nbsp;)
&lt;br&gt;-	 &amp;nbsp;&amp;quot;'&amp;quot;
&lt;br&gt;-	&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-TOKEN [ IGNORE_CASE ]: /* boolean literals can be case-insensitive */
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt; BOOLEAN_LITERAL: &amp;quot;TRUE&amp;quot; | &amp;quot;FALSE&amp;quot; &amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-/* From the Java 1.0.2 specification */
&lt;br&gt;-TOKEN : /* IDENTIFIERS */
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp;&amp;lt; IDENTIFIER: &amp;lt;LETTER&amp;gt; (&amp;lt;LETTER&amp;gt;|&amp;lt;DIGIT&amp;gt;)* &amp;gt;
&lt;br&gt;-	|
&lt;br&gt;- &amp;nbsp;&amp;lt; #LETTER:
&lt;br&gt;-	 &amp;nbsp;[
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0024&amp;quot;, 			// $
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0041&amp;quot;-&amp;quot;\u005a&amp;quot;, 	// A-Z
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u005f&amp;quot;, 			// _
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0061&amp;quot;-&amp;quot;\u007a&amp;quot;, 	// a-z
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u00c0&amp;quot;-&amp;quot;\u00d6&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u00d8&amp;quot;-&amp;quot;\u00f6&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u00f8&amp;quot;-&amp;quot;\u00ff&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0100&amp;quot;-&amp;quot;\u1fff&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u3040&amp;quot;-&amp;quot;\u318f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u3300&amp;quot;-&amp;quot;\u337f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u3400&amp;quot;-&amp;quot;\u3d2d&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u4e00&amp;quot;-&amp;quot;\u9fff&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\uf900&amp;quot;-&amp;quot;\ufaff&amp;quot;
&lt;br&gt;-	 &amp;nbsp;]
&lt;br&gt;- &amp;nbsp;&amp;gt;
&lt;br&gt;-	|
&lt;br&gt;- &amp;nbsp;&amp;lt; #DIGIT:
&lt;br&gt;-	 &amp;nbsp;[
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0030&amp;quot;-&amp;quot;\u0039&amp;quot;, 	// 0-9
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0660&amp;quot;-&amp;quot;\u0669&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u06f0&amp;quot;-&amp;quot;\u06f9&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0966&amp;quot;-&amp;quot;\u096f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u09e6&amp;quot;-&amp;quot;\u09ef&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0a66&amp;quot;-&amp;quot;\u0a6f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0ae6&amp;quot;-&amp;quot;\u0aef&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0b66&amp;quot;-&amp;quot;\u0b6f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0be7&amp;quot;-&amp;quot;\u0bef&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0c66&amp;quot;-&amp;quot;\u0c6f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0ce6&amp;quot;-&amp;quot;\u0cef&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0d66&amp;quot;-&amp;quot;\u0d6f&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0e50&amp;quot;-&amp;quot;\u0e59&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u0ed0&amp;quot;-&amp;quot;\u0ed9&amp;quot;,
&lt;br&gt;-	 &amp;nbsp; &amp;quot;\u1040&amp;quot;-&amp;quot;\u1049&amp;quot;
&lt;br&gt;-	 &amp;nbsp;]
&lt;br&gt;- &amp;nbsp;&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-Node parseQuery() : { }
&lt;br&gt;-{
&lt;br&gt;-	(select_statement() | update_statement() | delete_statement()) &amp;lt;EOF&amp;gt;
&lt;br&gt;-	{
&lt;br&gt;-		return jjtree.rootNode();
&lt;br&gt;-	}
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void select_statement() #SELECT : { }
&lt;br&gt;-{
&lt;br&gt;-	select_clause()
&lt;br&gt;-		from_clause()
&lt;br&gt;-		[where_clause()]
&lt;br&gt;-		[groupby_clause()]
&lt;br&gt;-		[having_clause()]
&lt;br&gt;-		[orderby_clause()]
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void update_statement() #UPDATE : { }
&lt;br&gt;-{
&lt;br&gt;-	update_clause() [ where_clause() ]
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void delete_statement() #DELETE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;DELETE&amp;gt; &amp;lt;FROM&amp;gt; (from_item() #FROM) [where_clause()]
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void from_clause() #FROM : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;FROM&amp;gt; identification_variable_declaration()
&lt;br&gt;-	(LOOKAHEAD(1) &amp;lt;COMMA&amp;gt; (LOOKAHEAD(collection_member_declaration()) collection_member_declaration() | LOOKAHEAD(identification_variable_declaration())identification_variable_declaration()))*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void identification_variable_declaration(): { }
&lt;br&gt;-{
&lt;br&gt;-	from_item() (LOOKAHEAD(fetch_join()) fetch_join() | LOOKAHEAD(inner_join()) inner_join() | LOOKAHEAD(outer_join()) outer_join())*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void from_item() #FROMITEM : { }
&lt;br&gt;-{
&lt;br&gt;-	abstract_schema_name() [LOOKAHEAD(1)&amp;lt;AS&amp;gt;] [LOOKAHEAD(identification_variable())identification_variable()]
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void subquery_from_clause() #FROM : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;FROM&amp;gt; subquery_from_item()
&lt;br&gt;-		( LOOKAHEAD(1) &amp;lt;COMMA&amp;gt; subquery_from_item() )*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void subquery_from_item() : { }
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LOOKAHEAD(collection_member_declaration()) collection_member_declaration()
&lt;br&gt;-	| LOOKAHEAD(identification_variable_declaration()) identification_variable_declaration()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void inner_join() #INNERJOIN : { }
&lt;br&gt;-{
&lt;br&gt;-	[&amp;lt;INNER&amp;gt;] &amp;lt;JOIN&amp;gt; path() [&amp;lt;AS&amp;gt;] identification_variable()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void collection_member_declaration() #INNERJOIN : { }
&lt;br&gt;-{
&lt;br&gt;-	// synonymous with &amp;quot;INNER JOIN path AS identifier&amp;quot; (InnerJoin)
&lt;br&gt;-	&amp;lt;IN&amp;gt; &amp;quot;(&amp;quot; path() &amp;quot;)&amp;quot; [ LOOKAHEAD(1)&amp;lt;AS&amp;gt;] identification_variable()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void outer_join() #OUTERJOIN : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LEFT&amp;gt; [ &amp;lt;OUTER&amp;gt;] &amp;lt;JOIN&amp;gt; path() [ LOOKAHEAD(1)&amp;lt;AS&amp;gt;] identification_variable()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void fetch_join() : { }
&lt;br&gt;-{
&lt;br&gt;-	outer_fetch_join() | inner_fetch_join()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void outer_fetch_join() #OUTERFETCHJOIN : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LEFT&amp;gt; [&amp;lt;OUTER&amp;gt;] &amp;lt;JOIN&amp;gt; &amp;lt;FETCH&amp;gt; path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void inner_fetch_join() #INNERFETCHJOIN : { }
&lt;br&gt;-{
&lt;br&gt;-	[&amp;lt;INNER&amp;gt;] &amp;lt;JOIN&amp;gt; &amp;lt;FETCH&amp;gt; path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void path() #PATH : { }
&lt;br&gt;-{
&lt;br&gt;-	// a path is any dot-separated path expression starting with a
&lt;br&gt;-	// non-reserved word
&lt;br&gt;-	identification_variable() (&amp;lt;DOT&amp;gt; path_component())+
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void update_clause() : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;UPDATE&amp;gt; from_item() #FROM set_clause()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void set_clause() : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SET&amp;gt; update_item() (&amp;lt;COMMA&amp;gt; update_item())*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void update_item() #UPDATEITEM : { }
&lt;br&gt;-{
&lt;br&gt;-	path() EQ() new_value()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void new_value() #UPDATEVALUE : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(arithmetic_expression()) arithmetic_expression() |
&lt;br&gt;-	LOOKAHEAD(string_primary()) string_primary() |
&lt;br&gt;-	LOOKAHEAD(datetime_primary()) datetime_primary() |
&lt;br&gt;-	LOOKAHEAD(boolean_primary()) boolean_primary() |
&lt;br&gt;-	LOOKAHEAD(enum_primary()) enum_primary() |
&lt;br&gt;-	LOOKAHEAD(simple_entity_expression()) simple_entity_expression() |
&lt;br&gt;-	&amp;lt;NULL&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void simple_entity_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	identification_variable() | input_parameter()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void select_clause() #SELECTCLAUSE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SELECT&amp;gt; [distinct()] select_expressions()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void simple_select_clause() #SELECTCLAUSE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SELECT&amp;gt; [distinct()] subselect_expressions() 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void select_expressions() #SELECTEXPRESSIONS : { }
&lt;br&gt;-{
&lt;br&gt;-	select_expression() (&amp;lt;COMMA&amp;gt; select_expression())*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void select_expression() #SELECTEXPRESSION : { }
&lt;br&gt;-{
&lt;br&gt;-	aggregate_select_expression()
&lt;br&gt;-		| LOOKAHEAD(path()) path()
&lt;br&gt;-		| identification_variable()
&lt;br&gt;-		| (&amp;lt;OBJECT&amp;gt; &amp;quot;(&amp;quot; identification_variable() &amp;quot;)&amp;quot;)
&lt;br&gt;-		| constructor_expression()
&lt;br&gt;-		| select_extension()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void select_extension() #SELECTEXTENSION : { }
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp; &amp;nbsp;scalar_function()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void subselect_expressions() #SELECTEXPRESSIONS : { }
&lt;br&gt;-{
&lt;br&gt;-	subselect_expression() (&amp;lt;COMMA&amp;gt; subselect_expression())*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void subselect_expression() #SELECTEXPRESSION : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(path()) path() 
&lt;br&gt;-		| aggregate_select_expression()
&lt;br&gt;-		| LOOKAHEAD(1) identification_variable()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void constructor_expression() #CONSTRUCTOR : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;NEW&amp;gt; classname() constructor_parameters()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void classname() #CLASSNAME :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	identification_variable() (&amp;lt;DOT&amp;gt; identification_variable())*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void constructor_parameters() #CONSTRUCTORPARAMS : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;quot;(&amp;quot; (constructor_parameter()) (&amp;lt;COMMA&amp;gt; (constructor_parameter()))* &amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void constructor_parameter() #CONSTRUCTORPARAM : { }
&lt;br&gt;-{
&lt;br&gt;-	(path() | aggregate_select_expression())
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/* rewritten to reduce lookaheads */
&lt;br&gt;-void aggregate_select_expression() #AGGREGATE : { }
&lt;br&gt;-{
&lt;br&gt;-	(avg() | max() | min() | sum() | count())
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void distinct() #DISTINCT : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;DISTINCT&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void aggregate_path() : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;quot;(&amp;quot; (
&lt;br&gt;-		LOOKAHEAD(arithmetic_expression()) arithmetic_expression() |
&lt;br&gt;-		LOOKAHEAD(distinct_path()) distinct_path() |
&lt;br&gt;-		LOOKAHEAD(path()) path() |
&lt;br&gt;-		LOOKAHEAD(identification_variable()) identification_variable()
&lt;br&gt;-	) &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void distinct_path() #DISTINCTPATH : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;DISTINCT&amp;gt; (LOOKAHEAD(path()) path() | identification_variable())
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void count() #COUNT : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;COUNT&amp;gt; aggregate_path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void avg() #AVERAGE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;AVG&amp;gt; aggregate_path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void max() #MAX : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;MAX&amp;gt; aggregate_path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void min() #MIN : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;MIN&amp;gt; aggregate_path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void sum() #SUM : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SUM&amp;gt; aggregate_path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void where_clause() #WHERE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;WHERE&amp;gt; conditional_expression() 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void groupby_clause() #GROUPBY : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;GROUP&amp;gt; &amp;lt;BY&amp;gt; groupby_item()
&lt;br&gt;-		(LOOKAHEAD(2) &amp;lt;COMMA&amp;gt; (groupby_item()))* 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void groupby_item() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(path()) path() | identification_variable() | groupby_extension()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void groupby_extension() #GROUPBYEXTENSION : { }
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp; &amp;nbsp;scalar_function()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void having_clause() #HAVING : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;HAVING&amp;gt; conditional_expression() 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void subquery() #SUBSELECT : { }
&lt;br&gt;-{
&lt;br&gt;-	simple_select_clause()
&lt;br&gt;-		subquery_from_clause() 
&lt;br&gt;-		[LOOKAHEAD(where_clause()) where_clause()] 
&lt;br&gt;-		[LOOKAHEAD(groupby_clause()) groupby_clause()] 
&lt;br&gt;-		[LOOKAHEAD(having_clause()) having_clause()] 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/* changed to eliminate left recursion */
&lt;br&gt;-void conditional_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	conditional_term() (LOOKAHEAD(2) &amp;lt;OR&amp;gt; (conditional_expression() #OR(2)))*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/* changed to eliminate left recursion */
&lt;br&gt;-void conditional_term() : { }
&lt;br&gt;-{
&lt;br&gt;-	conditional_factor() (LOOKAHEAD(2) &amp;lt;AND&amp;gt; (conditional_term() #AND(2)))*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void conditional_factor() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(&amp;lt;NOT&amp;gt; conditional_primary())
&lt;br&gt;-	(&amp;lt;NOT&amp;gt; conditional_primary() #NOT) | conditional_primary()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void conditional_primary() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(simple_cond_expression())
&lt;br&gt;-	simple_cond_expression() | &amp;quot;(&amp;quot; conditional_expression() &amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void simple_cond_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	//LOOKAHEAD(all_or_any_expression()) all_or_any_expression() |
&lt;br&gt;-	LOOKAHEAD(exists_expression()) exists_expression() |
&lt;br&gt;-	LOOKAHEAD(comparison_expression()) comparison_expression() | 
&lt;br&gt;-	LOOKAHEAD(between_expression()) between_expression() | 
&lt;br&gt;-	LOOKAHEAD(like_expression()) like_expression() | 
&lt;br&gt;-	LOOKAHEAD(in_expression()) in_expression() | 
&lt;br&gt;-	LOOKAHEAD(null_comparison_expression()) null_comparison_expression() | 
&lt;br&gt;-	LOOKAHEAD(empty_collection_comparison_expression()) empty_collection_comparison_expression() | 
&lt;br&gt;-	LOOKAHEAD(collection_member_expression()) collection_member_expression()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void between_expression() #BETWEEN : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(6) arithmetic_expression()
&lt;br&gt;-		[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;BETWEEN&amp;gt; arithmetic_expression()
&lt;br&gt;-		&amp;lt;AND&amp;gt; arithmetic_expression()
&lt;br&gt;-	| LOOKAHEAD(6) string_expression()
&lt;br&gt;-		[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;BETWEEN&amp;gt; string_expression() &amp;lt;AND&amp;gt; string_expression()
&lt;br&gt;-	| LOOKAHEAD(6) datetime_expression()
&lt;br&gt;-		[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;BETWEEN&amp;gt; datetime_expression() &amp;lt;AND&amp;gt; datetime_expression()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void in_expression() #IN : { }
&lt;br&gt;-{
&lt;br&gt;-	path() [ LOOKAHEAD(1) &amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;IN&amp;gt;
&lt;br&gt;-		&amp;quot;(&amp;quot; (literal_or_param()
&lt;br&gt;-			(&amp;lt;COMMA&amp;gt; (literal_or_param()))* | subquery())
&lt;br&gt;-		&amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void literal_or_param() : { }
&lt;br&gt;-{
&lt;br&gt;-	(numeric_literal()
&lt;br&gt;-	| string_literal()
&lt;br&gt;-	| boolean_literal()
&lt;br&gt;-	| input_parameter())
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void like_expression() #LIKE : { }
&lt;br&gt;-{
&lt;br&gt;-	string_expression() [&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;LIKE&amp;gt; pattern_value() 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void null_comparison_expression() #ISNULL : { }
&lt;br&gt;-{
&lt;br&gt;-	(input_parameter() | path() | aggregate_select_expression())
&lt;br&gt;-	&amp;lt;IS&amp;gt; [&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;NULL&amp;gt; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void empty_collection_comparison_expression() #ISEMPTY : { }
&lt;br&gt;-{
&lt;br&gt;-	path() &amp;lt;IS&amp;gt; [&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;EMPTY&amp;gt; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void collection_member_expression() #MEMBEROF : { }
&lt;br&gt;-{
&lt;br&gt;-	(LOOKAHEAD(path()) path() | input_parameter() | path_component()) 
&lt;br&gt;-	[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;MEMBER&amp;gt; [&amp;lt;OF&amp;gt;] path()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void exists_expression() #EXISTS : { }
&lt;br&gt;-{
&lt;br&gt;-	[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;EXISTS&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void all_or_any_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	any_expression() | some_expression() | all_expression()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void any_expression() #ANY : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;ANY&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void some_expression() #ANY : { }
&lt;br&gt;-{
&lt;br&gt;-	// SOME and ANY are synonymous
&lt;br&gt;-	&amp;lt;SOME&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void all_expression() #ALL : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;ALL&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void comparison_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	// comparison_expression ::= string_value comparison_operator {string_expression | all_or_any_expression} | boolean_value { =|&amp;lt;&amp;gt;} {boolean_expression | all_or_any_expression} | datetime_primary comparison_operator {datetime_expression | all_or_any_expression} | entity_bean_value { = | &amp;lt;&amp;gt; } {entity_bean_expression | all_or_any_expression} | arithmetic_value comparison_operator {arithmetic_expression | all_or_any_expression
&lt;br&gt;-
&lt;br&gt;-	LOOKAHEAD(arithmetic_comp()) arithmetic_comp() |
&lt;br&gt;-	LOOKAHEAD(string_comp()) string_comp() |
&lt;br&gt;-	LOOKAHEAD(boolean_comp()) boolean_comp() | 
&lt;br&gt;-	LOOKAHEAD(enum_comp()) enum_comp() | 
&lt;br&gt;-	LOOKAHEAD(datetime_comp()) datetime_comp() |
&lt;br&gt;-	LOOKAHEAD(entity_comp()) entity_comp()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void string_comp() : { }
&lt;br&gt;-{
&lt;br&gt;-	string_expression() (
&lt;br&gt;-		(&amp;lt;EQ&amp;gt; (string_expression()|all_or_any_expression()) #EQUALS(2))
&lt;br&gt;-		| (&amp;lt;NE&amp;gt; (string_expression()|all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;-		| (&amp;lt;GT&amp;gt; (string_expression() | all_or_any_expression()) #GREATERTHAN(2))
&lt;br&gt;-		| (&amp;lt;GE&amp;gt; (string_expression() | all_or_any_expression()) #GREATEROREQUAL(2))
&lt;br&gt;-		| (&amp;lt;LT&amp;gt; (string_expression() | all_or_any_expression()) #LESSTHAN(2))
&lt;br&gt;-		| (&amp;lt;LE&amp;gt; (string_expression() | all_or_any_expression()) #LESSOREQUAL(2))
&lt;br&gt;-		)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void boolean_comp() : { }
&lt;br&gt;-{
&lt;br&gt;-	boolean_expression() (
&lt;br&gt;-	(&amp;lt;EQ&amp;gt; (boolean_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;-	| (&amp;lt;NE&amp;gt; (boolean_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;-	)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void enum_comp() : { }
&lt;br&gt;-{
&lt;br&gt;-	enum_expression() (
&lt;br&gt;-	(&amp;lt;EQ&amp;gt; (enum_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;-	| (&amp;lt;NE&amp;gt; (enum_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;-	)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void entity_comp() : { }
&lt;br&gt;-{
&lt;br&gt;-	entity_bean_expression() (
&lt;br&gt;-	(&amp;lt;EQ&amp;gt; ((LOOKAHEAD(all_or_any_expression()) all_or_any_expression() | entity_bean_expression()) #EQUALS(2)))
&lt;br&gt;-	| (&amp;lt;NE&amp;gt; ((LOOKAHEAD(all_or_any_expression()) all_or_any_expression() | entity_bean_expression()) #NOTEQUALS(2)))
&lt;br&gt;-	)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void arithmetic_comp() : { }
&lt;br&gt;-{
&lt;br&gt;-	// arithmetic_value() (
&lt;br&gt;-	arithmetic_expression() (
&lt;br&gt;-	(&amp;lt;EQ&amp;gt; (arithmetic_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;-	| (&amp;lt;GT&amp;gt; (arithmetic_expression() | all_or_any_expression()) #GREATERTHAN(2))
&lt;br&gt;-	| (&amp;lt;GE&amp;gt; (arithmetic_expression() | all_or_any_expression()) #GREATEROREQUAL(2))
&lt;br&gt;-	| (&amp;lt;LT&amp;gt; (arithmetic_expression() | all_or_any_expression()) #LESSTHAN(2))
&lt;br&gt;-	| (&amp;lt;LE&amp;gt; (arithmetic_expression() | all_or_any_expression()) #LESSOREQUAL(2))
&lt;br&gt;-	| (&amp;lt;NE&amp;gt; (arithmetic_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;-	)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void datetime_comp() : { }
&lt;br&gt;-{
&lt;br&gt;-	datetime_expression() (
&lt;br&gt;-	(&amp;lt;EQ&amp;gt; (datetime_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;-	| (&amp;lt;GT&amp;gt; (datetime_expression() | all_or_any_expression()) #GREATERTHAN(2))
&lt;br&gt;-	| (&amp;lt;GE&amp;gt; (datetime_expression() | all_or_any_expression()) #GREATEROREQUAL(2))
&lt;br&gt;-	| (&amp;lt;LT&amp;gt; (datetime_expression() | all_or_any_expression()) #LESSTHAN(2))
&lt;br&gt;-	| (&amp;lt;LE&amp;gt; (datetime_expression() | all_or_any_expression()) #LESSOREQUAL(2))
&lt;br&gt;-	| (&amp;lt;NE&amp;gt; (datetime_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;-	)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void scalar_function() : { }
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp; &amp;nbsp;functions_returning_numerics()
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| functions_returning_datetime()
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| functions_returning_strings()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-void arithmetic_value() : { }
&lt;br&gt;-{
&lt;br&gt;-	path() | functions_returning_numerics() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/* changed to eliminate left recursion */
&lt;br&gt;-void arithmetic_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	arithmetic_term()
&lt;br&gt;-		((&amp;lt;PLUS&amp;gt; arithmetic_expression() #ADD(2))
&lt;br&gt;-		| (&amp;lt;MINUS&amp;gt; arithmetic_expression() #SUBTRACT(2)))*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-/* changed to eliminate left recursion */
&lt;br&gt;-void arithmetic_term() : { }
&lt;br&gt;-{
&lt;br&gt;-	arithmetic_factor()
&lt;br&gt;-		((&amp;lt;TIMES&amp;gt; arithmetic_term() #MULTIPLY(2))
&lt;br&gt;-		| (&amp;lt;DIV&amp;gt; arithmetic_term() #DIVIDE(2)))*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void arithmetic_factor() : { }
&lt;br&gt;-{
&lt;br&gt;-	numeric_literal() | 
&lt;br&gt;-	input_parameter() | 
&lt;br&gt;-	path() |
&lt;br&gt;-	LOOKAHEAD(2) &amp;quot;(&amp;quot; arithmetic_expression() &amp;quot;)&amp;quot; | 
&lt;br&gt;-	functions_returning_numerics() | 
&lt;br&gt;-	aggregate_select_expression() |	
&lt;br&gt;-	subquery()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void negative() #NEGATIVE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;MINUS&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void string_value() : { }
&lt;br&gt;-{
&lt;br&gt;-	path() | functions_returning_strings() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void string_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	input_parameter() | string_primary()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void string_primary() : { }
&lt;br&gt;-{
&lt;br&gt;-	string_literal() | path() | LOOKAHEAD(2) &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot; | 
&lt;br&gt;-	functions_returning_strings() | LOOKAHEAD(2) &amp;nbsp;&amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void datetime_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	datetime_primary() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void datetime_primary() : { }
&lt;br&gt;-{
&lt;br&gt;-	path() | functions_returning_datetime() | input_parameter() | aggregate_select_expression()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void boolean_value() : { }
&lt;br&gt;-{
&lt;br&gt;-	path() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void boolean_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	boolean_primary() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void boolean_primary() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(2) path() | boolean_literal() | input_parameter()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void enum_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	enum_primary() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void enum_primary() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(2) path()
&lt;br&gt;-	| LOOKAHEAD(enum_literal()) enum_literal()
&lt;br&gt;-	| LOOKAHEAD(input_parameter()) input_parameter()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void enum_literal() : { }
&lt;br&gt;-{
&lt;br&gt;-	{ inEnumPath = true; }
&lt;br&gt;-	path()
&lt;br&gt;-	{ inEnumPath = false; }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void entity_bean_value() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(path()) path() | path_component()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void entity_bean_expression() : { }
&lt;br&gt;-{
&lt;br&gt;-	input_parameter() | entity_bean_value()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void functions_returning_strings() : { }
&lt;br&gt;-{
&lt;br&gt;-	concat() | substring() | trim() | lower() | upper()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void concat() #CONCAT : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;CONCAT&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;lt;COMMA&amp;gt; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void substring() #SUBSTRING : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SUBSTRING&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;lt;COMMA&amp;gt; arithmetic_expression() &amp;lt;COMMA&amp;gt; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void trim() #TRIM : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;TRIM&amp;gt; &amp;quot;(&amp;quot; [LOOKAHEAD(2)[trim_specification()] [trim_character()] &amp;lt;FROM&amp;gt;]
&lt;br&gt;-		string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void lower() #LOWER : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LOWER&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void upper() #UPPER : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;UPPER&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void trim_specification() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(2) (&amp;lt;LEADING&amp;gt; #TRIMLEADING) | (&amp;lt;TRAILING&amp;gt; #TRIMTRAILING) | (&amp;lt;BOTH&amp;gt; #TRIMBOTH)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void functions_returning_numerics() : { }
&lt;br&gt;-{
&lt;br&gt;-	length() | locate() | abs() | sqrt() | mod() | size()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void length() #LENGTH : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LENGTH&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void locate() #LOCATE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LOCATE&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;lt;COMMA&amp;gt; string_expression()
&lt;br&gt;-		[&amp;lt;COMMA&amp;gt; arithmetic_expression()] &amp;quot;)&amp;quot;
&lt;br&gt;-
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void abs() #ABS : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;ABS&amp;gt; &amp;quot;(&amp;quot; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void sqrt() #SQRT : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SQRT&amp;gt; &amp;quot;(&amp;quot; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void mod() #MOD : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;MOD&amp;gt; &amp;quot;(&amp;quot; arithmetic_expression() &amp;lt;COMMA&amp;gt; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;-
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void size() #SIZE : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;SIZE&amp;gt; &amp;quot;(&amp;quot; path() &amp;quot;)&amp;quot;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void functions_returning_datetime() : { }
&lt;br&gt;-{
&lt;br&gt;-	(&amp;lt;CURRENT_DATE&amp;gt; #CURRENTDATE)
&lt;br&gt;-	| (&amp;lt;CURRENT_TIME&amp;gt; #CURRENTTIME)
&lt;br&gt;-	| (&amp;lt;CURRENT_TIMESTAMP&amp;gt; #CURRENTTIMESTAMP)
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void orderby_clause() #ORDERBY : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;ORDER&amp;gt; &amp;lt;BY&amp;gt; orderby_item() (&amp;lt;COMMA&amp;gt; orderby_item())* 
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void orderby_item() #ORDERBYITEM : { }
&lt;br&gt;-{
&lt;br&gt;-	(LOOKAHEAD(path()) path() | orderby_extension())
&lt;br&gt;-	 &amp;nbsp; &amp;nbsp;[ &amp;lt;ASC&amp;gt; #ASCENDING | &amp;lt;DESC&amp;gt; #DESCENDING ]
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void orderby_extension() #ORDERBYEXTENSION : { }
&lt;br&gt;-{
&lt;br&gt;- &amp;nbsp; &amp;nbsp;aggregate_select_expression()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void abstract_schema_name() #ABSTRACTSCHEMANAME : { }
&lt;br&gt;-{
&lt;br&gt;-	path_component() (&amp;lt;DOT&amp;gt; path_component())*
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void tok() #TOK :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	t = &amp;lt;IDENTIFIER&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void identification_variable() #IDENTIFIER :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	t = &amp;lt;IDENTIFIER&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void path_component() #IDENTIFICATIONVARIABLE :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	// unlike the identifier(), the path_component() *can* be a
&lt;br&gt;-	// reserved word. E.g., Order.group.length is a perfectly
&lt;br&gt;-	// valid path expression
&lt;br&gt;-	(
&lt;br&gt;-	t = &amp;lt;NEW&amp;gt;
&lt;br&gt;-	| t = &amp;lt;ALL&amp;gt;
&lt;br&gt;-	| t = &amp;lt;ANY&amp;gt;
&lt;br&gt;-	| t = &amp;lt;EXISTS&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SOME&amp;gt;
&lt;br&gt;-	| t = &amp;lt;EMPTY&amp;gt;
&lt;br&gt;-	| t = &amp;lt;ASC&amp;gt;
&lt;br&gt;-	| t = &amp;lt;DESC&amp;gt;
&lt;br&gt;-	| t = &amp;lt;ORDER&amp;gt;
&lt;br&gt;-	| t = &amp;lt;IS&amp;gt;
&lt;br&gt;-	| t = &amp;lt;MEMBER&amp;gt;
&lt;br&gt;-	| t = &amp;lt;OF&amp;gt;
&lt;br&gt;-	| t = &amp;lt;LIKE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;ESCAPE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;BETWEEN&amp;gt;
&lt;br&gt;-	| t = &amp;lt;NULL&amp;gt;
&lt;br&gt;-	| t = &amp;lt;AVG&amp;gt;
&lt;br&gt;-	| t = &amp;lt;MIN&amp;gt;
&lt;br&gt;-	| t = &amp;lt;MAX&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SUM&amp;gt;
&lt;br&gt;-	| t = &amp;lt;COUNT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;OR&amp;gt;
&lt;br&gt;-	| t = &amp;lt;AND&amp;gt;
&lt;br&gt;-	| t = &amp;lt;NOT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;CONCAT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SUBSTRING&amp;gt;
&lt;br&gt;-	| t = &amp;lt;TRIM&amp;gt;
&lt;br&gt;-	| t = &amp;lt;LOWER&amp;gt;
&lt;br&gt;-	| t = &amp;lt;UPPER&amp;gt;
&lt;br&gt;-	| t = &amp;lt;LEADING&amp;gt;
&lt;br&gt;-	| t = &amp;lt;TRAILING&amp;gt;
&lt;br&gt;-	| t = &amp;lt;BOTH&amp;gt;
&lt;br&gt;-	| t = &amp;lt;LENGTH&amp;gt;
&lt;br&gt;-	| t = &amp;lt;LOCATE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;ABS&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SQRT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;MOD&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SIZE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;CURRENT_DATE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;CURRENT_TIME&amp;gt;
&lt;br&gt;-	| t = &amp;lt;CURRENT_TIMESTAMP&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SELECT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;DISTINCT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;FROM&amp;gt;
&lt;br&gt;-	| t = &amp;lt;UPDATE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;DELETE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;WHERE&amp;gt;
&lt;br&gt;-	| t = &amp;lt;GROUP&amp;gt;
&lt;br&gt;-	| t = &amp;lt;BY&amp;gt;
&lt;br&gt;-	| t = &amp;lt;HAVING&amp;gt;
&lt;br&gt;-	| t = &amp;lt;AS&amp;gt;
&lt;br&gt;-	| t = &amp;lt;LEFT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;OUTER&amp;gt;
&lt;br&gt;-	| t = &amp;lt;INNER&amp;gt;
&lt;br&gt;-	| t = &amp;lt;JOIN&amp;gt;
&lt;br&gt;-	| t = &amp;lt;FETCH&amp;gt;
&lt;br&gt;-	| t = &amp;lt;IN&amp;gt;
&lt;br&gt;-	| t = &amp;lt;SET&amp;gt;
&lt;br&gt;-	| t = &amp;lt;OBJECT&amp;gt;
&lt;br&gt;-	| t = &amp;lt;IDENTIFIER&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;) { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void numeric_literal() : { }
&lt;br&gt;-{
&lt;br&gt;-	LOOKAHEAD(decimal_literal()) decimal_literal() | integer_literal()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void integer_literal() #INTEGERLITERAL :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	[&amp;lt;PLUS&amp;gt; | negative()] t = &amp;lt;INTEGER_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void decimal_literal() #DECIMALLITERAL :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	 [&amp;lt;PLUS&amp;gt; | negative()] t = &amp;lt;DECIMAL_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void boolean_literal() #BOOLEANLITERAL :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	t = &amp;lt;BOOLEAN_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void string_literal() #STRINGLITERAL :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	t = &amp;lt;STRING_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void input_parameter() : { }
&lt;br&gt;-{
&lt;br&gt;-	named_input_parameter() | positional_input_parameter()
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void named_input_parameter() #NAMEDINPUTPARAMETER :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	&amp;quot;:&amp;quot; t = &amp;lt;IDENTIFIER&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void positional_input_parameter() #POSITIONALINPUTPARAMETER :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	&amp;quot;?&amp;quot; t = &amp;lt;INTEGER_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void pattern_value() #PATTERNVALUE : { }
&lt;br&gt;-{
&lt;br&gt;-	(input_parameter() | string_literal())
&lt;br&gt;-	[(&amp;lt;ESCAPE&amp;gt; escape_character() #ESCAPECHARACTER)]
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void escape_character() #ESCAPECHARACTER :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	t = &amp;lt;STRING_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void trim_character() #TRIMCHARACTER :
&lt;br&gt;-{ Token t; }
&lt;br&gt;-{
&lt;br&gt;-	t = &amp;lt;STRING_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void EQ() #EQUALS : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;EQ&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void NE() #NOTEQUALS : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;NE&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void GT() #GREATERTHAN : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;GT&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void GE() #GREATEROREQUAL : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;GE&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void LT() #LESSTHAN : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LT&amp;gt;
&lt;br&gt;-}
&lt;br&gt;-
&lt;br&gt;-
&lt;br&gt;-void LE() #LESSOREQUAL : { }
&lt;br&gt;-{
&lt;br&gt;-	&amp;lt;LE&amp;gt;
&lt;br&gt;-}
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ * &amp;nbsp;
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ * &amp;nbsp;
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License. &amp;nbsp; 
&lt;br&gt;+ */
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ * &amp;nbsp;An JP QL grammar parser.
&lt;br&gt;+ * 
&lt;br&gt;+ * &amp;nbsp;Samples:
&lt;br&gt;+ *	 &amp;nbsp;SELECT COUNT(p) FROM Person AS p
&lt;br&gt;+ *	 &amp;nbsp;SELECT OBJECT(identifier) FROM schema identifier
&lt;br&gt;+ *	 &amp;nbsp;SELECT identifier FROM schema AS identifier
&lt;br&gt;+ *	
&lt;br&gt;+ *	@author Patrick Linskey
&lt;br&gt;+ *	@author Marc Prud'hommeaux
&lt;br&gt;+ */
&lt;br&gt;+options {
&lt;br&gt;+	NODE_PREFIX = &amp;quot;JPQL&amp;quot;;
&lt;br&gt;+	NODE_PACKAGE = &amp;quot;org.apache.openjpa.kernel.jpql&amp;quot;;
&lt;br&gt;+	MULTI = false;
&lt;br&gt;+	NODE_DEFAULT_VOID = true;
&lt;br&gt;+	JAVA_UNICODE_ESCAPE = true;
&lt;br&gt;+	STATIC = false;
&lt;br&gt;+	NODE_USES_PARSER = true;
&lt;br&gt;+
&lt;br&gt;+	LOOKAHEAD = 1;
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+	// debugging variables
&lt;br&gt;+	// DEBUG_PARSER = true; 		// simple parser debug
&lt;br&gt;+	// DEBUG_TOKEN_MANAGER = true; 	// more verbose token manager debug
&lt;br&gt;+	// DEBUG_LOOKAHEAD = true; 		// more verbose lookahead debug
&lt;br&gt;+
&lt;br&gt;+	SANITY_CHECK = true; // check for left-recursion, etc (must always be true)
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+	// FORCE_LA_CHECK = true;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+PARSER_BEGIN(JPQL)
&lt;br&gt;+package org.apache.openjpa.kernel.jpql;
&lt;br&gt;+
&lt;br&gt;+import java.io.*;
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ *	@nojavadoc
&lt;br&gt;+ */
&lt;br&gt;+public class JPQL
&lt;br&gt;+{
&lt;br&gt;+	String jpql;
&lt;br&gt;+	boolean inEnumPath;
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+	public JPQL (String jpql)
&lt;br&gt;+	{
&lt;br&gt;+		this (new StringReader (jpql));
&lt;br&gt;+
&lt;br&gt;+		this.jpql = jpql;
&lt;br&gt;+	}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+	public static void main (String[] args)
&lt;br&gt;+		throws Exception
&lt;br&gt;+	{
&lt;br&gt;+		if (args.length &amp;gt; 0)
&lt;br&gt;+		{
&lt;br&gt;+			for (int i = 0; i &amp;lt; args.length; i++)
&lt;br&gt;+			{
&lt;br&gt;+				JPQL parser = new JPQL (args[i]);
&lt;br&gt;+				SimpleNode ast = (SimpleNode) parser.parseQuery ();
&lt;br&gt;+				ast.dump (System.out, &amp;quot;&amp;quot;);
&lt;br&gt;+			}
&lt;br&gt;+		}
&lt;br&gt;+		else
&lt;br&gt;+		{
&lt;br&gt;+			JPQL parser = new JPQL (System.in);
&lt;br&gt;+			while (true)
&lt;br&gt;+			{
&lt;br&gt;+				System.out.print (&amp;quot;Enter Expression: &amp;quot;);
&lt;br&gt;+				System.out.flush ();
&lt;br&gt;+				try
&lt;br&gt;+				{
&lt;br&gt;+					SimpleNode ast = (SimpleNode) parser.parseQuery ();
&lt;br&gt;+					if (ast == null)
&lt;br&gt;+						return;
&lt;br&gt;+					else
&lt;br&gt;+						ast.dump (System.out, &amp;quot;&amp;quot;);
&lt;br&gt;+				}
&lt;br&gt;+				catch (Throwable x)
&lt;br&gt;+				{
&lt;br&gt;+					x.printStackTrace ();
&lt;br&gt;+					return;
&lt;br&gt;+				}
&lt;br&gt;+			}
&lt;br&gt;+		}
&lt;br&gt;+	}
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+PARSER_END(JPQL)
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+SKIP :
&lt;br&gt;+{
&lt;br&gt;+ 	&amp;quot; &amp;quot;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;| &amp;quot;\n&amp;quot;
&lt;br&gt;+	| &amp;quot;\r&amp;quot;
&lt;br&gt;+	| &amp;quot;\t&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* basics */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; COMMA: &amp;quot;,&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; DOT: &amp;quot;.&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; EQ: &amp;quot;=&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; NE: &amp;quot;&amp;lt;&amp;gt;&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; GT: &amp;quot;&amp;gt;&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; GE: &amp;quot;&amp;gt;=&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; LT: &amp;quot;&amp;lt;&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; LE: &amp;quot;&amp;lt;=&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; PLUS: &amp;quot;+&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; MINUS: &amp;quot;-&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; TIMES: &amp;quot;*&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; DIV: &amp;quot;/&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; NEW: &amp;quot;NEW&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; ALL: &amp;quot;ALL&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; ANY: &amp;quot;ANY&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; EXISTS: &amp;quot;EXISTS&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; SOME: &amp;quot;SOME&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; EMPTY: &amp;quot;EMPTY&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; ASC: &amp;quot;ASC&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; DESC: &amp;quot;DESC&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; ORDER: &amp;quot;ORDER&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; BY: &amp;quot;BY&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; IS: &amp;quot;IS&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; MEMBER: &amp;quot;MEMBER&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; OF: &amp;quot;OF&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; LIKE: &amp;quot;LIKE&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; ESCAPE: &amp;quot;ESCAPE&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; BETWEEN: &amp;quot;BETWEEN&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; NULL: &amp;quot;NULL&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* aggregates */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; AVG: &amp;quot;AVG&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; MIN: &amp;quot;MIN&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; MAX: &amp;quot;MAX&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; SUM: &amp;quot;SUM&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; COUNT: &amp;quot;COUNT&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* boolean arithmetic */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; OR: &amp;quot;OR&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; AND: &amp;quot;AND&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; NOT: &amp;quot;NOT&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* functions returning strings */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; CONCAT: &amp;quot;CONCAT&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; SUBSTRING: &amp;quot;SUBSTRING&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; TRIM: &amp;quot;TRIM&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; LOWER: &amp;quot;LOWER&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; UPPER: &amp;quot;UPPER&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* trim specification */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; LEADING: &amp;quot;LEADING&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; TRAILING: &amp;quot;TRAILING&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; BOTH: &amp;quot;BOTH&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* functions returning numerics */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; LENGTH: &amp;quot;LENGTH&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; LOCATE: &amp;quot;LOCATE&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; ABS: &amp;quot;ABS&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; SQRT: &amp;quot;SQRT&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; MOD: &amp;quot;MOD&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; SIZE: &amp;quot;SIZE&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* functions returning datetime */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; CURRENT_DATE: &amp;quot;CURRENT_DATE&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; CURRENT_TIME: &amp;quot;CURRENT_TIME&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; CURRENT_TIMESTAMP: &amp;quot;CURRENT_TIMESTAMP&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* type of query */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; SELECT: &amp;quot;SELECT&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; DISTINCT: &amp;quot;DISTINCT&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; FROM: &amp;quot;FROM&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; UPDATE: &amp;quot;UPDATE&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; DELETE: &amp;quot;DELETE&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; WHERE: &amp;quot;WHERE&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; GROUP: &amp;quot;GROUP&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; HAVING: &amp;quot;HAVING&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; AS: &amp;quot;AS&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; LEFT: &amp;quot;LEFT&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; OUTER: &amp;quot;OUTER&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; INNER: &amp;quot;INNER&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; JOIN: &amp;quot;JOIN&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; FETCH: &amp;quot;FETCH&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; IN: &amp;quot;IN&amp;quot; &amp;gt;
&lt;br&gt;+	|	&amp;lt; SET: &amp;quot;SET&amp;quot; &amp;gt;
&lt;br&gt;+
&lt;br&gt;+	|	&amp;lt; OBJECT: &amp;quot;OBJECT&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/* inspired by the Java 1.0.2 specification */
&lt;br&gt;+/* ### should we limit this to the length that is valid in java? */
&lt;br&gt;+TOKEN : /* literals */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; INTEGER_LITERAL: (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) ([&amp;quot;l&amp;quot;,&amp;quot;L&amp;quot;])? &amp;gt;
&lt;br&gt;+	| &amp;lt; DECIMAL_LITERAL:
&lt;br&gt;+		((([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])* &amp;quot;.&amp;quot; ([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) (&amp;lt;EXPONENT&amp;gt;)? ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?
&lt;br&gt;+		| (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+ &amp;quot;.&amp;quot;) (&amp;lt;EXPONENT&amp;gt;)? ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?
&lt;br&gt;+		| (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) (&amp;lt;EXPONENT&amp;gt;) ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?
&lt;br&gt;+		| (([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+) (&amp;lt;EXPONENT&amp;gt;)? ([&amp;quot;f&amp;quot;,&amp;quot;F&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;D&amp;quot;])?) &amp;gt;
&lt;br&gt;+	| &amp;lt; #EXPONENT: [&amp;quot;e&amp;quot;,&amp;quot;E&amp;quot;] ([&amp;quot;+&amp;quot;,&amp;quot;-&amp;quot;])? ([&amp;quot;0&amp;quot;-&amp;quot;9&amp;quot;])+ &amp;gt;
&lt;br&gt;+	| &amp;lt; STRING_LITERAL: &amp;quot;'&amp;quot;
&lt;br&gt;+	 &amp;nbsp;((&amp;quot;''&amp;quot; | ~[&amp;quot;'&amp;quot;])
&lt;br&gt;+		/*
&lt;br&gt;+	 &amp;nbsp;((&amp;quot;''&amp;quot; | ~[&amp;quot;'&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;\n&amp;quot;,&amp;quot;\r&amp;quot;])
&lt;br&gt;+		| (&amp;quot;\\&amp;quot;
&lt;br&gt;+			( [&amp;quot;n&amp;quot;,&amp;quot;t&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;r&amp;quot;,&amp;quot;f&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;'&amp;quot;]
&lt;br&gt;+			| [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] ( [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] )?
&lt;br&gt;+			| [&amp;quot;0&amp;quot;-&amp;quot;3&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;]
&lt;br&gt;+			)
&lt;br&gt;+		 &amp;nbsp;)
&lt;br&gt;+		*/
&lt;br&gt;+	 &amp;nbsp;)*
&lt;br&gt;+	 &amp;nbsp;&amp;quot;'&amp;quot;
&lt;br&gt;+	&amp;gt;
&lt;br&gt;+	| &amp;lt; CHARACTER_LITERAL: &amp;quot;'&amp;quot;
&lt;br&gt;+	 &amp;nbsp;( &amp;nbsp; (~[&amp;quot;'&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;\n&amp;quot;,&amp;quot;\r&amp;quot;])
&lt;br&gt;+		| (&amp;quot;\\&amp;quot;
&lt;br&gt;+			( [&amp;quot;n&amp;quot;,&amp;quot;t&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;r&amp;quot;,&amp;quot;f&amp;quot;,&amp;quot;\\&amp;quot;,&amp;quot;'&amp;quot;]
&lt;br&gt;+			| [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] ( [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] )?
&lt;br&gt;+			| [&amp;quot;0&amp;quot;-&amp;quot;3&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;] [&amp;quot;0&amp;quot;-&amp;quot;7&amp;quot;]
&lt;br&gt;+			)
&lt;br&gt;+		 &amp;nbsp;)
&lt;br&gt;+	 &amp;nbsp;)
&lt;br&gt;+	 &amp;nbsp;&amp;quot;'&amp;quot;
&lt;br&gt;+	&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+TOKEN [ IGNORE_CASE ]: /* boolean literals can be case-insensitive */
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt; BOOLEAN_LITERAL: &amp;quot;TRUE&amp;quot; | &amp;quot;FALSE&amp;quot; &amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+/* From the Java 1.0.2 specification */
&lt;br&gt;+TOKEN : /* IDENTIFIERS */
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp;&amp;lt; IDENTIFIER: &amp;lt;LETTER&amp;gt; (&amp;lt;LETTER&amp;gt;|&amp;lt;DIGIT&amp;gt;)* &amp;gt;
&lt;br&gt;+	|
&lt;br&gt;+ &amp;nbsp;&amp;lt; #LETTER:
&lt;br&gt;+	 &amp;nbsp;[
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0024&amp;quot;, 			// $
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0041&amp;quot;-&amp;quot;\u005a&amp;quot;, 	// A-Z
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u005f&amp;quot;, 			// _
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0061&amp;quot;-&amp;quot;\u007a&amp;quot;, 	// a-z
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u00c0&amp;quot;-&amp;quot;\u00d6&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u00d8&amp;quot;-&amp;quot;\u00f6&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u00f8&amp;quot;-&amp;quot;\u00ff&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0100&amp;quot;-&amp;quot;\u1fff&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u3040&amp;quot;-&amp;quot;\u318f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u3300&amp;quot;-&amp;quot;\u337f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u3400&amp;quot;-&amp;quot;\u3d2d&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u4e00&amp;quot;-&amp;quot;\u9fff&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\uf900&amp;quot;-&amp;quot;\ufaff&amp;quot;
&lt;br&gt;+	 &amp;nbsp;]
&lt;br&gt;+ &amp;nbsp;&amp;gt;
&lt;br&gt;+	|
&lt;br&gt;+ &amp;nbsp;&amp;lt; #DIGIT:
&lt;br&gt;+	 &amp;nbsp;[
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0030&amp;quot;-&amp;quot;\u0039&amp;quot;, 	// 0-9
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0660&amp;quot;-&amp;quot;\u0669&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u06f0&amp;quot;-&amp;quot;\u06f9&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0966&amp;quot;-&amp;quot;\u096f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u09e6&amp;quot;-&amp;quot;\u09ef&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0a66&amp;quot;-&amp;quot;\u0a6f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0ae6&amp;quot;-&amp;quot;\u0aef&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0b66&amp;quot;-&amp;quot;\u0b6f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0be7&amp;quot;-&amp;quot;\u0bef&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0c66&amp;quot;-&amp;quot;\u0c6f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0ce6&amp;quot;-&amp;quot;\u0cef&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0d66&amp;quot;-&amp;quot;\u0d6f&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0e50&amp;quot;-&amp;quot;\u0e59&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u0ed0&amp;quot;-&amp;quot;\u0ed9&amp;quot;,
&lt;br&gt;+	 &amp;nbsp; &amp;quot;\u1040&amp;quot;-&amp;quot;\u1049&amp;quot;
&lt;br&gt;+	 &amp;nbsp;]
&lt;br&gt;+ &amp;nbsp;&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+Node parseQuery() : { }
&lt;br&gt;+{
&lt;br&gt;+	(select_statement() | update_statement() | delete_statement()) &amp;lt;EOF&amp;gt;
&lt;br&gt;+	{
&lt;br&gt;+		return jjtree.rootNode();
&lt;br&gt;+	}
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void select_statement() #SELECT : { }
&lt;br&gt;+{
&lt;br&gt;+	select_clause()
&lt;br&gt;+		from_clause()
&lt;br&gt;+		[where_clause()]
&lt;br&gt;+		[groupby_clause()]
&lt;br&gt;+		[having_clause()]
&lt;br&gt;+		[orderby_clause()]
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void update_statement() #UPDATE : { }
&lt;br&gt;+{
&lt;br&gt;+	update_clause() [ where_clause() ]
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void delete_statement() #DELETE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;DELETE&amp;gt; &amp;lt;FROM&amp;gt; (from_item() #FROM) [where_clause()]
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void from_clause() #FROM : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;FROM&amp;gt; identification_variable_declaration()
&lt;br&gt;+	(LOOKAHEAD(1) &amp;lt;COMMA&amp;gt; (LOOKAHEAD(collection_member_declaration()) collection_member_declaration() | LOOKAHEAD(identification_variable_declaration())identification_variable_declaration()))*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void identification_variable_declaration(): { }
&lt;br&gt;+{
&lt;br&gt;+	from_item() (LOOKAHEAD(fetch_join()) fetch_join() | LOOKAHEAD(inner_join()) inner_join() | LOOKAHEAD(outer_join()) outer_join())*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void from_item() #FROMITEM : { }
&lt;br&gt;+{
&lt;br&gt;+	abstract_schema_name() [LOOKAHEAD(1)&amp;lt;AS&amp;gt;] [LOOKAHEAD(identification_variable())identification_variable()]
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void subquery_from_clause() #FROM : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;FROM&amp;gt; subquery_from_item()
&lt;br&gt;+		( LOOKAHEAD(1) &amp;lt;COMMA&amp;gt; subquery_from_item() )*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void subquery_from_item() : { }
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LOOKAHEAD(collection_member_declaration()) collection_member_declaration()
&lt;br&gt;+	| LOOKAHEAD(identification_variable_declaration()) identification_variable_declaration()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void inner_join() #INNERJOIN : { }
&lt;br&gt;+{
&lt;br&gt;+	[&amp;lt;INNER&amp;gt;] &amp;lt;JOIN&amp;gt; path() [&amp;lt;AS&amp;gt;] identification_variable()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void collection_member_declaration() #INNERJOIN : { }
&lt;br&gt;+{
&lt;br&gt;+	// synonymous with &amp;quot;INNER JOIN path AS identifier&amp;quot; (InnerJoin)
&lt;br&gt;+	&amp;lt;IN&amp;gt; &amp;quot;(&amp;quot; path() &amp;quot;)&amp;quot; [ LOOKAHEAD(1)&amp;lt;AS&amp;gt;] identification_variable()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void outer_join() #OUTERJOIN : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LEFT&amp;gt; [ &amp;lt;OUTER&amp;gt;] &amp;lt;JOIN&amp;gt; path() [ LOOKAHEAD(1)&amp;lt;AS&amp;gt;] identification_variable()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void fetch_join() : { }
&lt;br&gt;+{
&lt;br&gt;+	outer_fetch_join() | inner_fetch_join()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void outer_fetch_join() #OUTERFETCHJOIN : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LEFT&amp;gt; [&amp;lt;OUTER&amp;gt;] &amp;lt;JOIN&amp;gt; &amp;lt;FETCH&amp;gt; path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void inner_fetch_join() #INNERFETCHJOIN : { }
&lt;br&gt;+{
&lt;br&gt;+	[&amp;lt;INNER&amp;gt;] &amp;lt;JOIN&amp;gt; &amp;lt;FETCH&amp;gt; path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void path() #PATH : { }
&lt;br&gt;+{
&lt;br&gt;+	// a path is any dot-separated path expression starting with a
&lt;br&gt;+	// non-reserved word
&lt;br&gt;+	identification_variable() (&amp;lt;DOT&amp;gt; path_component())+
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void update_clause() : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;UPDATE&amp;gt; from_item() #FROM set_clause()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void set_clause() : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SET&amp;gt; update_item() (&amp;lt;COMMA&amp;gt; update_item())*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void update_item() #UPDATEITEM : { }
&lt;br&gt;+{
&lt;br&gt;+	path() EQ() new_value()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void new_value() #UPDATEVALUE : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(arithmetic_expression()) arithmetic_expression() |
&lt;br&gt;+	LOOKAHEAD(string_primary()) string_primary() |
&lt;br&gt;+	LOOKAHEAD(datetime_primary()) datetime_primary() |
&lt;br&gt;+	LOOKAHEAD(boolean_primary()) boolean_primary() |
&lt;br&gt;+	LOOKAHEAD(enum_primary()) enum_primary() |
&lt;br&gt;+	LOOKAHEAD(simple_entity_expression()) simple_entity_expression() |
&lt;br&gt;+	&amp;lt;NULL&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void simple_entity_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	identification_variable() | input_parameter()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void select_clause() #SELECTCLAUSE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SELECT&amp;gt; [distinct()] select_expressions()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void simple_select_clause() #SELECTCLAUSE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SELECT&amp;gt; [distinct()] subselect_expressions() 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void select_expressions() #SELECTEXPRESSIONS : { }
&lt;br&gt;+{
&lt;br&gt;+	select_expression() (&amp;lt;COMMA&amp;gt; select_expression())*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void select_expression() #SELECTEXPRESSION : { }
&lt;br&gt;+{
&lt;br&gt;+	aggregate_select_expression()
&lt;br&gt;+		| LOOKAHEAD(path()) path()
&lt;br&gt;+		| identification_variable()
&lt;br&gt;+		| (&amp;lt;OBJECT&amp;gt; &amp;quot;(&amp;quot; identification_variable() &amp;quot;)&amp;quot;)
&lt;br&gt;+		| constructor_expression()
&lt;br&gt;+		| select_extension()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void select_extension() #SELECTEXTENSION : { }
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;scalar_function()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void subselect_expressions() #SELECTEXPRESSIONS : { }
&lt;br&gt;+{
&lt;br&gt;+	subselect_expression() (&amp;lt;COMMA&amp;gt; subselect_expression())*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void subselect_expression() #SELECTEXPRESSION : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(path()) path() 
&lt;br&gt;+		| aggregate_select_expression()
&lt;br&gt;+		| LOOKAHEAD(1) identification_variable()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void constructor_expression() #CONSTRUCTOR : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;NEW&amp;gt; classname() constructor_parameters()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void classname() #CLASSNAME :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	identification_variable() (&amp;lt;DOT&amp;gt; identification_variable())*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void constructor_parameters() #CONSTRUCTORPARAMS : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;quot;(&amp;quot; (constructor_parameter()) (&amp;lt;COMMA&amp;gt; (constructor_parameter()))* &amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void constructor_parameter() #CONSTRUCTORPARAM : { }
&lt;br&gt;+{
&lt;br&gt;+	(path() | aggregate_select_expression())
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/* rewritten to reduce lookaheads */
&lt;br&gt;+void aggregate_select_expression() #AGGREGATE : { }
&lt;br&gt;+{
&lt;br&gt;+	(avg() | max() | min() | sum() | count())
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void distinct() #DISTINCT : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;DISTINCT&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void aggregate_path() : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;quot;(&amp;quot; (
&lt;br&gt;+		LOOKAHEAD(arithmetic_expression()) arithmetic_expression() |
&lt;br&gt;+		LOOKAHEAD(distinct_path()) distinct_path() |
&lt;br&gt;+		LOOKAHEAD(path()) path() |
&lt;br&gt;+		LOOKAHEAD(identification_variable()) identification_variable()
&lt;br&gt;+	) &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void distinct_path() #DISTINCTPATH : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;DISTINCT&amp;gt; (LOOKAHEAD(path()) path() | identification_variable())
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void count() #COUNT : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;COUNT&amp;gt; aggregate_path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void avg() #AVERAGE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;AVG&amp;gt; aggregate_path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void max() #MAX : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;MAX&amp;gt; aggregate_path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void min() #MIN : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;MIN&amp;gt; aggregate_path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void sum() #SUM : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SUM&amp;gt; aggregate_path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void where_clause() #WHERE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;WHERE&amp;gt; conditional_expression() 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void groupby_clause() #GROUPBY : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;GROUP&amp;gt; &amp;lt;BY&amp;gt; groupby_item()
&lt;br&gt;+		(LOOKAHEAD(2) &amp;lt;COMMA&amp;gt; (groupby_item()))* 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void groupby_item() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(path()) path() | identification_variable() | groupby_extension()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void groupby_extension() #GROUPBYEXTENSION : { }
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;scalar_function()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void having_clause() #HAVING : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;HAVING&amp;gt; conditional_expression() 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void subquery() #SUBSELECT : { }
&lt;br&gt;+{
&lt;br&gt;+	simple_select_clause()
&lt;br&gt;+		subquery_from_clause() 
&lt;br&gt;+		[LOOKAHEAD(where_clause()) where_clause()] 
&lt;br&gt;+		[LOOKAHEAD(groupby_clause()) groupby_clause()] 
&lt;br&gt;+		[LOOKAHEAD(having_clause()) having_clause()] 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/* changed to eliminate left recursion */
&lt;br&gt;+void conditional_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	conditional_term() (LOOKAHEAD(2) &amp;lt;OR&amp;gt; (conditional_expression() #OR(2)))*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/* changed to eliminate left recursion */
&lt;br&gt;+void conditional_term() : { }
&lt;br&gt;+{
&lt;br&gt;+	conditional_factor() (LOOKAHEAD(2) &amp;lt;AND&amp;gt; (conditional_term() #AND(2)))*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void conditional_factor() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(&amp;lt;NOT&amp;gt; conditional_primary())
&lt;br&gt;+	(&amp;lt;NOT&amp;gt; conditional_primary() #NOT) | conditional_primary()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void conditional_primary() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(simple_cond_expression())
&lt;br&gt;+	simple_cond_expression() | &amp;quot;(&amp;quot; conditional_expression() &amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void simple_cond_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	//LOOKAHEAD(all_or_any_expression()) all_or_any_expression() |
&lt;br&gt;+	LOOKAHEAD(exists_expression()) exists_expression() |
&lt;br&gt;+	LOOKAHEAD(comparison_expression()) comparison_expression() | 
&lt;br&gt;+	LOOKAHEAD(between_expression()) between_expression() | 
&lt;br&gt;+	LOOKAHEAD(like_expression()) like_expression() | 
&lt;br&gt;+	LOOKAHEAD(in_expression()) in_expression() | 
&lt;br&gt;+	LOOKAHEAD(null_comparison_expression()) null_comparison_expression() | 
&lt;br&gt;+	LOOKAHEAD(empty_collection_comparison_expression()) empty_collection_comparison_expression() | 
&lt;br&gt;+	LOOKAHEAD(collection_member_expression()) collection_member_expression()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void between_expression() #BETWEEN : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(6) arithmetic_expression()
&lt;br&gt;+		[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;BETWEEN&amp;gt; arithmetic_expression()
&lt;br&gt;+		&amp;lt;AND&amp;gt; arithmetic_expression()
&lt;br&gt;+	| LOOKAHEAD(6) string_expression()
&lt;br&gt;+		[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;BETWEEN&amp;gt; string_expression() &amp;lt;AND&amp;gt; string_expression()
&lt;br&gt;+	| LOOKAHEAD(6) datetime_expression()
&lt;br&gt;+		[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;BETWEEN&amp;gt; datetime_expression() &amp;lt;AND&amp;gt; datetime_expression()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void in_expression() #IN : { }
&lt;br&gt;+{
&lt;br&gt;+	path() [ LOOKAHEAD(1) &amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;IN&amp;gt;
&lt;br&gt;+		&amp;quot;(&amp;quot; (literal_or_param()
&lt;br&gt;+			(&amp;lt;COMMA&amp;gt; (literal_or_param()))* | subquery())
&lt;br&gt;+		&amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void literal_or_param() : { }
&lt;br&gt;+{
&lt;br&gt;+	(numeric_literal()
&lt;br&gt;+	| string_literal()
&lt;br&gt;+	| boolean_literal()
&lt;br&gt;+	| input_parameter())
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void like_expression() #LIKE : { }
&lt;br&gt;+{
&lt;br&gt;+	string_expression() [&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;LIKE&amp;gt; pattern_value() 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void null_comparison_expression() #ISNULL : { }
&lt;br&gt;+{
&lt;br&gt;+	(input_parameter() | path() | aggregate_select_expression())
&lt;br&gt;+	&amp;lt;IS&amp;gt; [&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;NULL&amp;gt; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void empty_collection_comparison_expression() #ISEMPTY : { }
&lt;br&gt;+{
&lt;br&gt;+	path() &amp;lt;IS&amp;gt; [&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;EMPTY&amp;gt; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void collection_member_expression() #MEMBEROF : { }
&lt;br&gt;+{
&lt;br&gt;+	(LOOKAHEAD(path()) path() | input_parameter() | path_component()) 
&lt;br&gt;+	[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;MEMBER&amp;gt; [&amp;lt;OF&amp;gt;] path()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void exists_expression() #EXISTS : { }
&lt;br&gt;+{
&lt;br&gt;+	[&amp;lt;NOT&amp;gt; { jjtThis.not = true; }] &amp;lt;EXISTS&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void all_or_any_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	any_expression() | some_expression() | all_expression()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void any_expression() #ANY : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;ANY&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void some_expression() #ANY : { }
&lt;br&gt;+{
&lt;br&gt;+	// SOME and ANY are synonymous
&lt;br&gt;+	&amp;lt;SOME&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void all_expression() #ALL : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;ALL&amp;gt; &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot; 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void comparison_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	// comparison_expression ::= string_value comparison_operator {string_expression | all_or_any_expression} | boolean_value { =|&amp;lt;&amp;gt;} {boolean_expression | all_or_any_expression} | datetime_primary comparison_operator {datetime_expression | all_or_any_expression} | entity_bean_value { = | &amp;lt;&amp;gt; } {entity_bean_expression | all_or_any_expression} | arithmetic_value comparison_operator {arithmetic_expression | all_or_any_expression
&lt;br&gt;+
&lt;br&gt;+	LOOKAHEAD(arithmetic_comp()) arithmetic_comp() |
&lt;br&gt;+	LOOKAHEAD(string_comp()) string_comp() |
&lt;br&gt;+	LOOKAHEAD(boolean_comp()) boolean_comp() | 
&lt;br&gt;+	LOOKAHEAD(enum_comp()) enum_comp() | 
&lt;br&gt;+	LOOKAHEAD(datetime_comp()) datetime_comp() |
&lt;br&gt;+	LOOKAHEAD(entity_comp()) entity_comp()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void string_comp() : { }
&lt;br&gt;+{
&lt;br&gt;+	string_expression() (
&lt;br&gt;+		(&amp;lt;EQ&amp;gt; (string_expression()|all_or_any_expression()) #EQUALS(2))
&lt;br&gt;+		| (&amp;lt;NE&amp;gt; (string_expression()|all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;+		| (&amp;lt;GT&amp;gt; (string_expression() | all_or_any_expression()) #GREATERTHAN(2))
&lt;br&gt;+		| (&amp;lt;GE&amp;gt; (string_expression() | all_or_any_expression()) #GREATEROREQUAL(2))
&lt;br&gt;+		| (&amp;lt;LT&amp;gt; (string_expression() | all_or_any_expression()) #LESSTHAN(2))
&lt;br&gt;+		| (&amp;lt;LE&amp;gt; (string_expression() | all_or_any_expression()) #LESSOREQUAL(2))
&lt;br&gt;+		)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void boolean_comp() : { }
&lt;br&gt;+{
&lt;br&gt;+	boolean_expression() (
&lt;br&gt;+	(&amp;lt;EQ&amp;gt; (boolean_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;+	| (&amp;lt;NE&amp;gt; (boolean_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;+	)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void enum_comp() : { }
&lt;br&gt;+{
&lt;br&gt;+	enum_expression() (
&lt;br&gt;+	(&amp;lt;EQ&amp;gt; (enum_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;+	| (&amp;lt;NE&amp;gt; (enum_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;+	)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void entity_comp() : { }
&lt;br&gt;+{
&lt;br&gt;+	entity_bean_expression() (
&lt;br&gt;+	(&amp;lt;EQ&amp;gt; ((LOOKAHEAD(all_or_any_expression()) all_or_any_expression() | entity_bean_expression()) #EQUALS(2)))
&lt;br&gt;+	| (&amp;lt;NE&amp;gt; ((LOOKAHEAD(all_or_any_expression()) all_or_any_expression() | entity_bean_expression()) #NOTEQUALS(2)))
&lt;br&gt;+	)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void arithmetic_comp() : { }
&lt;br&gt;+{
&lt;br&gt;+	// arithmetic_value() (
&lt;br&gt;+	arithmetic_expression() (
&lt;br&gt;+	(&amp;lt;EQ&amp;gt; (arithmetic_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;+	| (&amp;lt;GT&amp;gt; (arithmetic_expression() | all_or_any_expression()) #GREATERTHAN(2))
&lt;br&gt;+	| (&amp;lt;GE&amp;gt; (arithmetic_expression() | all_or_any_expression()) #GREATEROREQUAL(2))
&lt;br&gt;+	| (&amp;lt;LT&amp;gt; (arithmetic_expression() | all_or_any_expression()) #LESSTHAN(2))
&lt;br&gt;+	| (&amp;lt;LE&amp;gt; (arithmetic_expression() | all_or_any_expression()) #LESSOREQUAL(2))
&lt;br&gt;+	| (&amp;lt;NE&amp;gt; (arithmetic_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;+	)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void datetime_comp() : { }
&lt;br&gt;+{
&lt;br&gt;+	datetime_expression() (
&lt;br&gt;+	(&amp;lt;EQ&amp;gt; (datetime_expression() | all_or_any_expression()) #EQUALS(2))
&lt;br&gt;+	| (&amp;lt;GT&amp;gt; (datetime_expression() | all_or_any_expression()) #GREATERTHAN(2))
&lt;br&gt;+	| (&amp;lt;GE&amp;gt; (datetime_expression() | all_or_any_expression()) #GREATEROREQUAL(2))
&lt;br&gt;+	| (&amp;lt;LT&amp;gt; (datetime_expression() | all_or_any_expression()) #LESSTHAN(2))
&lt;br&gt;+	| (&amp;lt;LE&amp;gt; (datetime_expression() | all_or_any_expression()) #LESSOREQUAL(2))
&lt;br&gt;+	| (&amp;lt;NE&amp;gt; (datetime_expression() | all_or_any_expression()) #NOTEQUALS(2))
&lt;br&gt;+	)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void scalar_function() : { }
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;functions_returning_numerics()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| functions_returning_datetime()
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| functions_returning_strings()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+void arithmetic_value() : { }
&lt;br&gt;+{
&lt;br&gt;+	path() | functions_returning_numerics() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/* changed to eliminate left recursion */
&lt;br&gt;+void arithmetic_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	arithmetic_term()
&lt;br&gt;+		((&amp;lt;PLUS&amp;gt; arithmetic_expression() #ADD(2))
&lt;br&gt;+		| (&amp;lt;MINUS&amp;gt; arithmetic_expression() #SUBTRACT(2)))*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+/* changed to eliminate left recursion */
&lt;br&gt;+void arithmetic_term() : { }
&lt;br&gt;+{
&lt;br&gt;+	arithmetic_factor()
&lt;br&gt;+		((&amp;lt;TIMES&amp;gt; arithmetic_term() #MULTIPLY(2))
&lt;br&gt;+		| (&amp;lt;DIV&amp;gt; arithmetic_term() #DIVIDE(2)))*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void arithmetic_factor() : { }
&lt;br&gt;+{
&lt;br&gt;+	numeric_literal() | 
&lt;br&gt;+	input_parameter() | 
&lt;br&gt;+	path() |
&lt;br&gt;+	LOOKAHEAD(2) &amp;quot;(&amp;quot; arithmetic_expression() &amp;quot;)&amp;quot; | 
&lt;br&gt;+	functions_returning_numerics() | 
&lt;br&gt;+	aggregate_select_expression() |	
&lt;br&gt;+	subquery()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void negative() #NEGATIVE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;MINUS&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void string_value() : { }
&lt;br&gt;+{
&lt;br&gt;+	path() | functions_returning_strings() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void string_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	input_parameter() | string_primary()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void string_primary() : { }
&lt;br&gt;+{
&lt;br&gt;+	string_literal() | path() | LOOKAHEAD(2) &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot; | 
&lt;br&gt;+	functions_returning_strings() | LOOKAHEAD(2) &amp;nbsp;&amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void datetime_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	datetime_primary() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void datetime_primary() : { }
&lt;br&gt;+{
&lt;br&gt;+	path() | functions_returning_datetime() | input_parameter() | aggregate_select_expression()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void boolean_value() : { }
&lt;br&gt;+{
&lt;br&gt;+	path() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void boolean_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	boolean_primary() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void boolean_primary() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(2) path() | boolean_literal() | input_parameter()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void enum_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	enum_primary() | &amp;quot;(&amp;quot; subquery() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void enum_primary() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(2) path()
&lt;br&gt;+	| LOOKAHEAD(enum_literal()) enum_literal()
&lt;br&gt;+	| LOOKAHEAD(input_parameter()) input_parameter()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void enum_literal() : { }
&lt;br&gt;+{
&lt;br&gt;+	{ inEnumPath = true; }
&lt;br&gt;+	path()
&lt;br&gt;+	{ inEnumPath = false; }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void entity_bean_value() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(path()) path() | path_component()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void entity_bean_expression() : { }
&lt;br&gt;+{
&lt;br&gt;+	input_parameter() | entity_bean_value()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void functions_returning_strings() : { }
&lt;br&gt;+{
&lt;br&gt;+	concat() | substring() | trim() | lower() | upper()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void concat() #CONCAT : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;CONCAT&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;lt;COMMA&amp;gt; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void substring() #SUBSTRING : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SUBSTRING&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;lt;COMMA&amp;gt; arithmetic_expression() &amp;lt;COMMA&amp;gt; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void trim() #TRIM : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;TRIM&amp;gt; &amp;quot;(&amp;quot; [LOOKAHEAD(2)[trim_specification()] [trim_character()] &amp;lt;FROM&amp;gt;]
&lt;br&gt;+		string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void lower() #LOWER : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LOWER&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void upper() #UPPER : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;UPPER&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void trim_specification() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(2) (&amp;lt;LEADING&amp;gt; #TRIMLEADING) | (&amp;lt;TRAILING&amp;gt; #TRIMTRAILING) | (&amp;lt;BOTH&amp;gt; #TRIMBOTH)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void functions_returning_numerics() : { }
&lt;br&gt;+{
&lt;br&gt;+	length() | locate() | abs() | sqrt() | mod() | size()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void length() #LENGTH : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LENGTH&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void locate() #LOCATE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LOCATE&amp;gt; &amp;quot;(&amp;quot; string_expression() &amp;lt;COMMA&amp;gt; string_expression()
&lt;br&gt;+		[&amp;lt;COMMA&amp;gt; arithmetic_expression()] &amp;quot;)&amp;quot;
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void abs() #ABS : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;ABS&amp;gt; &amp;quot;(&amp;quot; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void sqrt() #SQRT : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SQRT&amp;gt; &amp;quot;(&amp;quot; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void mod() #MOD : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;MOD&amp;gt; &amp;quot;(&amp;quot; arithmetic_expression() &amp;lt;COMMA&amp;gt; arithmetic_expression() &amp;quot;)&amp;quot;
&lt;br&gt;+
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void size() #SIZE : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;SIZE&amp;gt; &amp;quot;(&amp;quot; path() &amp;quot;)&amp;quot;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void functions_returning_datetime() : { }
&lt;br&gt;+{
&lt;br&gt;+	(&amp;lt;CURRENT_DATE&amp;gt; #CURRENTDATE)
&lt;br&gt;+	| (&amp;lt;CURRENT_TIME&amp;gt; #CURRENTTIME)
&lt;br&gt;+	| (&amp;lt;CURRENT_TIMESTAMP&amp;gt; #CURRENTTIMESTAMP)
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void orderby_clause() #ORDERBY : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;ORDER&amp;gt; &amp;lt;BY&amp;gt; orderby_item() (&amp;lt;COMMA&amp;gt; orderby_item())* 
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void orderby_item() #ORDERBYITEM : { }
&lt;br&gt;+{
&lt;br&gt;+	(LOOKAHEAD(path()) path() | orderby_extension())
&lt;br&gt;+	 &amp;nbsp; &amp;nbsp;[ &amp;lt;ASC&amp;gt; #ASCENDING | &amp;lt;DESC&amp;gt; #DESCENDING ]
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void orderby_extension() #ORDERBYEXTENSION : { }
&lt;br&gt;+{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;aggregate_select_expression()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void abstract_schema_name() #ABSTRACTSCHEMANAME : { }
&lt;br&gt;+{
&lt;br&gt;+	path_component() (&amp;lt;DOT&amp;gt; path_component())*
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void tok() #TOK :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	t = &amp;lt;IDENTIFIER&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void identification_variable() #IDENTIFIER :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	t = &amp;lt;IDENTIFIER&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void path_component() #IDENTIFICATIONVARIABLE :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	// unlike the identifier(), the path_component() *can* be a
&lt;br&gt;+	// reserved word. E.g., Order.group.length is a perfectly
&lt;br&gt;+	// valid path expression
&lt;br&gt;+	(
&lt;br&gt;+	t = &amp;lt;NEW&amp;gt;
&lt;br&gt;+	| t = &amp;lt;ALL&amp;gt;
&lt;br&gt;+	| t = &amp;lt;ANY&amp;gt;
&lt;br&gt;+	| t = &amp;lt;EXISTS&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SOME&amp;gt;
&lt;br&gt;+	| t = &amp;lt;EMPTY&amp;gt;
&lt;br&gt;+	| t = &amp;lt;ASC&amp;gt;
&lt;br&gt;+	| t = &amp;lt;DESC&amp;gt;
&lt;br&gt;+	| t = &amp;lt;ORDER&amp;gt;
&lt;br&gt;+	| t = &amp;lt;IS&amp;gt;
&lt;br&gt;+	| t = &amp;lt;MEMBER&amp;gt;
&lt;br&gt;+	| t = &amp;lt;OF&amp;gt;
&lt;br&gt;+	| t = &amp;lt;LIKE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;ESCAPE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;BETWEEN&amp;gt;
&lt;br&gt;+	| t = &amp;lt;NULL&amp;gt;
&lt;br&gt;+	| t = &amp;lt;AVG&amp;gt;
&lt;br&gt;+	| t = &amp;lt;MIN&amp;gt;
&lt;br&gt;+	| t = &amp;lt;MAX&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SUM&amp;gt;
&lt;br&gt;+	| t = &amp;lt;COUNT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;OR&amp;gt;
&lt;br&gt;+	| t = &amp;lt;AND&amp;gt;
&lt;br&gt;+	| t = &amp;lt;NOT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;CONCAT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SUBSTRING&amp;gt;
&lt;br&gt;+	| t = &amp;lt;TRIM&amp;gt;
&lt;br&gt;+	| t = &amp;lt;LOWER&amp;gt;
&lt;br&gt;+	| t = &amp;lt;UPPER&amp;gt;
&lt;br&gt;+	| t = &amp;lt;LEADING&amp;gt;
&lt;br&gt;+	| t = &amp;lt;TRAILING&amp;gt;
&lt;br&gt;+	| t = &amp;lt;BOTH&amp;gt;
&lt;br&gt;+	| t = &amp;lt;LENGTH&amp;gt;
&lt;br&gt;+	| t = &amp;lt;LOCATE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;ABS&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SQRT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;MOD&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SIZE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;CURRENT_DATE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;CURRENT_TIME&amp;gt;
&lt;br&gt;+	| t = &amp;lt;CURRENT_TIMESTAMP&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SELECT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;DISTINCT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;FROM&amp;gt;
&lt;br&gt;+	| t = &amp;lt;UPDATE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;DELETE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;WHERE&amp;gt;
&lt;br&gt;+	| t = &amp;lt;GROUP&amp;gt;
&lt;br&gt;+	| t = &amp;lt;BY&amp;gt;
&lt;br&gt;+	| t = &amp;lt;HAVING&amp;gt;
&lt;br&gt;+	| t = &amp;lt;AS&amp;gt;
&lt;br&gt;+	| t = &amp;lt;LEFT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;OUTER&amp;gt;
&lt;br&gt;+	| t = &amp;lt;INNER&amp;gt;
&lt;br&gt;+	| t = &amp;lt;JOIN&amp;gt;
&lt;br&gt;+	| t = &amp;lt;FETCH&amp;gt;
&lt;br&gt;+	| t = &amp;lt;IN&amp;gt;
&lt;br&gt;+	| t = &amp;lt;SET&amp;gt;
&lt;br&gt;+	| t = &amp;lt;OBJECT&amp;gt;
&lt;br&gt;+	| t = &amp;lt;IDENTIFIER&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;) { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void numeric_literal() : { }
&lt;br&gt;+{
&lt;br&gt;+	LOOKAHEAD(decimal_literal()) decimal_literal() | integer_literal()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void integer_literal() #INTEGERLITERAL :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	[&amp;lt;PLUS&amp;gt; | negative()] t = &amp;lt;INTEGER_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void decimal_literal() #DECIMALLITERAL :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	 [&amp;lt;PLUS&amp;gt; | negative()] t = &amp;lt;DECIMAL_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void boolean_literal() #BOOLEANLITERAL :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	t = &amp;lt;BOOLEAN_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void string_literal() #STRINGLITERAL :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	t = &amp;lt;STRING_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void input_parameter() : { }
&lt;br&gt;+{
&lt;br&gt;+	named_input_parameter() | positional_input_parameter()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void named_input_parameter() #NAMEDINPUTPARAMETER :{ }
&lt;br&gt;+{
&lt;br&gt;+	&amp;quot;:&amp;quot; path_component()
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void positional_input_parameter() #POSITIONALINPUTPARAMETER :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	&amp;quot;?&amp;quot; t = &amp;lt;INTEGER_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void pattern_value() #PATTERNVALUE : { }
&lt;br&gt;+{
&lt;br&gt;+	(input_parameter() | string_literal())
&lt;br&gt;+	[(&amp;lt;ESCAPE&amp;gt; escape_character() #ESCAPECHARACTER)]
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void escape_character() #ESCAPECHARACTER :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	t = &amp;lt;STRING_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void trim_character() #TRIMCHARACTER :
&lt;br&gt;+{ Token t; }
&lt;br&gt;+{
&lt;br&gt;+	t = &amp;lt;STRING_LITERAL&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void EQ() #EQUALS : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;EQ&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void NE() #NOTEQUALS : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;NE&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void GT() #GREATERTHAN : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;GT&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void GE() #GREATEROREQUAL : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;GE&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void LT() #LESSTHAN : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LT&amp;gt;
&lt;br&gt;+}
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+void LE() #LESSOREQUAL : { }
&lt;br&gt;+{
&lt;br&gt;+	&amp;lt;LE&amp;gt;
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java?rev=881892&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java?rev=881892&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java (added)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java Wed Nov 18 19:29:13 2009
&lt;br&gt;@@ -0,0 +1,56 @@
&lt;br&gt;+/*
&lt;br&gt;+ * Licensed to the Apache Software Foundation (ASF) under one
&lt;br&gt;+ * or more contributor license agreements. &amp;nbsp;See the NOTICE file
&lt;br&gt;+ * distributed with this work for additional information
&lt;br&gt;+ * regarding copyright ownership. &amp;nbsp;The ASF licenses this file
&lt;br&gt;+ * to you under the Apache License, Version 2.0 (the
&lt;br&gt;+ * &amp;quot;License&amp;quot;); you may not use this file except in compliance
&lt;br&gt;+ * with the License. &amp;nbsp;You may obtain a copy of the License at
&lt;br&gt;+ *
&lt;br&gt;+ * &lt;a href=&quot;http://www.apache.org/licenses/LICENSE-2.0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br&gt;+ *
&lt;br&gt;+ * Unless required by applicable law or agreed to in writing,
&lt;br&gt;+ * software distributed under the License is distributed on an
&lt;br&gt;+ * &amp;quot;AS IS&amp;quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
&lt;br&gt;+ * KIND, either express or implied. &amp;nbsp;See the License for the
&lt;br&gt;+ * specific language governing permissions and limitations
&lt;br&gt;+ * under the License.
&lt;br&gt;+ */
&lt;br&gt;+package org.apache.openjpa.persistence.query;
&lt;br&gt;+
&lt;br&gt;+import javax.persistence.EntityManager;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;+
&lt;br&gt;+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
&lt;br&gt;+import org.apache.openjpa.persistence.OpenJPAPersistence;
&lt;br&gt;+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
&lt;br&gt;+
&lt;br&gt;+/**
&lt;br&gt;+ * Tests query parameters.
&lt;br&gt;+ * 
&lt;br&gt;+ * @author Catalina Wei
&lt;br&gt;+ *
&lt;br&gt;+ */
&lt;br&gt;+public class TestQueryParameters extends SingleEMFTestCase {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static OpenJPAEntityManagerFactorySPI oemf;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private EntityManager em;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setUp() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (oemf == null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setUp(SimpleEntity.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;oemf = (OpenJPAEntityManagerFactorySPI)OpenJPAPersistence.cast(emf);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em = oemf.createEntityManager();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void tearDown() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// do not close the factory
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testNamedParameterUsingReservedWord() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select e from simple e WHERE e.name=:order order by e.id&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q = em.createQuery(jpql)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.setParameter(&amp;quot;order&amp;quot;, &amp;quot;XYZ&amp;quot;); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+}
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881892-in-openjpa-branches-1-3-x-openjpa-kernel-src-main-java-org-apache-openjpa-kernel--tp4027768p4027768.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4025430</id>
	<title>svn commit: r881772 - /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java</title>
	<published>2009-11-18T05:33:04Z</published>
	<updated>2009-11-18T05:33:04Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Wed Nov 18 13:33:04 2009
&lt;br&gt;New Revision: 881772
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881772&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881772&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Works for MySQL
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=881772&amp;r1=881771&amp;r2=881772&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=881772&amp;r1=881771&amp;r2=881772&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java Wed Nov 18 13:33:04 2009
&lt;br&gt;@@ -37,6 +37,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.DerbyDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.HSQLDictionary;
&lt;br&gt;+import org.apache.openjpa.jdbc.sql.MySQLDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.OracleDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.jdbc.AbstractJDBCListener;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.jdbc.JDBCEvent;
&lt;br&gt;@@ -174,7 +175,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cSQL.size());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(dict instanceof DerbyDictionary))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(dict instanceof DerbyDictionary || dict instanceof MySQLDictionary))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; jSQL.size(); i++) {
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881772-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persistena-tp4025430p4025430.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4022407</id>
	<title>svn commit: r881638 - in /openjpa/trunk: openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java</title>
	<published>2009-11-17T16:53:03Z</published>
	<updated>2009-11-17T16:53:03Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Wed Nov 18 00:53:03 2009
&lt;br&gt;New Revision: 881638
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881638&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881638&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1392, OPENJPA-1393: countDistinct() and integer return type for size()
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=881638&amp;r1=881637&amp;r2=881638&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=881638&amp;r1=881637&amp;r2=881638&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Wed Nov 18 00:53:03 2009
&lt;br&gt;@@ -1403,6 +1403,30 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.nullLiteral(String.class)));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q = em.createQuery(cquery);
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testCountDistinct() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// JPQL Parser does not do well with the following 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select DISTINCT COUNT(a.name) from Account a&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Long&amp;gt; c = cb.createQuery(Long.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Account&amp;gt; a = c.from(Account.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.select(cb.countDistinct(a.get(Account_.name)));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// hence we do not check equivalence against JPQL 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// assertEquivalence(c, jpql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// but check against SQL
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL = &amp;quot;SELECT COUNT(DISTINCT t0.name) FROM CR_ACCT t0&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(c, expectedSQL);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testSizeReturnsInteger() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select SIZE(c.accounts) from Customer c&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Integer&amp;gt; c = cb.createQuery(Integer.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Customer&amp;gt; customer = c.from(Customer.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.select(cb.size(customer.get(Customer_.accounts)));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java?rev=881638&amp;r1=881637&amp;r2=881638&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java?rev=881638&amp;r1=881637&amp;r2=881638&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/Expressions.java Wed Nov 18 00:53:03 2009
&lt;br&gt;@@ -303,8 +303,8 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value v = factory.count(Expressions.toValue(e, factory, q));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _distinct ? factory.distinct(v) : v;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value v = Expressions.toValue(e, factory, q);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _distinct ? factory.count(factory.distinct(v)) : factory.count(v);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;@@ -387,11 +387,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value val = Expressions.toValue(e, factory, q);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Value result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (val instanceof Literal &amp;&amp; ((Literal)val).getParseType() == Literal.TYPE_COLLECTION)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.newLiteral(((Collection)((Literal)val).getValue()).size(), 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result = factory.newLiteral(((Collection)((Literal)val).getValue()).size(), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Literal.TYPE_NUMBER);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.size(val);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result = factory.size(val);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result.setImplicitType(Integer.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public StringBuilder asValue(AliasContext q) {
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881638-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persisa-tp4022407p4022407.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021951</id>
	<title>svn commit: r881613 - /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java</title>
	<published>2009-11-17T15:09:57Z</published>
	<updated>2009-11-17T15:09:57Z</updated>
	<author>
		<name>mikedd</name>
	</author>
	<content type="html">Author: mikedd
&lt;br&gt;Date: Tue Nov 17 23:09:57 2009
&lt;br&gt;New Revision: 881613
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881613&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881613&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1384:
&lt;br&gt;Try current classloader when loading DBDictionary.
&lt;br&gt;Submitted By: B.J. Reed
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?rev=881613&amp;r1=881612&amp;r2=881613&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?rev=881613&amp;r1=881612&amp;r2=881613&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java Tue Nov 17 23:09:57 2009
&lt;br&gt;@@ -154,6 +154,18 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DBDictionary.class)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict = (DBDictionary) AccessController.doPrivileged(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.newInstanceAction(c));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (ClassNotFoundException cnfe) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if the dictionary was not found, make another attempt
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// at loading the dictionary using the current thread.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class c = Thread.currentThread().getContextClassLoader().loadClass(dclass);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict = (DBDictionary) AccessController.doPrivileged(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.newInstanceAction(c));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e instanceof PrivilegedActionException)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e = ((PrivilegedActionException) e).getException();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new UserException(e).setFatal(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e instanceof PrivilegedActionException)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e = ((PrivilegedActionException) e).getException();
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881613-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-sql-DBDictionarya-tp4021951p4021951.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021950</id>
	<title>svn commit: r881612 - /openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java</title>
	<published>2009-11-17T15:09:43Z</published>
	<updated>2009-11-17T15:09:43Z</updated>
	<author>
		<name>mikedd</name>
	</author>
	<content type="html">Author: mikedd
&lt;br&gt;Date: Tue Nov 17 23:09:42 2009
&lt;br&gt;New Revision: 881612
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881612&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881612&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1384:
&lt;br&gt;Try current classloader when loading DBDictionary.
&lt;br&gt;Submitted By: B.J. Reed
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?rev=881612&amp;r1=881611&amp;r2=881612&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?rev=881612&amp;r1=881611&amp;r2=881612&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java (original)
&lt;br&gt;+++ openjpa/branches/1.2.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java Tue Nov 17 23:09:42 2009
&lt;br&gt;@@ -122,6 +122,18 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DBDictionary.class)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict = (DBDictionary) AccessController.doPrivileged(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.newInstanceAction(c));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (ClassNotFoundException cnfe) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if the dictionary was not found, make another attempt
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// at loading the dictionary using the current thread.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class c = Thread.currentThread().getContextClassLoader().loadClass(dclass);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict = (DBDictionary) AccessController.doPrivileged(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.newInstanceAction(c));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e instanceof PrivilegedActionException)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e = ((PrivilegedActionException) e).getException();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new UserException(e).setFatal(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e instanceof PrivilegedActionException)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e = ((PrivilegedActionException) e).getException();
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881612-openjpa-branches-1-2-x-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-sql-DBDa-tp4021950p4021950.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021922</id>
	<title>svn commit: r881605 - /openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java</title>
	<published>2009-11-17T15:03:21Z</published>
	<updated>2009-11-17T15:03:21Z</updated>
	<author>
		<name>mikedd</name>
	</author>
	<content type="html">Author: mikedd
&lt;br&gt;Date: Tue Nov 17 23:03:20 2009
&lt;br&gt;New Revision: 881605
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881605&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881605&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1384:
&lt;br&gt;Try current classloader when loading DBDictionaries if the first attempt fails.
&lt;br&gt;Submitted By: B.J. Reed
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?rev=881605&amp;r1=881604&amp;r2=881605&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java?rev=881605&amp;r1=881604&amp;r2=881605&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java (original)
&lt;br&gt;+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionaryFactory.java Tue Nov 17 23:03:20 2009
&lt;br&gt;@@ -154,6 +154,18 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DBDictionary.class)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict = (DBDictionary) AccessController.doPrivileged(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.newInstanceAction(c));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (ClassNotFoundException cnfe) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// if the dictionary was not found, make another attempt
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// at loading the dictionary using the current thread.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Class c = Thread.currentThread().getContextClassLoader().loadClass(dclass);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dict = (DBDictionary) AccessController.doPrivileged(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;J2DoPrivHelper.newInstanceAction(c));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e instanceof PrivilegedActionException)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e = ((PrivilegedActionException) e).getException();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new UserException(e).setFatal(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e instanceof PrivilegedActionException)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e = ((PrivilegedActionException) e).getException();
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881605-openjpa-branches-1-3-x-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-sql-DBDa-tp4021922p4021922.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021902</id>
	<title>svn commit: r881598 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/ openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/ openjpa-persistence-jdbc/src/te...</title>
	<published>2009-11-17T14:59:01Z</published>
	<updated>2009-11-17T14:59:01Z</updated>
	<author>
		<name>fancy</name>
	</author>
	<content type="html">Author: fancy
&lt;br&gt;Date: Tue Nov 17 22:59:01 2009
&lt;br&gt;New Revision: 881598
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881598&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881598&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1388 JPQL named parameter using a reserved word (:vlaue) resulting in ArgumentException
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/QueryImpl.java Tue Nov 17 22:59:01 2009
&lt;br&gt;@@ -1732,7 +1732,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Object expected : paramTypes.keySet()) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!params.containsKey(expected))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new UserException(_loc.get(&amp;quot;unbound-params&amp;quot;,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;params.keySet()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;expected, params.keySet()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Iterator itr = paramTypes.entrySet().iterator();
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/jpql/JPQLExpressionBuilder.java Tue Nov 17 22:59:01 2009
&lt;br&gt;@@ -1027,15 +1027,18 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return eval(firstChild(node));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case JJTNAMEDINPUTPARAMETER:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(node.text, false, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(onlyChild(node).text, false, false);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case JJTPOSITIONALINPUTPARAMETER:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(node.text, true, false);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case JJTCOLLECTIONPARAMETER:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JPQLNode child = onlyChild(node);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean positional = child.id == JJTPOSITIONALINPUTPARAMETER;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!positional)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;child = onlyChild(child);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getParameter(child.text, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;child.id == JJTPOSITIONALINPUTPARAMETER, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;positional, true);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case JJTOR: // x OR y
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.or(getExpression(left(node)),
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-kernel/src/main/jjtree/org/apache/openjpa/kernel/jpql/JPQL.jjt Tue Nov 17 22:59:01 2009
&lt;br&gt;@@ -1488,10 +1488,9 @@
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-void named_input_parameter() #NAMEDINPUTPARAMETER :
&lt;br&gt;-{ Token t; }
&lt;br&gt;+void named_input_parameter() #NAMEDINPUTPARAMETER : { }
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;-	&amp;quot;:&amp;quot; t = &amp;lt;IDENTIFIER&amp;gt; { jjtThis.setToken (t); }
&lt;br&gt;+	&amp;quot;:&amp;quot; path_component()
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jpql/expressions/TestEntityTypeExpression.java Tue Nov 17 22:59:01 2009
&lt;br&gt;@@ -107,10 +107,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;user = rs.get(0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Famzy&amp;quot;, user.getName());
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query = &amp;quot;SELECT e FROM CompUser e where TYPE(e) in :params &amp;quot; +
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query = &amp;quot;SELECT e FROM CompUser e where TYPE(e) in :value &amp;quot; +
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;ORDER BY e.age&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rs = em.createQuery(query).
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameter(&amp;quot;params&amp;quot;, params).getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameter(&amp;quot;value&amp;quot;, params).getResultList();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;user = rs.get(0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Jacob&amp;quot;, user.getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;@@ -137,10 +137,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;type = ((Object[]) rs2.get(0))[1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(type, FemaleUser.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query = &amp;quot;SELECT e FROM CompUser e where TYPE(e) = :typeName &amp;quot; +
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;query = &amp;quot;SELECT e FROM CompUser e where TYPE(e) = :type &amp;quot; +
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot; ORDER BY e.name&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rs = &amp;nbsp;em.createQuery(query).
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameter(&amp;quot;typeName&amp;quot;, FemaleUser.class).getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameter(&amp;quot;type&amp;quot;, FemaleUser.class).getResultList();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(rs.size()==3);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;user = rs.get(0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;Famzy&amp;quot;, user.getName());
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java?rev=881598&amp;r1=881597&amp;r2=881598&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryParameters.java Tue Nov 17 22:59:01 2009
&lt;br&gt;@@ -59,6 +59,24 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// do not close the factory
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testNamedParameterUsingReservedWord() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select e from simple e WHERE e.id=:key and e.name=:value&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q = em.createQuery(jpql)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.setParameter(&amp;quot;key&amp;quot;, 100)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.setParameter(&amp;quot;value&amp;quot;, &amp;quot;XYZ&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(2, q.getParameters().size());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parameter&amp;lt;?&amp;gt; param1 = q.getParameter(&amp;quot;key&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parameter&amp;lt;?&amp;gt; param2 = q.getParameter(&amp;quot;value&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(100, q.getParameterValue(&amp;quot;key&amp;quot;));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(100, q.getParameterValue(param1));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;XYZ&amp;quot;, q.getParameterValue(&amp;quot;value&amp;quot;));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(&amp;quot;XYZ&amp;quot;, q.getParameterValue(param2));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testPositionalParameterInJPQLQuery() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select e from simple e WHERE e.id=?1 and e.name=?2&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q = em.createQuery(jpql)
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881598-in-openjpa-trunk-openjpa-kernel-src-main-java-org-apache-openjpa-kernel-openjpa-k-tp4021902p4021902.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021661</id>
	<title>svn commit: r881566 - in /openjpa/trunk: openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java</title>
	<published>2009-11-17T14:10:18Z</published>
	<updated>2009-11-17T14:10:18Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Tue Nov 17 22:10:18 2009
&lt;br&gt;New Revision: 881566
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881566&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881566&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Support default projection for untyped result class, if possible.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=881566&amp;r1=881565&amp;r2=881566&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=881566&amp;r1=881565&amp;r2=881566&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Tue Nov 17 22:10:18 2009
&lt;br&gt;@@ -39,6 +39,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Selection;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.SetJoin;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Subquery;
&lt;br&gt;+import javax.persistence.metamodel.EntityType;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.test.AllowFailure;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -1389,4 +1390,19 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.isTrue(cb.disjunction())));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.createQuery(c).getResultList();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testDefaultProjectionWithUntypedResult() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery cquery = cb.createQuery(); 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Customer&amp;gt; customer = cquery.from(Customer.class);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Get Metamodel from Root
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EntityType&amp;lt;Customer&amp;gt; Customer_ = customer.getModel();
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cquery.where(cb.equal(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;customer.get(Customer_.getSingularAttribute(&amp;quot;name&amp;quot;, String.class)), 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.nullLiteral(String.class)));
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q = em.createQuery(cquery);
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java?rev=881566&amp;r1=881565&amp;r2=881566&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java?rev=881566&amp;r1=881565&amp;r2=881566&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaQueryImpl.java Tue Nov 17 22:10:18 2009
&lt;br&gt;@@ -594,7 +594,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected boolean isDefaultProjection() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_selections == null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getRoots().size() == 1 &amp;&amp; getRoot().getModel().getJavaType() == _resultClass;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getRoots().size() == 1 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;&amp; (getRoot().getModel().getJavaType() == _resultClass ||
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _resultClass == Object.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_selections.size() != 1) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881566-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persisa-tp4021661p4021661.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021344</id>
	<title>svn commit: r881529 - in /openjpa/trunk/openjpa-persistence/src/main: java/org/apache/openjpa/persistence/meta/ resources/org/apache/openjpa/persistence/meta/</title>
	<published>2009-11-17T13:16:24Z</published>
	<updated>2009-11-17T13:16:24Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Tue Nov 17 21:16:23 2009
&lt;br&gt;New Revision: 881529
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881529&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881529&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1391: Handle untyped collection
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java Tue Nov 17 21:16:23 2009
&lt;br&gt;@@ -58,7 +58,7 @@
&lt;br&gt;&amp;nbsp;public abstract class AbstractManagedType&amp;lt;X&amp;gt; extends Types.BaseType&amp;lt;X&amp;gt; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;implements ManagedType&amp;lt;X&amp;gt; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage(Types.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage(AbstractManagedType.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public final MetamodelImpl model;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public final ClassMetaData meta;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -248,7 +248,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new AttributeTypeFilter&amp;lt;X, Y&amp;gt;(type), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;singularAttributeFilter);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (result == null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;notFoundException(&amp;quot;attr-not-found-single&amp;quot;,name, type);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;notFoundException(&amp;quot;attr-not-found-single&amp;quot;, name, type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (SingularAttribute&amp;lt;? super X, Y&amp;gt;) result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -317,7 +317,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new ElementTypeFilter&amp;lt;X, E&amp;gt;(elementType),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new AttributeNameFilter&amp;lt;X&amp;gt;(name));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (result == null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;notFoundException(&amp;quot;attr-not-found-coll&amp;quot;,name, elementType);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;notFoundException(&amp;quot;attr-not-found-coll&amp;quot;, name, elementType);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (CollectionAttribute&amp;lt;? super X, E&amp;gt;) result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -729,12 +729,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// Exception handling
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// -------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private void notFoundException(String msg, String name, Class&amp;lt;?&amp;gt; t1) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(msg + &amp;quot; Attribute &amp;quot; + name + &amp;quot; of type &amp;quot; + 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(t1 == null ? &amp;quot;any&amp;quot; : t1.getName()) + &amp;quot; not found in &amp;quot; + meta);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_loc.get(msg, name, (t1 == null ? &amp;quot;any&amp;quot; : t1.getName()), meta).getMessage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private void notFoundException(String msg, String name, Class&amp;lt;?&amp;gt; t1, Class&amp;lt;?&amp;gt; t2) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(&amp;quot;Attribute &amp;quot; + name + &amp;quot; not found&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_loc.get(msg, new Object[]{name, (t1 == null ? &amp;quot;any&amp;quot; : t1.getName()), 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(t2 == null ? &amp;quot;any&amp;quot; : t1.getName()), meta}).getMessage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// --------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;// Attribute filtering
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java Tue Nov 17 21:16:23 2009
&lt;br&gt;@@ -244,12 +244,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;? extends Element&amp;gt; members = handler.getPersistentMembers(e);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Element m : members) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror decl = handler.getDeclaredType(m);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;decl.getKind();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror decl &amp;nbsp;= handler.getDeclaredType(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String fieldName = handler.getPersistentMemberName(m);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String fieldType = handler.getDeclaredTypeName(decl);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeCategory typeCategory = toMetaModelTypeCategory(decl, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fieldType);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeCategory typeCategory = toMetaModelTypeCategory(decl, fieldType);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String metaModelType = typeCategory.getMetaModelType();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SourceCode.Field modelField = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;switch (typeCategory) {
&lt;br&gt;@@ -261,15 +259,15 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case COLLECTION:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case LIST:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case SET:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror param = handler.getTypeParameter(decl, 0);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror param &amp;nbsp; = handler.getTypeParameter(m, decl, 0, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String elementType = handler.getDeclaredTypeName(param);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modelField = modelClass.addField(fieldName, metaModelType);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modelField.addParameter(originalSimpleClass)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.addParameter(elementType);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case MAP:
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror key = handler.getTypeParameter(decl, 0);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror value = handler.getTypeParameter(decl, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror key &amp;nbsp; = handler.getTypeParameter(m, decl, 0, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror value = handler.getTypeParameter(m, decl, 1, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String keyType = handler.getDeclaredTypeName(key);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String valueType = handler.getDeclaredTypeName(value);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modelField = modelClass.addField(fieldName, metaModelType);
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java Tue Nov 17 21:16:23 2009
&lt;br&gt;@@ -47,7 +47,11 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.Embeddable;
&lt;br&gt;&amp;nbsp;import javax.persistence.Entity;
&lt;br&gt;+import javax.persistence.ManyToMany;
&lt;br&gt;+import javax.persistence.ManyToOne;
&lt;br&gt;&amp;nbsp;import javax.persistence.MappedSuperclass;
&lt;br&gt;+import javax.persistence.OneToMany;
&lt;br&gt;+import javax.persistence.OneToOne;
&lt;br&gt;&amp;nbsp;import javax.persistence.Transient;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Localizer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.meta.AccessCode;
&lt;br&gt;@@ -65,6 +69,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;implements MetadataProcessor&amp;lt;TypeElement, Element&amp;gt; {
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;&amp;nbsp;	private final ProcessingEnvironment processingEnv;
&lt;br&gt;+	private final Types typeUtility;
&lt;br&gt;&amp;nbsp;	private final CompileTimeLogger logger;
&lt;br&gt;&amp;nbsp;	/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Set of Inclusion Filters based on member type, access type or transient
&lt;br&gt;@@ -81,8 +86,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected GetterFilter getterFilter = new GetterFilter();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;protected SetterFilter setterFilter = new SetterFilter();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static Localizer _loc = Localizer.forPackage(
&lt;br&gt;- &amp;nbsp; &amp;nbsp;		SourceAnnotationHandler.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected static List&amp;lt;Class&amp;lt;? extends Annotation&amp;gt;&amp;gt; mappingAnnos = new ArrayList&amp;lt;Class&amp;lt;? extends Annotation&amp;gt;&amp;gt;();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;static {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mappingAnnos.add(OneToOne.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mappingAnnos.add(OneToMany.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mappingAnnos.add(ManyToOne.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mappingAnnos.add(ManyToMany.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static Localizer _loc = Localizer.forPackage(SourceAnnotationHandler.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp;	/**
&lt;br&gt;&amp;nbsp;	 * Construct with JDK6 annotation processing environment.
&lt;br&gt;@@ -92,6 +103,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CompileTimeLogger logger) {
&lt;br&gt;&amp;nbsp;		super();
&lt;br&gt;&amp;nbsp;		this.processingEnv = processingEnv;
&lt;br&gt;+		this.typeUtility &amp;nbsp; = processingEnv.getTypeUtils();
&lt;br&gt;&amp;nbsp;		this.logger = logger;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -187,15 +199,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private int getImplicitAccessType(TypeElement type) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;? extends Element&amp;gt; allMembers = type.getEnclosedElements();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;VariableElement&amp;gt; allFields = (Set&amp;lt;VariableElement&amp;gt;) 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filter(allMembers, fieldFilter, nonTransientFilter);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; allMethods = (Set&amp;lt;ExecutableElement&amp;gt;) 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filter(allMembers, methodFilter, nonTransientFilter);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;VariableElement&amp;gt; allFields = (Set&amp;lt;VariableElement&amp;gt;) filter(allMembers, fieldFilter, nonTransientFilter);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; allMethods = (Set&amp;lt;ExecutableElement&amp;gt;) filter(allMembers, methodFilter, 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;nonTransientFilter);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;VariableElement&amp;gt; annotatedFields = filter(allFields, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;annotatedFilter);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; getters = filter(allMethods, getterFilter, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;annotatedFilter);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;VariableElement&amp;gt; annotatedFields = filter(allFields, annotatedFilter);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; getters = filter(allMethods, getterFilter, annotatedFilter);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; setters = filter(allMethods, setterFilter);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getters = matchGetterAndSetter(getters, setters);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;@@ -242,9 +251,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Set&amp;lt;ExecutableElement&amp;gt; matchGetterAndSetter(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; getters, &amp;nbsp;Set&amp;lt;ExecutableElement&amp;gt; setters) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Collection&amp;lt;ExecutableElement&amp;gt; unmatched =
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new ArrayList&amp;lt;ExecutableElement&amp;gt;();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Types typeUtils = processingEnv.getTypeUtils();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Collection&amp;lt;ExecutableElement&amp;gt; unmatched = &amp;nbsp;new ArrayList&amp;lt;ExecutableElement&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (ExecutableElement getter : getters) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String getterName = getter.getSimpleName().toString();
&lt;br&gt;@@ -257,13 +264,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .iterator().next().asType();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String actualSetterName = setter.getSimpleName().toString();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;matched = actualSetterName.equals(expectedSetterName)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;&amp; typeUtils.isSameType(setterArgType, getterReturnType);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;&amp; typeUtility.isSameType(setterArgType, getterReturnType);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (matched)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!matched) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logger.warn(_loc.get(&amp;quot;getter-unmatched&amp;quot;, getter, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getter.getEnclosingElement()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logger.warn(_loc.get(&amp;quot;getter-unmatched&amp;quot;, getter, getter.getEnclosingElement()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unmatched.add(getter);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -524,6 +530,17 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;TypeMirror getTargetEntityType(Element e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Class&amp;lt;? extends Annotation&amp;gt; anno : mappingAnnos) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object target = getAnnotationValue(e, anno, &amp;quot;targetEntity&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (target != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (TypeMirror)target;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;String getDeclaredTypeName(TypeMirror mirror) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	return getDeclaredTypeName(mirror, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -537,6 +554,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * return &amp;lt;code&amp;gt;java.util.Set&amp;lt;/code&amp;gt;.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;String getDeclaredTypeName(TypeMirror mirror, boolean box) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mirror == null || mirror.getKind() == TypeKind.NULL || mirror.getKind() == TypeKind.WILDCARD)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;java.lang.Object&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	if (mirror.getKind() == TypeKind.ARRAY) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		TypeMirror comp = ((ArrayType)mirror).getComponentType();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		return getDeclaredTypeName(comp, false);
&lt;br&gt;@@ -544,7 +563,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	mirror = box ? box(mirror) : mirror;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	if (isPrimitive(mirror))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		return ((PrimitiveType)mirror).toString();
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	Element elem = processingEnv.getTypeUtils().asElement(mirror);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	Element elem = typeUtility.asElement(mirror);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	if (elem == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp;throw new RuntimeException(_loc.get(&amp;quot;mmg-no-type&amp;quot;, mirror).getMessage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return elem.toString();
&lt;br&gt;@@ -600,15 +619,23 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * @return if the given type represents a parameterized type, then the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; indexed parameter type argument. Otherwise null.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;TypeMirror getTypeParameter(TypeMirror mirror, int index) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;TypeMirror getTypeParameter(Element e, TypeMirror mirror, int index, boolean checkTarget) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mirror.getKind() == TypeKind.ARRAY)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ((ArrayType)mirror).getComponentType();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	if (mirror.getKind() != TypeKind.DECLARED)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;		return null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;? extends TypeMirror&amp;gt; params = ((DeclaredType)mirror)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	.getTypeArguments();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (params == null || params.size() &amp;lt; index+1) 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? null : params.get(index);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	if (checkTarget) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp;TypeMirror target = getTargetEntityType(e);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp;if (target != null)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return target;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;? extends TypeMirror&amp;gt; params = ((DeclaredType)mirror).getTypeArguments();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TypeMirror param = (params == null || params.size() &amp;lt; index+1) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;? typeUtility.getNullType() : params.get(index);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (param.getKind() == TypeKind.NULL || param.getKind() == TypeKind.WILDCARD) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logger.warn(_loc.get(&amp;quot;generic-type-param&amp;quot;, e, getDeclaredType(e), e.getEnclosingElement()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return param;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public TypeElement getPersistentSupertype(TypeElement cls) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties?rev=881529&amp;r1=881528&amp;r2=881529&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties Tue Nov 17 21:16:23 2009
&lt;br&gt;@@ -79,4 +79,6 @@
&lt;br&gt;&amp;nbsp;attr-not-found-map: Map attribute &amp;quot;{0}&amp;quot; of {1} key type and {2} value type not found in {3}
&lt;br&gt;&amp;nbsp;attr-not-found-decl-map: Declared Map attribute &amp;quot;{0}&amp;quot; of {1} key type and {2} value type not found in {3}
&lt;br&gt;&amp;nbsp;decl-version-not-found: Declared version attribute of {1} type not found in {2} 
&lt;br&gt;-version-not-found: Version attribute of {1} type not found in {2}
&lt;br&gt;\ No newline at end of file
&lt;br&gt;+version-not-found: Version attribute of {1} type not found in {2}
&lt;br&gt;+generic-type-param: Can not determine generic type parameter for field {0} of type {1} in {2}. \
&lt;br&gt;+	Using java.lang.Object.
&lt;br&gt;\ No newline at end of file
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881529-in-openjpa-trunk-openjpa-persistence-src-main-java-org-apache-openjpa-persistence-tp4021344p4021344.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4021111</id>
	<title>svn commit: r881495 - /openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java</title>
	<published>2009-11-17T12:35:20Z</published>
	<updated>2009-11-17T12:35:20Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Tue Nov 17 20:35:20 2009
&lt;br&gt;New Revision: 881495
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881495&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881495&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1390: From.join(String attr) checks any attribute not only singular attributes.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java?rev=881495&amp;r1=881494&amp;r2=881495&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java?rev=881495&amp;r1=881494&amp;r2=881495&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/FromImpl.java Tue Nov 17 20:35:20 2009
&lt;br&gt;@@ -175,53 +175,68 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return join(attr, JoinType.INNER);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; Join&amp;lt;W,Y&amp;gt; join(String attr, JoinType jt) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (Join&amp;lt;W,Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getSingularAttribute(attr), jt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; Join&amp;lt;W,Y&amp;gt; join(String name, JoinType jt) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ManagedType&amp;lt;X&amp;gt; mType = (ManagedType&amp;lt;X&amp;gt;)type;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Attribute&amp;lt;?, ?&amp;gt; attr = mType.getAttribute(name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(attr.getDeclaringType());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (attr instanceof SingularAttribute) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return join((SingularAttribute)attr, jt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (attr instanceof ListAttribute) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return join((ListAttribute)attr, jt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (attr instanceof SetAttribute) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return join((SetAttribute)attr, jt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (attr instanceof CollectionAttribute) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return join((CollectionAttribute)attr, jt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (attr instanceof MapAttribute) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return join((MapAttribute)attr, jt);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; CollectionJoin&amp;lt;W, Y&amp;gt; joinCollection(String attr) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (CollectionJoin&amp;lt;W,Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getCollection(attr), JoinType.INNER);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; CollectionJoin&amp;lt;W, Y&amp;gt; joinCollection(String attr, JoinType jt) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (CollectionJoin&amp;lt;W,Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getCollection(attr), jt);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; ListJoin&amp;lt;W, Y&amp;gt; joinList(String attr) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (ListJoin&amp;lt;W,Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getList(attr), JoinType.INNER);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; ListJoin&amp;lt;W,Y&amp;gt; joinList(String attr, JoinType jt) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (ListJoin&amp;lt;W,Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getList(attr), jt);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,K,V&amp;gt; MapJoin&amp;lt;W,K,V&amp;gt; joinMap(String attr) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (MapJoin&amp;lt;W,K,V&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getMap(attr));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,K,V&amp;gt; MapJoin&amp;lt;W,K,V&amp;gt; &amp;nbsp;joinMap(String attr, JoinType jt) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (MapJoin&amp;lt;W,K,V&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getMap(attr));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; SetJoin&amp;lt;W, Y&amp;gt; &amp;nbsp;joinSet(String attr) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (SetJoin&amp;lt;W, Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getSet(attr));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;W,Y&amp;gt; SetJoin&amp;lt;W, Y&amp;gt; &amp;nbsp;joinSet(String attr, JoinType jt) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (SetJoin&amp;lt;W, Y&amp;gt;)join(((ManagedType&amp;lt;X&amp;gt;)type).getSet(attr), jt);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void assertJoinable() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertJoinable(Type&amp;lt;?&amp;gt; type) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (type.getPersistenceType() == PersistenceType.BASIC) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalArgumentException(this + &amp;quot; is a basic path and can not be navigated to &amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -258,7 +273,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;X,Y&amp;gt; Fetch&amp;lt;X, Y&amp;gt; fetch(String name, JoinType jt) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertJoinable(type);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Attribute&amp;lt;? super X,?&amp;gt; attr = ((ManagedType&amp;lt;X&amp;gt;)type).getAttribute(name);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (attr.isCollection()) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return fetch((PluralAttribute)attr, jt);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881495-openjpa-trunk-openjpa-persistence-src-main-java-org-apache-openjpa-persistence-cra-tp4021111p4021111.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4019915</id>
	<title>svn commit: r881381 - in /openjpa/trunk: openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties</title>
	<published>2009-11-17T09:13:49Z</published>
	<updated>2009-11-17T09:13:49Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Tue Nov 17 17:13:48 2009
&lt;br&gt;New Revision: 881381
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881381&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881381&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Add error messages for attribute not found exceptions.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java?rev=881381&amp;r1=881380&amp;r2=881381&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java?rev=881381&amp;r1=881380&amp;r2=881381&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/meta/TestMetamodel.java Tue Nov 17 17:13:48 2009
&lt;br&gt;@@ -20,6 +20,8 @@
&lt;br&gt;&amp;nbsp;package org.apache.openjpa.persistence.meta;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import java.lang.reflect.Field;
&lt;br&gt;+import java.lang.reflect.InvocationTargetException;
&lt;br&gt;+import java.lang.reflect.Method;
&lt;br&gt;&amp;nbsp;import java.lang.reflect.Modifier;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.metamodel.Attribute;
&lt;br&gt;@@ -311,6 +313,66 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(PersistentAttributeType.BASIC, pInt.getPersistentAttributeType());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testNotFoundErrorMessage() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IdentifiableType&amp;lt;ImplicitFieldAccessBase&amp;gt; e0 = model.entity(ImplicitFieldAccessBase.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = &amp;quot;unknown&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Method[] getters = {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getAttribute&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getCollection&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getList&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getSet&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getSingularAttribute&amp;quot;, &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredAttribute&amp;quot;, &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredCollection&amp;quot;, new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredList&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredSet&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredSingularAttribute&amp;quot;, new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getAttribute&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getCollection&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getList&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getSet&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getSingularAttribute&amp;quot;, &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredAttribute&amp;quot;, &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredCollection&amp;quot;, new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredList&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredSet&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredSingularAttribute&amp;quot;, new Class&amp;lt;?&amp;gt;[]{String.class, Class.class}),
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getMap&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getMap&amp;quot;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredMap&amp;quot;, &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e0.getClass().getMethod(&amp;quot;getDeclaredMap&amp;quot;, &amp;nbsp;new Class&amp;lt;?&amp;gt;[]{String.class, Class.class, Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};
&lt;br&gt;+// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e0.getClass().getMethod(&amp;quot;getDeclaredVersion&amp;quot;, new Class&amp;lt;?&amp;gt;[]{Class.class}),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; getters.length; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object[] args;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (i &amp;lt; 10) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;args = new Object[]{name};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (i &amp;lt; 20) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;args = new Object[]{name, Object.class};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (i%2 == 0) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;args = new Object[]{name};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;args = new Object[]{name, Object.class, String.class};
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;getters[i].invoke(e0, args);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &amp;nbsp;catch (InvocationTargetException e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot;Expeceted:&amp;quot; + e.getTargetException());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Exception e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.printStackTrace();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;void assertFails(ManagedType&amp;lt;?&amp;gt; type, String name, boolean dec) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Attribute&amp;lt;?,?&amp;gt; a = dec ? type.getDeclaredAttribute(name) 
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties?rev=881381&amp;r1=881380&amp;r2=881381&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties?rev=881381&amp;r1=881380&amp;r2=881381&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/meta/localizer.properties Tue Nov 17 17:13:48 2009
&lt;br&gt;@@ -67,3 +67,16 @@
&lt;br&gt;&amp;nbsp;	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \
&lt;br&gt;&amp;nbsp;	See the License for the specific language governing permissions and \
&lt;br&gt;&amp;nbsp;	limitations under the License.
&lt;br&gt;+attr-not-found: Attribute &amp;quot;{0}&amp;quot; of {1} not found in {2}
&lt;br&gt;+attr-not-found-single: Singular attribute &amp;quot;{0}&amp;quot; of {1} type not found in {2}
&lt;br&gt;+attr-not-found-decl-single: Declared singular attribute &amp;quot;{0}&amp;quot; of {1} type not found in {2}
&lt;br&gt;+attr-not-found-coll: Collection attribute &amp;quot;{0}&amp;quot; of {1} element type not found in {2}
&lt;br&gt;+attr-not-found-decl-coll: Declared Collection attribute &amp;quot;{0}&amp;quot; of {1} element type not found in {2}
&lt;br&gt;+attr-not-found-list: List attribute &amp;quot;{0}&amp;quot; of {1} element type not found in {2}
&lt;br&gt;+attr-not-found-decl-list: Declared List attribute &amp;quot;{0}&amp;quot; of {1} element type not found in {2}
&lt;br&gt;+attr-not-found-set: Set attribute &amp;quot;{0}&amp;quot; of {1} element type not found in {2}
&lt;br&gt;+attr-not-found-decl-set: Declared Set attribute &amp;quot;{0}&amp;quot; of {1} element type not found in {2}
&lt;br&gt;+attr-not-found-map: Map attribute &amp;quot;{0}&amp;quot; of {1} key type and {2} value type not found in {3}
&lt;br&gt;+attr-not-found-decl-map: Declared Map attribute &amp;quot;{0}&amp;quot; of {1} key type and {2} value type not found in {3}
&lt;br&gt;+decl-version-not-found: Declared version attribute of {1} type not found in {2} 
&lt;br&gt;+version-not-found: Version attribute of {1} type not found in {2}
&lt;br&gt;\ No newline at end of file
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881381-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persiss-tp4019915p4019915.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4019534</id>
	<title>svn commit: r881353 - /openjpa/KEYS</title>
	<published>2009-11-17T08:19:25Z</published>
	<updated>2009-11-17T08:19:25Z</updated>
	<author>
		<name>DWoods</name>
	</author>
	<content type="html">Author: dwoods
&lt;br&gt;Date: Tue Nov 17 16:19:24 2009
&lt;br&gt;New Revision: 881353
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881353&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881353&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;add new 4096 bit key for dwoods
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/KEYS
&lt;br&gt;&lt;br&gt;Modified: openjpa/KEYS
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/KEYS?rev=881353&amp;r1=881352&amp;r2=881353&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/KEYS?rev=881353&amp;r1=881352&amp;r2=881353&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/KEYS (original)
&lt;br&gt;+++ openjpa/KEYS Tue Nov 17 16:19:24 2009
&lt;br&gt;@@ -154,21 +154,22 @@
&lt;br&gt;&amp;nbsp;5CQAn1YB0pFmtxGhR8aZ5Bi3Kkxa9m75
&lt;br&gt;&amp;nbsp;=Z9If
&lt;br&gt;&amp;nbsp;-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;-pub &amp;nbsp; 1024D/9F523401 2007-06-12
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;Key fingerprint = 677C FCD1 9C6F 64F9 4DD5 &amp;nbsp;D33B CBDC B208 9F52 3401
&lt;br&gt;-uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;-sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;-sub &amp;nbsp; 2048g/CCF1AD51 2007-06-12
&lt;br&gt;-sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;pub &amp;nbsp; 1024D/9F523401 2007-06-12
&lt;br&gt;&amp;nbsp;uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;-sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2009-11-17 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;sub &amp;nbsp; 2048g/CCF1AD51 2007-06-12
&lt;br&gt;&amp;nbsp;sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;+
&lt;br&gt;+pub &amp;nbsp; 4096R/D018E6B1 2009-11-17
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Donald Ray Woods (Apache code signing key) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;D018E6B1 2009-11-17 &amp;nbsp;Donald Ray Woods (Apache code signing key) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2009-11-17 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 4096R/94ACD3F1 2009-11-17
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;D018E6B1 2009-11-17 &amp;nbsp;Donald Ray Woods (Apache code signing key) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019534&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;br&gt;-Version: GnuPG v1.4.2 (GNU/Linux)
&lt;br&gt;+Version: GnuPG/MacGPG2 v2.0.12 (Darwin)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;mQGiBEZujvERBACXWZuHFBP3vVBD/obpZQcf4/D7JTaRUkH/YkT9pP+zuyATPcU/
&lt;br&gt;&amp;nbsp;HYbr8WFOI57HQHXIyC6qfjLWLmKJklGUjIaAGxLo7/V97kPLvPIkWMm/Hl1MFoNT
&lt;br&gt;@@ -179,22 +180,89 @@
&lt;br&gt;&amp;nbsp;sXLoA/wM8v/b1SPL4QlitOe3FRTaZa4/DuFUtYVcP2LvIJeHGpNDgpLrNpVvxy0C
&lt;br&gt;&amp;nbsp;w/OXgJhuyDa4qbQ/8Hx0+D7RHYULCflvHCmwg4y0GHq6DO1LrOmpAA6G/kVUHISv
&lt;br&gt;&amp;nbsp;4C8v06yT+kxI7Z2aKgotylquM7571i+m8+0RvyjwRUBCqFs8FrQgRG9uYWxkIFdv
&lt;br&gt;-b2RzIDxkd29vZHNAYXBhY2hlLm9yZz6IYAQTEQIAIAUCRm6O8QIbAwYLCQgHAwIE
&lt;br&gt;-FQIIAwQWAgMBAh4BAheAAAoJEMvcsgifUjQBy18An3WdDIYa6NlX7Ywn8Pdko+EB
&lt;br&gt;-SU/xAJ47OViBHzoS4enm4wUUqFNLgEWNGLkCDQRGbo9xEAgAuYxPTjdSA/+gUyIS
&lt;br&gt;-Sua3CTo+aXsR6JFQYfrAJOmqW7W/yHKO/0RX6AODkDSDDsYhGuXliQ4k5IWlpbOt
&lt;br&gt;-IVpJNGg0teoNv5zmfRXzgfDfSwVZCVHCU7Mllguh4oAh7+k4EYh9qsXe2cJRgtIr
&lt;br&gt;-DUXdcaqZmlrIId+nuwb0A6285J7/x0JuY+IQokZQIZltV/p2Uu+EoaQgRjcdOj0G
&lt;br&gt;-j/rBWZvgQvBFVOjvLFmxzUTVQPyESJo1KWQaOQDsltcM90LHzPWrB6/5cFPGLwA2
&lt;br&gt;-ZgoUcZ7ZKbmi9vxeXMfVLNgmoRBzu2UbuuZvhMV66oY/5DZcn6jmFsP4M8s/Mvo+
&lt;br&gt;-L+XmnwADBwgAgWfcH5QmmHuqX7wFTFRtajZWjlnV63uNRk66RY0fP0DQKQS2BAjM
&lt;br&gt;-GeFM8QEnjn5+HPftOHKLMs3EJtQH0H+PYSBO4qapLlsIszLp/Kww4+qfcAZZPkjm
&lt;br&gt;-hSQzPBt1j4EaePs7hLMDAdfWOETH2/TZOJQJGx+bZzBL0BMO7KbXBrEKznx68VdE
&lt;br&gt;-nPG/UMNTDiG5j27Iv2eX9c5lg+uvrPm6l0qt8VUKDrF6wXzNe8AEyuV5pBk1A81t
&lt;br&gt;-l6lrLf7ksrh0r5qRN6ezsHgpAhOcU1txeWkrI/TF/2bc5b2wQQBb1rF2cCvVUTCn
&lt;br&gt;-Xu5/hdAOZAPezATJLacb2Ac5SBN9vEvohohJBBgRAgAJBQJGbo9xAhsMAAoJEMvc
&lt;br&gt;-sgifUjQBBcwAn0R4nCTsPSqPFdCUklBIZT2x26g6AJ93cDVwOCKC36lWN9s0+D+x
&lt;br&gt;-i9gx8Q==
&lt;br&gt;-=QdBu
&lt;br&gt;+b2RzIDxkd29vZHNAYXBhY2hlLm9yZz6IYQQTEQIAIQIbAwIeAQIXgAUCSwLBkQUL
&lt;br&gt;+CQgHAwUVCgkICwUWAgMBAAAKCRDL3LIIn1I0AdaAAJwPzC6zLF+/lNyePH0hNSUD
&lt;br&gt;+nCT89gCeK1enlKCtvKQ8Cle2VrGJNdVnzVKIRgQQEQIABgUCRyDlhQAKCRCW6TJX
&lt;br&gt;+tCEAAbgjAJ0ZV9dS7kUOnxYskUPJA5B2X16hRgCfbpGeRq3L2eHzVFwFJp4ieYLY
&lt;br&gt;+V2SIRgQQEQIABgUCRyEFDgAKCRCEpNfphoWTWGoeAJ0fggbP+xcntjsey47FW3Cm
&lt;br&gt;+Iz8uswCguUyUkjs7Z+TnREH0enZQ6R6wdDaIRgQQEQIABgUCRyFA3QAKCRDLrr45
&lt;br&gt;+pGxMoWNoAKCet843aJPcxh0RFC4PFKAFrr29awCghSdmFUbwAjEljaQjwtTFrMlJ
&lt;br&gt;+tAqIRgQQEQIABgUCRyFA+QAKCRAywdbvDxQ7wYQhAKCCoeJX14vaiyeVnnKmGfsf
&lt;br&gt;+QST/wgCgs/zXm65fyJTbDMYGfT9QO3AWMfCIRgQQEQIABgUCRyHLMgAKCRDTsUn/
&lt;br&gt;+NnSW3rYzAJ922G2Czd+YGLM3/aQW63xKtyd5NQCgpSkEbmy2V7PAwh/4Hn+uNHyg
&lt;br&gt;+jc6IRgQQEQIABgUCSAzcJwAKCRD/2XkJYKvXc4l6AKCG+SI7E4lDn51HUuLFw+16
&lt;br&gt;+Ar+A7gCfd8XtXoVFhJZGHyImkLsvUnmMfPSIRgQQEQIABgUCSAzuJAAKCRD+LxNE
&lt;br&gt;+3kEG6suTAJ901qlafPxGu3ljAYEE/uTrSojKcQCfSf955pOELm1rt7dYdeGPWWtR
&lt;br&gt;+75SIYAQTEQIAIAUCRm6O8QIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEMvc
&lt;br&gt;+sgifUjQBy18An3WdDIYa6NlX7Ywn8Pdko+EBSU/xAJ47OViBHzoS4enm4wUUqFNL
&lt;br&gt;+gEWNGIhGBBARAgAGBQJJr+8QAAoJEMksjx/SEEOSJzsAnRWbgd/xrg95AYKYLVuP
&lt;br&gt;+GisKIsRoAJ0aTyQ/10ARA/uM1Wke0eIMmFqv4ohGBBARAgAGBQJJr/EeAAoJEIub
&lt;br&gt;+PpnUZsv/Za8AnjzBzW9bI3lzceFAiD7oGzNN+U4XAJ9XTlyDpPEKK4QY2p7Cpsxv
&lt;br&gt;+GQlhQYhGBBARAgAGBQJJr/RDAAoJEFSD5ViXq9m5bgIAnRnOaaDmTlytG5b8QgzW
&lt;br&gt;+42wV1/fpAJ0TYxsjDutR3TZPCiIgQmqFRtbe/ohzBBMRAgAzAhsDBgsJCAcDAgQV
&lt;br&gt;+AggDBBYCAwECHgECF4AFAkgM7X0SGGhrcDovL3BncC5taXQuZWR1AAoJEMvcsgif
&lt;br&gt;+UjQBiZgAnjvEBrSrlnAT/BhifOeixOgZFNJiAKCBXOoDcqR8aEs8RzIiAmnT8HLW
&lt;br&gt;+XbkCDQRGbo9xEAgAuYxPTjdSA/+gUyISSua3CTo+aXsR6JFQYfrAJOmqW7W/yHKO
&lt;br&gt;+/0RX6AODkDSDDsYhGuXliQ4k5IWlpbOtIVpJNGg0teoNv5zmfRXzgfDfSwVZCVHC
&lt;br&gt;+U7Mllguh4oAh7+k4EYh9qsXe2cJRgtIrDUXdcaqZmlrIId+nuwb0A6285J7/x0Ju
&lt;br&gt;+Y+IQokZQIZltV/p2Uu+EoaQgRjcdOj0Gj/rBWZvgQvBFVOjvLFmxzUTVQPyESJo1
&lt;br&gt;+KWQaOQDsltcM90LHzPWrB6/5cFPGLwA2ZgoUcZ7ZKbmi9vxeXMfVLNgmoRBzu2Ub
&lt;br&gt;+uuZvhMV66oY/5DZcn6jmFsP4M8s/Mvo+L+XmnwADBwgAgWfcH5QmmHuqX7wFTFRt
&lt;br&gt;+ajZWjlnV63uNRk66RY0fP0DQKQS2BAjMGeFM8QEnjn5+HPftOHKLMs3EJtQH0H+P
&lt;br&gt;+YSBO4qapLlsIszLp/Kww4+qfcAZZPkjmhSQzPBt1j4EaePs7hLMDAdfWOETH2/TZ
&lt;br&gt;+OJQJGx+bZzBL0BMO7KbXBrEKznx68VdEnPG/UMNTDiG5j27Iv2eX9c5lg+uvrPm6
&lt;br&gt;+l0qt8VUKDrF6wXzNe8AEyuV5pBk1A81tl6lrLf7ksrh0r5qRN6ezsHgpAhOcU1tx
&lt;br&gt;+eWkrI/TF/2bc5b2wQQBb1rF2cCvVUTCnXu5/hdAOZAPezATJLacb2Ac5SBN9vEvo
&lt;br&gt;+hohJBBgRAgAJBQJGbo9xAhsMAAoJEMvcsgifUjQBBcwAn0R4nCTsPSqPFdCUklBI
&lt;br&gt;+ZT2x26g6AJ93cDVwOCKC36lWN9s0+D+xi9gx8ZkCDQRLAsMJARAA1h1cxLnlmQ59
&lt;br&gt;+ff9rRH1W8306awBJxoE3OLj7bOL7z6A1XsPcE/fbGmameUF+hmmqrKklBDnOg55o
&lt;br&gt;+r6u1/c6bXoEJZ8CbaQk01JaJ/L1q0qYfke7Dqfbe9MyB9PXPSVwszuTN0ThtjdYN
&lt;br&gt;+fTByiiryoHsFYuCh05bVbsoWXHrqyiqhZ4SLzt7A5ume0n3x6WoWvdJlyyPNcIrU
&lt;br&gt;+H1EFUwmcnDuI0MrUB79g0tRW9pzgzmJiVKoxUpNQSM35ko7UMLlIRHTGcql0bsNt
&lt;br&gt;+x2bcLVyJ1Hy9//fwmz2/11Fxrd4ZdzAcytSTyHrEaSIJFxypDFDdfYiQOHTxcZPJ
&lt;br&gt;+hUlPXgRmK5dUyNK4SzvATZfe5qobEsJI276P4NetLFnaMqVPEoNT2CC3Jvs1KbBP
&lt;br&gt;+EnteU2cQuUmtCKkPMwaujz0S/B7i7/NUgghz3O60HfQSlm/fLqVjC8QsHbHE28A9
&lt;br&gt;+qYd0Iw/Ivme80PHbq7lTa17RtxFfdob06CYa5ZTKPhfEBDSkH3VIowPTW9hGLRzc
&lt;br&gt;+FJ4FESPqoEtZ1Exfqi/CsbBHjuPFuN8POANpMn1RF/6E0CHrhkwFiylkxqyByqKo
&lt;br&gt;+QCl/xYp/oLl0gO1d2hTRmSTyhmSxq1X2s5o8BjRr/p81OJqDip0ctWBdktQ3TwCz
&lt;br&gt;+8RyAv/J72DUnYNpN+3CM0nwX/avXeKkAEQEAAbQ+RG9uYWxkIFJheSBXb29kcyAo
&lt;br&gt;+QXBhY2hlIGNvZGUgc2lnbmluZyBrZXkpIDxkd29vZHNAYXBhY2hlLm9yZz6JAjcE
&lt;br&gt;+EwEKACEFAksCwwkCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+Om4xdAY
&lt;br&gt;+5rHjkg/+N/IaCjit7Hflb0BgeKG65kCrdaq8UsRZC8vPgxRwNbsdwINPZar9sbfb
&lt;br&gt;+wMr4Ts4pGQ+0b8OSu11kTgV/xY9SOIwJB4VI60Y+aglwnVP9lNVuu6RpEXIoeY9w
&lt;br&gt;+wh1Y1B7jAji0w2KmOggURMRzVDXOm6dHoguXSc3nQ+uWqgnSRaX0m3uigHdQv2k+
&lt;br&gt;+RJy1uJ3h1wJMj8tZpK91WU88ulJ3WTExZXlxbj74bq2OhV+l+7DiTMCX78FwVzWm
&lt;br&gt;+Bc1aw5FTIedbZ7mJ/Onw7pnXY+8Jgda/IxWDTVDUk+2Y58Vk7F1xkZwHIBnjsSvE
&lt;br&gt;+c7b1JLGRXROWhsNGlYkZjuK2D+sL0C7vJ4obVmTDTXUiD/7IFdBiTZXmf0E0SFYu
&lt;br&gt;+ctRB7aLKbInEwmsXWUfZsNgMjV1ya4HGow+XpF9c7Q1gdoy3T9GHVjubKsgeg4Pi
&lt;br&gt;+pqstrlU+BdTYcU3YNkD8W+wswILGPPlmH33ndDZG88SGDQoQcjv02yLrg18Q2Pb/
&lt;br&gt;+/QezMhRYl3r9fqW0ibi7zzBBxZvmY1zJQfnkKiV313i+6hjCOTQl7j3wY7PZt8gw
&lt;br&gt;+OE6fghf+7/HARSdLwTPzWgW1D4MK8na5tSIr+Alol7WTVExtrZvzllS7o+bq8nNT
&lt;br&gt;+i/opJj0iJHYrnBWEMttrUq+VoLwA1IeWPNGqV1XmTfos0dnD7riIRgQQEQoABgUC
&lt;br&gt;+SwLEmQAKCRDL3LIIn1I0AeSAAJwOZgrjRfrtbA+b0FKmq37pez6ybQCeNdcpcs3w
&lt;br&gt;+ax67NfdUS9CYth6Aa/i5Ag0ESwLDCQEQAMIBc1b0kN4lKDrO5OpIRPc5flSFrETu
&lt;br&gt;+HEDUmNDANHVbqhWJTHHK1N9YgvNHWLehCyvho0dbB8SrhwO0AZ8vZl0iU+B4hGci
&lt;br&gt;+IqbPfwstRpZ/MShX5UO+XvVAKO/rPqFAVARNl8DTbkIwLneSR5CaxInrPxhzme6J
&lt;br&gt;+n6HQUitGA5Pe6ULiU3RN/enyHPjMPjid+qEiv9EpyFBBvZw/2JN+/VECyqV9ideb
&lt;br&gt;+B4ki5/7CYFVkglsClrGN+OuPDuAdIhWIcBe0duxX0sJm221koBIMbiZhQWR5Jz/n
&lt;br&gt;+31bu0ETEhpit63YXwEZbYTrBy/tW0jBzLAseakqkvayUdpEYL1pXtlNj3cB034W/
&lt;br&gt;+27sQtNLosA531lt8RwV1sBm+zdBeVtFpaPHWv0lLcXqJtRNgqYeFX/o23XdoZRtO
&lt;br&gt;+zDnvrV/QT0vLqIehB36pcraxjqztEBVVjZLO4JiU7Mc9AP0clFh7cjlEyUJlhmP4
&lt;br&gt;+kQ4/btNSOHYSnP4rAnupD7DqoKmbLqi/VAKUuFjku2AO56U6pGsJWa9tG0836ivq
&lt;br&gt;+x4Pogxc5qHrZ0WbA1F9Ge2dDeefggAaOIYK/Dmg/P3HHpzdt3pPI0t7eYBFbhIuQ
&lt;br&gt;+WmyUBN2w2mpzI75TrxIZ6MHbiGZeyFP/46qpHEkTZQxf7eK0MMye/25e3j1dl0p1
&lt;br&gt;++7YS6M0uNjy1ABEBAAGJAh8EGAEKAAkFAksCwwkCGwwACgkQ+Om4xdAY5rHMug/+
&lt;br&gt;+K+eogScOUON6ol/R7p7iyjYdm756ZCp+AQHNp8A4Axhk2lXJ6MGEnxzC1Y8/6haz
&lt;br&gt;+UamiDecHN+P08gHh3aJPwJtepet8ICoyZoJSTa9bNcVEnZttl6VbqbAcbVMaFruA
&lt;br&gt;+R5PBF/ulZyrNbJmMSQw+TJ2kVXDEduKSJ3T6Gt3jzPq5GeYHIcjiTgn3KvGmhWcg
&lt;br&gt;+JAIU0jsjuJB6QeS3sZQ3nhMMKzFOS/Rzf6GTRSjBdv+X9ZEE7A0q0XawXTsSn+ch
&lt;br&gt;+eRvU4rVKznFUEMmAhPQTPUQeZbqMJ3+U9B8S38eIvR1Zjvg5+kKmbNB1O5g8zTQD
&lt;br&gt;+yN7UQ8bbOSgvDQWJa4EC52Lkc6GrT+fPjZ1UM76DPEloYMhyi5V2N6ZC+8eR90sr
&lt;br&gt;+PK5zGL9/Kp/VYUTmbG1mOcLyMMTSRQd2Qlq+XWuudgWWFhRjqWlMTxz+KfcVibD0
&lt;br&gt;+Y++4oHX6rzfJ7s6UDcju++A/CTZgwbmVWdslezhZM3gEunwUS0vJ1waNTIiIwZ57
&lt;br&gt;+a57LtjMD1bYxNynqXJhjDMKiKoydES+MNRUytg3gCrhRq9NYicNem0hPSve71gf1
&lt;br&gt;+gF4Wxqmnz6+E1o5Jc4iJbkRiYL7vAE2cEe45wijzcxRzPfAsxMjdxK07yThpZPUR
&lt;br&gt;+xdQRY9zWqyeRlvgRajdTc7Z4PlpXxpo589TJFXZdWJE=
&lt;br&gt;+=EEHK
&lt;br&gt;&amp;nbsp;-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881353-openjpa-KEYS-tp4019534p4019534.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4019520</id>
	<title>svn commit: r881352 - /openjpa/KEYS</title>
	<published>2009-11-17T08:17:15Z</published>
	<updated>2009-11-17T08:17:15Z</updated>
	<author>
		<name>DWoods</name>
	</author>
	<content type="html">Author: dwoods
&lt;br&gt;Date: Tue Nov 17 16:17:15 2009
&lt;br&gt;New Revision: 881352
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881352&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881352&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;master KEYS file for OpenJPA should be kept in svn under the projects main directory. &amp;nbsp;importing existing one from /www/www.apache.org/dist/openjpa/
&lt;br&gt;&lt;br&gt;Added:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/KEYS &amp;nbsp; (with props)
&lt;br&gt;&lt;br&gt;Added: openjpa/KEYS
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/KEYS?rev=881352&amp;view=auto&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/KEYS?rev=881352&amp;view=auto&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/KEYS (added)
&lt;br&gt;+++ openjpa/KEYS Tue Nov 17 16:17:15 2009
&lt;br&gt;@@ -0,0 +1,200 @@
&lt;br&gt;+This file contains the PGP keys of various developers.
&lt;br&gt;+
&lt;br&gt;+Users: pgp &amp;lt; KEYS
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; gpg --import KEYS
&lt;br&gt;+Developers: 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pgp -kxa &amp;lt;your name&amp;gt; and append it to this file.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(pgpk -ll &amp;lt;your name&amp;gt; &amp;&amp; pgpk -xa &amp;lt;your name&amp;gt;) &amp;gt;&amp;gt; this file.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(gpg --list-sigs &amp;lt;your name&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;&amp; gpg --armor --export &amp;lt;your name&amp;gt;) &amp;gt;&amp;gt; this file.
&lt;br&gt;+
&lt;br&gt;+
&lt;br&gt;+pub &amp;nbsp; 1024D/11A1AE9C 2006-10-19
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Marc Prud'hommeaux (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;11A1AE9C 2006-10-19 &amp;nbsp;Marc Prud'hommeaux (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 2048g/4AA825C2 2006-10-19
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;11A1AE9C 2006-10-19 &amp;nbsp;Marc Prud'hommeaux (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+Version: GnuPG v1.4.2.2 (Darwin)
&lt;br&gt;+
&lt;br&gt;+mQGiBEU3/c0RBACKG8V5yDWw/9D2EB5zfhy94lEYu2tsp+qjcC5h+DRPr8Clkfht
&lt;br&gt;+jWpHRcWmw8gxyYYo6fc8fH9vLljUvEQXmIHU88Qw6XUhGTsKFLsRT1rsN25+6KZG
&lt;br&gt;+kH2gnnZUXK1+NSGbiNwlbrgpNHP30JjLH9ewX867hhp24PJ0ke+nlzScBwCgrxsc
&lt;br&gt;+kmPXMyFrbbPYMaFO5MfT/R0D/R3o5lhV7mbu2jxKUMfngJYv7uT+IZ8lyquKdIcX
&lt;br&gt;+kvwKKqmdPgSJQ9RhJeUYgAlKcZbQst7g2g+XktuotxwNdUdyTGKJA1ieZK7l89U/
&lt;br&gt;+zNvQuCnZ9vSzirKydpRVd+ReMupVYooC12GYOl9gLCJg1WQXYdjoKaKF7u1PUsRp
&lt;br&gt;+We3XA/9YRNq7alUTRTiS0LY1RfaQohprsLsF+pY+ZkB3A72CZWyWoxQG0uHL3ivq
&lt;br&gt;+mGlGYKriKTed4DBRp2ZREsGwbWAknh/wP4Is42qH1RzWRB7xnQsrxYuPFSr4c35D
&lt;br&gt;+AP9oFk2O4povTJ9Ay0QEnNRgncIoSuhEXQ0GRLETosmozqBOkLQ7TWFyYyBQcnVk
&lt;br&gt;+J2hvbW1lYXV4IChDT0RFIFNJR05JTkcgS0VZKSA8bXBydWRob21AYXBhY2hlLm9y
&lt;br&gt;+Zz6IYAQTEQIAIAUCRTf9zQIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPeU
&lt;br&gt;+CvQRoa6ckGAAn131QtlLKvPdUh9NWYwgAsvN8FuSAJ9+8PTwxc4G4NhyNhYV0TcI
&lt;br&gt;+2kuANrkCDQRFN/3gEAgAmyDZTIcdHNN76dLsEA9tj+chVf2iDBFisrpmYMV4CM0R
&lt;br&gt;+tUD6GYhUDekKWaAs9PnTnqe+9b30NIEmORY6XktWD08GFwwp5loxlLuQlK66I29u
&lt;br&gt;+y1dS6J6HdxcFWJlg4v1AnKdHexUSHUbxNrZQtU+N3kAMhsopZhV3QwSK6djMb2Lo
&lt;br&gt;+SsNaSmpS+3L9siP8XwkxsPixOfXDTbKtFvb6p0idvetKPrulJnX+zJGupYa4KpkE
&lt;br&gt;+G7CpiWgcSFlGU/AVv4xfIqFUX3EwoQefIX/Nw+mlz2fZD0GCfosgLlA2x3gol2ks
&lt;br&gt;+77SgzzgH9acNF7xUoJTXHRZdz3Ue2CU2YSvCVBwV9wAFEQf+IXKZVdyjp+vAXSD2
&lt;br&gt;+lZHDzRlcI97dnAlsQYVmQOdDJf+haC8KBvZwSEdsCB4Ng6P1aX0xDh2gXxAUzEzJ
&lt;br&gt;+sjw4u7QvjKsx44SpC3wXsbJJdzwkM9nyneWul3DyyJ03YB0ReIuP/N5PZHLAKSIG
&lt;br&gt;+/n29AK16TJI+ePJtBfMhsjmaHvTjcEHALhG5eN1AtmCKMX60lSu9KYJK01gaiWgb
&lt;br&gt;+0lo9MyH4S7TqQHOqSUxF20Q/0fsN3ckkkelVy72vfB3lSbzQyZLrVCwqg10rjxQg
&lt;br&gt;+yjHi+tXM8R/gJaP5zRf5v1X0/kjAI2zo99l7eox4mgdfvpOojSBYJMn+097UVHW+
&lt;br&gt;+n0/ldohJBBgRAgAJBQJFN/3gAhsMAAoJEPeUCvQRoa6cu8oAoKzP/7i+YnyHHIpW
&lt;br&gt;+bZySWmV5ruNBAKCRPW44mWffxSsJ6oUeUSzvbsCwew==
&lt;br&gt;+=XKWe
&lt;br&gt;+-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+
&lt;br&gt;+pub &amp;nbsp; 1024D/7E3BEB2D 2007-04-10
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Michael Dick (code signing key) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7E3BEB2D 2007-04-10 &amp;nbsp;Michael Dick (code signing key) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 2048g/4723001B 2007-04-10
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7E3BEB2D 2007-04-10 &amp;nbsp;Michael Dick (code signing key) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+Version: GnuPG v1.4.2.2 (GNU/Linux)
&lt;br&gt;+
&lt;br&gt;+mQGiBEYbzvMRBADOdBR6syAa0Onaa81+BmixZekvKQ+bf/jK0/sYP6ZwuECGVHOY
&lt;br&gt;+omAKgSphzW9XCeTnWceKcrwC5sBrCponH47/UqGFwc9Mm64vK0lWuF9TCn96N2fJ
&lt;br&gt;+kgv3NT7aDav9HcTguMW1aqkdvgc7nvdL7Z2HqhBPT2MlYWWz+pg7RWOrbwCghOLH
&lt;br&gt;+9STCo3324KWWTqK86zbxTQsD/2APs+2jJD73oxsLWq3uCJ42jOHHD3/TBYfZvyzE
&lt;br&gt;+no/VBcicg3O+LpaGBdd+qWIBQk4icttAyzS/tdy1r6eY8d9vGhksRU+sSXslUHAR
&lt;br&gt;+WG3tkAbc5SYPZu3kRJv0eJVpBoACCkZLJ3Io8uAVSb8F89dNefbroANBkOYONK3v
&lt;br&gt;+jef8A/wKagcMKWbG5awezkPfNSP6MmPSTTNbJ3EUXpsXnjq5GNd0MLQgnQ01cHwz
&lt;br&gt;+Fg9UZGFAUNZ+oHKYO+jeeXxWmeJ36pXN84ND38mGbsda+4s48mG8JU+dP01bdeaO
&lt;br&gt;+U510xkcOoxQRMPq9H/FB/iiQv36BuISttpoAL5d7F98tM2mlZrQzTWljaGFlbCBE
&lt;br&gt;+aWNrIChjb2RlIHNpZ25pbmcga2V5KSA8bWlrZWRkQGFwYWNoZS5vcmc+iGAEExEC
&lt;br&gt;+ACAFAkYbzvMCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCZ1Q5efjvrLaAp
&lt;br&gt;+AJ9nJrepgHFtBPVLpmKpV7FkJ209UACePBoWqFE1PH/QgvHpy0zPAz6B5du5Ag0E
&lt;br&gt;+RhvPDhAIAPmeO+O/dTSaSFpBkdmRd0YmURe0OmQZOaoPrDkIlitLA4b6v3Zb1Fz9
&lt;br&gt;+pNMkVTt0JkxsGoiKoseEc4b8Lo1ljGWIYTGWHooyViPyVfb4nmkwl5xeSzvG2aq2
&lt;br&gt;+U1HOuft+h5r5GUqCXjfrYRIAxfNkMs4kkCYlCrbgKoL+ftDdftDV16XZxoD23/33
&lt;br&gt;+eN+Nade1fN6Dp9OGiYHV+ZmJ1KDzgY27slL9p2XdDMaesL/JUPHOoyZpPd2ncBsv
&lt;br&gt;+F1Rv+IbLc9r654LUoLK5IDZvXZyGl2SXXTrov+aWzQ2YL3/Js9heG6x19nHbwxw3
&lt;br&gt;+7HW5gxwxKtKyaMG1rpHth0SQTx+W3OcABRMIAL1kchiSI9qiOJsp5QmR02OLtuD3
&lt;br&gt;+aS5V/EdayIxya+RinlDeo1o+qd5tF3C6dI2MxmzSgf1FiFOtVY/gvg7Zai5RYvqc
&lt;br&gt;+xW013uNKTjUmBRMjXCwsCtmLEJqBUNQCvA00abLA+C85EGbffV2b6IkOL+nLWtxQ
&lt;br&gt;+3BaW4uOu6EVpVNQRoBWdYP7TZr6gyvIipXEwjiVG5IGooOeX6D0QJYtCVseRg70K
&lt;br&gt;+MqS+b3YS2u7omkMZ/wDDbYgsIFTea+RhNmerZ10Tj46FdwVqAAGucP3VVHWjdkoK
&lt;br&gt;+n+ZsBNqPLSWVrT9Bo4iKaApOtOMoX1570t7v6Vs3zUcGehADHugJSaYbuDaISQQY
&lt;br&gt;+EQIACQUCRhvPDgIbDAAKCRCZ1Q5efjvrLS39AJ9Ot0NV0G/rCZfI5iy8DMsX1ts3
&lt;br&gt;+dwCfZLOmgPCq4KhHIjLZ4n2aVfvGO9M=
&lt;br&gt;+=ln1C
&lt;br&gt;+-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+pub &amp;nbsp; 1024D/513CA0DC 2007-07-28
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Patrick Linskey (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;513CA0DC 2007-07-28 &amp;nbsp;Patrick Linskey (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 2048g/F415B175 2007-07-28
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;513CA0DC 2007-07-28 &amp;nbsp;Patrick Linskey (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+Version: GnuPG v1.4.6 (GNU/Linux)
&lt;br&gt;+
&lt;br&gt;+mQGiBEaroEIRBADEhY69nIpzngZxJRcBUSxWc92wZIWx0O8cE8VsOXXBP+I7gUCb
&lt;br&gt;+GDUx2oIFHNb1mVO+1ISXNU2fH50GNgorFoQ6VAuvsKiw7xQTPIzs+ZXmkzZ9rjXa
&lt;br&gt;+5KtC+MOBo1QJBxTVxqluSi2G3X0fs4CSJU12RiQHoe3PZgM8s8di93XS1wCg9mNP
&lt;br&gt;+3+zrZvWL/N3o3ecB7H6foaMD/AnndPEsPOyh0csu+EPHP4Iw5tIf6peBpBWLcgel
&lt;br&gt;+EZ+jP5EtO0Kov2PjHDzw1mOjAGSybh2mRXYx95PXAwg/4Jscj+UH3fYh9w0ZZyCh
&lt;br&gt;+sW+ERGxXu0ZwQMAkZ6fM8J2qQaCc597l4WrKd/8xUiKlMEivPcZOt9QN7lAmTgP6
&lt;br&gt;+OKwbA/9tM8KEB5QUIZT2vNEwSa8RVT1YK1iluz4D9SdvrjQDSWpkqRowr61DZoev
&lt;br&gt;+LM7aEH0jrt5rJGFuHvfB+zgoukpIka9WUhatkR+8HACguKxQO6SP714UlblGiHc6
&lt;br&gt;+21RaEmzIK4DgaX2IwBFTzF++SoMawXfODAyLuGfWaazJ4f5qnbQzUGF0cmljayBM
&lt;br&gt;+aW5za2V5IChDT0RFIFNJR05JTkcgS0VZKSA8cGNsQGFwYWNoZS5vcmc+iGAEExEC
&lt;br&gt;+ACAFAkaroEICGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDculJDUTyg3Mrz
&lt;br&gt;+AJ4o9v0Xs66N1sEUYYBF+kkmPY0LAACbBNIVayGj9aqjBP8895faHLPW9d+5Ag0E
&lt;br&gt;+RqugRhAIAJcFwugucCHivvhiB/f3lQqjmfv2Zif05U0CdXE8xs9ePFqL9sORHkR2
&lt;br&gt;+KoRFmlA+c83VAEYKInm4IaZ6/+ENrdgE6V73+T2LOrcZDg0qLukZuFfVVYKxLlvS
&lt;br&gt;+5bnmjf6ET0leiV5HiXUu6kZvAKP2qq6bQXHTiV8gdrA2zc0WGkiqWsKzqZ7SL8tw
&lt;br&gt;+ZLFVXVpVDIV1a4xkcO+Ogs8H8Lk6XM4WdtPybNqcE+mAOk6CQgNejPJSW6hIRpbx
&lt;br&gt;+QOzDFId942cS2l9cOo96TFAsogs7sl3EPSp3toTrUOhhtoG8hf0/yLP7BWXhcsz5
&lt;br&gt;+KFPgT+qaAX+1NzOCENoGNcwWgXiPztcAAwUH+QHlMptL0hnvvGvfDxmz/Ursp5oP
&lt;br&gt;+Uv8idmLI8+yRGPICZlECYgaTZ96XRhMCySWu9Gs+arNKXdZq6XPTkeAjCqhdYIiP
&lt;br&gt;+Jmu51XRBoVG2/QehbJXqt2za0tx404JKwDojE1NMAlR/Bfa2ZIczuaYQQzj26L8l
&lt;br&gt;+ugcUiEonOLZRNsH1bXgZkwSoINwNkdXbZNo4i/2mRmU7YEj6dg6h4dDM2JpOBYeZ
&lt;br&gt;+SUfOqAHOlzOFYWL6QurNvPByLOEye8kJnrRJ8D2IeilG/QkrN8hBvEUUKulqKL8w
&lt;br&gt;+XOuuz514n8RE5ym4PE4m9YtTELHCamKcYXZ4tdWNsAAd6NtSe/lhc0VNU5yISAQY
&lt;br&gt;+EQIACQUCRqugRgIbDAAKCRDculJDUTyg3HQ5AJ9G86jVI5cR9wKlWuXeqgHv74gu
&lt;br&gt;+zwCYzWvTu68DcikBbCKCeF1p9nEilQ==
&lt;br&gt;+=ndnw
&lt;br&gt;+-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+pub &amp;nbsp; 1024D/8007117F 2007-11-05
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Albert Lee (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8007117F 2007-11-05 &amp;nbsp;Albert Lee (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 2048g/8D910F8A 2007-11-05
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8007117F 2007-11-05 &amp;nbsp;Albert Lee (CODE SIGNING KEY) &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+Version: GnuPG v1.4.7 (MingW32)
&lt;br&gt;+
&lt;br&gt;+mQGiBEcvUloRBADjBd7xVUNVho5vDtchE7mx1dmVqao9MAE5tty4yifnuV1ORMvN
&lt;br&gt;+GakfqFmmmvK1bllGNVUVh3oJje9tlUpI3UP7CNLDqV2nO0jFW84XWiaMmjVeV4wm
&lt;br&gt;+Nv8Qk5qyEkBIiea9aAOSyRRK/hkB3nNNl5E1k2OuA2zSAdCqkAQn6wjMwwCghnso
&lt;br&gt;+PJuLKZ9/eW9FD50GraluLTEEAJ80uTJpL1iPy6JGjmRVJ3iwVdSVpK1YZTu3tnTE
&lt;br&gt;++UUfzom4LXeNSXTzGhv1bYmsLgLm1dVZoQow6qY6zJgeLv4CckRrez+V6QbJi1zW
&lt;br&gt;+b/OV5M9Ot/KPyGSExbbpmy+a8+8KHcA9EGLUOrY88HeUzmj1ofYtp83g0TQn462A
&lt;br&gt;+sEbzA/45Zn5rMy8sEDDMr7ga4WrDETGnJHz04U9lE07IE/5xdZ32gMjqbWEnDHFM
&lt;br&gt;+W4dl90RoKrk349VtdA0Aq2HePASI5or2JeP6Yicg6/yRM7Q14J/x471u3+hFksuK
&lt;br&gt;+E5bHsm6P4zyKrpCBumTA/w+om62msoeybLuzcwxJlsdmyqElnbQ0QWxiZXJ0IExl
&lt;br&gt;+ZSAoQ09ERSBTSUdOSU5HIEtFWSkgPGFsbGVlODI4NUBhcGFjaGUub3JnPohgBBMR
&lt;br&gt;+AgAgBQJHL1JaAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQCoEHqYAHEX+H
&lt;br&gt;+eACeLGSeb5ih11wEVXg40SV+hM30iusAni9YN3uP9+DldOwQ5ke5qr8Y4nsPuQIN
&lt;br&gt;+BEcvUloQCAD4YSzc7rp1i3Phox3fV9rT5NTbGtcbVVPB36Jkpqz7LXcRbFnLcc1z
&lt;br&gt;+PVqO4g2Mr9DaVSjTJLm3I9RFM3uGs4hutvbm5XRww6U89Vs3Dw6plzQ2vTSRLkFT
&lt;br&gt;+1UQdo8r8jbWWWbg7gzgWLxvKeCEoJUVW7/MiDqGM94XyCB3G35vCts4i4Y7HaeGM
&lt;br&gt;+0wB0lJTxidLiEfXo5E5RJInNHuB77FsxTzdy53sDWAoPzRIMLGIcvF2yqYpr0mu/
&lt;br&gt;+/y0Miri6AGckEWvFuQuCbLWUdt45ARBVjUZr6A4L+TPbZnkA9envBZFIp0O8t6LC
&lt;br&gt;+GkrzmdzvUNw8sKDO+CKaomdskXFHzL97AAMFCADA1UroWd2hp28o30a+YUuPZJN4
&lt;br&gt;+2q+9C1hIwfmXutuHzI41UKErrTgd67J02fFLN63bxwkcou9/xO+XxMWpKJjZW+cH
&lt;br&gt;+1pfC9r2mClleNE3O+5q3VGoLzTmlstVt/3ufrxv5wrZtbSgUVQ401BlfWQy3McmQ
&lt;br&gt;+dCY//95ALG2exmFuMTs3Agsq8CgCNeCUzCawbYZWITrWtraHbuRdboLklbFWNNXC
&lt;br&gt;+An25ce3fK7DXTydZhUO3mDK9oT0hbUS19qs6nFv0bwtH0elebXJbbWUnuUtNyNit
&lt;br&gt;+SBB/5fRfAWISeDdRk32n9QkkATqnEBtS5dH0HgoEMCC7P5aSM3kPZoFj5X+siEkE
&lt;br&gt;+GBECAAkFAkcvUloCGwwACgkQCoEHqYAHEX9y3wCdHN7Zfm6G2dTAwpivV1epOWaV
&lt;br&gt;+5CQAn1YB0pFmtxGhR8aZ5Bi3Kkxa9m75
&lt;br&gt;+=Z9If
&lt;br&gt;+-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+pub &amp;nbsp; 1024D/9F523401 2007-06-12
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;Key fingerprint = 677C FCD1 9C6F 64F9 4DD5 &amp;nbsp;D33B CBDC B208 9F52 3401
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 2048g/CCF1AD51 2007-06-12
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+pub &amp;nbsp; 1024D/9F523401 2007-06-12
&lt;br&gt;+uid &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sig 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+sub &amp;nbsp; 2048g/CCF1AD51 2007-06-12
&lt;br&gt;+sig &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;9F523401 2007-06-12 &amp;nbsp;Donald Woods &amp;lt;&lt;a href=&quot;http://n2.nabble.com/user/SendEmail.jtp?type=node&amp;node=4019520&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;[hidden email]&lt;/a&gt;&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+-----BEGIN PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+Version: GnuPG v1.4.2 (GNU/Linux)
&lt;br&gt;+
&lt;br&gt;+mQGiBEZujvERBACXWZuHFBP3vVBD/obpZQcf4/D7JTaRUkH/YkT9pP+zuyATPcU/
&lt;br&gt;+HYbr8WFOI57HQHXIyC6qfjLWLmKJklGUjIaAGxLo7/V97kPLvPIkWMm/Hl1MFoNT
&lt;br&gt;+lK2w+eyMUNdh67Bb94x0wonAFkjgfcSeiJu2Om4W3eGbbVCdsgLZGzAalwCghxzl
&lt;br&gt;+In2wGCpWFnv1ZQH3WgQ7m78D/junhFjfasBRBbzd7CKa2fqrf3sje4VQV9Q+ds5W
&lt;br&gt;+IDT8nn7PeN8NRDqqWKvw6Ob86hrPU03MEuRTg9A/+QDk9BWZTuyrps5lQWd6aQ9Z
&lt;br&gt;+AEQGnp/1wsIeBqdxYLn9pMw6aMCAGswM37XcFqZXdFKaQaof/Te0NQ5yyzQZ62gy
&lt;br&gt;+sXLoA/wM8v/b1SPL4QlitOe3FRTaZa4/DuFUtYVcP2LvIJeHGpNDgpLrNpVvxy0C
&lt;br&gt;+w/OXgJhuyDa4qbQ/8Hx0+D7RHYULCflvHCmwg4y0GHq6DO1LrOmpAA6G/kVUHISv
&lt;br&gt;+4C8v06yT+kxI7Z2aKgotylquM7571i+m8+0RvyjwRUBCqFs8FrQgRG9uYWxkIFdv
&lt;br&gt;+b2RzIDxkd29vZHNAYXBhY2hlLm9yZz6IYAQTEQIAIAUCRm6O8QIbAwYLCQgHAwIE
&lt;br&gt;+FQIIAwQWAgMBAh4BAheAAAoJEMvcsgifUjQBy18An3WdDIYa6NlX7Ywn8Pdko+EB
&lt;br&gt;+SU/xAJ47OViBHzoS4enm4wUUqFNLgEWNGLkCDQRGbo9xEAgAuYxPTjdSA/+gUyIS
&lt;br&gt;+Sua3CTo+aXsR6JFQYfrAJOmqW7W/yHKO/0RX6AODkDSDDsYhGuXliQ4k5IWlpbOt
&lt;br&gt;+IVpJNGg0teoNv5zmfRXzgfDfSwVZCVHCU7Mllguh4oAh7+k4EYh9qsXe2cJRgtIr
&lt;br&gt;+DUXdcaqZmlrIId+nuwb0A6285J7/x0JuY+IQokZQIZltV/p2Uu+EoaQgRjcdOj0G
&lt;br&gt;+j/rBWZvgQvBFVOjvLFmxzUTVQPyESJo1KWQaOQDsltcM90LHzPWrB6/5cFPGLwA2
&lt;br&gt;+ZgoUcZ7ZKbmi9vxeXMfVLNgmoRBzu2UbuuZvhMV66oY/5DZcn6jmFsP4M8s/Mvo+
&lt;br&gt;+L+XmnwADBwgAgWfcH5QmmHuqX7wFTFRtajZWjlnV63uNRk66RY0fP0DQKQS2BAjM
&lt;br&gt;+GeFM8QEnjn5+HPftOHKLMs3EJtQH0H+PYSBO4qapLlsIszLp/Kww4+qfcAZZPkjm
&lt;br&gt;+hSQzPBt1j4EaePs7hLMDAdfWOETH2/TZOJQJGx+bZzBL0BMO7KbXBrEKznx68VdE
&lt;br&gt;+nPG/UMNTDiG5j27Iv2eX9c5lg+uvrPm6l0qt8VUKDrF6wXzNe8AEyuV5pBk1A81t
&lt;br&gt;+l6lrLf7ksrh0r5qRN6ezsHgpAhOcU1txeWkrI/TF/2bc5b2wQQBb1rF2cCvVUTCn
&lt;br&gt;+Xu5/hdAOZAPezATJLacb2Ac5SBN9vEvohohJBBgRAgAJBQJGbo9xAhsMAAoJEMvc
&lt;br&gt;+sgifUjQBBcwAn0R4nCTsPSqPFdCUklBIZT2x26g6AJ93cDVwOCKC36lWN9s0+D+x
&lt;br&gt;+i9gx8Q==
&lt;br&gt;+=QdBu
&lt;br&gt;+-----END PGP PUBLIC KEY BLOCK-----
&lt;br&gt;+
&lt;br&gt;&lt;br&gt;Propchange: openjpa/KEYS
&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; svn:eol-style = native
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881352-openjpa-KEYS-tp4019520p4019520.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4015112</id>
	<title>svn commit: r881011 - in /openjpa/trunk: openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java</title>
	<published>2009-11-16T14:23:09Z</published>
	<updated>2009-11-16T14:23:09Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 22:23:09 2009
&lt;br&gt;New Revision: 881011
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=881011&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=881011&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1381: Ignore preapared query if lock mode changes
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java?rev=881011&amp;r1=881010&amp;r2=881011&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java?rev=881011&amp;r1=881010&amp;r2=881011&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java Mon Nov 16 22:23:09 2009
&lt;br&gt;@@ -751,8 +751,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q2 = em.createQuery(jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(QueryLanguages.LANG_PREPARED_SQL, OpenJPAPersistence.cast(q2).getLanguage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockModeType lmode1 = q2.getLockMode();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q2.setLockMode(LockModeType.OPTIMISTIC);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LockModeType lmode2 = q2.getLockMode();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(JPQLParser.LANG_JPQL, OpenJPAPersistence.cast(q2).getLanguage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertFalse(lmode1.equals(lmode2));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Author&amp;gt; authors2 = q2.getResultList();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().rollback();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=881011&amp;r1=881010&amp;r2=881011&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=881011&amp;r1=881010&amp;r2=881011&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java Mon Nov 16 22:23:09 2009
&lt;br&gt;@@ -77,7 +77,6 @@
&lt;br&gt;&amp;nbsp;@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public class QueryImpl&amp;lt;X&amp;gt; implements OpenJPAQuerySPI&amp;lt;X&amp;gt;, Serializable {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final Object[] EMPTY_ARRAY = new Object[0];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage(QueryImpl.class);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	private DelegatingQuery _query;
&lt;br&gt;@@ -86,7 +85,6 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Map&amp;lt;Parameter&amp;lt;?&amp;gt;, Object&amp;gt; _boundParams;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Map&amp;lt;Object, Parameter&amp;lt;?&amp;gt;&amp;gt; _declaredParams;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Class&amp;lt;?&amp;gt; _paramKeyType;
&lt;br&gt;&amp;nbsp;	private String _id;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private transient ReentrantLock _lock = null;
&lt;br&gt;&amp;nbsp;	private final HintHandler _hintHandler;
&lt;br&gt;@@ -377,7 +375,11 @@
&lt;br&gt;&amp;nbsp;	 */
&lt;br&gt;&amp;nbsp;	void assertJPQLOrCriteriaQuery() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String language = getLanguage();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(JPQLParser.LANG_JPQL.equals(language) || CriteriaBuilderImpl.LANG_CRITERIA.equals(language))) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPQLParser.LANG_JPQL.equals(language) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; || QueryLanguages.LANG_PREPARED_SQL.equals(language)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; || CriteriaBuilderImpl.LANG_CRITERIA.equals(language)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalStateException(_loc.get(&amp;quot;not-jpql-or-criteria-query&amp;quot;).getMessage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r881011-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persisa-tp4015112p4015112.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4014947</id>
	<title>svn commit: r880980 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: meta/MappingDefaultsImpl.java schema/NameSet.java</title>
	<published>2009-11-16T13:50:01Z</published>
	<updated>2009-11-16T13:50:01Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 21:49:59 2009
&lt;br&gt;New Revision: 880980
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880980&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880980&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1051
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=880980&amp;r1=880979&amp;r2=880980&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=880980&amp;r1=880979&amp;r2=880980&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java Mon Nov 16 21:49:59 2009
&lt;br&gt;@@ -539,9 +539,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_dsIdName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_dsIdName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -553,7 +551,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = col.getName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_removeHungarianNotation)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = removeHungarianNotation(name);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setName(dict.getValidColumnName(name, table));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String correctedName = dict.getValidColumnName(name, table);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setName(correctedName);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addCorrectedColumnName(correctedName, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -584,9 +584,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (_versName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_versName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateColumns(Discriminator disc, Table table,
&lt;br&gt;@@ -597,9 +595,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_discName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_discName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateJoinColumn(ClassMapping cm, Table local, Table foreign,
&lt;br&gt;@@ -624,11 +620,8 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateColumns(ValueMapping vm, String name, Table table,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean populateOrderColumns(FieldMapping fm, Table table,
&lt;br&gt;@@ -639,9 +632,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_orderName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_orderName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _orderLists &amp;&amp; (JavaTypes.ARRAY == fm.getTypeCode()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| List.class.isAssignableFrom(fm.getType()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -654,9 +645,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_nullIndName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_nullIndName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _addNullInd;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=880980&amp;r1=880979&amp;r2=880980&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=880980&amp;r1=880979&amp;r2=880980&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java Mon Nov 16 21:49:59 2009
&lt;br&gt;@@ -39,17 +39,13 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Set _names = null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;// an additional names Set for checking name duplication
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Set _subNames = null;
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Return true if the given name is in use already.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isNameTaken(String name) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (_names != null &amp;&amp; _names.contains(name.toUpperCase())) ||
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(_subNames != null &amp;&amp; _subNames.contains(name.toUpperCase()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _names != null &amp;&amp; _names.contains(name.toUpperCase());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -81,20 +77,4 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name != null &amp;&amp; _names != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_names.remove(name.toUpperCase());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp;* Attempt to add the given name to the set.
&lt;br&gt;- &amp;nbsp; &amp;nbsp;*
&lt;br&gt;- &amp;nbsp; &amp;nbsp;* @param name the name to add
&lt;br&gt;- &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected void addSubName(String name) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_subNames == null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames = new HashSet();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames.add(name.toUpperCase());
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected void resetSubNames() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames = null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880980-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-meta-MappingDa-tp4014947p4014947.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4014902</id>
	<title>svn commit: r880972 - /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java</title>
	<published>2009-11-16T13:41:55Z</published>
	<updated>2009-11-16T13:41:55Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 21:41:55 2009
&lt;br&gt;New Revision: 880972
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880972&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880972&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1051: Simplify check for uniqueness of column names. Patch contributed by Ravi Palacherla.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880972&amp;r1=880971&amp;r2=880972&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880972&amp;r1=880971&amp;r2=880972&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java Mon Nov 16 21:41:55 2009
&lt;br&gt;@@ -376,6 +376,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return col;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Add a name to this NameSet
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void addCorrectedColumnName(String name, boolean validate) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addName(name, validate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Remove the given column from the table.
&lt;br&gt;@@ -816,15 +823,4 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setColNumber(int colNum) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colNum = colNum;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp;* Add a column to the subNames set to avoid naming conflict.
&lt;br&gt;- &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void addSubColumn(String name) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addSubName(name);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void resetSubColumns() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resetSubNames();
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880972-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-schema-Table-java-tp4014902p4014902.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4014225</id>
	<title>svn commit: r880929 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: meta/MappingDefaultsImpl.java schema/SchemaGroup.java</title>
	<published>2009-11-16T11:45:41Z</published>
	<updated>2009-11-16T11:45:41Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 19:45:40 2009
&lt;br&gt;New Revision: 880929
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880929&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880929&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;TeamCity commits left two files behind
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=880929&amp;r1=880928&amp;r2=880929&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=880929&amp;r1=880928&amp;r2=880929&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java Mon Nov 16 19:45:40 2009
&lt;br&gt;@@ -539,7 +539,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_dsIdName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_dsIdName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -551,9 +553,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = col.getName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_removeHungarianNotation)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = removeHungarianNotation(name);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String correctedName = dict.getValidColumnName(name, table);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setName(correctedName);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addCorrectedColumnName(correctedName, true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setName(dict.getValidColumnName(name, table));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -584,7 +584,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (_versName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_versName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateColumns(Discriminator disc, Table table,
&lt;br&gt;@@ -595,7 +597,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_discName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_discName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateJoinColumn(ClassMapping cm, Table local, Table foreign,
&lt;br&gt;@@ -620,8 +624,11 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateColumns(ValueMapping vm, String name, Table table,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean populateOrderColumns(FieldMapping fm, Table table,
&lt;br&gt;@@ -632,7 +639,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_orderName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_orderName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _orderLists &amp;&amp; (JavaTypes.ARRAY == fm.getTypeCode()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| List.class.isAssignableFrom(fm.getType()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -645,7 +654,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_nullIndName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_nullIndName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _addNullInd;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java?rev=880929&amp;r1=880928&amp;r2=880929&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java?rev=880929&amp;r1=880928&amp;r2=880929&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java Mon Nov 16 19:45:40 2009
&lt;br&gt;@@ -144,7 +144,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tab.importIndex(idxs[j]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unqs = tables[i].getUniques();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int j = 0; j &amp;lt; unqs.length; j++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tab.importUnique(unqs[j], null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tab.importUnique(unqs[j]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return copy;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880929-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-meta-MappingDa-tp4014225p4014225.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4014160</id>
	<title>svn commit: r880922 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ openjpa-jdbc/src/main/java/org/apach...</title>
	<published>2009-11-16T11:34:13Z</published>
	<updated>2009-11-16T11:34:13Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 19:34:11 2009
&lt;br&gt;New Revision: 880922
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880922&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880922&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1387: Revert unique colum related changes to before 880685 plus other changes after that related to OPENJPA-1051 and OPENJPA-1381.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -260,7 +260,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// importTable() does not import unique constraints
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Unique[] uniques = _pkColumn.getTable().getUniques();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Unique u : uniques) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	copy.importUnique(u, _conf.getDBDictionaryInstance());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	copy.importUnique(u);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// we need to reset the table name in the column with the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// fully qualified name for matching the table name from the
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -46,7 +46,6 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.SchemaSerializer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.SchemaTool;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Table;
&lt;br&gt;-import org.apache.openjpa.jdbc.schema.Unique;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.XMLSchemaSerializer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.Seq;
&lt;br&gt;@@ -754,7 +753,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Schema[] schemas = _schema.getSchemas();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Table[] tables;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Unique[] unqs;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; schemas.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tables = schemas[i].getTables();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int j = 0; j &amp;lt; tables.length; j++) {
&lt;br&gt;@@ -763,17 +761,8 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tables[j].getPrimaryKey().setLogical(false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols = tables[j].getPrimaryKey().getColumns();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0; k &amp;lt; cols.length; k++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0; k &amp;lt; cols.length; k++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[k].setNotNull(true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unqs = tables[j].getUniques();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!_dict.supportsNullUniqueConlumn) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Unique u : unqs) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Column c : u.getColumns()) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.setNotNull(true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -24,7 +24,6 @@
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @author Abe White
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public abstract class Constraint
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends ReferenceCounter {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -181,6 +180,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public String toString() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getName() != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getName();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;&amp;lt;&amp;quot; + getClass().getSimpleName().toLowerCase() + &amp;quot;&amp;gt;&amp;quot;;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = getClass().getName();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = name.substring(name.lastIndexOf('.') + 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;&amp;lt;&amp;quot; + name.toLowerCase() + &amp;quot;&amp;gt;&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -21,6 +21,7 @@
&lt;br&gt;&amp;nbsp;import java.util.ArrayList;
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import org.apache.commons.lang.ObjectUtils;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Localizer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.util.InvalidStateException;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -31,13 +32,13 @@
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @author Abe White
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public abstract class LocalConstraint
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends Constraint {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage(LocalConstraint.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(LocalConstraint.class);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private List&amp;lt;Column&amp;gt; _colList = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private List _colList = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Column[] _cols = null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -98,7 +99,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col == null ? null : getTable()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_colList == null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colList = new ArrayList&amp;lt;Column&amp;gt;(3);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colList = new ArrayList(3);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_colList.contains(col))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -123,7 +124,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Return true if this constraint includes the given column.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Return true if the pk includes the given column.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean containsColumn(Column col) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (col == null || _colList == null)
&lt;br&gt;@@ -132,7 +133,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Reference all columns in this constraint.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Ref all columns in this constraint.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void refColumns() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols = getColumns();
&lt;br&gt;@@ -141,7 +142,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Dereference all columns in this constraint.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Deref all columns in this constraint.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void derefColumns() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols = getColumns();
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -39,13 +39,17 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Set _names = null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;// an additional names Set for checking name duplication
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private Set _subNames = null;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Return true if the given name is in use already.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isNameTaken(String name) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _names != null &amp;&amp; _names.contains(name.toUpperCase());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (_names != null &amp;&amp; _names.contains(name.toUpperCase())) ||
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(_subNames != null &amp;&amp; _subNames.contains(name.toUpperCase()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -77,4 +81,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name != null &amp;&amp; _names != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_names.remove(name.toUpperCase());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;* Attempt to add the given name to the set.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;*
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;* @param name the name to add
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected void addSubName(String name) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_subNames == null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames = new HashSet();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames.add(name.toUpperCase());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;protected void resetSubNames() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -590,7 +590,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dbTable == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0; k &amp;lt; uniques.length; k++) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbTable.importUnique(uniques[k], _dict);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbTable.importUnique(uniques[k]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -957,11 +957,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean createTable(Table table)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws SQLException {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try { &amp;nbsp; 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return executeSQL(_dict.getCreateTableSQL(table));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (SQLException e) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return executeSQL(_dict.getCreateTableSQL(table));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -376,13 +376,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return col;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Add a name to this NameSet
&lt;br&gt;- &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void addCorrectedColumnName(String name, boolean validate) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addName(name, validate);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Remove the given column from the table.
&lt;br&gt;@@ -737,7 +730,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Import a constraint; column names must match columns of this table.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public Unique importUnique(Unique unq, DBDictionary dict) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public Unique importUnique(Unique unq) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (unq == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -747,10 +740,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols = unq.getColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;copy.addColumn(getColumn(cols[i].getName()));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dict != null &amp;&amp; !dict.supportsNullUniqueConlumn) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Column col : copy.getColumns())
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setNotNull(true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return copy;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -827,4 +816,15 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setColNumber(int colNum) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colNum = colNum;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;* Add a column to the subNames set to avoid naming conflict.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void addSubColumn(String name) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addSubName(name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void resetSubColumns() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resetSubNames();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -24,7 +24,6 @@
&lt;br&gt;&amp;nbsp; * @author Abe White
&lt;br&gt;&amp;nbsp; * @author Pinaki Poddar
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;-@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public class Unique
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends LocalConstraint {
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -47,7 +46,26 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Return true if the structure of this constraint matches that of
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Adds the given column. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * The added column is set to non-nullable because a unique constraint
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * on the database requires that its constituent columns are NOT NULL. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * @see Column#setNotNull(boolean)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void addColumn(Column col) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	super.addColumn(col);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;	col.setNotNull(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Set the name of the constraint. This method cannot be called if the
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * constraint already belongs to a table. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void setName(String name) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setName(name);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Return true if the structure of this primary key matches that of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * the given one (same table, same columns).
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean equalsUnique(Unique unq) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -69,8 +69,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// the equivalent &amp;quot;X JOIN Y ON 1 = 1&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;crossJoinClause = &amp;quot;JOIN&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;requiresConditionForCrossJoin = true;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsNullUniqueConlumn = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void indexOf(SQLBuffer buf, FilterValue str, FilterValue find,
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -187,7 +187,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsRestrictDeleteAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsCascadeDeleteAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsNullDeleteAction = true;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public boolean supportsNullUniqueConlumn = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsDefaultDeleteAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsRestrictUpdateAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsCascadeUpdateAction = true;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -751,7 +751,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q2 = em.createQuery(jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(QueryLanguages.LANG_PREPARED_SQL, OpenJPAPersistence.cast(q2).getLanguage());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q2.getLockMode();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q2.setLockMode(LockModeType.OPTIMISTIC);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(JPQLParser.LANG_JPQL, OpenJPAPersistence.cast(q2).getLanguage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Author&amp;gt; authors2 = q2.getResultList();
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=880922&amp;r1=880921&amp;r2=880922&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java Mon Nov 16 19:34:11 2009
&lt;br&gt;@@ -377,12 +377,9 @@
&lt;br&gt;&amp;nbsp;	 */
&lt;br&gt;&amp;nbsp;	void assertJPQLOrCriteriaQuery() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String language = getLanguage();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPQLParser.LANG_JPQL.equals(language) 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; || QueryLanguages.LANG_PREPARED_SQL.equals(language)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; || CriteriaBuilderImpl.LANG_CRITERIA.equals(language)) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(JPQLParser.LANG_JPQL.equals(language) || CriteriaBuilderImpl.LANG_CRITERIA.equals(language))) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalStateException(_loc.get(&amp;quot;not-jpql-or-criteria-query&amp;quot;).getMessage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalStateException(_loc.get(&amp;quot;not-jpql-or-criteria-query&amp;quot;).getMessage());
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	public OpenJPAQuery&amp;lt;X&amp;gt; closeAll() {
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880922-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-kernel-openjp-tp4014160p4014160.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4013748</id>
	<title>svn commit: r880891 - in /openjpa/trunk: openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java</title>
	<published>2009-11-16T10:27:21Z</published>
	<updated>2009-11-16T10:27:21Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 18:27:20 2009
&lt;br&gt;New Revision: 880891
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880891&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880891&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1381: Ignore preapared query if lock mode changes
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java?rev=880891&amp;r1=880890&amp;r2=880891&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java?rev=880891&amp;r1=880890&amp;r2=880891&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/sqlcache/TestPreparedQueryCache.java Mon Nov 16 18:27:20 2009
&lt;br&gt;@@ -751,6 +751,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.getTransaction().begin();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query q2 = em.createQuery(jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(QueryLanguages.LANG_PREPARED_SQL, OpenJPAPersistence.cast(q2).getLanguage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q2.getLockMode();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q2.setLockMode(LockModeType.OPTIMISTIC);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(JPQLParser.LANG_JPQL, OpenJPAPersistence.cast(q2).getLanguage());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Author&amp;gt; authors2 = q2.getResultList();
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=880891&amp;r1=880890&amp;r2=880891&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=880891&amp;r1=880890&amp;r2=880891&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java Mon Nov 16 18:27:20 2009
&lt;br&gt;@@ -377,9 +377,12 @@
&lt;br&gt;&amp;nbsp;	 */
&lt;br&gt;&amp;nbsp;	void assertJPQLOrCriteriaQuery() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String language = getLanguage();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!(JPQLParser.LANG_JPQL.equals(language) || CriteriaBuilderImpl.LANG_CRITERIA.equals(language))) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalStateException(_loc.get(&amp;quot;not-jpql-or-criteria-query&amp;quot;).getMessage());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (JPQLParser.LANG_JPQL.equals(language) 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; || QueryLanguages.LANG_PREPARED_SQL.equals(language)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; || CriteriaBuilderImpl.LANG_CRITERIA.equals(language)) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalStateException(_loc.get(&amp;quot;not-jpql-or-criteria-query&amp;quot;).getMessage());
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	public OpenJPAQuery&amp;lt;X&amp;gt; closeAll() {
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880891-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persisa-tp4013748p4013748.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4013403</id>
	<title>svn commit: r880868 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema: SchemaGroup.java SchemaTool.java</title>
	<published>2009-11-16T09:38:16Z</published>
	<updated>2009-11-16T09:38:16Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 17:38:16 2009
&lt;br&gt;New Revision: 880868
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880868&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880868&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1387: Remove non-nullable constraint from Unique column.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java?rev=880868&amp;r1=880867&amp;r2=880868&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java?rev=880868&amp;r1=880867&amp;r2=880868&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaGroup.java Mon Nov 16 17:38:16 2009
&lt;br&gt;@@ -144,7 +144,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tab.importIndex(idxs[j]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unqs = tables[i].getUniques();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int j = 0; j &amp;lt; unqs.length; j++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tab.importUnique(unqs[j]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tab.importUnique(unqs[j], null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return copy;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java?rev=880868&amp;r1=880867&amp;r2=880868&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java?rev=880868&amp;r1=880867&amp;r2=880868&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java Mon Nov 16 17:38:16 2009
&lt;br&gt;@@ -590,7 +590,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dbTable == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0; k &amp;lt; uniques.length; k++) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbTable.importUnique(uniques[k]);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbTable.importUnique(uniques[k], _dict);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -957,7 +957,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean createTable(Table table)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws SQLException {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return executeSQL(_dict.getCreateTableSQL(table));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try { &amp;nbsp; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return executeSQL(_dict.getCreateTableSQL(table));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (SQLException e) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880868-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-schema-Schemaa-tp4013403p4013403.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4013369</id>
	<title>svn commit: r880865 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: kernel/TableJDBCSeq.java schema/Table.java</title>
	<published>2009-11-16T09:32:21Z</published>
	<updated>2009-11-16T09:32:21Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 17:32:21 2009
&lt;br&gt;New Revision: 880865
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880865&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880865&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1387: Remove non-nullable constraint from Unique column.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java?rev=880865&amp;r1=880864&amp;r2=880865&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java?rev=880865&amp;r1=880864&amp;r2=880865&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java Mon Nov 16 17:32:21 2009
&lt;br&gt;@@ -260,7 +260,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// importTable() does not import unique constraints
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Unique[] uniques = _pkColumn.getTable().getUniques();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Unique u : uniques) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	copy.importUnique(u);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;	copy.importUnique(u, _conf.getDBDictionaryInstance());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// we need to reset the table name in the column with the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// fully qualified name for matching the table name from the
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880865&amp;r1=880864&amp;r2=880865&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880865&amp;r1=880864&amp;r2=880865&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java Mon Nov 16 17:32:21 2009
&lt;br&gt;@@ -737,7 +737,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Import a constraint; column names must match columns of this table.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public Unique importUnique(Unique unq) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public Unique importUnique(Unique unq, DBDictionary dict) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (unq == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -747,6 +747,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols = unq.getColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;copy.addColumn(getColumn(cols[i].getName()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (dict != null &amp;&amp; !dict.supportsNullUniqueConlumn) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Column col : copy.getColumns())
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setNotNull(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return copy;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880865-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-kernel-TableJa-tp4013369p4013369.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4012985</id>
	<title>svn commit: r880834 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: meta/MappingTool.java sql/AbstractDB2Dictionary.java sql/DBDictionary.java</title>
	<published>2009-11-16T08:29:18Z</published>
	<updated>2009-11-16T08:29:18Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 16:29:18 2009
&lt;br&gt;New Revision: 880834
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880834&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880834&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1387: Remove non-nullable constraint from Unique column.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java?rev=880834&amp;r1=880833&amp;r2=880834&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java?rev=880834&amp;r1=880833&amp;r2=880834&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java Mon Nov 16 16:29:18 2009
&lt;br&gt;@@ -46,6 +46,7 @@
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.SchemaSerializer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.SchemaTool;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.Table;
&lt;br&gt;+import org.apache.openjpa.jdbc.schema.Unique;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.schema.XMLSchemaSerializer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.jdbc.sql.DBDictionary;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.Seq;
&lt;br&gt;@@ -753,6 +754,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Schema[] schemas = _schema.getSchemas();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Table[] tables;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Unique[] unqs;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; schemas.length; i++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tables = schemas[i].getTables();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int j = 0; j &amp;lt; tables.length; j++) {
&lt;br&gt;@@ -761,8 +763,17 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tables[j].getPrimaryKey().setLogical(false);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols = tables[j].getPrimaryKey().getColumns();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0; k &amp;lt; cols.length; k++)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0; k &amp;lt; cols.length; k++) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[k].setNotNull(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unqs = tables[j].getUniques();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!_dict.supportsNullUniqueConlumn) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Unique u : unqs) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (Column c : u.getColumns()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.setNotNull(true);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java?rev=880834&amp;r1=880833&amp;r2=880834&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java?rev=880834&amp;r1=880833&amp;r2=880834&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java Mon Nov 16 16:29:18 2009
&lt;br&gt;@@ -69,6 +69,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// the equivalent &amp;quot;X JOIN Y ON 1 = 1&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;crossJoinClause = &amp;quot;JOIN&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;requiresConditionForCrossJoin = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;supportsNullUniqueConlumn = false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void indexOf(SQLBuffer buf, FilterValue str, FilterValue find,
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=880834&amp;r1=880833&amp;r2=880834&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=880834&amp;r1=880833&amp;r2=880834&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Mon Nov 16 16:29:18 2009
&lt;br&gt;@@ -187,6 +187,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsRestrictDeleteAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsCascadeDeleteAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsNullDeleteAction = true;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public boolean supportsNullUniqueConlumn = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsDefaultDeleteAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsRestrictUpdateAction = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean supportsCascadeUpdateAction = true;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880834-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-meta-MappingTa-tp4012985p4012985.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4012811</id>
	<title>svn commit: r880821 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: meta/MappingDefaultsImpl.java schema/NameSet.java</title>
	<published>2009-11-16T07:58:24Z</published>
	<updated>2009-11-16T07:58:24Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 15:58:24 2009
&lt;br&gt;New Revision: 880821
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880821&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880821&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1051: Simplify check for uniqueness of column names. Patch contributed by Ravi Palacherla.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=880821&amp;r1=880820&amp;r2=880821&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=880821&amp;r1=880820&amp;r2=880821&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java Mon Nov 16 15:58:24 2009
&lt;br&gt;@@ -539,9 +539,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_dsIdName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_dsIdName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -553,7 +551,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = col.getName();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_removeHungarianNotation)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = removeHungarianNotation(name);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setName(dict.getValidColumnName(name, table));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String correctedName = dict.getValidColumnName(name, table);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col.setName(correctedName);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addCorrectedColumnName(correctedName, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -584,9 +584,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else if (_versName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_versName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateColumns(Discriminator disc, Table table,
&lt;br&gt;@@ -597,9 +595,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_discName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_discName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateJoinColumn(ClassMapping cm, Table local, Table foreign,
&lt;br&gt;@@ -624,11 +620,8 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void populateColumns(ValueMapping vm, String name, Table table,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; cols.length; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean populateOrderColumns(FieldMapping fm, Table table,
&lt;br&gt;@@ -639,9 +632,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_orderName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_orderName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _orderLists &amp;&amp; (JavaTypes.ARRAY == fm.getTypeCode()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|| List.class.isAssignableFrom(fm.getType()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;@@ -654,9 +645,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_nullIndName != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cols[i].setName(_nullIndName + i);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;correctName(table, cols[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.addSubColumn(cols[i].getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;table.resetSubColumns();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _addNullInd;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=880821&amp;r1=880820&amp;r2=880821&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=880821&amp;r1=880820&amp;r2=880821&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java Mon Nov 16 15:58:24 2009
&lt;br&gt;@@ -39,17 +39,13 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Set _names = null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;// an additional names Set for checking name duplication
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private Set _subNames = null;
&lt;br&gt;-
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Return true if the given name is in use already.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean isNameTaken(String name) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name == null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return (_names != null &amp;&amp; _names.contains(name.toUpperCase())) ||
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(_subNames != null &amp;&amp; _subNames.contains(name.toUpperCase()));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _names != null &amp;&amp; _names.contains(name.toUpperCase());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -81,20 +77,4 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (name != null &amp;&amp; _names != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_names.remove(name.toUpperCase());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp;* Attempt to add the given name to the set.
&lt;br&gt;- &amp;nbsp; &amp;nbsp;*
&lt;br&gt;- &amp;nbsp; &amp;nbsp;* @param name the name to add
&lt;br&gt;- &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected void addSubName(String name) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_subNames == null) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames = new HashSet();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames.add(name.toUpperCase());
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;protected void resetSubNames() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_subNames = null;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880821-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-meta-MappingDa-tp4012811p4012811.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4011047</id>
	<title>svn commit: r880689 - /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java</title>
	<published>2009-11-16T01:33:34Z</published>
	<updated>2009-11-16T01:33:34Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 09:33:29 2009
&lt;br&gt;New Revision: 880689
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880689&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880689&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1051: Simplify check for uniqueness of column names. Patch contributed by Ravi Palacherla.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880689&amp;r1=880688&amp;r2=880689&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=880689&amp;r1=880688&amp;r2=880689&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java Mon Nov 16 09:33:29 2009
&lt;br&gt;@@ -376,6 +376,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return col;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Add a name to this NameSet
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void addCorrectedColumnName(String name, boolean validate) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addName(name, validate);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Remove the given column from the table.
&lt;br&gt;@@ -816,15 +823,4 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void setColNumber(int colNum) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colNum = colNum;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp;* Add a column to the subNames set to avoid naming conflict.
&lt;br&gt;- &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void addSubColumn(String name) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addSubName(name);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void resetSubColumns() {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resetSubNames();
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880689-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-schema-Table-java-tp4011047p4011047.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4010995</id>
	<title>svn commit: r880686 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema: Constraint.java LocalConstraint.java Unique.java</title>
	<published>2009-11-16T01:19:31Z</published>
	<updated>2009-11-16T01:19:31Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Mon Nov 16 09:19:24 2009
&lt;br&gt;New Revision: 880686
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=880686&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=880686&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;OPENJPA-1387: Remove non-nullable constraint from Unique column.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java?rev=880686&amp;r1=880685&amp;r2=880686&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java?rev=880686&amp;r1=880685&amp;r2=880686&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Constraint.java Mon Nov 16 09:19:24 2009
&lt;br&gt;@@ -24,6 +24,7 @@
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @author Abe White
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;+@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public abstract class Constraint
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends ReferenceCounter {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -180,9 +181,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public String toString() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (getName() != null)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return getName();
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String name = getClass().getName();
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = name.substring(name.lastIndexOf('.') + 1);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;&amp;lt;&amp;quot; + name.toLowerCase() + &amp;quot;&amp;gt;&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &amp;quot;&amp;lt;&amp;quot; + getClass().getSimpleName().toLowerCase() + &amp;quot;&amp;gt;&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java?rev=880686&amp;r1=880685&amp;r2=880686&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java?rev=880686&amp;r1=880685&amp;r2=880686&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LocalConstraint.java Mon Nov 16 09:19:24 2009
&lt;br&gt;@@ -21,7 +21,6 @@
&lt;br&gt;&amp;nbsp;import java.util.ArrayList;
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-import org.apache.commons.lang.ObjectUtils;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.lib.util.Localizer;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.util.InvalidStateException;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -32,13 +31,13 @@
&lt;br&gt;&amp;nbsp; *
&lt;br&gt;&amp;nbsp; * @author Abe White
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;+@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public abstract class LocalConstraint
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends Constraint {
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(LocalConstraint.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private static final Localizer _loc = Localizer.forPackage(LocalConstraint.class);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;private List _colList = null;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;private List&amp;lt;Column&amp;gt; _colList = null;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private Column[] _cols = null;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -99,7 +98,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;col == null ? null : getTable()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_colList == null)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colList = new ArrayList(3);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_colList = new ArrayList&amp;lt;Column&amp;gt;(3);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (_colList.contains(col))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -124,7 +123,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Return true if the pk includes the given column.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Return true if this constraint includes the given column.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean containsColumn(Column col) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (col == null || _colList == null)
&lt;br&gt;@@ -133,7 +132,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Ref all columns in this constraint.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Reference all columns in this constraint.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void refColumns() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols = getColumns();
&lt;br&gt;@@ -142,7 +141,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Deref all columns in this constraint.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Dereference all columns in this constraint.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void derefColumns() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Column[] cols = getColumns();
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java?rev=880686&amp;r1=880685&amp;r2=880686&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java?rev=880686&amp;r1=880685&amp;r2=880686&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Unique.java Mon Nov 16 09:19:24 2009
&lt;br&gt;@@ -24,6 +24,7 @@
&lt;br&gt;&amp;nbsp; * @author Abe White
&lt;br&gt;&amp;nbsp; * @author Pinaki Poddar
&lt;br&gt;&amp;nbsp; */
&lt;br&gt;+@SuppressWarnings(&amp;quot;serial&amp;quot;)
&lt;br&gt;&amp;nbsp;public class Unique
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;extends LocalConstraint {
&lt;br&gt;&amp;nbsp;	
&lt;br&gt;@@ -46,26 +47,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Adds the given column. 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * The added column is set to non-nullable because a unique constraint
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * on the database requires that its constituent columns are NOT NULL. 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * @see Column#setNotNull(boolean)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void addColumn(Column col) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	super.addColumn(col);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;	col.setNotNull(true);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Set the name of the constraint. This method cannot be called if the
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * constraint already belongs to a table. 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;public void setName(String name) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.setName(name);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Return true if the structure of this primary key matches that of
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Return true if the structure of this constraint matches that of
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * the given one (same table, same columns).
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public boolean equalsUnique(Unique unq) {
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r880686-in-openjpa-trunk-openjpa-jdbc-src-main-java-org-apache-openjpa-jdbc-schema-Constra-tp4010995p4010995.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4002055</id>
	<title>svn commit: r836052 - /openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml</title>
	<published>2009-11-13T15:04:53Z</published>
	<updated>2009-11-13T15:04:53Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Fri Nov 13 23:04:53 2009
&lt;br&gt;New Revision: 836052
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=836052&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=836052&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Document MetaModel generator tool usage.
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml?rev=836052&amp;r1=836051&amp;r2=836052&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml?rev=836052&amp;r1=836051&amp;r2=836052&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-project/src/doc/manual/jpa_overview_criteria.xml Fri Nov 13 23:04:53 2009
&lt;br&gt;@@ -169,13 +169,14 @@
&lt;br&gt;&amp;nbsp;This tool is invoked during compilation for JDK6 compiler if OpenJPA and JPA 
&lt;br&gt;&amp;nbsp;libraries are specified in the compiler &amp;lt;code&amp;gt;-processorpath&amp;lt;/code&amp;gt; option.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;programlisting&amp;gt;
&lt;br&gt;- $ javac -processorpath path/to/openjpa-all.jar mypackage/MyEntity.java
&lt;br&gt;+ $ javac -processor org.apache.openjpa.persistence.meta.AnnotationProcessor6 -processorpath path/to/openjpa-all.jar mypackage/MyEntity.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;&amp;nbsp;will generate source code for canonical meta-model class &amp;lt;code&amp;gt;mypackage.MyEntity_.java&amp;lt;/code&amp;gt;.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;para&amp;gt;
&lt;br&gt;-The Annotation Processor recognizes the following options (none of them are mandatory):
&lt;br&gt;+The Annotation Processor recognizes the following options specified in the command-line with &amp;lt;code&amp;gt;-A&amp;lt;/code&amp;gt; 
&lt;br&gt;+(none of them are mandatory):
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;itemizedlist&amp;gt;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;listitem&amp;gt;
&lt;br&gt;&amp;nbsp;			&amp;lt;para&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r836052-openjpa-trunk-openjpa-project-src-doc-manual-jpa-overview-criteria-xml-tp4002055p4002055.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4001831</id>
	<title>svn commit: r836023 - in /openjpa/trunk: openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/ openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/</title>
	<published>2009-11-13T14:18:33Z</published>
	<updated>2009-11-13T14:18:33Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Fri Nov 13 22:18:32 2009
&lt;br&gt;New Revision: 836023
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=836023&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=836023&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Literal value for empty disjunction and conjunction 
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEdit.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaBuilderImpl.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/PredicateImpl.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java Fri Nov 13 22:18:32 2009
&lt;br&gt;@@ -103,51 +103,41 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void assertEquivalence(CriteriaQuery&amp;lt;?&amp;gt; c, String jpql, String expectedSQL) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, null, null, expectedSQL);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
&lt;br&gt;- &amp;nbsp; &amp;nbsp; */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;void assertEquivalence(CriteriaQuery&amp;lt;?&amp;gt; c, String jpql) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.err.println(&amp;quot;JPQL :&amp;quot; + jpql);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.err.println(&amp;quot;CJQL :&amp;quot; + ((CriteriaQueryImpl&amp;lt;?&amp;gt;)c).toCQL());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, null, null, null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(null, c, jpql, null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality. Sets the
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * supplied parameters, if any.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * with the expected SQL.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void assertEquivalence(CriteriaQuery&amp;lt;?&amp;gt; c, String jpql, String[] paramNames, Object[] params) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, paramNames, params, null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertEquivalence(CriteriaQuery&amp;lt;?&amp;gt; c, String jpql, String expectedSQL) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(null, c, jpql, expectedSQL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality. Sets the
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * supplied parameters, if any.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string after decorating with the given decorator,
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * and then compare their respective SQLs for equality.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void assertEquivalence(CriteriaQuery&amp;lt;?&amp;gt; c, String jpql, String[] paramNames, Object[] params,
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expectedSQL) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query cQ = getEntityManager().createQuery(c);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query jQ = getEntityManager().createQuery(jpql);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameters(cQ, paramNames, params);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameters(jQ, paramNames, params);
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, cQ, jQ, expectedSQL);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertEquivalence(QueryDecorator decorator, CriteriaQuery&amp;lt;?&amp;gt; c, String jpql) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(decorator, c, jpql, null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;- &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Executes the given CriteriaQuery and JPQL string and compare their respective SQLs for equality. 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Decorates the query with the given decorator before execution.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * supplied parameters, if any.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; */
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void assertEquivalence(CriteriaQuery&amp;lt;?&amp;gt; c, String jpql, Object[] params) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query jQ = getEntityManager().createQuery(jpql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;void assertEquivalence(QueryDecorator decorator, CriteriaQuery&amp;lt;?&amp;gt; c, String jpql, String expectedSQL) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.err.println(&amp;quot;JPQL:[&amp;quot; + jpql + &amp;quot;]&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.err.println(&amp;quot;CQL :[&amp;quot; + ((OpenJPACriteriaQuery&amp;lt;?&amp;gt;)c).toCQL());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query cQ = getEntityManager().createQuery(c);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameters(cQ, params);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setParameters(jQ, params);
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, cQ, jQ, null);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query jQ = getEntityManager().createQuery(jpql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (decorator != null) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;decorator.decorate(cQ);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;decorator.decorate(jQ);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;executeAndCompareSQL(jpql, cQ, jQ, expectedSQL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;@@ -308,15 +298,6 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void setParameters(Query q, String[] paramNames, Object[] params) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; paramNames != null &amp;&amp; i &amp;lt; paramNames.length; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(paramNames[i], params[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;-
&lt;br&gt;- &amp;nbsp; &amp;nbsp;void setParameters(Query q, Object[] params) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; params != null &amp;&amp; i &amp;lt; params.length; i++)
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(i + 1, params[i]);
&lt;br&gt;- &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Execute the given query and return the generated SQL. If the query execution fail because the generated SQL is
&lt;br&gt;@@ -405,4 +386,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new ArrayList&amp;lt;String&amp;gt;(sqls);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; * Interface to decorate a query such as set parameter or range before execution.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; *
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; */
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public interface QueryDecorator {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void decorate(Query q);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEdit.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEdit.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEdit.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEdit.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEdit.java Fri Nov 13 22:18:32 2009
&lt;br&gt;@@ -198,12 +198,21 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Person&amp;gt; p = c.from(Person.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p1&amp;quot;)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, new String[]{&amp;quot;p1&amp;quot;}, new String[]{&amp;quot;XYZ&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p1&amp;quot;, &amp;quot;XYZ&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Predicate where = c.getRestriction();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.and(where, cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p2&amp;quot;))));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, editedjpql, new String[]{&amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;}, new String[]{&amp;quot;MNO&amp;quot;, &amp;quot;ABC&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p1&amp;quot;, &amp;quot;MNO&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p2&amp;quot;, &amp;quot;ABC&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, editedjpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEditParameterizedPredicateReplaced() {
&lt;br&gt;@@ -215,11 +224,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.and(cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p1&amp;quot;)),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p2&amp;quot;))));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(2,c.getParameters().size());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, new String[]{&amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;}, new String[]{&amp;quot;XYZ&amp;quot;, &amp;quot;ABC&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p1&amp;quot;, &amp;quot;XYZ&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p2&amp;quot;, &amp;quot;ABC&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p3&amp;quot;)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, editedjpql, new String[]{&amp;quot;p3&amp;quot;}, new String[]{&amp;quot;MNO&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p3&amp;quot;, &amp;quot;MNO&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, editedjpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEditParameterizedPredicateRemoved() {
&lt;br&gt;@@ -231,11 +249,20 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.and(cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p1&amp;quot;)),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p2&amp;quot;))));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(2,c.getParameters().size());
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, new String[]{&amp;quot;p1&amp;quot;, &amp;quot;p2&amp;quot;}, new String[]{&amp;quot;XYZ&amp;quot;, &amp;quot;ABC&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p1&amp;quot;, &amp;quot;XYZ&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p2&amp;quot;, &amp;quot;ABC&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.equal(p.get(Person_.name), cb.parameter(String.class, &amp;quot;p1&amp;quot;)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, editedjpql, new String[]{&amp;quot;p1&amp;quot;}, new String[]{&amp;quot;MNO&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;p1&amp;quot;, &amp;quot;MNO&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, editedjpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testSerachWithinResult() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Fri Nov 13 22:18:32 2009
&lt;br&gt;@@ -1374,4 +1374,19 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testEmptyAnd() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Order&amp;gt; c = cb.createQuery(Order.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Order&amp;gt; order = c.from(Order.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.and(cb.not(cb.equal(order.get(Order_.customer).get(Customer_.name), &amp;quot;Robert E. Bissett&amp;quot;)),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.isTrue(cb.conjunction())));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.createQuery(c).getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testEmptyOr() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Order&amp;gt; c = cb.createQuery(Order.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Order&amp;gt; order = c.from(Order.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.where(cb.and(cb.not(cb.equal(order.get(Order_.customer).get(Customer_.name), &amp;quot;Robert E. Bissett&amp;quot;)),
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.isTrue(cb.disjunction())));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;em.createQuery(c).getResultList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaBuilderImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaBuilderImpl.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaBuilderImpl.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaBuilderImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/CriteriaBuilderImpl.java Fri Nov 13 22:18:32 2009
&lt;br&gt;@@ -39,6 +39,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Predicate;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Selection;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Subquery;
&lt;br&gt;+import javax.persistence.criteria.Predicate.BooleanOperator;
&lt;br&gt;&amp;nbsp;import javax.persistence.metamodel.Attribute;
&lt;br&gt;&amp;nbsp;import javax.persistence.metamodel.ManagedType;
&lt;br&gt;&amp;nbsp;import javax.persistence.metamodel.Metamodel;
&lt;br&gt;@@ -328,7 +329,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Predicate isTrue(Expression&amp;lt;Boolean&amp;gt; x) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new Expressions.Equal(x, false);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (x instanceof PredicateImpl) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PredicateImpl predicate = (PredicateImpl)x; 
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (predicate.isEmpty()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return predicate.getOperator() == BooleanOperator.AND ? PredicateImpl.TRUE : PredicateImpl.FALSE;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return new Expressions.Equal(x, true);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public &amp;lt;K, M extends Map&amp;lt;K, ?&amp;gt;&amp;gt; Expression&amp;lt;Set&amp;lt;K&amp;gt;&amp;gt; keys(M map) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/PredicateImpl.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/PredicateImpl.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/PredicateImpl.java?rev=836023&amp;r1=836022&amp;r2=836023&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/PredicateImpl.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/criteria/PredicateImpl.java Fri Nov 13 22:18:32 2009
&lt;br&gt;@@ -26,6 +26,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Predicate;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.kernel.exps.ExpressionFactory;
&lt;br&gt;+import org.apache.openjpa.kernel.exps.Literal;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * Predicate is a expression that evaluates to true or false.
&lt;br&gt;@@ -96,6 +97,10 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public final BooleanOperator getOperator() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _op;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public final boolean isEmpty() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return _exps.isEmpty();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/**
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Is this predicate created by negating another predicate?
&lt;br&gt;@@ -123,6 +128,9 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@Override
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl&amp;lt;?&amp;gt; q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (_exps.isEmpty()) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return factory.newLiteral(_op == BooleanOperator.AND, Literal.TYPE_BOOLEAN);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new AbstractMethodError(this.getClass().getName());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r836023-in-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persis-tp4001831p4001831.html" />
	
</entry>

<entry>
	<id>tag:n2.nabble.com,2006:post-4001075</id>
	<title>svn commit: r835961 - /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/</title>
	<published>2009-11-13T11:29:49Z</published>
	<updated>2009-11-13T11:29:49Z</updated>
	<author>
		<name>Pinaki Poddar</name>
	</author>
	<content type="html">Author: ppoddar
&lt;br&gt;Date: Fri Nov 13 19:29:48 2009
&lt;br&gt;New Revision: 835961
&lt;br&gt;&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc?rev=835961&amp;view=rev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc?rev=835961&amp;view=rev&lt;/a&gt;&lt;br&gt;Log:
&lt;br&gt;Use decorator pattern for Criteria Query tests
&lt;br&gt;&lt;br&gt;Modified:
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestDateStringConversion.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java
&lt;br&gt;&amp;nbsp; &amp;nbsp; openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestDateStringConversion.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestDateStringConversion.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestDateStringConversion.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestDateStringConversion.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestDateStringConversion.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -23,6 +23,7 @@
&lt;br&gt;&amp;nbsp;import java.sql.Timestamp;
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.CriteriaQuery;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Root;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;@@ -103,7 +104,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Date earlier = new Date(now - 1000);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String dateString = createJDBCEscapeString(earlier);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final String dateString = createJDBCEscapeString(earlier);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;select d from Dependent d where d.endDate &amp;gt;= :dateString ORDER BY d.endDate&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Dependent&amp;gt; c = cb.createQuery(Dependent.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Dependent&amp;gt; d = c.from(Dependent.class);
&lt;br&gt;@@ -112,7 +113,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.as(Date.class)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.orderBy(cb.asc(d.get(Dependent_.endDate)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(c, jpql, new String[]{&amp;quot;dateString&amp;quot;}, new Object[]{dateString});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;dateString&amp;quot;, dateString);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, jpql);
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;String createJDBCEscapeString(Object time) {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestEmbeddableCriteria.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -23,6 +23,7 @@
&lt;br&gt;&amp;nbsp;import java.util.Set;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.Parameter;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;&amp;nbsp;import javax.persistence.Tuple;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.CriteriaQuery;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Expression;
&lt;br&gt;@@ -1158,7 +1159,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.multiselect(e, e.get(Embed_Embed_.intVal1), e.get(Embed_Embed_.embed).get(Embed_.intVal2));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;Embed_Embed&amp;gt; param1 = cb.parameter(Embed_Embed.class, &amp;quot;embed2&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.isMember(param1, a.get(EntityA_Coll_Embed_Embed_.embeds)));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;embed2&amp;quot;}, new Object[]{new Embed_Embed()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;embed2&amp;quot;, new Embed_Embed());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@AllowFailure(message=&amp;quot;JPQL parse error&amp;quot;)
&lt;br&gt;@@ -1172,7 +1177,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.multiselect(e, e.get(Embed_Embed_.intVal1), e.get(Embed_Embed_.embed).get(Embed_.intVal2));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;Embed_Embed&amp;gt; param1 = cb.parameter(Embed_Embed.class, &amp;quot;embed2&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.isMember(param1, a.get(EntityA_Coll_Embed_Embed_.embeds)));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;embed2&amp;quot;}, new Object[]{new Embed_Embed()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;embed2&amp;quot;, new Embed_Embed());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;@AllowFailure(message=&amp;quot;JPQL parse error&amp;quot;)
&lt;br&gt;@@ -1186,7 +1196,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.multiselect(e, e.get(Embed_Embed_.intVal1), e.get(Embed_Embed_.embed).get(Embed_.intVal2));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parameter&amp;lt;Embed_Embed&amp;gt; param1 = cb.parameter(Embed_Embed.class);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//q.where(cb.equal(param1, e));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;embed2&amp;quot;}, new Object[]{new Embed_Embed()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;embed2&amp;quot;, new Embed_Embed());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery87() {
&lt;br&gt;@@ -1489,7 +1503,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;String&amp;gt; param1 = cb.parameter(String.class, &amp;quot;image&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(param1, cb.any(sq)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery112() {
&lt;br&gt;@@ -1505,7 +1523,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;String&amp;gt; param1 = cb.parameter(String.class, &amp;quot;image&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(param1, cb.any(sq)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery113() {
&lt;br&gt;@@ -1522,7 +1544,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.where(cb.equal(param1, e.key()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery114() {
&lt;br&gt;@@ -1538,7 +1564,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;String&amp;gt; param1 = cb.parameter(String.class, &amp;quot;image&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(param1, cb.any(sq)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery115() {
&lt;br&gt;@@ -1555,7 +1585,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.where(cb.equal(param1, e.key()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery116() {
&lt;br&gt;@@ -1571,7 +1605,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;String&amp;gt; param1 = cb.parameter(String.class, &amp;quot;image&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(param1, cb.any(sq)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery117() {
&lt;br&gt;@@ -1588,7 +1626,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.where(cb.equal(param1, e.key()));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(i));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;image&amp;quot;}, new String[]{&amp;quot;my photo&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;image&amp;quot;, &amp;quot;my photo&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery118() {
&lt;br&gt;@@ -1621,7 +1663,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.where(cb.equal(d.value().get(VicePresident_.id), 1));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(param1, sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(c));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;division&amp;quot;}, new Object[]{new Division()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;division&amp;quot;, new Division());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery122() {
&lt;br&gt;@@ -1638,7 +1684,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.select(d.key());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(c));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;division&amp;quot;}, new Object[]{new Division()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;division&amp;quot;, new Division());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery123() {
&lt;br&gt;@@ -1655,7 +1705,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.where(cb.equal(d.key(), param1));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(c));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;division&amp;quot;}, new Object[]{new Division()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;division&amp;quot;, new Division());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery124() {
&lt;br&gt;@@ -1672,7 +1726,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.where(cb.equal(d.value().get(VicePresident_.id), 3));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(param1, sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(c));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;division&amp;quot;}, new Object[]{new Division()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;division&amp;quot;, new Division());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery125() {
&lt;br&gt;@@ -1689,7 +1747,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.select(d.key());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(c));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;k&amp;quot;}, new Object[]{new Division()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;k&amp;quot;, new Division());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery126() {
&lt;br&gt;@@ -1706,7 +1768,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sq.select(d.value());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.exists(sq));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.orderBy(cb.asc(c));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;k&amp;quot;}, new Object[]{new Division()});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;k&amp;quot;, new Division());
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testEmbeddableQuery127() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -34,6 +34,9 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.SetJoin;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Subquery;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import org.apache.openjpa.persistence.criteria.AbstractCriteriaTestCase.QueryDecorator;
&lt;br&gt;+import org.apache.openjpa.persistence.embed.Division;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;&amp;nbsp; * Tests type-strict version of Criteria API.
&lt;br&gt;&amp;nbsp; * 
&lt;br&gt;@@ -1499,10 +1502,13 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Predicate p4 = cb.lessThan(d.get(Dependent_.id).get(DependentId_.effDate), maxDate);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.and(cb.and(cb.and(p1, p2), p3), p4));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new String[]{&amp;quot;empid&amp;quot;, &amp;quot;minDate&amp;quot;, &amp;quot;maxDate&amp;quot;}, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Object[]{101L, new Date(100), new Date(100000)});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;empid&amp;quot;, &amp;nbsp; 101L);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;minDate&amp;quot;, new Date(100));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;maxDate&amp;quot;, new Date(100000));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testCorrelatedNestedSubquery1() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestMetaModelTypesafeCriteria.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -22,6 +22,7 @@
&lt;br&gt;&amp;nbsp;import java.util.List;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.Parameter;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;&amp;nbsp;import javax.persistence.Tuple;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.CriteriaQuery;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Expression;
&lt;br&gt;@@ -334,7 +335,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.multiselect(c).where(cb.equal(
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.get(customer_.getSingularAttribute(&amp;quot;status&amp;quot;, Integer.class)), param));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[] { &amp;quot;stat&amp;quot; }, new Object[] { 1 });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;stat&amp;quot;, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testKeyExpressionInSelectList() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestStringCriteria.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -21,6 +21,7 @@
&lt;br&gt;&amp;nbsp;import java.math.BigDecimal;
&lt;br&gt;&amp;nbsp;import java.util.Collection;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;&amp;nbsp;import javax.persistence.Tuple;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.CriteriaQuery;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Expression;
&lt;br&gt;@@ -34,6 +35,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.SetJoin;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Subquery;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import org.apache.openjpa.persistence.criteria.AbstractCriteriaTestCase.QueryDecorator;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.test.AllowFailure;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;public class TestStringCriteria extends CriteriaTest {
&lt;br&gt;@@ -215,7 +217,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;param.alias(&amp;quot;stat&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.select(c).where(cb.equal(c.get(&amp;quot;status&amp;quot;), param));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[] { &amp;quot;stat&amp;quot; }, new Object[] { 1 });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;stat&amp;quot;, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testSelectList() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypeSafeCondExpression.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -37,6 +37,7 @@
&lt;br&gt;&amp;nbsp;package org.apache.openjpa.persistence.criteria;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.Parameter;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;&amp;nbsp;import javax.persistence.Tuple;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.CriteriaQuery;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Expression;
&lt;br&gt;@@ -44,6 +45,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Root;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Subquery;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+import org.apache.openjpa.persistence.criteria.AbstractCriteriaTestCase.QueryDecorator;
&lt;br&gt;&amp;nbsp;import org.apache.openjpa.persistence.test.DatabasePlatform;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;/**
&lt;br&gt;@@ -163,7 +165,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cq.where(cb.like(c.get(CompUser_.name), param, '|'));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cq.select(c.get(CompUser_.name));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(cq, query, new String[]{&amp;quot;name&amp;quot;}, new Object[] {&amp;quot;%|_%&amp;quot;});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;name&amp;quot;, &amp;quot;%|_%&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, cq, query);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testNullExpression() {
&lt;br&gt;@@ -501,8 +507,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cq.where(e.type().in(param1, param2));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cq.orderBy(cb.asc(e.get(CompUser_.name)));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(cq, jpql, new String[]{&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;}, 
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new Class[]{MaleUser.class,FemaleUser.class});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;a&amp;quot;, MaleUser.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;b&amp;quot;, FemaleUser.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, cq, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testTypeExpression2() {
&lt;br&gt;@@ -516,7 +526,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.multiselect(e.type());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(cb.equal(e.type(), param1).not());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, query, new String[]{&amp;quot;t&amp;quot;}, new Class[]{MaleUser.class});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;t&amp;quot;, MaleUser.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, query);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testTypeExpression3() {
&lt;br&gt;&lt;br&gt;Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java
&lt;br&gt;URL: &lt;a href=&quot;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java?rev=835961&amp;r1=835960&amp;r2=835961&amp;view=diff&lt;/a&gt;&lt;br&gt;==============================================================================
&lt;br&gt;--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java (original)
&lt;br&gt;+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestTypesafeCriteria.java Fri Nov 13 19:29:48 2009
&lt;br&gt;@@ -25,6 +25,7 @@
&lt;br&gt;&amp;nbsp;import java.util.Map;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;import javax.persistence.Parameter;
&lt;br&gt;+import javax.persistence.Query;
&lt;br&gt;&amp;nbsp;import javax.persistence.Tuple;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.CriteriaQuery;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Expression;
&lt;br&gt;@@ -33,6 +34,7 @@
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.ListJoin;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.MapJoin;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.ParameterExpression;
&lt;br&gt;+import javax.persistence.criteria.Path;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Root;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.Selection;
&lt;br&gt;&amp;nbsp;import javax.persistence.criteria.SetJoin;
&lt;br&gt;@@ -539,7 +541,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parameter&amp;lt;Integer&amp;gt; param = cb.parameter(Integer.class, &amp;quot;stat&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.select(c).where(cb.equal(c.get(Customer_.status), param));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[] { &amp;quot;stat&amp;quot; }, new Object[] { 1 });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;stat&amp;quot;, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testParameters2() {
&lt;br&gt;@@ -552,8 +558,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.select(c).where(cb.and(cb.equal(c.get(Customer_.status), param1), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.equal(c.get(Customer_.name), param2)));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[] { &amp;quot;stat&amp;quot;, &amp;quot;name&amp;quot; },
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Object[] { 1, &amp;quot;test&amp;quot; });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;stat&amp;quot;, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;name&amp;quot;, &amp;quot;test&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testParameters3() {
&lt;br&gt;@@ -564,7 +574,11 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parameter&amp;lt;Integer&amp;gt; param = cb.parameter(Integer.class, &amp;quot;stat&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.select(c).where(cb.equal(c.get(Customer_.status), param));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;stat&amp;quot;}, new Object[] { 1 });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;stat&amp;quot;, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testParameters4() {
&lt;br&gt;@@ -576,8 +590,12 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Parameter&amp;lt;String&amp;gt; param2 = cb.parameter(String.class, &amp;quot;name&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.select(c).where(cb.and(cb.equal(c.get(Customer_.status), param1), 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cb.equal(c.get(Customer_.name), param2)));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[]{&amp;quot;stat&amp;quot;, &amp;quot;name&amp;quot;},
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new Object[] { 1, &amp;quot;test&amp;quot; });
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;stat&amp;quot;, 1);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;name&amp;quot;, &amp;quot;test&amp;quot;);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testParameters5() {
&lt;br&gt;@@ -588,10 +606,14 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ParameterExpression&amp;lt;List&amp;gt; param1 = cb.parameter(List.class, &amp;quot;coll&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.where(c.get(Customer_.status).in(param1));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.select(c);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List vals = new ArrayList();
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final List vals = new ArrayList();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vals.add(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vals.add(2);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(q, jpql, new String[] {&amp;quot;coll&amp;quot;}, new Object[] {vals});
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setParameter(&amp;quot;coll&amp;quot;, vals);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, q, jpql);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public void testSelectList1() {
&lt;br&gt;@@ -1333,5 +1355,23 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (IllegalArgumentException e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;public void testGroupByOnMaxResult() {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String jpql = &amp;quot;SELECT c.address.country, count(c) from Customer c GROUP BY c.address.country &amp;quot; +
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;HAVING COUNT(c.address.country)&amp;gt;3&amp;quot;;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CriteriaQuery&amp;lt;Object[]&amp;gt; c = cb.createQuery(Object[].class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Root&amp;lt;Customer&amp;gt; customer = c.from(Customer.class);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Path&amp;lt;String&amp;gt; country = customer.get(Customer_.address).get(Address_.country);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.multiselect(country, cb.count(customer))
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .groupBy(country)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .having(cb.gt(cb.count(country), 3));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquivalence(new QueryDecorator(){
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void decorate(Query q) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q.setMaxResults(20);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}, c, jpql);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;signature&quot;&gt;Pinaki &lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://n2.nabble.com/svn-commit-r835961-openjpa-trunk-openjpa-persistence-jdbc-src-test-java-org-apache-openjpa-persisten-tp4001075p4001075.html" />
	
</entry>

</feed>
