From 233b8daffba122c03a0c7bc0dfc1c7e25ad76804 Mon Sep 17 00:00:00 2001 From: Nathan Xu Date: Thu, 11 Jun 2020 00:13:44 -0400 Subject: [PATCH] import entity graph parsing test cases --- .../userguide/fetching/GraphParsingTest.java | 2 +- .../grammars/graph/GraphLanguageLexer.g4 | 23 +++++++++++++++---- .../grammars/graph/GraphLanguageParser.g4 | 8 +++---- .../graph/internal/parse/GraphParser.java | 4 ++-- .../model/domain/AbstractManagedType.java | 8 +++---- .../domain/internal/DomainModelHelper.java | 2 +- .../parser}/AbstractEntityGraphTest.java | 7 +++--- .../parser}/EntityGraphParserTest.java | 13 ++++++----- .../entitygraph/parser}/EntityGraphsTest.java | 4 +++- .../parser}/GraphParsingTestEntity.java | 7 +++--- .../parser/GraphParsingTestSubEntity.java} | 8 +++---- 11 files changed, 51 insertions(+), 35 deletions(-) rename hibernate-core/src/test/java/org/hibernate/{graph => orm/test/loading/entitygraph/parser}/AbstractEntityGraphTest.java (96%) rename hibernate-core/src/test/java/org/hibernate/{graph => orm/test/loading/entitygraph/parser}/EntityGraphParserTest.java (97%) rename hibernate-core/src/test/java/org/hibernate/{graph => orm/test/loading/entitygraph/parser}/EntityGraphsTest.java (98%) rename hibernate-core/src/test/java/org/hibernate/{graph => orm/test/loading/entitygraph/parser}/GraphParsingTestEntity.java (94%) rename hibernate-core/src/test/java/org/hibernate/{graph/GraphParsingTestSubentity.java => orm/test/loading/entitygraph/parser/GraphParsingTestSubEntity.java} (54%) diff --git a/documentation/src/test/java/org/hibernate/userguide/fetching/GraphParsingTest.java b/documentation/src/test/java/org/hibernate/userguide/fetching/GraphParsingTest.java index f3ff79f60d..47ca10fdf3 100644 --- a/documentation/src/test/java/org/hibernate/userguide/fetching/GraphParsingTest.java +++ b/documentation/src/test/java/org/hibernate/userguide/fetching/GraphParsingTest.java @@ -16,7 +16,7 @@ import javax.persistence.ManyToOne; import javax.persistence.TypedQuery; import org.hibernate.dialect.H2Dialect; -import org.hibernate.graph.AbstractEntityGraphTest; +import org.hibernate.orm.test.loading.entitygraph.parser.AbstractEntityGraphTest; import org.hibernate.graph.GraphParser; import org.hibernate.graph.EntityGraphs; import org.hibernate.graph.GraphSemantic; diff --git a/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageLexer.g4 b/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageLexer.g4 index 2471bdbbad..c96cb4b040 100644 --- a/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageLexer.g4 +++ b/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageLexer.g4 @@ -39,17 +39,30 @@ RPAREN: ')'; /** * In this grammar, basically any string since we (atm) have no keywords */ -NAME : NAME_START ( NAME_CONTINUATION )*; +ATTR_NAME : ATTR_NAME_START NAME_CONTINUATION*; -fragment NAME_START - : '_' +TYPE_NAME : TYPE_NAME_START NAME_CONTINUATION*; + +fragment NON_ALPHANUM_EXTENTION + : '_' | '$' - | 'a'..'z' // HHH-558 : Allow unicode chars in identifiers //| '\u0080'..'\ufffe' ; +fragment ATTR_NAME_START + : NON_ALPHANUM_EXTENTION + | 'a'..'z' + ; + +fragment TYPE_NAME_START + : NON_ALPHANUM_EXTENTION + | 'A'..'Z' + ; + fragment NAME_CONTINUATION - : NAME_START + : NON_ALPHANUM_EXTENTION + | 'a'..'z' + | 'A'..'Z' | '0'..'9' ; diff --git a/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageParser.g4 b/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageParser.g4 index 63455deca8..b3737f2086 100644 --- a/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageParser.g4 +++ b/hibernate-core/src/main/antlr/org/hibernate/grammars/graph/GraphLanguageParser.g4 @@ -33,15 +33,15 @@ attributeList ; attributeNode - : attributePath (subGraph)? + : attributePath subGraph? ; attributePath - : NAME attributeQualifier? + : ATTR_NAME attributeQualifier? ; attributeQualifier - : DOT NAME + : DOT ATTR_NAME ; subGraph @@ -49,5 +49,5 @@ subGraph ; subType - : NAME + : TYPE_NAME ; diff --git a/hibernate-core/src/main/java/org/hibernate/graph/internal/parse/GraphParser.java b/hibernate-core/src/main/java/org/hibernate/graph/internal/parse/GraphParser.java index f48590f7b0..20c40fedc9 100644 --- a/hibernate-core/src/main/java/org/hibernate/graph/internal/parse/GraphParser.java +++ b/hibernate-core/src/main/java/org/hibernate/graph/internal/parse/GraphParser.java @@ -77,7 +77,7 @@ public class GraphParser extends GraphLanguageParserBaseVisitor { @Override public AttributeNodeImplementor visitAttributeNode(GraphLanguageParser.AttributeNodeContext ctx) { - final String attributeName = ctx.attributePath().NAME().getText(); + final String attributeName = ctx.attributePath().ATTR_NAME().getText(); final SubGraphGenerator subGraphCreator; @@ -93,7 +93,7 @@ public class GraphParser extends GraphLanguageParserBaseVisitor { subGraphCreator = PathQualifierType.VALUE.getSubGraphCreator(); } else { - final String qualifierName = ctx.attributePath().attributeQualifier().NAME().getText(); + final String qualifierName = ctx.attributePath().attributeQualifier().ATTR_NAME().getText(); if ( PARSING_LOGGER.isDebugEnabled() ) { PARSING_LOGGER.debugf( diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/AbstractManagedType.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/AbstractManagedType.java index d7605d608f..90416ad1a8 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/AbstractManagedType.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/AbstractManagedType.java @@ -117,7 +117,7 @@ public abstract class AbstractManagedType @SuppressWarnings("unchecked") public PersistentAttribute getAttribute(String name) { final PersistentAttribute attribute = findAttribute( name ); - checkNotNull( "Attribute ", attribute, name ); + checkNotNull( "Attribute", attribute, name ); return attribute; } @@ -164,7 +164,7 @@ public abstract class AbstractManagedType @SuppressWarnings("unchecked") public PersistentAttribute getDeclaredAttribute(String name) { PersistentAttribute attr = findDeclaredAttribute( name ); - checkNotNull( "Attribute ", attr, name ); + checkNotNull( "Attribute", attr, name ); return attr; } @@ -209,7 +209,7 @@ public abstract class AbstractManagedType @SuppressWarnings("unchecked") public SingularPersistentAttribute getSingularAttribute(String name) { SingularPersistentAttribute attribute = findSingularAttribute( name ); - checkNotNull( "SingularAttribute ", attribute, name ); + checkNotNull( "SingularAttribute", attribute, name ); return attribute; } @@ -235,7 +235,7 @@ public abstract class AbstractManagedType @SuppressWarnings("unchecked") public SingularAttribute getDeclaredSingularAttribute(String name) { final SingularAttribute attr = findDeclaredSingularAttribute( name ); - checkNotNull( "SingularAttribute ", attr, name ); + checkNotNull( "SingularAttribute", attr, name ); return attr; } diff --git a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/DomainModelHelper.java b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/DomainModelHelper.java index 4c34ad7e32..fd90afd749 100644 --- a/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/DomainModelHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/DomainModelHelper.java @@ -29,7 +29,7 @@ public class DomainModelHelper { } // first, try to find it by name directly.. - ManagedDomainType subManagedType = jpaMetamodel.entity( subTypeName ); + ManagedDomainType subManagedType = jpaMetamodel.resolveHqlEntityReference( subTypeName ); if ( subManagedType != null ) { return subManagedType; } diff --git a/hibernate-core/src/test/java/org/hibernate/graph/AbstractEntityGraphTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/AbstractEntityGraphTest.java similarity index 96% rename from hibernate-core/src/test/java/org/hibernate/graph/AbstractEntityGraphTest.java rename to hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/AbstractEntityGraphTest.java index 512b61c422..59e0d5739a 100644 --- a/hibernate-core/src/test/java/org/hibernate/graph/AbstractEntityGraphTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/AbstractEntityGraphTest.java @@ -4,17 +4,17 @@ * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or . */ -package org.hibernate.graph; +package org.hibernate.orm.test.loading.entitygraph.parser; import java.util.Collection; import java.util.List; import java.util.Map; - import javax.persistence.AttributeNode; import javax.persistence.EntityGraph; import javax.persistence.EntityManager; import javax.persistence.Subgraph; +import org.hibernate.graph.GraphParser; import org.hibernate.graph.spi.RootGraphImplementor; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; @@ -28,7 +28,7 @@ public abstract class AbstractEntityGraphTest extends BaseEntityManagerFunctiona @Override protected Class[] getAnnotatedClasses() { - return new Class[]{ GraphParsingTestEntity.class, GraphParsingTestSubentity.class }; + return new Class[]{ GraphParsingTestEntity.class, GraphParsingTestSubEntity.class }; } protected RootGraphImplementor parseGraph(Class entityType, String graphString) { @@ -104,3 +104,4 @@ public abstract class AbstractEntityGraphTest extends BaseEntityManagerFunctiona } } + diff --git a/hibernate-core/src/test/java/org/hibernate/graph/EntityGraphParserTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/EntityGraphParserTest.java similarity index 97% rename from hibernate-core/src/test/java/org/hibernate/graph/EntityGraphParserTest.java rename to hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/EntityGraphParserTest.java index 5f8792d4d7..7cbbeaa86e 100644 --- a/hibernate-core/src/test/java/org/hibernate/graph/EntityGraphParserTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/EntityGraphParserTest.java @@ -4,7 +4,7 @@ * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or . */ -package org.hibernate.graph; +package org.hibernate.orm.test.loading.entitygraph.parser; import java.util.List; import java.util.Map; @@ -15,6 +15,7 @@ import javax.persistence.EntityManager; import javax.persistence.Subgraph; import org.hibernate.engine.spi.SessionImplementor; +import org.hibernate.graph.GraphParser; import org.hibernate.graph.spi.AttributeNodeImplementor; import org.hibernate.graph.spi.RootGraphImplementor; import org.hibernate.graph.spi.SubGraphImplementor; @@ -191,7 +192,7 @@ public class EntityGraphParserTest extends AbstractEntityGraphTest { // // return type.isAssignableFrom( entityPersister.getMappedClass() ); - RootGraphImplementor graph = parseGraph( "linkToOne(name, description), linkToOne(GraphParsingTestSubentity: sub)" ); + RootGraphImplementor graph = parseGraph( "linkToOne(name, description), linkToOne(GraphParsingTestSubEntity: sub)" ); assertNotNull( graph ); List> attrs = graph.getAttributeNodeImplementors(); @@ -204,7 +205,7 @@ public class EntityGraphParserTest extends AbstractEntityGraphTest { assertNullOrEmpty( linkToOneNode.getKeySubgraphs() ); - final SubGraphImplementor subGraph = linkToOneNode.getSubGraphMap().get( GraphParsingTestSubentity.class ); + final SubGraphImplementor subGraph = linkToOneNode.getSubGraphMap().get( GraphParsingTestSubEntity.class ); assertNotNull( subGraph ); assertBasicAttributes( subGraph, "sub" ); @@ -215,12 +216,12 @@ public class EntityGraphParserTest extends AbstractEntityGraphTest { EntityManager entityManager = getOrCreateEntityManager(); RootGraphImplementor graph = ( (SessionImplementor) entityManager ).createEntityGraph( GraphParsingTestEntity.class ); - final SubGraphImplementor subGraph = graph.addSubGraph( + final SubGraphImplementor subGraph = graph.addSubGraph( "linkToOne", - GraphParsingTestSubentity.class + GraphParsingTestSubEntity.class ); - assertEquals( subGraph.getGraphedType().getJavaType(), GraphParsingTestSubentity.class ); + assertEquals( subGraph.getGraphedType().getJavaType(), GraphParsingTestSubEntity.class ); final AttributeNodeImplementor subTypeAttrNode = subGraph.addAttributeNode( "sub" ); assert subTypeAttrNode != null; diff --git a/hibernate-core/src/test/java/org/hibernate/graph/EntityGraphsTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/EntityGraphsTest.java similarity index 98% rename from hibernate-core/src/test/java/org/hibernate/graph/EntityGraphsTest.java rename to hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/EntityGraphsTest.java index 8556c0b704..26a0a75544 100644 --- a/hibernate-core/src/test/java/org/hibernate/graph/EntityGraphsTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/EntityGraphsTest.java @@ -4,11 +4,13 @@ * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or . */ -package org.hibernate.graph; +package org.hibernate.orm.test.loading.entitygraph.parser; import javax.persistence.EntityGraph; import javax.persistence.EntityManager; +import org.hibernate.graph.EntityGraphs; + import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; diff --git a/hibernate-core/src/test/java/org/hibernate/graph/GraphParsingTestEntity.java b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/GraphParsingTestEntity.java similarity index 94% rename from hibernate-core/src/test/java/org/hibernate/graph/GraphParsingTestEntity.java rename to hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/GraphParsingTestEntity.java index 02e7f5f9f3..0802573bc4 100644 --- a/hibernate-core/src/test/java/org/hibernate/graph/GraphParsingTestEntity.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/GraphParsingTestEntity.java @@ -1,7 +1,6 @@ -package org.hibernate.graph; +package org.hibernate.orm.test.loading.entitygraph.parser; import java.util.Map; - import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.ElementCollection; @@ -11,7 +10,7 @@ import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; -@Entity +@Entity( name = "GraphParsingTestEntity" ) public class GraphParsingTestEntity { private String id; @@ -79,4 +78,4 @@ public class GraphParsingTestEntity { public void setDescription(String description) { this.description = description; } -} \ No newline at end of file +} diff --git a/hibernate-core/src/test/java/org/hibernate/graph/GraphParsingTestSubentity.java b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/GraphParsingTestSubEntity.java similarity index 54% rename from hibernate-core/src/test/java/org/hibernate/graph/GraphParsingTestSubentity.java rename to hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/GraphParsingTestSubEntity.java index 188c24352a..a9025ebb14 100644 --- a/hibernate-core/src/test/java/org/hibernate/graph/GraphParsingTestSubentity.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/loading/entitygraph/parser/GraphParsingTestSubEntity.java @@ -1,10 +1,10 @@ -package org.hibernate.graph; +package org.hibernate.orm.test.loading.entitygraph.parser; import javax.persistence.Basic; import javax.persistence.Entity; -@Entity -public class GraphParsingTestSubentity extends GraphParsingTestEntity { +@Entity( name = "GraphParsingTestSubEntity" ) +public class GraphParsingTestSubEntity extends GraphParsingTestEntity { private String sub; @@ -17,4 +17,4 @@ public class GraphParsingTestSubentity extends GraphParsingTestEntity { this.sub = sub; } -} \ No newline at end of file +}