[hibernate-commits] Hibernate SVN: r17013 - in jpamodelgen/trunk: generator/src/main/java/org/hibernate/jpa/metamodel/ap and 3 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jul 7 09:27:52 EDT 2009


Author: hardy.ferentschik
Date: 2009-07-07 09:27:52 -0400 (Tue, 07 Jul 2009)
New Revision: 17013

Added:
   jpamodelgen/trunk/test/src/main/java/model/metamodel/
Modified:
   jpamodelgen/trunk/generator/
   jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/JPAMetaModelEntityProcessor.java
   jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/annotation/MetaEntity.java
   jpamodelgen/trunk/test/
   jpamodelgen/trunk/test/pom.xml
   jpamodelgen/trunk/test/src/main/java/model/Order.java
Log:
Cleanup and made current example work.


Property changes on: jpamodelgen/trunk/generator
___________________________________________________________________
Name: svn:ignore
   + target


Modified: jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/JPAMetaModelEntityProcessor.java
===================================================================
--- jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/JPAMetaModelEntityProcessor.java	2009-07-07 13:05:37 UTC (rev 17012)
+++ jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/JPAMetaModelEntityProcessor.java	2009-07-07 13:27:52 UTC (rev 17013)
@@ -1,14 +1,24 @@
 package org.hibernate.jpa.metamodel.ap;
 
-
-
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Generated;
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.FilerException;
+import javax.annotation.processing.ProcessingEnvironment;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.annotation.processing.SupportedSourceVersion;
 import static javax.lang.model.SourceVersion.RELEASE_6;
-
-import java.io.*;
-import java.util.*;
-
-import javax.annotation.Generated;
-import javax.annotation.processing.*;
 import javax.lang.model.element.AnnotationMirror;
 import javax.lang.model.element.Element;
 import javax.lang.model.element.ElementKind;
@@ -28,209 +38,236 @@
 import org.hibernate.jpa.metamodel.xml.jaxb.ObjectFactory;
 
 //@SupportedAnnotationTypes("javax.persistence.Entity")
