Fixed NPE when using nested classes in entities with @EmbeddedId/@Embeddable
[hibernate4-maven-plugin] / src / main / java / de / juplo / plugins / hibernate4 / Hbm2DdlMojo.java
index e67a078..313c127 100644 (file)
@@ -386,9 +386,11 @@ public class Hbm2DdlMojo extends AbstractMojo
       {
         Class<?> annotatedClass = classLoader.loadClass(name);
         classes.add(annotatedClass);
+        String resourceName = annotatedClass.getName();
+        resourceName = resourceName.substring(resourceName.lastIndexOf(".") + 1, resourceName.length()) + ".class";
         InputStream is =
             annotatedClass
-                .getResourceAsStream(annotatedClass.getSimpleName() + ".class");
+                .getResourceAsStream(resourceName);
         byte[] buffer = new byte[1024*4]; // copy data in 4MB-chunks
         int i;
         while((i = is.read(buffer)) > -1)
@@ -587,12 +589,17 @@ public class Hbm2DdlMojo extends AbstractMojo
         MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
         for (String filename : hibernateMapping.split("[\\s,]+"))
         {
-          File file = null;
-          for (Resource resource : project.getResources())
+          // First try the filename as absolute/relative path
+          File file = new File(filename);
+          if (!file.exists())
           {
-            file = new File(resource.getDirectory() + File.separator + filename);
-            if (file.exists())
-              break;
+            // If the file was not found, search for it in the resource-directories
+            for (Resource resource : project.getResources())
+            {
+              file = new File(resource.getDirectory() + File.separator + filename);
+              if (file.exists())
+                break;
+            }
           }
           if (file != null && file.exists())
           {