[hibernate-commits] Hibernate SVN: r18803 - in jpamodelgen/trunk/src: main/java/org/hibernate/jpamodelgen/xml and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Feb 15 11:09:27 EST 2010


Author: hardy.ferentschik
Date: 2010-02-15 11:09:26 -0500 (Mon, 15 Feb 2010)
New Revision: 18803

Modified:
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java
   jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/elementcollection/hostel.xml
Log:
METAGEN-25 - Ensure that the default package name gets used in all cases where class names can be specified 


Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java	2010-02-15 14:35:46 UTC (rev 18802)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/StringUtil.java	2010-02-15 16:09:26 UTC (rev 18803)
@@ -29,12 +29,12 @@
 	private StringUtil() {
 	}
 
-	public static String determineFullyQualifiedClassName(String packageName, String name) {
+	public static String determineFullyQualifiedClassName(String defaultPackage, String name) {
 		if ( isFullyQualified( name ) ) {
 			return name;
 		}
 		else {
-			return packageName + NAME_SEPARATOR + name;
+			return defaultPackage + NAME_SEPARATOR + name;
 		}
 	}
 

Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java	2010-02-15 14:35:46 UTC (rev 18802)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java	2010-02-15 16:09:26 UTC (rev 18803)
@@ -69,6 +69,7 @@
 
 	protected final String clazzName;
 	protected final String packageName;
+	protected final String defaultPackageName;
 	protected final ImportContext importContext;
 	protected final List<MetaAttribute> members = new ArrayList<MetaAttribute>();
 	protected final TypeElement element;
@@ -79,37 +80,42 @@
 	private EmbeddableAttributes embeddableAttributes;
 	protected AccessTypeInformation accessTypeInfo;
 
-	public XmlMetaEntity(Entity ormEntity, String packageName, TypeElement element, Context context) {
-		this( ormEntity.getClazz(), packageName, element, context, ormEntity.isMetadataComplete() );
+	public XmlMetaEntity(Entity ormEntity, String defaultPackageName, TypeElement element, Context context) {
+		this( ormEntity.getClazz(), defaultPackageName, element, context, ormEntity.isMetadataComplete() );
 		this.attributes = ormEntity.getAttributes();
 		this.embeddableAttributes = null;
 		// entities can be directly initialised
 		init();
 	}
 
-	protected XmlMetaEntity(MappedSuperclass mappedSuperclass, String packageName, TypeElement element, Context context) {
-		this( mappedSuperclass.getClazz(), packageName, element, context, mappedSuperclass.isMetadataComplete() );
+	protected XmlMetaEntity(MappedSuperclass mappedSuperclass, String defaultPackageName, TypeElement element, Context context) {
+		this(
+				mappedSuperclass.getClazz(), defaultPackageName, element, context, mappedSuperclass.isMetadataComplete()
+		);
 		this.attributes = mappedSuperclass.getAttributes();
 		this.embeddableAttributes = null;
 		// entities can be directly initialised
 		init();
 	}
 
-	protected XmlMetaEntity(Embeddable embeddable, String packageName, TypeElement element, Context context) {
-		this( embeddable.getClazz(), packageName, element, context, embeddable.isMetadataComplete() );
+	protected XmlMetaEntity(Embeddable embeddable, String defaultPackageName, TypeElement element, Context context) {
+		this( embeddable.getClazz(), defaultPackageName, element, context, embeddable.isMetadataComplete() );
 		this.attributes = null;
 		this.embeddableAttributes = embeddable.getAttributes();
 	}
 
-	private XmlMetaEntity(String clazz, String packageName, TypeElement element, Context context, Boolean metaComplete) {
+	private XmlMetaEntity(String clazz, String defaultPackageName, TypeElement element, Context context, Boolean metaComplete) {
+		this.defaultPackageName = defaultPackageName;
 		String className = clazz;
+		String pkg = defaultPackageName;
 		if ( StringUtil.isFullyQualified( className ) ) {
-			// we have to extract the package name from the fqcn. default package name gets ignored
-			packageName = StringUtil.packageNameFromFqcn( className );
+			// if the class name is fully qualified we have to extract the package name from the fqcn.
+			// default package name gets ignored
+			pkg = StringUtil.packageNameFromFqcn( className );
 			className = StringUtil.classNameFromFqcn( clazz );
 		}
 		this.clazzName = className;
-		this.packageName = packageName;
+		this.packageName = pkg;
 		this.context = context;
 		this.importContext = new ImportContextImpl( getPackageName() );
 		this.element = element;
@@ -389,14 +395,11 @@
 		String[] types;
 		XmlMetaCollection metaCollection;
 		ElementKind elementKind = getElementKind( collection.getAccess() );
-		MapKeyClass mapKeyClass = collection.getMapKeyClass();
-		String explicitMapKey = null;
-		if ( mapKeyClass != null ) {
-			explicitMapKey = mapKeyClass.getClazz();
-		}
+		String explicitTargetClass = determineExplicitTargetEntity( collection.getTargetClass() );
+		String explicitMapKey = determineExplicitMapKeyClass( collection.getMapKeyClass() );
 		try {
 			types = getCollectionTypes(
-					collection.getName(), collection.getTargetClass(), explicitMapKey, elementKind
+					collection.getName(), explicitTargetClass, explicitMapKey, elementKind
 			);
 		}
 		catch ( MetaModelGenerationException e ) {
@@ -415,17 +418,32 @@
 		return false;
 	}
 
+	private String determineExplicitTargetEntity(String targetClass) {
+		String explicitTargetClass = targetClass;
+		if ( explicitTargetClass != null ) {
+			explicitTargetClass = StringUtil.determineFullyQualifiedClassName(
+					defaultPackageName, targetClass
+			);
+		}
+		return explicitTargetClass;
+	}
+
+	private String determineExplicitMapKeyClass(MapKeyClass mapKeyClass) {
+		String explicitMapKey = null;
+		if ( mapKeyClass != null ) {
+			explicitMapKey = StringUtil.determineFullyQualifiedClassName( defaultPackageName, mapKeyClass.getClazz() );
+		}
+		return explicitMapKey;
+	}
+
 	private boolean parseOneToMany(OneToMany oneToMany) {
 		String[] types;
 		XmlMetaCollection metaCollection;
 		ElementKind elementKind = getElementKind( oneToMany.getAccess() );
-		MapKeyClass mapKeyClass = oneToMany.getMapKeyClass();
-		String explicitMapKey = null;
-		if ( mapKeyClass != null ) {
-			explicitMapKey = mapKeyClass.getClazz();
-		}
+		String explicitTargetClass = determineExplicitTargetEntity( oneToMany.getTargetEntity() );
+		String explicitMapKey = determineExplicitMapKeyClass( oneToMany.getMapKeyClass() );
 		try {
-			types = getCollectionTypes( oneToMany.getName(), oneToMany.getTargetEntity(), explicitMapKey, elementKind );
+			types = getCollectionTypes( oneToMany.getName(), explicitTargetClass, explicitMapKey, elementKind );
 		}
 		catch ( MetaModelGenerationException e ) {
 			logMetaModelException( oneToMany.getName(), e );
@@ -447,14 +465,11 @@
 		String[] types;
 		XmlMetaCollection metaCollection;
 		ElementKind elementKind = getElementKind( manyToMany.getAccess() );
-		MapKeyClass mapKeyClass = manyToMany.getMapKeyClass();
-		String explicitMapKey = null;
-		if ( mapKeyClass != null ) {
-			explicitMapKey = mapKeyClass.getClazz();
-		}
+		String explicitTargetClass = determineExplicitTargetEntity( manyToMany.getTargetEntity() );
+		String explicitMapKey = determineExplicitMapKeyClass( manyToMany.getMapKeyClass() );
 		try {
 			types = getCollectionTypes(
-					manyToMany.getName(), manyToMany.getTargetEntity(), explicitMapKey, elementKind
+					manyToMany.getName(), explicitTargetClass, explicitMapKey, elementKind
 			);
 		}
 		catch ( MetaModelGenerationException e ) {

Modified: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/elementcollection/hostel.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/elementcollection/hostel.xml	2010-02-15 14:35:46 UTC (rev 18802)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/elementcollection/hostel.xml	2010-02-15 16:09:26 UTC (rev 18803)
@@ -5,9 +5,10 @@
                  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
                  version="2.0"
         >
+    <package>org.hibernate.jpamodelgen.test.elementcollection</package>
     <entity class="org.hibernate.jpamodelgen.test.elementcollection.Hostel">
         <attributes>
-            <one-to-many name="cleaners" target-entity="org.hibernate.jpamodelgen.test.elementcollection.Cleaner">
+            <one-to-many name="cleaners" target-entity="Cleaner">
                 <map-key-class class="org.hibernate.jpamodelgen.test.elementcollection.Room"/>
             </one-to-many>
             <element-collection name="roomsByName"



More information about the hibernate-commits mailing list