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());
if (handler.getExceptions().size() > 0)
{
StringBuilder builder = new StringBuilder();
}
- abstract void build(
- MetadataImplementor metadata,
- ExecutionOptions options,
- TargetDescriptor target
- )
+ abstract ExceptionHandlerCollectingImpl build(MetadataImplementor metadata)
throws
MojoFailureException,
MojoExecutionException;
* limitations under the License.
*/
+import java.util.EnumSet;
+import java.util.HashMap;
import java.util.Map;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.hibernate.boot.spi.MetadataImplementor;
+import org.hibernate.cfg.AvailableSettings;
+import org.hibernate.engine.config.spi.ConfigurationService;
import org.hibernate.service.ServiceRegistry;
+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.SchemaManagementTool;
+import org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator;
+import org.hibernate.tool.schema.spi.ScriptTargetOutput;
import org.hibernate.tool.schema.spi.TargetDescriptor;
@Override
- void build(
- MetadataImplementor metadata,
- ExecutionOptions options,
- TargetDescriptor target
- )
+ ExceptionHandlerCollectingImpl build(MetadataImplementor metadata)
throws
MojoExecutionException,
MojoFailureException
{
- ServiceRegistry service =
+ final ServiceRegistry service =
metadata.getMetadataBuildingOptions().getServiceRegistry();
SchemaManagementTool tool = service.getService(SchemaManagementTool.class);
+ 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) service
+ .getService(ConfigurationService.class)
+ .getSettings()
+ .get(AvailableSettings.HBM2DDL_CHARSET_NAME);
+ return new ScriptTargetOutputToFile(output, charset);
+ }
+ };
+
+ ExecutionOptions options =
+ SchemaManagementToolCoordinator.buildExecutionOptions(
+ service
+ .getService(ConfigurationService.class)
+ .getSettings(),
+ new ExceptionHandlerCollectingImpl()
+ );
+
Map config = options.getConfigurationValues();
tool.getSchemaMigrator(config).doMigration(metadata, options, target);
--- /dev/null
+package de.juplo.plugins.hibernate;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Map;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.hibernate.boot.spi.MetadataImplementor;
+import org.hibernate.service.ServiceRegistry;
+import org.hibernate.tool.schema.internal.ExceptionHandlerCollectingImpl;
+import org.hibernate.tool.schema.spi.ExecutionOptions;
+import org.hibernate.tool.schema.spi.SchemaManagementTool;
+import org.hibernate.tool.schema.spi.TargetDescriptor;
+
+
+/**
+ * Validate a database-schema against the configured mappings.
+ *
+ * @goal validate
+ * @phase process-classes
+ * @threadSafe
+ * @requiresDependencyResolution runtime
+ */
+public class ValidateMojo extends AbstractSchemaMojo
+{
+ @Override
+ public final void execute()
+ throws
+ MojoFailureException,
+ MojoExecutionException
+ {
+ super.execute(null);
+ }
+
+
+ @Override
+ ExceptionHandlerCollectingImpl build(MetadataImplementor metadata)
+ throws
+ MojoExecutionException,
+ MojoFailureException
+ {
+ ServiceRegistry service =
+ metadata.getMetadataBuildingOptions().getServiceRegistry();
+ SchemaManagementTool tool = service.getService(SchemaManagementTool.class);
+
+ Map config = options.getConfigurationValues();
+
+ tool.getSchemaMigrator(config).doMigration(metadata, options, target);
+ }
+}