LoadedConfig config = loadConfig(configLoader);
if (config != null)
properties.putAll(config.getConfigurationValues());
- ParsedPersistenceXmlDescriptor unit =
- loadPersistenceUnit(classLoaderService, properties);
+ ParsedPersistenceXmlDescriptor unit = loadPersistenceUnit(properties);
if (unit != null)
properties.putAll(unit.getProperties());
{
builder.append("\n * ");
builder.append(e.getMessage());
+ AbstractSchemaMojo.printStrackTrace(builder, e);
+ builder.append("\n");
}
String error = builder.toString();
getLog().error(error);
}
private ParsedPersistenceXmlDescriptor loadPersistenceUnit(
- ClassLoaderService classLoaderService,
Properties properties
)
throws
MojoFailureException
{
- PersistenceXmlParser parser =
- new PersistenceXmlParser(
- classLoaderService,
- PersistenceUnitTransactionType.RESOURCE_LOCAL
- );
-
- Map<String, ParsedPersistenceXmlDescriptor> units =
- parser.doResolve(properties);
+ List<ParsedPersistenceXmlDescriptor> units =
+ PersistenceXmlParser.locatePersistenceUnits(properties);
if (persistenceUnit == null)
{
- Iterator<String> names = units.keySet().iterator();
- if (!names.hasNext())
+ if (units.isEmpty())
{
getLog().info("Found no META-INF/persistence.xml.");
return null;
}
- String name = names.next();
- if (!names.hasNext())
+ if (units.size() == 1)
{
- getLog().info("Using persistence-unit " + name);
- return units.get(name);
+ ParsedPersistenceXmlDescriptor descriptor = units.get(0);
+ getLog().info("Using persistence-unit " + descriptor.getName());
+ return descriptor;
}
StringBuilder builder = new StringBuilder();
builder.append("No name provided and multiple persistence units found: ");
- builder.append(name);
- while(names.hasNext())
+ Iterator<ParsedPersistenceXmlDescriptor> it = units.iterator();
+ while(it.hasNext())
{
- builder.append(", ");
- builder.append(names.next());
+ builder.append(it.next().getName());
+ if (it.hasNext())
+ builder.append(", ");
}
builder.append('.');
throw new MojoFailureException(builder.toString());
}
- if (units.containsKey(persistenceUnit))
+ Iterator<ParsedPersistenceXmlDescriptor> it = units.iterator();
+ while(it.hasNext())
{
- getLog().info("Using configured persistence-unit " + persistenceUnit);
- return units.get(persistenceUnit);
+ ParsedPersistenceXmlDescriptor descriptor = it.next();
+ if (descriptor.getName().equals(persistenceUnit))
+ {
+ getLog().info("Using configured persistence-unit " + persistenceUnit);
+ return descriptor;
+ }
}
throw new MojoFailureException("Could not find persistence-unit " + persistenceUnit);
}
+
+
+ public static void printStrackTrace(StringBuilder builder, Throwable t)
+ {
+ while (t != null)
+ {
+ builder.append("\n\tCause: ");
+ builder.append(t.getMessage() == null ? "" : t.getMessage().replaceAll("\\s+", " "));
+ for (StackTraceElement trace : t.getStackTrace())
+ {
+ builder.append("\n\t");
+ builder.append(trace.getClassName());
+ builder.append(".");
+ builder.append(trace.getMethodName());
+ builder.append("():");
+ builder.append(trace.getLineNumber());
+ }
+ t = t.getCause();
+ }
+ }
}