- at SupportedAnnotationTypes("*") // TODO: this is not very effective
+ at SupportedAnnotationTypes("*")
 @SupportedSourceVersion(RELEASE_6)
 public class JPAMetaModelEntityProcessor extends AbstractProcessor {
 
-    //private static final String ORM_XML_LOCATION = "/META-INF/orm.xml";
+	private static final Map<String, IMetaEntity> metaEntities = new HashMap<String, IMetaEntity>();
 
-    private static final Map<String, IMetaEntity> metaEntities = new HashMap<String, IMetaEntity>();
+	private boolean ormProcessed = false;
 
-    private boolean ormProcessed = false;
+	public JPAMetaModelEntityProcessor() {
+	}
 
-    public JPAMetaModelEntityProcessor() {
-    	System.out.println("Created Processor " + this);
-    }
+	public void init(ProcessingEnvironment env) {
+		super.init( env );
+		processingEnv.getMessager().printMessage( Diagnostic.Kind.NOTE, "Init Processor " + this );
+	}
 
-    public void init(ProcessingEnvironment env) {    	
-        super.init(env);
-        System.out.println("Init Processor " + this);
-    }
-    
-    private void parsingOrmXmls() {
-    	//make sure that we process ORM files only once per round 
-    	if (ormProcessed) return;
-    	parsingOrmXml("/META-INF", "orm.xml");
-        //simulate 20 different ORM files to parse
-    	//Removed since these causes issues in Eclipse APT
-        //for (int i = 1 ; i <= 20 ; i++) parsingOrmXml("/model" + i , "orm.xml");
-    	
-        ormProcessed = true;
-    }
+	private void parsingOrmXmls() {
+		//make sure that we process ORM files only once per round
+		if ( ormProcessed ) {
+			return;
+		}
+		parsingOrmXml( "/META-INF", "orm.xml" );
+		//simulate 20 different ORM files to parse
+		//Removed since these causes issues in Eclipse APT
+		//for (int i = 1 ; i <= 20 ; i++) parsingOrmXml("/model" + i , "orm.xml");
 
-    /**
-     * Tries to check whether a orm.xml file exists and parses it using JAXB
-     */
-    private void parsingOrmXml(String pkg, String name) {
-    	String resource = pkg +"/"+name;
-        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "XYZ Checking for " + resource);
-        
-        InputStream ormStream = null;
-        try {
-			FileObject resource2 = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, pkg, name);
-			ormStream = resource2.openInputStream();
-		} catch (IOException e1) {
-			processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, "Could not locate " + resource + " via APT api");
-			//TODO: possible remove this fallback since it should not be needed.
-			ormStream = this.getClass().getResourceAsStream(resource);
+		ormProcessed = true;
+	}
+
+	/**
+	 * Tries to check whether a orm.xml file exists and parses it using JAXB
+	 */
+	private void parsingOrmXml(String pkg, String name) {
+
+		InputStream ormStream = getInputStreamForResource( pkg, name );
+
+		String resource = getFullResourcePath( pkg, name );
+		if ( ormStream == null ) {
+			processingEnv.getMessager().printMessage( Diagnostic.Kind.NOTE, resource + " not found." );
+			return;
 		}
-        
-        if (ormStream == null) {
-            processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, resource + " not found.");
-            return;
-        }
-        try {
-            JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class);
-            Unmarshaller unmarshaller = jc.createUnmarshaller();
-            EntityMappings mappings = (EntityMappings) unmarshaller.unmarshal(ormStream);
-            Collection<Entity> entities = mappings.getEntity();
-            String packageName = mappings.getPackage();
-            for (Entity entity : entities) {
-                String fullyQualifiedClassName = packageName + "." + entity.getClazz();
-                Elements utils = processingEnv.getElementUtils();
-                XmlMetaEntity metaEntity = new XmlMetaEntity(entity, packageName, utils.getTypeElement(fullyQualifiedClassName));
-                writeFile(metaEntity);
+		try {
+			JAXBContext jc = JAXBContext.newInstance( ObjectFactory.class );
+			Unmarshaller unmarshaller = jc.createUnmarshaller();
+			EntityMappings mappings = ( EntityMappings ) unmarshaller.unmarshal( ormStream );
+			Collection<Entity> entities = mappings.getEntity();
+			String packageName = mappings.getPackage();
+			for ( Entity entity : entities ) {
+				String fullyQualifiedClassName = packageName + "." + entity.getClazz();
+				Elements utils = processingEnv.getElementUtils();
+				XmlMetaEntity metaEntity = new XmlMetaEntity(
+						entity, packageName, utils.getTypeElement( fullyQualifiedClassName )
+				);
+				writeFile( metaEntity );
 
-                // keep track of alreay processed entities
-                metaEntities.put(fullyQualifiedClassName, metaEntity);
-            }
-        } catch (JAXBException e) {
-            processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Error unmarshalling orm.xml");
-            e.printStackTrace();
-        } catch (Exception e) {
-        	processingEnv.getMessager().printMessage(
-                       Diagnostic.Kind.ERROR,
-                       "Problem while reading " + resource + " " + e.getMessage());
-        	e.printStackTrace();
-        	//TODO: too bad you can't mark resources as having issues
-        }
-    }
+				// keep track of alreay processed entities
+				metaEntities.put( fullyQualifiedClassName, metaEntity );
+			}
+		}
+		catch ( JAXBException e ) {
+			processingEnv.getMessager().printMessage( Diagnostic.Kind.NOTE, "Error unmarshalling orm.xml" );
+			e.printStackTrace();
+		}
+		catch ( Exception e ) {
+			processingEnv.getMessager().printMessage(
+					Diagnostic.Kind.ERROR,
+					"Problem while reading " + resource + " " + e.getMessage()
+			);
+			e.printStackTrace();
+			//TODO: too bad you can't mark resources as having issues
+		}
+	}
 
