[hibernate-commits] Hibernate SVN: r18787 - in jpamodelgen/trunk/src: main/java/org/hibernate/jpamodelgen/util and 2 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Feb 11 14:37:09 EST 2010


Author: hardy.ferentschik
Date: 2010-02-11 14:37:09 -0500 (Thu, 11 Feb 2010)
New Revision: 18787

Removed:
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaMappedSuperClass.java
Modified:
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/Constants.java
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java
   jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java
   jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/building.xml
Log:
METAGEN-22 - Some cleanup and optimisatons prior adding new functionality

Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/ClassWriter.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -116,7 +116,7 @@
 			final Element superClassElement = ( ( DeclaredType ) superClass ).asElement();
 			String superClassName = ( ( TypeElement ) superClassElement ).getQualifiedName().toString();
 			if ( context.containsMetaEntity( superClassName )
-					|| context.containsMetaSuperclassOrEmbeddable( superClassName ) ) {
+					|| context.containsMetaEmbeddable( superClassName ) ) {
 				pw.print( " extends " + superClassName + "_" );
 			}
 		}

Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/Context.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -31,6 +31,7 @@
 import javax.tools.Diagnostic;
 
 import org.hibernate.jpamodelgen.model.MetaEntity;
+import org.hibernate.jpamodelgen.util.Constants;
 
 /**
  * @author Max Andersen
@@ -38,10 +39,19 @@
  * @author Emmanuel Bernard
  */
 public class Context {
-	private static final String PATH_SEPARATOR = System.getProperty( "file.separator" );
 	private static final String DEFAULT_PERSISTENCE_XML_LOCATION = "/META-INF/persistence.xml";
+
+	/**
+	 * Used for keeping track of parsed entities and mapped super classes (xml + annotations).
+	 */
 	private final Map<String, MetaEntity> metaEntities = new HashMap<String, MetaEntity>();
-	private final Map<String, MetaEntity> metaSuperclassAndEmbeddable = new HashMap<String, MetaEntity>();
+
+	/**
+	 * Used for keeping track of parsed embeddable entities. These entities have to be kept separate since
+	 * they are lazily initialized.
+	 */
+	private final Map<String, MetaEntity> metaEmbeddables = new HashMap<String, MetaEntity>();
+
 	private final Map<String, AccessTypeInformation> accessTypeInformation = new HashMap<String, AccessTypeInformation>();
 
 	private final ProcessingEnvironment pe;
@@ -57,8 +67,8 @@
 
 		if ( pe.getOptions().get( JPAMetaModelEntityProcessor.PERSISTENCE_XML_OPTION ) != null ) {
 			String tmp = pe.getOptions().get( JPAMetaModelEntityProcessor.PERSISTENCE_XML_OPTION );
-			if ( !tmp.startsWith( PATH_SEPARATOR ) ) {
-				tmp = PATH_SEPARATOR + tmp;
+			if ( !tmp.startsWith( Constants.PATH_SEPARATOR ) ) {
+				tmp = Constants.PATH_SEPARATOR + tmp;
 			}
 			persistenceXmlLocation = tmp;
 		}
@@ -70,8 +80,8 @@
 			String tmp = pe.getOptions().get( JPAMetaModelEntityProcessor.ORM_XML_OPTION );
 			ormXmlFiles = new ArrayList<String>();
 			for ( String ormFile : tmp.split( "," ) ) {
-				if ( !ormFile.startsWith( PATH_SEPARATOR ) ) {
-					ormFile = PATH_SEPARATOR + ormFile;
+				if ( !ormFile.startsWith( Constants.PATH_SEPARATOR ) ) {
+					ormFile = Constants.PATH_SEPARATOR + ormFile;
 				}
 				ormXmlFiles.add( ormFile );
 			}
@@ -81,7 +91,6 @@
 		}
 
 		logDebug = Boolean.parseBoolean( pe.getOptions().get( JPAMetaModelEntityProcessor.DEBUG_OPTION ) );
-
 	}
 
 	public ProcessingEnvironment getProcessingEnvironment() {
@@ -120,20 +129,20 @@
 		metaEntities.put( fcqn, metaEntity );
 	}
 
-	public boolean containsMetaSuperclassOrEmbeddable(String fqcn) {
-		return metaSuperclassAndEmbeddable.containsKey( fqcn );
+	public boolean containsMetaEmbeddable(String fqcn) {
+		return metaEmbeddables.containsKey( fqcn );
 	}
 
-	public MetaEntity getMetaSuperclassOrEmbeddable(String fqcn) {
-		return metaSuperclassAndEmbeddable.get( fqcn );
+	public MetaEntity getMetaEmbeddable(String fqcn) {
+		return metaEmbeddables.get( fqcn );
 	}
 
-	public void addMetaSuperclassOrEmbeddable(String fcqn, MetaEntity metaEntity) {
-		metaSuperclassAndEmbeddable.put( fcqn, metaEntity );
+	public void addMetaEmbeddable(String fqcn, MetaEntity metaEntity) {
+		metaEmbeddables.put( fqcn, metaEntity );
 	}
 
-	public Collection<MetaEntity> getMetaSuperclassOrEmbeddable() {
-		return metaSuperclassAndEmbeddable.values();
+	public Collection<MetaEntity> getMetaEmbeddables() {
+		return metaEmbeddables.values();
 	}
 
 	public void addAccessTypeInformation(String fqcn, AccessTypeInformation info) {

Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/JPAMetaModelEntityProcessor.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -128,7 +128,7 @@
 		// we cannot process the delayed entities in any order. There might be dependencies between them.
 		// we need to process the top level entities first
 		// TODO make sure that we don't run into circular dependencies here
-		Collection<MetaEntity> toProcessEntities = context.getMetaSuperclassOrEmbeddable();
+		Collection<MetaEntity> toProcessEntities = context.getMetaEmbeddables();
 		while ( !toProcessEntities.isEmpty() ) {
 			Set<MetaEntity> processedEntities = new HashSet<MetaEntity>();
 			for ( MetaEntity entity : toProcessEntities ) {
@@ -218,7 +218,7 @@
 		}
 		else if ( TypeUtils.isAnnotationMirrorOfType( mirror, MappedSuperclass.class )
 				|| TypeUtils.isAnnotationMirrorOfType( mirror, Embeddable.class ) ) {
-			alreadyExistingMetaEntity = context.getMetaSuperclassOrEmbeddable( fqn );
+			alreadyExistingMetaEntity = context.getMetaEmbeddable( fqn );
 		}
 		return alreadyExistingMetaEntity;
 	}
@@ -228,10 +228,10 @@
 			context.addMetaEntity( metaEntity.getQualifiedName(), metaEntity );
 		}
 		else if ( TypeUtils.isAnnotationMirrorOfType( mirror, MappedSuperclass.class ) ) {
-			context.addMetaSuperclassOrEmbeddable( metaEntity.getQualifiedName(), metaEntity );
+			context.addMetaEntity( metaEntity.getQualifiedName(), metaEntity );
 		}
 		else if ( TypeUtils.isAnnotationMirrorOfType( mirror, Embeddable.class ) ) {
-			context.addMetaSuperclassOrEmbeddable( metaEntity.getQualifiedName(), metaEntity );
+			context.addMetaEmbeddable( metaEntity.getQualifiedName(), metaEntity );
 		}
 	}
 

Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/Constants.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/Constants.java	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/util/Constants.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -63,7 +63,10 @@
 		BASIC_ARRAY_TYPES.add( "java.lang.Byte" );
 	}
 
-	private Constants(){}
+	public static final String PATH_SEPARATOR = "/";
+
+	private Constants() {
+	}
 }
 
 

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-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaEntity.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -90,6 +90,8 @@
 		this( mappedSuperclass.getClazz(), packageName, 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) {

Deleted: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaMappedSuperClass.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaMappedSuperClass.java	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlMetaMappedSuperClass.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -1,74 +0,0 @@
-// $Id$
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2008, Red Hat Middleware LLC, and individual contributors
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* http://www.apache.org/licenses/LICENSE-2.0
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.hibernate.jpamodelgen.xml;
-
-import java.util.List;
-import javax.lang.model.element.ElementKind;
-import javax.lang.model.element.TypeElement;
-import javax.tools.Diagnostic;
-
-import org.hibernate.jpamodelgen.Context;
-import org.hibernate.jpamodelgen.MetaModelGenerationException;
-import org.hibernate.jpamodelgen.model.MetaAttribute;
-import org.hibernate.jpamodelgen.xml.jaxb.Basic;
-import org.hibernate.jpamodelgen.xml.jaxb.ElementCollection;
-import org.hibernate.jpamodelgen.xml.jaxb.EmbeddableAttributes;
-import org.hibernate.jpamodelgen.xml.jaxb.ManyToMany;
-import org.hibernate.jpamodelgen.xml.jaxb.ManyToOne;
-import org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass;
-import org.hibernate.jpamodelgen.xml.jaxb.OneToMany;
-import org.hibernate.jpamodelgen.xml.jaxb.OneToOne;
-
-/**
- * @author Hardy Ferentschik
- */
-public class XmlMetaMappedSuperClass extends XmlMetaEntity {
-	private boolean initialized;
-
-	public XmlMetaMappedSuperClass(MappedSuperclass mappedSuperclass, String packageName, TypeElement element, Context context) {
-		super( mappedSuperclass, packageName, element, context );
-	}
-
-	public List<MetaAttribute> getMembers() {
-		if ( !initialized ) {
-			context.logMessage( Diagnostic.Kind.OTHER, "Entity " + getQualifiedName() + "was lazily initialised." );
-			init();
-			initialized = true;
-		}
-		return members;
-	}
-
-
-	@Override
-	public String toString() {
-		final StringBuilder sb = new StringBuilder();
-		sb.append( "XmlMetaEntity" );
-		sb.append( "{accessTypeInfo=" ).append( accessTypeInfo );
-		sb.append( ", clazzName='" ).append( clazzName ).append( '\'' );
-		sb.append( ", members=" );
-		if ( initialized ) {
-			sb.append( members );
-		}
-		else {
-			sb.append( "[un-initalized]" );
-		}
-		sb.append( ", isMetaComplete=" ).append( isMetaComplete );
-		sb.append( '}' );
-		return sb.toString();
-	}
-}
\ No newline at end of file

Modified: jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java
===================================================================
--- jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/main/java/org/hibernate/jpamodelgen/xml/XmlParser.java	2010-02-11 19:37:09 UTC (rev 18787)
@@ -39,6 +39,7 @@
 
 import org.hibernate.jpamodelgen.AccessTypeInformation;
 import org.hibernate.jpamodelgen.Context;
+import org.hibernate.jpamodelgen.util.Constants;
 import org.hibernate.jpamodelgen.util.StringUtil;
 import org.hibernate.jpamodelgen.util.TypeUtils;
 import org.hibernate.jpamodelgen.xml.jaxb.Entity;
@@ -55,7 +56,6 @@
 	private static final String ORM_XML = "/META-INF/orm.xml";
 	private static final String PERSISTENCE_XML_XSD = "persistence_2_0.xsd";
 	private static final String ORM_XSD = "orm_2_0.xsd";
-	private static final String PATH_SEPARATOR = "/";
 
 	private Context context;
 	private List<EntityMappings> entityMappings;
@@ -154,13 +154,13 @@
 			}
 
 			XmlMetaEntity metaEntity = new XmlMetaEmbeddable( embeddable, pkg, getXmlMappedType( fqcn ), context );
-			if ( context.containsMetaSuperclassOrEmbeddable( fqcn ) ) {
+			if ( context.containsMetaEmbeddable( fqcn ) ) {
 				context.logMessage(
 						Diagnostic.Kind.WARNING,
 						fqcn + " was already processed once. Skipping second occurance."
 				);
 			}
-			context.addMetaSuperclassOrEmbeddable( fqcn, metaEntity );
+			context.addMetaEmbeddable( fqcn, metaEntity );
 		}
 	}
 
@@ -180,17 +180,17 @@
 				continue;
 			}
 
