Upgraded Hibernate from 5.2.4.Final to 5.2.18.Final
[hibernate4-maven-plugin] / src / main / java / de / juplo / plugins / hibernate / AbstractSchemaMojo.java
index 41c55de..72ec9d4 100644 (file)
@@ -27,7 +27,6 @@ import java.util.regex.Pattern;
 import javax.persistence.Embeddable;
 import javax.persistence.Entity;
 import javax.persistence.MappedSuperclass;
-import javax.persistence.spi.PersistenceUnitTransactionType;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.AbstractMojo;
@@ -496,7 +495,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
 
       /** Loading and merging configuration from persistence-unit(s) */
       ParsedPersistenceXmlDescriptor unit =
-          loadPersistenceUnit(classLoaderService, properties);
+          loadPersistenceUnit(classLoader, properties);
       if (unit != null)
         properties.putAll(unit.getProperties());
 
@@ -1381,20 +1380,36 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
   }
 
   private ParsedPersistenceXmlDescriptor loadPersistenceUnit(
-      ClassLoaderService classLoaderService,
+      ClassLoader classLoader,
       Properties properties
       )
       throws
         MojoFailureException
   {
-    PersistenceXmlParser parser =
-        new PersistenceXmlParser(
-            classLoaderService,
-            PersistenceUnitTransactionType.RESOURCE_LOCAL
-             );
+    Map<String, ? extends Object> settings =
+        Collections.singletonMap(
+            AvailableSettings.CLASSLOADERS,
+            Collections.singletonList(classLoader)
+            );
+    // Find all available persistent unit descriptors
+    List<ParsedPersistenceXmlDescriptor> descriptors =
+        PersistenceXmlParser.locatePersistenceUnits(settings);
 
+    // Find all persistent units in the located descriptors
     Map<String, ParsedPersistenceXmlDescriptor> units =
-        parser.doResolve(properties);
+        new HashMap<String, ParsedPersistenceXmlDescriptor>();
+    for (ParsedPersistenceXmlDescriptor descriptor : descriptors)
+    {
+      String unit = descriptor.getName();
+      if (units.containsKey(unit))
+        getLog().warn(
+            "Persistence unit " + unit +
+            " from " + descriptor.getPersistenceUnitRootUrl() +
+            " overwrites unit with the same name from " +
+            units.get(unit).getPersistenceUnitRootUrl()
+            );
+      units.put(unit, descriptor);
+    }
 
     if (persistenceUnit == null)
     {