-    /**
-     * Process JPA-specific annotations in Java entity classes.
-     *
-     * @param aAnnotations      Matching annotations to be processed.
-     * @param aRoundEnvironment Annotation processing round environment.
-     * @return
-     */
-    @Override
-    public boolean process(final Set<? extends TypeElement> aAnnotations,
-                           final RoundEnvironment aRoundEnvironment) {
+	private InputStream getInputStreamForResource(String pkg, String name) {
+		String resource = getFullResourcePath( pkg, name );
+		processingEnv.getMessager()
+				.printMessage( Diagnostic.Kind.NOTE, "Checking for " + resource );
+		InputStream ormStream;
+		try {
+			FileObject fileObject = processingEnv.getFiler().getResource( StandardLocation.CLASS_OUTPUT, pkg, name );
+			ormStream = fileObject.openInputStream();
+		}
+		catch ( IOException e1 ) {
+			processingEnv.getMessager()
+					.printMessage(
+							Diagnostic.Kind.WARNING,
+							"Could not load " + resource + " using Filer.getResource(). Trying classpath..."
+					);
+			ormStream = this.getClass().getResourceAsStream( resource );
+		}
+		return ormStream;
+	}
 
-        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Processing annotations:" + aAnnotations);
+	private String getFullResourcePath(String pkg, String name) {
+		return pkg + "/" + name;
+	}
 
-        StringBuilder sb = new StringBuilder("xxx" + new Date().toLocaleString());
-        Set<? extends Element> elements = aRoundEnvironment.getRootElements();
-        sb.append("\n\n");
-        for (Element element : elements) {
-            sb.append(element.toString());
-            sb.append("\n");
-            handleRootElementAnnotationMirrors(element);
-        }
+	@Override
+	public boolean process(final Set<? extends TypeElement> aAnnotations,
+						   final RoundEnvironment aRoundEnvironment) {
 
-        sb.append("xxx");
-        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, sb.toString());
+		writeInitialProcessingDiagnostics( aAnnotations, aRoundEnvironment );
 
+		if ( aRoundEnvironment.processingOver() ) {
+			//assuming that when processing is over, we are done and clear resources like ORM parsing
+			//we could keep some ORM parsing in memory but how to detect that a file has changed / not changed?
+			ormProcessed = false;
+			metaEntities.clear();
+			processingEnv.getMessager().printMessage( Diagnostic.Kind.NOTE, "Clear ORM processing resources" );
+			return false;
+		}
 
-        if (aRoundEnvironment.processingOver()) {
-        	//assuming that when processing is over, we are done and clear resources like ORM parsing
-        	//we could keep some ORM parsing in memory but how to detect that a file has changed / not changed? 
-        	ormProcessed = false;
-        	metaEntities.clear();
-        	processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Clear ORM processing resources");
-            return false;	
-        }
-        parsingOrmXmls();
-        for (Element element : elements) {
-            handleRootElementAnnotationMirrors(element);
-        }
+		parsingOrmXmls();
 
-        return true;
-    }
+		Set<? extends Element> elements = aRoundEnvironment.getRootElements();
+		for ( Element element : elements ) {
+			handleRootElementAnnotationMirrors( element );
+		}
 
-    private void handleRootElementAnnotationMirrors(final Element element) {
+		return true;
+	}
 
