METAGEN-69

This commit is contained in:
Igor Vaynberg 2011-07-18 11:53:44 -07:00 committed by Strong Liu
parent d155b70923
commit d5110ad8bc
36 changed files with 769 additions and 468 deletions

View File

@ -0,0 +1,136 @@
Hibernate JPA 2 Metamodel Generator Changelog
=============================================
1.2.0.CR1 (25.01.2012)
----------------------
** Bug
* [METAGEN-54] - XML-only field access type Set attribute not generated
* [METAGEN-55] - XML Only reference to Embeddable not written
* [METAGEN-57] - Attributes are not generated for EmbeddedId and collections when the mapping is defined in orm.xml mapping files
* [METAGEN-63] - Parameter for additional entity mapping files is ormXmlList but not ormXml
* [METAGEN-64] - Normal class in hierarchy breaks metamodel
* [METAGEN-65] - Example maven configuration is not working
* [METAGEN-66] - XML Based Mapping of Embeddets in Mapped-Superclass is ignored
* [METAGEN-67] - @MappedSuperclass without @Id or explicit access type don't inherit the right hierachy access type
* [METAGEN-68] - Some documented options are not recognized, namely, ormXml and addGeneratedAnnotation
* [METAGEN-69] - When the root class of hierarchy does not declare @Id default access type cannot be resolved
* [METAGEN-75] - Maven plugin and JPA XML configuration path problem
* [METAGEN-76] - hashCode is treated as a persistent attribute
* [METAGEN-77] - Inheritance of metamodel classes
** Improvement
* [METAGEN-50] - Suppress Warnings
* [METAGEN-52] - Remove dependency to JPA jar/classes
* [METAGEN-62] - SortedSet attributes are not included in metamodel
* [METAGEN-73] - Refactoring of the Generated annotation
* [METAGEN-78] - Support for Java 7
** New Feature
* [METAGEN-53] - Remove dependency of JPA API classes to simplify setup
** Task
* [METAGEN-79] - The Generated annotation should be added by default
1.1.1.Final (06.12.2010)
------------------------
** Bug
* [METAGEN-48] - Distribution bundle does not contain jar artifact
* [METAGEN-49] - JPAMetaModelEntityProcessor.createMetaModelClasses calls remove within foreach loop (causing a ConcurrentModificationException)
** Improvement
* [METAGEN-47] - Improve documentation on IntelliJ's configuration
1.1.0.Final (03.11.2010)
------------------------
** Bug
* [METAGEN-42] - The Hibernate Metamodel Generator project contains an outdated version of persistence_2_0.xsd
* [METAGEN-45] - Generated metamodel sources are not compiled in JDK 6
** Task
* [METAGEN-41] - Update pom and readme after move to GitHub
1.1.0.CR1 (15.10.2010)
------------------------
** Bug
* [METAGEN-28] - Custom UserType not supported in Hibernate's static MetaModel generator
* [METAGEN-29] - Embedded generic types not supported by metamodel generator
* [METAGEN-30] - @Target
* [METAGEN-35] - Generated meta model classes does not extend the super class' meta model.
* [METAGEN-36] - Attempt to recreate a file for type
* [METAGEN-37] - MappedSuperclass with type parameters result in uncompilable metamodels
* [METAGEN-38] - Attribute not generated for Blob type fields
* [METAGEN-40] - Generator does not work when classes are in the default package
* [METAGEN-43] - @Entity extending from @MappedSuperClass from another package does not generate META MODEL properly
** Task
* [METAGEN-7] - Try to find a way to be able to use @SupportedAnnotationTypes("javax.persistence.Entity") in JPAMetaModelEntityProcessor
* [METAGEN-31] - Update pom to use the new distributationManagement information
* [METAGEN-32] - Update the documentation regarding the usage of the maven-processor-plugin
* [METAGEN-33] - Metamodel is not generated with @Generated annotation
* [METAGEN-39] - Cleanup the pom
1.0.0.Final (10.03.2010)
------------------------
** Bug
* [METAGEN-27] - Review of documentation
** Task
* [METAGEN-26] - Update readme.txt
1.0.0-CR-1 (10.03.2010)
-----------------------
** Bug
* [METAGEN-17] - Consider XML for targetEntity
* [METAGEN-19] - Support @MapKeyClass overriding of the key class
* [METAGEN-22] - Handle map-key-class in xml configuration
* [METAGEN-23] - Handle @IdClass case
* [METAGEN-25] - Ensure that the default package name gets used in all cases where class names can be specified
** Improvement
* [METAGEN-13] - Only re-process xml files if thay have changed
** Task
* [METAGEN-4] - Document how to use the processor in different environments
* [METAGEN-9] - Implement mixed configuration (annotation + xml)
* [METAGEN-24] - Create a mechanism to check whether xml files have changed
1.0.0-Beta-3 (27.01.2010)
-------------------------
** Bug
* [METAGEN-14] - Compiling HEM tests raises an error level log
* [METAGEN-15] - When generics are used (outside of collection), the face value of the generic is used leading to compilation failure of the metaclass
* [METAGEN-16] - Code makes use of getAnnotation() instead of getAnnotationMirrors()
* [METAGEN-18] - Support @ElementCollection.targetClass + its XML equivalent
* [METAGEN-20] - Support collections defined as raw types and targetElement
** Improvement
* [METAGEN-10] - Output to the compiler are meaninglessly verbose
** Task
* [METAGEN-5] - Make the logging output configurable
* [METAGEN-6] - Move xml parsing code in JPAMetaModelEntityProcessor into a separate class
* [METAGEN-21] - Add @SupportedOptions annotation to annotation processor so that tools can query the processor for supported options
1.1.0-Beta-2 (12.12.2009)
-------------------------
** Task
* [METAGEN-11] - Upgrade JPA dependency to hibernate-jpa-2.0-api-1.0.0-CR-1
1.1.0-Beta-1 (01.12.2009)
-------------------------
** Bug
* [METAGEN-2] - Does not handle byte[] at all
* [METAGEN-8] - Processor does not handle @ElementCollection on a Map
** Task
* [METAGEN-3] - Refactor project structure

