[hibernate-commits] Hibernate SVN: r17063 - in jpamodelgen/trunk: generator/src/main/java/org/hibernate/jpa/metamodel/ap/xml and 2 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Fri Jul 10 06:08:51 EDT 2009
Author: hardy.ferentschik
Date: 2009-07-10 06:08:50 -0400 (Fri, 10 Jul 2009)
New Revision: 17063
Added:
jpamodelgen/trunk/test/src/main/resources/META-INF/dummy.xml
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/xml/XmlMetaEntity.java
jpamodelgen/trunk/test/src/main/resources/META-INF/persistence.xml
jpamodelgen/trunk/test/src/test/java/tests/XmlMappingTest.java
Log:
added some error handling
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-10 09:30:57 UTC (rev 17062)
+++ jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/JPAMetaModelEntityProcessor.java 2009-07-10 10:08:50 UTC (rev 17063)
@@ -162,9 +162,17 @@
Collection<Entity> entities = mappings.getEntity();
for ( Entity entity : entities ) {
String fullyQualifiedClassName = packageName + "." + entity.getClazz();
- Elements utils = processingEnv.getElementUtils();
+
+ if ( !xmlMappedTypeExists( fullyQualifiedClassName ) ) {
+ processingEnv.getMessager().printMessage(
+ Diagnostic.Kind.WARNING,
+ fullyQualifiedClassName + " is mapped in xml, but class does not exists. Skipping meta model generation."
+ );
+ continue;
+ }
+
XmlMetaEntity metaEntity = new XmlMetaEntity(
- entity, packageName, utils.getTypeElement( fullyQualifiedClassName )
+ entity, packageName, getXmlMappedType( fullyQualifiedClassName )
);
if ( context.getMetaEntitiesToProcess().containsKey( fullyQualifiedClassName ) ) {
@@ -177,14 +185,32 @@
}
}
+ private boolean xmlMappedTypeExists(String fullyQualifiedClassName) {
+ Elements utils = processingEnv.getElementUtils();
+ return utils.getTypeElement( fullyQualifiedClassName ) != null;
+ }
+
+ private TypeElement getXmlMappedType(String fullyQualifiedClassName) {
+ Elements utils = processingEnv.getElementUtils();
+ return utils.getTypeElement( fullyQualifiedClassName );
+ }
+
private void parseEmbeddable(EntityMappings mappings) {
String packageName = mappings.getPackage();
Collection<org.hibernate.jpa.metamodel.xml.jaxb.Embeddable> embeddables = mappings.getEmbeddable();
for ( org.hibernate.jpa.metamodel.xml.jaxb.Embeddable embeddable : embeddables ) {
String fullyQualifiedClassName = packageName + "." + embeddable.getClazz();
- Elements utils = processingEnv.getElementUtils();
+
+ if ( !xmlMappedTypeExists( fullyQualifiedClassName ) ) {
+ processingEnv.getMessager().printMessage(
+ Diagnostic.Kind.WARNING,
+ fullyQualifiedClassName + " is mapped in xml, but class does not exists. Skipping meta model generation."
+ );
+ continue;
+ }
+
XmlMetaEntity metaEntity = new XmlMetaEntity(
- embeddable, packageName, utils.getTypeElement( fullyQualifiedClassName )
+ embeddable, packageName, getXmlMappedType( fullyQualifiedClassName )
);
if ( context.getMetaSuperclassAndEmbeddableToProcess().containsKey( fullyQualifiedClassName ) ) {
@@ -202,9 +228,17 @@
Collection<org.hibernate.jpa.metamodel.xml.jaxb.MappedSuperclass> mappedSuperClasses = mappings.getMappedSuperclass();
for ( org.hibernate.jpa.metamodel.xml.jaxb.MappedSuperclass mappedSuperClass : mappedSuperClasses ) {
String fullyQualifiedClassName = packageName + "." + mappedSuperClass.getClazz();
- Elements utils = processingEnv.getElementUtils();
+
+ if ( !xmlMappedTypeExists( fullyQualifiedClassName ) ) {
+ processingEnv.getMessager().printMessage(
+ Diagnostic.Kind.WARNING,
+ fullyQualifiedClassName + " is mapped in xml, but class does not exists. Skipping meta model generation."
+ );
+ continue;
+ }
+
XmlMetaEntity metaEntity = new XmlMetaEntity(
- mappedSuperClass, packageName, utils.getTypeElement( fullyQualifiedClassName )
+ mappedSuperClass, packageName, getXmlMappedType( fullyQualifiedClassName )
);
if ( context.getMetaSuperclassAndEmbeddableToProcess().containsKey( fullyQualifiedClassName ) ) {
Modified: jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/xml/XmlMetaEntity.java
===================================================================
--- jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/xml/XmlMetaEntity.java 2009-07-10 09:30:57 UTC (rev 17062)
+++ jpamodelgen/trunk/generator/src/main/java/org/hibernate/jpa/metamodel/ap/xml/XmlMetaEntity.java 2009-07-10 10:08:50 UTC (rev 17063)
@@ -171,7 +171,6 @@
return types;
}
- // TODO - so far only prototype. Only tested for the Order orm.xml
private String getType(String propertyName) {
String typeName = null;
for ( Element elem : element.getEnclosedElements() ) {
Copied: jpamodelgen/trunk/test/src/main/resources/META-INF/dummy.xml (from rev 17062, jpamodelgen/trunk/test/src/main/resources/META-INF/order.xml)
===================================================================
--- jpamodelgen/trunk/test/src/main/resources/META-INF/dummy.xml (rev 0)
+++ jpamodelgen/trunk/test/src/main/resources/META-INF/dummy.xml 2009-07-10 10:08:50 UTC (rev 17063)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
+ version="2.0"
+ >
+ <package>model</package>
+ <entity class="Dummy" access="FIELD" metadata-complete="true"> <!-- Class does not exist -->
+ <attributes>
+ <id name="id"/>
+ </attributes>
+ </entity>
+</entity-mappings>
Modified: jpamodelgen/trunk/test/src/main/resources/META-INF/persistence.xml
===================================================================
--- jpamodelgen/trunk/test/src/main/resources/META-INF/persistence.xml 2009-07-10 09:30:57 UTC (rev 17062)
+++ jpamodelgen/trunk/test/src/main/resources/META-INF/persistence.xml 2009-07-10 10:08:50 UTC (rev 17063)
@@ -5,6 +5,7 @@
<persistence-unit name="annotation-processor" transaction-type="JTA">
<description>Test persistence unit</description>
<mapping-file>/META-INF/order.xml</mapping-file>
+ <mapping-file>/META-INF/dummy.xml</mapping-file>
<mapping-file>/model/xmlmapped/address.xml</mapping-file>
<mapping-file>/model/xmlmapped/building.xml</mapping-file>
<mapping-file>/model/xmlmapped/mammal.xml</mapping-file>
Modified: jpamodelgen/trunk/test/src/test/java/tests/XmlMappingTest.java
===================================================================
--- jpamodelgen/trunk/test/src/test/java/tests/XmlMappingTest.java 2009-07-10 09:30:57 UTC (rev 17062)
+++ jpamodelgen/trunk/test/src/test/java/tests/XmlMappingTest.java 2009-07-10 10:08:50 UTC (rev 17063)
@@ -30,4 +30,9 @@
assertTrue( mammal.getSuperclass().equals( being ) );
}
+
+ @Test(expectedExceptions = ClassNotFoundException.class)
+ public void testNonExistentMappedClassesGetIgnored() throws Exception {
+ Class.forName( "model.Dummy_" );
+ }
}
\ No newline at end of file
More information about the hibernate-commits
mailing list