-        List<? extends AnnotationMirror> annotationMirrors = element
-                .getAnnotationMirrors();
+	private void writeInitialProcessingDiagnostics(Set<? extends TypeElement> aAnnotations, RoundEnvironment aRoundEnvironment) {
+		StringBuilder sb = new StringBuilder();
+		sb.append( "\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n" );
+		sb.append( new Date().toLocaleString() );
+		sb.append( "\n" );
+		sb.append( "Processing annotations " ).append( aAnnotations ).append( " on:" );
 
-        for (AnnotationMirror mirror : annotationMirrors) {
-            final String annotationType = mirror.getAnnotationType().toString();
+		Set<? extends Element> elements = aRoundEnvironment.getRootElements();
+		sb.append( "\n" );
+		for ( Element element : elements ) {
+			sb.append( element.toString() );
+			sb.append( "\n" );
+		}
+		sb.append( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n" );
+		processingEnv.getMessager().printMessage( Diagnostic.Kind.NOTE, sb.toString() );
+	}
 
-            if (element.getKind() == ElementKind.CLASS &&
-                    annotationType.equals(javax.persistence.Entity.class.getName())) {
-                MetaEntity metaEntity = new MetaEntity(processingEnv, (TypeElement) element);
-                writeFile(metaEntity);
-            }
-        }
-    }
+	private void handleRootElementAnnotationMirrors(final Element element) {
 
-    private void writeFile(IMetaEntity entity) {
+		List<? extends AnnotationMirror> annotationMirrors = element
+				.getAnnotationMirrors();
 
-        try {
-            String metaModelPackage = entity.getPackageName();
+		for ( AnnotationMirror mirror : annotationMirrors ) {
+			final String annotationType = mirror.getAnnotationType().toString();
 
-            StringBuffer body = generateBody(entity);
+			if ( element.getKind() == ElementKind.CLASS &&
+					annotationType.equals( javax.persistence.Entity.class.getName() ) ) {
+				MetaEntity metaEntity = new MetaEntity( processingEnv, ( TypeElement ) element );
+				writeFile( metaEntity );
+			}
+		}
+	}
 
-            FileObject fo = processingEnv.getFiler().createSourceFile(
-                    metaModelPackage + "." + entity.getSimpleName() + "_");
-            OutputStream os = fo.openOutputStream();
-            PrintWriter pw = new PrintWriter(os);
+	private void writeFile(IMetaEntity entity) {
 
-            pw.println("package " + metaModelPackage + ";");
+		try {
+			String metaModelPackage = entity.getPackageName();
 
-            pw.println();
+			StringBuffer body = generateBody( entity );
 
-            pw.println(entity.generateImports());
+			FileObject fo = processingEnv.getFiler().createSourceFile(
+					metaModelPackage + "." + entity.getSimpleName() + "_"
+			);
+			OutputStream os = fo.openOutputStream();
+			PrintWriter pw = new PrintWriter( os );
 
-            pw.println(body);
+			pw.println( "package " + metaModelPackage + ";" );
 
-            pw.flush();
-            pw.close();
+			pw.println();
 
-        } catch (FilerException filerEx) {
-            processingEnv.getMessager().printMessage(
-                    Diagnostic.Kind.ERROR,
-                    "Problem with Processing Environment Filer: "
-                            + filerEx.getMessage());
-        } catch (IOException ioEx) {
-            processingEnv.getMessager().printMessage(
-                    Diagnostic.Kind.ERROR,
-                    "Problem opening file to write MetaModel for " + entity.getSimpleName()
-                            + ioEx.getMessage());
-        } 
-    }
+			pw.println( entity.generateImports() );
 
-    /**
-     * Generate everything after import statements
-     *
-     * @return body content
-     */
-    private StringBuffer generateBody(IMetaEntity entity) {
+			pw.println( body );
 
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = null;
-        try {
+			pw.flush();
+			pw.close();
 
-            pw = new PrintWriter(sw);
+		}
+		catch ( FilerException filerEx ) {
+			processingEnv.getMessager().printMessage(
+					Diagnostic.Kind.ERROR,
+					"Problem with Processing Environment Filer: "
+							+ filerEx.getMessage()
+			);
+		}
+		catch ( IOException ioEx ) {
+			processingEnv.getMessager().printMessage(
+					Diagnostic.Kind.ERROR,
+					"Problem opening file to write MetaModel for " + entity.getSimpleName()
+							+ ioEx.getMessage()
+			);
+		}
+	}
 
-            pw.println("@" + entity.importType(Generated.class.getName()) + "(\"JPA MetaModel for " + entity.getQualifiedName() + "\")");
+	/**
+	 * Generate everything after import statements
+	 *
+	 * @return body content
+	 */
+	private StringBuffer generateBody(IMetaEntity entity) {
 
-            pw.println("@" + entity.importType("javax.persistence.metamodel.TypesafeMetamodel") + "(" +  entity.getSimpleName() + ".class)");
+		StringWriter sw = new StringWriter();
+		PrintWriter pw = null;
+		try {
 
-            pw.println("public abstract class " + entity.getSimpleName() + "_" + " {");
+			pw = new PrintWriter( sw );
 
-            pw.println();
+			pw.println( "@" + entity.importType( Generated.class.getName() ) + "(\"JPA MetaModel for " + entity.getQualifiedName() + "\")" );
 
-            List<IMetaMember> members = entity.getMembers();
+			pw.println( "@" + entity.importType( "javax.persistence.metamodel.TypesafeMetamodel" ) + "(" + entity.getSimpleName() + ".class)" );
 
-            for (IMetaMember metaMember : members) {
-                pw.println("	" + metaMember.getDeclarationString());
-            }
-            pw.println();
-            pw.println("}");
-            return sw.getBuffer();
-        } finally {
-            if (pw != null) pw.close();
-        }
-    }
+			pw.println( "public abstract class " + entity.getSimpleName() + "_" + " {" );
+
+			pw.println();
+
+			List<IMetaMember> members = entity.getMembers();
+
+			for ( IMetaMember metaMember : members ) {
+				pw.println( "	" + metaMember.getDeclarationString() );
+			}
+			pw.println();
+			pw.println( "}" );
+			return sw.getBuffer();
+		}
+		finally {
+			if ( pw != null ) {
+				pw.close();
+			}
+		}
+	}
 }