-			XmlMetaEntity metaEntity = new XmlMetaMappedSuperClass(
+			XmlMetaEntity metaEntity = new XmlMetaEntity(
 					mappedSuperClass, pkg, getXmlMappedType( fqcn ), context
 			);
 
-			if ( context.containsMetaSuperclassOrEmbeddable( fqcn ) ) {
+			if ( context.containsMetaEmbeddable( fqcn ) ) {
 				context.logMessage(
 						Diagnostic.Kind.WARNING,
 						fqcn + " was already processed once. Skipping second occurance."
 				);
 			}
-			context.addMetaSuperclassOrEmbeddable( fqcn, metaEntity );
+			context.addMetaEntity( fqcn, metaEntity );
 		}
 	}
 
@@ -263,7 +263,7 @@
 			ormStream = fileObject.openInputStream();
 		}
 		catch ( IOException e1 ) {
-			// TODO
+			// TODO - METAGEN-12
 			// unfortunately, the Filer.getResource API seems not to be able to load from /META-INF. One gets a
 			// FilerException with the message with "Illegal name /META-INF". This means that we have to revert to
 			// using the classpath. This might mean that we find a persistence.xml which is 'part of another jar.
@@ -274,20 +274,20 @@
 	}
 
 	private String getPackage(String resourceName) {
-		if ( !resourceName.contains( PATH_SEPARATOR ) ) {
+		if ( !resourceName.contains( Constants.PATH_SEPARATOR ) ) {
 			return "";
 		}
 		else {
-			return resourceName.substring( 0, resourceName.lastIndexOf( PATH_SEPARATOR ) );
+			return resourceName.substring( 0, resourceName.lastIndexOf( Constants.PATH_SEPARATOR ) );
 		}
 	}
 
 	private String getRelativeName(String resourceName) {
-		if ( !resourceName.contains( PATH_SEPARATOR ) ) {
+		if ( !resourceName.contains( Constants.PATH_SEPARATOR ) ) {
 			return resourceName;
 		}
 		else {
-			return resourceName.substring( resourceName.lastIndexOf( PATH_SEPARATOR ) + 1 );
+			return resourceName.substring( resourceName.lastIndexOf( Constants.PATH_SEPARATOR ) + 1 );
 		}
 	}
 
@@ -329,11 +329,11 @@
 				context.addAccessTypeInformation( fqcn, accessInfo );
 			}
 
-			for ( org.hibernate.jpamodelgen.xml.jaxb.Embeddable embeddable : mappings.getEmbeddable() ) {
-				String name = embeddable.getClazz();
+			for ( org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass mappedSuperClass : mappings.getMappedSuperclass() ) {
+				String name = mappedSuperClass.getClazz();
 				fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
 				AccessType explicitAccessType = null;
-				org.hibernate.jpamodelgen.xml.jaxb.AccessType type = embeddable.getAccess();
+				org.hibernate.jpamodelgen.xml.jaxb.AccessType type = mappedSuperClass.getAccess();
 				if ( type != null ) {
 					explicitAccessType = mapXmlAccessTypeToJpaAccessType( type );
 				}
@@ -341,14 +341,13 @@
 						fqcn, explicitAccessType, defaultAccessType
 				);
 				context.addAccessTypeInformation( fqcn, accessInfo );
-
 			}
 
-			for ( org.hibernate.jpamodelgen.xml.jaxb.MappedSuperclass mappedSuperClass : mappings.getMappedSuperclass() ) {
-				String name = mappedSuperClass.getClazz();
+			for ( org.hibernate.jpamodelgen.xml.jaxb.Embeddable embeddable : mappings.getEmbeddable() ) {
+				String name = embeddable.getClazz();
 				fqcn = StringUtil.determineFullyQualifiedClassName( packageName, name );
 				AccessType explicitAccessType = null;
-				org.hibernate.jpamodelgen.xml.jaxb.AccessType type = mappedSuperClass.getAccess();
+				org.hibernate.jpamodelgen.xml.jaxb.AccessType type = embeddable.getAccess();
 				if ( type != null ) {
 					explicitAccessType = mapXmlAccessTypeToJpaAccessType( type );
 				}

Modified: jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/building.xml
===================================================================
--- jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/building.xml	2010-02-11 19:16:42 UTC (rev 18786)
+++ jpamodelgen/trunk/src/test/resources/org/hibernate/jpamodelgen/test/xmlmapped/building.xml	2010-02-11 19:37:09 UTC (rev 18787)
@@ -5,10 +5,11 @@
                  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
                  version="2.0"
         >
-    <package>org.hibernate.jpamodelgen.test.xmlmapped</package>
-    <mapped-superclass class="Building" access="FIELD" metadata-complete="true"> <!--means ignore annotations-->
+    <mapped-superclass class="org.hibernate.jpamodelgen.test.xmlmapped.Building"
+                       access="FIELD"
+                       metadata-complete="true">
         <attributes>
-            <one-to-one name="address" fetch="LAZY"/>
+            <one-to-one name="address"/>
         </attributes>
     </mapped-superclass>
 </entity-mappings>



More information about the hibernate-commits mailing list