View File

@ -11,7 +11,7 @@
Latest stable version
-------------------
1.1.1.Final, 6.12.2010
1.2.0.CR1, 25.01.2012
System Requirements

View File

@ -60,6 +60,7 @@
<include>pom.xml</include>
<include>license.txt</include>
<include>readme.txt</include>
<include>changelog.txt</include>
<include>src/**</include>
</includes>
</fileSet>

View File

@ -337,7 +337,6 @@ public final class TypeUtils {
* {@code null} is returned.
*/
private static AccessType getAccessTypeInCaseElementIsRoot(TypeElement searchedElement, Context context) {
AccessType defaultAccessType = null;
List<? extends Element> myMembers = searchedElement.getEnclosedElements();
for ( Element subElement : myMembers ) {
List<? extends AnnotationMirror> entityAnnotations =
@ -345,12 +344,11 @@ public final class TypeUtils {
for ( Object entityAnnotation : entityAnnotations ) {
AnnotationMirror annotationMirror = (AnnotationMirror) entityAnnotation;
if ( isIdAnnotation( annotationMirror ) ) {
defaultAccessType = getAccessTypeOfIdAnnotation( subElement );
break;
return getAccessTypeOfIdAnnotation( subElement );
}
}
}
return defaultAccessType;
return null;
}
private static AccessType getAccessTypeOfIdAnnotation(Element element) {
@ -437,3 +435,4 @@ public final class TypeUtils {
}
}
}

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import javax.persistence.MappedSuperclass;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import java.sql.Date;
import javax.persistence.MappedSuperclass;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import javax.persistence.Entity;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import javax.persistence.Entity;
import javax.persistence.Id;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import org.testng.annotations.Test;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import javax.persistence.Entity;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.inheritance;
package org.hibernate.jpamodelgen.test.inheritance.basic;
import javax.persistence.Entity;
import javax.persistence.Id;

View File