Modified: jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/annotation/MetaEntity.java
===================================================================
--- jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/annotation/MetaEntity.java	2009-07-07 13:05:37 UTC (rev 17012)
+++ jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/annotation/MetaEntity.java	2009-07-07 13:27:52 UTC (rev 17013)
@@ -1,13 +1,9 @@
 package org.hibernate.jpa.metamodel.ap.annotation;
 
-import org.hibernate.jpa.metamodel.ap.*;
-
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
 import javax.annotation.processing.ProcessingEnvironment;
 import javax.lang.model.element.AnnotationMirror;
 import javax.lang.model.element.Element;
@@ -21,197 +17,212 @@
 import javax.lang.model.type.TypeMirror;
 import javax.lang.model.util.ElementFilter;
 import javax.lang.model.util.SimpleTypeVisitor6;
+import javax.persistence.EmbeddedId;
+import javax.persistence.Id;
 import javax.tools.Diagnostic.Kind;
 
+import org.hibernate.jpa.metamodel.ap.IMetaEntity;
+import org.hibernate.jpa.metamodel.ap.IMetaMember;
+import org.hibernate.jpa.metamodel.ap.ImportContext;
+import org.hibernate.jpa.metamodel.ap.ImportContextImpl;
+import org.hibernate.jpa.metamodel.ap.TypeUtils;
+
 public class MetaEntity implements IMetaEntity {
 
-    final TypeElement element;
-    final protected ProcessingEnvironment pe;
+	final TypeElement element;
+	final protected ProcessingEnvironment pe;
 
-    final ImportContext importContext;
+	final ImportContext importContext;
 
-    public MetaEntity(ProcessingEnvironment pe, TypeElement element) {
-        this.element = element;
-        this.pe = pe;
-        importContext = new ImportContextImpl(getPackageName().toString());
-    }
+	public MetaEntity(ProcessingEnvironment pe, TypeElement element) {
+		this.element = element;
+		this.pe = pe;
+		importContext = new ImportContextImpl( getPackageName() );
+	}
 
-    public String getSimpleName() {
-        return element.getSimpleName().toString();
-    }
+	public String getSimpleName() {
+		return element.getSimpleName().toString();
+	}
 
-    public Element getOriginalElement() {
-        return element;
-    }
+	public Element getOriginalElement() {
+		return element;
+	}
 
-    public String getQualifiedName() {
-        return element.getQualifiedName().toString();
-    }
+	public String getQualifiedName() {
+		return element.getQualifiedName().toString();
+	}
 
-    public String getPackageName() {
-        PackageElement packageOf = pe.getElementUtils().getPackageOf(element);
-        return pe.getElementUtils().getName(packageOf.getQualifiedName() + ".metamodel").toString();
-    }
+	public String getPackageName() {
+		PackageElement packageOf = pe.getElementUtils().getPackageOf( element );
+		return pe.getElementUtils().getName( packageOf.getQualifiedName() + ".metamodel" ).toString();
+	}
 
-    public List<IMetaMember> getMembers() {
+	public List<IMetaMember> getMembers() {
 
-        List<IMetaMember> members = new ArrayList<IMetaMember>();
+		List<IMetaMember> members = new ArrayList<IMetaMember>();
 
-        if (useFields()) {
+		if ( useFields() ) {
 
-            List<? extends Element> myMembers = ElementFilter.fieldsIn(element.getEnclosedElements());
+			List<? extends Element> myMembers = ElementFilter.fieldsIn( element.getEnclosedElements() );
 
-            System.out.println("Scanning " + myMembers.size() + " field s for " + element.toString());
+			pe.getMessager()
+					.printMessage( Kind.NOTE, "Scanning " + myMembers.size() + " field s for " + element.toString() );
 
-            for (Element mymember : myMembers) {
+			for ( Element mymember : myMembers ) {
 
-                MetaMember result = mymember.asType().accept(new TypeVisitor(this), mymember);
-                if (result != null) {
-                    members.add(result);
-                } else {
-                    pe.getMessager().printMessage(Kind.WARNING, "Could not find valid info for JPA property", mymember);
-                }
-            }
+				MetaMember result = mymember.asType().accept( new TypeVisitor( this ), mymember );
+				if ( result != null ) {
+					members.add( result );
+				}
+				else {
+					pe.getMessager()
+							.printMessage( Kind.WARNING, "Could not find valid info for JPA property", mymember );
+				}
+			}
 
-        } else {
+		}
+		else {
 
 
-            List<? extends Element> myMembers = ElementFilter.methodsIn(element.getEnclosedElements());
+			List<? extends Element> myMembers = ElementFilter.methodsIn( element.getEnclosedElements() );
 
-            System.out.println("Scanning " + myMembers.size() + " methods for " + element.toString());
-            for (Element mymember : myMembers) {
+			pe.getMessager()
+					.printMessage( Kind.NOTE, "Scanning " + myMembers.size() + " methods for " + element.toString() );
+			for ( Element mymember : myMembers ) {
 
-                MetaMember result = mymember.asType().accept(new TypeVisitor(this), mymember);
-                if (result != null) {
-                    members.add(result);
-                } else {
-                    //pe.getMessager().printMessage(Kind.WARNING, "Not a valid JPA property", mymember);
-                }
-            }
+				MetaMember result = mymember.asType().accept( new TypeVisitor( this ), mymember );
+				if ( result != null ) {
+					members.add( result );
+				}
+				else {
+					//pe.getMessager().printMessage(Kind.WARNING, "Not a valid JPA property", mymember);
+				}
+			}
 
-        }
+		}
 
-        if (members.size() == 0) {
-            pe.getMessager().printMessage(Kind.WARNING, "No properties found on " + element, element);
-        }
-        return members;
-    }
+		if ( members.size() == 0 ) {
+			pe.getMessager().printMessage( Kind.WARNING, "No properties found on " + element, element );
+		}
+		return members;
+	}
 
 
-    //TODO: Find more efficient way to identify wether we should use fields or properties
-    private boolean useFields() {
-        List<? extends Element> myMembers = element.getEnclosedElements();
-        for (Element element : myMembers) {
-            List<? extends AnnotationMirror> entityAnnotations =
-                    pe.getElementUtils().getAllAnnotationMirrors(element);
+	//TODO: Find more efficient way to identify wether we should use fields or properties
+	private boolean useFields() {
+		List<? extends Element> myMembers = element.getEnclosedElements();
+		for ( Element element : myMembers ) {
+			List<? extends AnnotationMirror> entityAnnotations =
+					pe.getElementUtils().getAllAnnotationMirrors( element );
 
-            for (Iterator<?> iterator = entityAnnotations.iterator(); iterator
-                    .hasNext();) {
-                AnnotationMirror annotationMirror = (AnnotationMirror) iterator
-                        .next();
+			for ( Object entityAnnotation : entityAnnotations ) {
+				AnnotationMirror annotationMirror = ( AnnotationMirror ) entityAnnotation;
 
-                final String annotationType = annotationMirror.getAnnotationType().toString();
+				final String annotationType = annotationMirror.getAnnotationType().toString();
 
-                if (annotationType.equals(javax.persistence.Id.class.getName()) ||
-                        annotationType.equals(javax.persistence.EmbeddedId.class.getName())) {
-                    if (element.getKind() == ElementKind.FIELD) {
-                        return true;
-                    }
-                }
-            }
-        }
+				if ( annotationType.equals( Id.class.getName() ) ||
+						annotationType.equals( EmbeddedId.class.getName() ) ) {
+					if ( element.getKind() == ElementKind.FIELD ) {
+						return true;
+					}
+				}
+			}
+		}
 
-        return false;
-    }
+		return false;
+	}
 
 
-    static Map<String, String> COLLECTIONS = new HashMap<String, String>();
+	static Map<String, String> COLLECTIONS = new HashMap<String, String>();
 
-    static {
-        COLLECTIONS.put("java.util.Collection", "javax.persistence.metamodel.Collection");
-        COLLECTIONS.put("java.util.Set", "javax.persistence.metamodel.Set");
-        COLLECTIONS.put("java.util.List", "javax.persistence.metamodel.List");
-        COLLECTIONS.put("java.util.Map", "javax.persistence.metamodel.Map");
-    }
+	static {
+		COLLECTIONS.put( "java.util.Collection", "javax.persistence.metamodel.Collection" );
+		COLLECTIONS.put( "java.util.Set", "javax.persistence.metamodel.Set" );
+		COLLECTIONS.put( "java.util.List", "javax.persistence.metamodel.List" );
+		COLLECTIONS.put( "java.util.Map", "javax.persistence.metamodel.Map" );
+	}
 
-    class TypeVisitor extends SimpleTypeVisitor6<MetaMember, Element> {
+	class TypeVisitor extends SimpleTypeVisitor6<MetaMember, Element> {
 
-        MetaEntity parent;
+		MetaEntity parent;
 
-        TypeVisitor(MetaEntity parent) {
-            this.parent = parent;
-        }
+		TypeVisitor(MetaEntity parent) {
+			this.parent = parent;
+		}
 
-        @Override
-        protected MetaMember defaultAction(TypeMirror e, Element p) {
-            return super.defaultAction(e, p);
-        }
+		@Override
+		protected MetaMember defaultAction(TypeMirror e, Element p) {
+			return super.defaultAction( e, p );
+		}
 
-        @Override
-        public MetaMember visitPrimitive(PrimitiveType t, Element p) {
-            return new MetaAttribute(parent, p, TypeUtils.toTypeString(t));
-        }
+		@Override
+		public MetaMember visitPrimitive(PrimitiveType t, Element p) {
+			return new MetaAttribute( parent, p, TypeUtils.toTypeString( t ) );
+		}
 
 
-        @Override
-        public MetaMember visitDeclared(DeclaredType t, Element p) {
-            TypeElement e = (TypeElement) pe.getTypeUtils().asElement(t);
+		@Override
+		public MetaMember visitDeclared(DeclaredType t, Element p) {
+			TypeElement e = ( TypeElement ) pe.getTypeUtils().asElement( t );
 
-            String collection = COLLECTIONS.get(e.getQualifiedName().toString()); // WARNING: .toString() is necessary here since Name equals does not compare to String
-            if (collection != null) {
-                if (collection.equals("javax.persistence.metamodel.Map")) {
-                    return new MetaMap(parent, p, collection, getKeyType(t), getElementType(t));
-                } else {
-                    return new MetaCollection(parent, p, collection, getElementType(t));
-                }
-            } else {
-                return new MetaAttribute(parent, p, e.getQualifiedName().toString());
-            }
-        }
+			String collection = COLLECTIONS.get( e.getQualifiedName().toString() ); // WARNING: .toString() is necessary here since Name equals does not compare to String
+			if ( collection != null ) {
+				if ( collection.equals( "javax.persistence.metamodel.Map" ) ) {
+					return new MetaMap( parent, p, collection, getKeyType( t ), getElementType( t ) );
+				}
+				else {
+					return new MetaCollection( parent, p, collection, getElementType( t ) );
+				}
+			}
+			else {
+				return new MetaAttribute( parent, p, e.getQualifiedName().toString() );
+			}
+		}
 
 
-        @Override
-        public MetaMember visitExecutable(ExecutableType t, Element p) {
-            String string = p.getSimpleName().toString();
+		@Override
+		public MetaMember visitExecutable(ExecutableType t, Element p) {
+			String string = p.getSimpleName().toString();
 
-            // TODO: implement proper property get/is/boolean detection
-            if (string.startsWith("get") || string.startsWith("is")) {
-                TypeMirror returnType = t.getReturnType();
+			// TODO: implement proper property get/is/boolean detection
+			if ( string.startsWith( "get" ) || string.startsWith( "is" ) ) {
+				TypeMirror returnType = t.getReturnType();
 
-                return returnType.accept(this, p);
-            } else {
-                return null;
-            }
-        }
-    }
+				return returnType.accept( this, p );
+			}
+			else {
+				return null;
+			}
+		}
+	}
 
-    public String generateImports() {
-        return importContext.generateImports();
-    }
+	public String generateImports() {
+		return importContext.generateImports();
+	}
 
-    public String importType(String fqcn) {
-        return importContext.importType(fqcn);
-    }
+	public String importType(String fqcn) {
+		return importContext.importType( fqcn );
+	}
 
-    public String staticImport(String fqcn, String member) {
-        return importContext.staticImport(fqcn, member);
-    }
+	public String staticImport(String fqcn, String member) {
+		return importContext.staticImport( fqcn, member );
+	}
 
-    public String importType(Name qualifiedName) {
-        return importType(qualifiedName.toString());
-    }
+	public String importType(Name qualifiedName) {
+		return importType( qualifiedName.toString() );
+	}
 
-    private String getKeyType(DeclaredType t) {
-        System.out.println("key type" + t);
-        return t.getTypeArguments().get(0).toString();
-    }
+	private String getKeyType(DeclaredType t) {
+		return t.getTypeArguments().get( 0 ).toString();
+	}
 
 
-    private String getElementType(DeclaredType declaredType) {
-        if (declaredType.getTypeArguments().size() == 1) {
-            return declaredType.getTypeArguments().get(0).toString();
-        } else {
-            return declaredType.getTypeArguments().get(1).toString();
-        }
-    }
+	private String getElementType(DeclaredType declaredType) {
+		if ( declaredType.getTypeArguments().size() == 1 ) {
+			return declaredType.getTypeArguments().get( 0 ).toString();
+		}
+		else {
+			return declaredType.getTypeArguments().get( 1 ).toString();
+		}
+	}
 }


