Author: porcelli
Date: 2009-04-22 17:20:04 -0400 (Wed, 22 Apr 2009)
New Revision: 16412
Modified:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
Log:
now 2nd pase is using the SelectPathResolutionStrategy
Modified:
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g
===================================================================
---
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22
20:18:51 UTC (rev 16411)
+++
core/branches/antlr3/src/main/antlr3/org/hibernate/sql/ast/phase/hql/resolve/GeneratedHQLResolution.g 2009-04-22
21:20:04 UTC (rev 16412)
@@ -48,59 +48,64 @@
@members{
protected void registerPersisterSpace(CommonTree entityName,
CommonTree alias) {
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected boolean isUnqualifiedPropertyReference() {
- return false;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected Tree normalizeUnqualifiedPropertyReference(CommonTree property) {
- return null;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected boolean isPersisterReferenceAlias() {
- return false;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected PathedPropertyReferenceSource normalizeUnqualifiedRoot( CommonTree
identifier382 ) {
- // TODO Auto-generated method stub
- return null;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected PathedPropertyReferenceSource normalizeQualifiedRoot( CommonTree identifier381
) {
- // TODO Auto-generated method stub
- return null;
+ throw new UnsupportedOperationException( "must be overridden!" );
}
- protected void normalizePropertyPathIntermediary( CommonTree commonTree,
- CommonTree identifier387 ) {
- // TODO Auto-generated method stub
+ protected PathedPropertyReferenceSource normalizePropertyPathIntermediary(
PathedPropertyReferenceSource source, CommonTree propertyName ) {
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizeIntermediateIndexOperation( CommonTree commonTree,
CommonTree commonTree2 ) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizeUnqualifiedPropertyReferenceSource(
CommonTree identifier394 ) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizeTerminalIndexOperation(CommonTree collectionPath, CommonTree
selector) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void normalizePropertyPathTerminus(PathedPropertyReferenceSource source,
CommonTree propertyNameNode) {
- // TODO Auto-generated method stub
+ throw new UnsupportedOperationException( "must be overridden!" );
}
protected void pushFromStrategy( JoinType joinType,
CommonTree assosiationFetchTree, CommonTree propertyFetchTree,
CommonTree alias ) {
+ throw new UnsupportedOperationException( "must be overridden!" );
}
+
+ protected void pushSelectStrategy() {
+ throw new UnsupportedOperationException( "must be overridden!" );
+ }
+
protected void popStrategy(){
+ throw new UnsupportedOperationException( "must be overridden!" );
}
}
@@ -227,6 +232,8 @@
;
selectClause
+@init { if (state.backtracking == 0) pushSelectStrategy(); }
+@after { popStrategy(); }
: ^(SELECT DISTINCT? rootSelectExpression)
;
@@ -336,7 +343,7 @@
| ^(DOT_CLASS path) // crazy
| ^(GENERAL_FUNCTION_CALL path)
| ^(JAVA_CONSTANT path) //It will generate at SQL a parameter element (?) -> 'cos
we do not need to care about char escaping
- | ^(PATH path)
+ | ^(PATH propertyReferencePath)
;
caseExpression
@@ -577,13 +584,13 @@
pathedPropertyReferenceSource returns [PathedPropertyReferenceSource
propertyReferenceSource]
: {(isPersisterReferenceAlias())}?=> IDENTIFIER { $propertyReferenceSource =
normalizeQualifiedRoot( $IDENTIFIER ); }
| {(isUnqualifiedPropertyReference())}?=> IDENTIFIER { $propertyReferenceSource =
normalizeUnqualifiedRoot( $IDENTIFIER ); }
- | intermediatePathedPropertyReference
- | intermediateIndexOperation
+ | intermediatePathedPropertyReference { $propertyReferenceSource =
$intermediatePathedPropertyReference.propertyReferenceSource; }
+ | intermediateIndexOperation { $propertyReferenceSource = null; }
;
-intermediatePathedPropertyReference
- : ^(DOT pathedPropertyReferenceSource IDENTIFIER )
- { normalizePropertyPathIntermediary( $pathedPropertyReferenceSource.tree, $IDENTIFIER
); }
+intermediatePathedPropertyReference returns [PathedPropertyReferenceSource
propertyReferenceSource]
+ : ^(DOT source=pathedPropertyReferenceSource IDENTIFIER )
+ { $propertyReferenceSource = normalizePropertyPathIntermediary(
$pathedPropertyReferenceSource.propertyReferenceSource, $IDENTIFIER ); }
;
intermediateIndexOperation
Modified:
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java
===================================================================
---
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22
20:18:51 UTC (rev 16411)
+++
core/branches/antlr3/src/main/java/org/hibernate/sql/ast/phase/hql/resolve/HQLResolution.java 2009-04-22
21:20:04 UTC (rev 16412)
@@ -36,6 +36,7 @@
import org.hibernate.sql.ast.phase.hql.resolve.path.PathedPropertyReferenceSource;
import
org.hibernate.sql.ast.phase.hql.resolve.path.impl.BasicPathResolutionStrategySupport;
import
org.hibernate.sql.ast.phase.hql.resolve.path.impl.FromClausePathResolutionStrategy;
+import
org.hibernate.sql.ast.phase.hql.resolve.path.impl.SelectClausePathResolutionStrategy;
import org.hibernate.sql.ast.tree.Table;
import org.hibernate.sql.ast.tree.Table.EntityTableSpace;
import org.hibernate.sql.ast.util.TreePrinter;
@@ -134,6 +135,11 @@
.getText() ) );
}
+ protected void pushSelectStrategy() {
+ pathResolutionStrategyStack
+ .push( new SelectClausePathResolutionStrategy( this ) );
+ }
+
protected void popStrategy() {
pathResolutionStrategyStack.pop();
}
@@ -206,11 +212,13 @@
propertyNameNode.getText() );
}
- protected void normalizePropertyPathIntermediary( CommonTree identifier1,
- CommonTree identifier2 ) {
- System.out.println( "normalizePropertyPathIntermediary: "
- + identifier1.getText() + ":" + identifier2.getText() );
- // TODO Auto-generated method stub
+ protected PathedPropertyReferenceSource normalizePropertyPathIntermediary(
+ PathedPropertyReferenceSource source, CommonTree propertyName ) {
+ log.trace( "normalizing intermediate path expression ["
+ + textOrNull( propertyName ) + "]" );
+ return getCurrentPathResolutionStrategy().handleIntermediatePathPart(
+ ( PathedPropertyReferenceSource ) source,
+ propertyName.getText() );
}
protected void normalizeIntermediateIndexOperation( CommonTree identifier1,
Modified:
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java
===================================================================
---
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java 2009-04-22
20:18:51 UTC (rev 16411)
+++
core/branches/antlr3/src/test/java/org/hibernate/sql/ast/phase/hql/resolve/TestHQLResolver.java 2009-04-22
21:20:04 UTC (rev 16412)
@@ -44,7 +44,7 @@
}
public void testBasicSelectStructure() throws Throwable {
- Tree queryTree = normalize( "from Animal as a inner join a.mother" );
+ Tree queryTree = normalize( "select a.id from Animal a" );
}
public Tree normalize( String hql ) throws RecognitionException {
Show replies by date