@ -0,0 +1,53 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2012, 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.test.inheritance.deep;
import org.testng.annotations.Test;
import org.hibernate.jpamodelgen.test.util.CompilationTest;
import org.hibernate.jpamodelgen.test.util.TestForIssue;
import static org.hibernate.jpamodelgen.test.util.TestUtil.assertAttributeTypeInMetaModelFor;
import static org.hibernate.jpamodelgen.test.util.TestUtil.assertMetamodelClassGeneratedFor;
import static org.hibernate.jpamodelgen.test.util.TestUtil.assertPresenceOfFieldInMetamodelFor;
/**
* Tests a deep class hierarchy mixed with inheritance and a root class that
* does not declare an id
*
* @author Igor Vaynberg
*/
public class DeepInheritanceTest extends CompilationTest {
@Test
@TestForIssue(jiraKey = "METAGEN-69")
public void testDeepInheritance() throws Exception {
assertMetamodelClassGeneratedFor( Plane.class );
assertMetamodelClassGeneratedFor( JetPlane.class );
assertPresenceOfFieldInMetamodelFor( JetPlane.class, "jets" );
assertAttributeTypeInMetaModelFor(
JetPlane.class,
"jets",
Integer.class,
"jets should be defined in JetPlane_"
);
}
@Override
protected String getPackageNameOfCurrentTest() {
return DeepInheritanceTest.class.getPackage().getName();
}
}

View File

@ -0,0 +1,34 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2012, 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.test.inheritance.deep;
import javax.persistence.Basic;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
/**
* A {@link Plane} subclass entity that defines extra attributes
*
* @author Igor Vaynberg
*/
@Entity
@DiscriminatorValue("JetPlane")
public class JetPlane extends Plane {
@Basic(optional = false)
private Integer jets;
}

View File

@ -0,0 +1,36 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2012, 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.test.inheritance.deep;
import java.util.Date;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
/**
* A mapped super class that does not define an id attribute.
*
* @author Igor Vaynberg
*/
@MappedSuperclass
public abstract class PersistenceBase {
Date created;
@PrePersist
void prePersist() {
created = new Date();
}
}

View File

@ -0,0 +1,42 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2012, 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.test.inheritance.deep;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
/**
* A base entity that defines an id attribute. Default access level should be
* resolved from this class instead of continuing to {@link PersistenceBase}.
*
* @author Igor Vaynberg
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "planetype", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("Plane")
public class Plane extends PersistenceBase {
@GeneratedValue
@Id
private Long id;
}

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
import javax.persistence.Access;
import javax.persistence.AccessType;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
import java.util.Date;
import javax.persistence.Access;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
public class NormalExtendsEntity extends BaseEntity {
public String doSomething(String s) {

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
public class NormalExtendsMapped extends MappedBase {
public String doSomething(String s) {

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
import javax.persistence.Access;
import javax.persistence.AccessType;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
import javax.persistence.Access;
import javax.persistence.AccessType;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.unmappedclassinhierarchy;
package org.hibernate.jpamodelgen.test.inheritance.unmappedclassinhierarchy;
import org.testng.annotations.Test;

View File

@ -16,7 +16,7 @@
*/
// $Id:$
package org.hibernate.jpamodelgen.test.embeddablemappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.embeddablemappedsuperclass;
import javax.persistence.Embeddable;
import javax.persistence.MappedSuperclass;

View File

@ -16,7 +16,7 @@
*/
// $Id: BlobTest.java 20721 2010-09-27 12:40:10Z hardy.ferentschik $
package org.hibernate.jpamodelgen.test.embeddablemappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.embeddablemappedsuperclass;
import org.testng.annotations.Test;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.mappedsuperclasswithoutid;
package org.hibernate.jpamodelgen.test.mappedsuperclass.mappedsuperclasswithoutid;
import javax.persistence.Entity;
import javax.persistence.Id;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.mappedsuperclasswithoutid;
package org.hibernate.jpamodelgen.test.mappedsuperclass.mappedsuperclasswithoutid;
import org.testng.annotations.Test;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.mappedsuperclasswithoutid;
package org.hibernate.jpamodelgen.test.mappedsuperclass.mappedsuperclasswithoutid;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.mappedsuperclasswithoutid;
package org.hibernate.jpamodelgen.test.mappedsuperclass.mappedsuperclasswithoutid;
import javax.persistence.Entity;
import javax.persistence.Id;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import java.util.Set;
import javax.persistence.Id;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import javax.persistence.Entity;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import javax.persistence.MappedSuperclass;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import javax.persistence.Entity;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import javax.persistence.MappedSuperclass;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import org.testng.annotations.Test;

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.hibernate.jpamodelgen.test.typedmappedsuperclass;
package org.hibernate.jpamodelgen.test.mappedsuperclass.typedmappedsuperclass;
import javax.persistence.Entity;