Property changes on: jpamodelgen/trunk/test
___________________________________________________________________
Name: svn:ignore
   + target


Modified: jpamodelgen/trunk/test/pom.xml
===================================================================
--- jpamodelgen/trunk/test/pom.xml	2009-07-07 13:05:37 UTC (rev 17012)
+++ jpamodelgen/trunk/test/pom.xml	2009-07-07 13:27:52 UTC (rev 17013)
@@ -38,18 +38,18 @@
         </resources>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
+            <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>process__annotations</id>
-                        <phase>generate-sources</phase>
+                        <id>process_annotations</id>
+                        <phase>process-resources</phase>
                         <configuration>
                             <tasks>
                                 <property name="target.dir" value="target/generated-sources"/>
                                 <mkdir dir="${target.dir}"/>
                                 <javac srcdir="src/main/java" destdir="${target.dir}" failonerror="false">
-                                    <compilerarg value="-proc:only"/>
+                                    <compilerarg value="-proc:only"/>                            
                                     <classpath>
                                         <path refid="maven.compile.classpath"/>
                                     </classpath>
@@ -89,7 +89,27 @@
                     </execution>
                 </executions>
             </plugin>
-
+            <!--plugin>
+                <groupId>org.bsc.maven</groupId>
+                <artifactId>maven-processor-plugin</artifactId>
+                <version>1.0-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <id>process</id>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <outputDirectory>target/generated-sources</outputDirectory>
+                            <processors>
+                                <processor>org.hibernate.jpa.metamodel.ap.JPAMetaModelEntityProcessor</processor>
+                            </processors>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies/>
+            </plugin-->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>

Modified: jpamodelgen/trunk/test/src/main/java/model/Order.java
===================================================================
--- jpamodelgen/trunk/test/src/main/java/model/Order.java	2009-07-07 13:05:37 UTC (rev 17012)
+++ jpamodelgen/trunk/test/src/main/java/model/Order.java	2009-07-07 13:27:52 UTC (rev 17013)
@@ -8,21 +8,21 @@
 import java.util.List;
 import java.util.Set;
 
- at Entity
+//@Entity
 public class Order {
 	
-	@Id
+	//@Id
 	long id;
 	
-	@OneToMany
+	//@OneToMany
 	Set<Item> items;
 	
 	boolean filled;
 	Date date;
 	
-	@OneToMany
+	//@OneToMany
 	List<String> notes;
 	
-	@ManyToOne
+	//@ManyToOne
 	Shop shop;
 }




More information about the hibernate-commits mailing list