import java.security.NoSuchAlgorithmException;
import java.time.ZonedDateTime;
import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import org.hibernate.boot.registry.classloading.spi.ClassLoadingException;
import org.hibernate.boot.registry.selector.spi.StrategySelector;
import org.hibernate.boot.spi.MetadataImplementor;
-import org.hibernate.cfg.AvailableSettings;
import static org.hibernate.cfg.AvailableSettings.DIALECT;
import static org.hibernate.cfg.AvailableSettings.DRIVER;
import static org.hibernate.cfg.AvailableSettings.FORMAT_SQL;
import static org.hibernate.cfg.AvailableSettings.SHOW_SQL;
import static org.hibernate.cfg.AvailableSettings.USER;
import static org.hibernate.cfg.AvailableSettings.URL;
-import org.hibernate.engine.config.spi.ConfigurationService;
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
import org.hibernate.internal.util.config.ConfigurationException;
import org.hibernate.jpa.boot.internal.ParsedPersistenceXmlDescriptor;
import org.hibernate.jpa.boot.internal.PersistenceXmlParser;
-import org.hibernate.tool.schema.TargetType;
import org.hibernate.tool.schema.internal.ExceptionHandlerCollectingImpl;
-import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToFile;
-import org.hibernate.tool.schema.spi.ExecutionOptions;
-import org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator;
-import org.hibernate.tool.schema.spi.ScriptTargetOutput;
-import org.hibernate.tool.schema.spi.TargetDescriptor;
import org.scannotation.AnnotationDB;
);
}
- /** Prepare the generation of the SQL */
- Map settings = new HashMap();
- settings.putAll(
- serviceRegistry
- .getService(ConfigurationService.class)
- .getSettings()
- );
- ExceptionHandlerCollectingImpl handler =
- new ExceptionHandlerCollectingImpl();
- ExecutionOptions options =
- SchemaManagementToolCoordinator
- .buildExecutionOptions(settings, handler);
- final EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.SCRIPT);
- if (execute)
- targetTypes.add(TargetType.DATABASE);
- TargetDescriptor target = new TargetDescriptor()
- {
- @Override
- public EnumSet<TargetType> getTargetTypes()
- {
- return targetTypes;
- }
-
- @Override
- public ScriptTargetOutput getScriptTargetOutput()
- {
- String charset =
- (String)
- serviceRegistry
- .getService(ConfigurationService.class)
- .getSettings()
- .get(AvailableSettings.HBM2DDL_CHARSET_NAME);
- return new ScriptTargetOutputToFile(output, charset);
- }
- };
-
/**
* Change class-loader of current thread.
* This is necessary, because still not all parts of Hibernate 5 use
try
{
thread.setContextClassLoader(classLoader);
- build((MetadataImplementor)metadataBuilder.build(), options, target);
+ ExceptionHandlerCollectingImpl handler =
+ build((MetadataImplementor)metadataBuilder.build(), output);
+ if (handler.getExceptions().size() > 0)
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Hibernate failed:");
+ for (Exception e : handler.getExceptions())
+ {
+ builder.append("\n * ");
+ builder.append(e.getMessage());
+ }
+ String error = builder.toString();
+ getLog().error(error);
+ throw new MojoFailureException(error);
+ }
}
finally
{
thread.setContextClassLoader(contextClassLoader);
- for (Exception e : handler.getExceptions())
- getLog().error(e.getMessage());
/** Track, the content of the generated script */
checkOutputFile(output, tracker);
}
}
- abstract void build(
+ abstract ExceptionHandlerCollectingImpl build(
MetadataImplementor metadata,
- ExecutionOptions options,
- TargetDescriptor target
+ File file
)
throws
MojoFailureException,