Repository: juddi
Updated Branches:
  refs/heads/feature/JUDDI-985 9c3336041 -> 79f0ab8c9


JUDDI-985 updating the ddl generator after the hibernate update


Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/79f0ab8c
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/79f0ab8c
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/79f0ab8c

Branch: refs/heads/feature/JUDDI-985
Commit: 79f0ab8c9841367e546251ac606f7335bed92529
Parents: 9c33360
Author: Alex O'Ree <[email protected]>
Authored: Sun Oct 22 20:34:42 2017 -0400
Committer: Alex O'Ree <[email protected]>
Committed: Sun Oct 22 20:34:42 2017 -0400

----------------------------------------------------------------------
 juddi-ddl-generator/pom.xml                     | 187 +++++++++----------
 .../org/apache/juddi/ddl/generator/App.java     |  73 +++++---
 2 files changed, 141 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/79f0ab8c/juddi-ddl-generator/pom.xml
----------------------------------------------------------------------
diff --git a/juddi-ddl-generator/pom.xml b/juddi-ddl-generator/pom.xml
index 7d80605..53c3acf 100644
--- a/juddi-ddl-generator/pom.xml
+++ b/juddi-ddl-generator/pom.xml
@@ -1,102 +1,101 @@
 <?xml version="1.0"?>
 <!--
- * Copyright 2001-2009 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.
- *
- */ -->
+* Copyright 2001-2009 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.
+*
+*/ -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-       <modelVersion>4.0.0</modelVersion>
-       <parent>
-               <groupId>org.apache.juddi</groupId>
-               <artifactId>juddi-parent</artifactId>
-               <version>3.3.5-SNAPSHOT</version>
-       </parent>
-       <artifactId>juddi-ddl-generator</artifactId>
-       <name>juddi-ddl-generator</name>
-       <url>http://maven.apache.org</url>
-       <properties>
-               
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-       </properties>
-       <dependencies>
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.juddi</groupId>
-                       <artifactId>juddi-core</artifactId>
-                       <version>3.3.5-SNAPSHOT</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.derby</groupId>
-                       <artifactId>derby</artifactId>
-               </dependency>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.juddi</groupId>
+        <artifactId>juddi-parent</artifactId>
+        <version>3.3.5-SNAPSHOT</version>
+    </parent>
+    <artifactId>juddi-ddl-generator</artifactId>
+    <name>juddi-ddl-generator</name>
+    <url>http://maven.apache.org</url>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.juddi</groupId>
+            <artifactId>juddi-core</artifactId>
+            <version>3.3.5-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+        </dependency>
 
-               <dependency>
-                       <groupId>mysql</groupId>
-                       <artifactId>mysql-connector-java</artifactId>
-               </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        
+       
 
-               <dependency>
-                       <groupId>org.postgresql</groupId>
-                       <artifactId>postgresql</artifactId>
-               </dependency>
 
-       </dependencies> 
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.codehaus.mojo</groupId>
-                               <artifactId>exec-maven-plugin</artifactId>
-                               <executions>
-                                       <execution>
-                                               <id>my-execution</id>
-                                               <phase>compile</phase>
-                                               <goals>
-                                                       <goal>java</goal>
-                                               </goals>
-                                       </execution>
-                               </executions>
-                               <configuration>
-                                       
<mainClass>org.apache.juddi.ddl.generator.App</mainClass>
-                                        <arguments>
-                                               
<argument>juddi-core/target/classes/org/apache/juddi/model/</argument>
-                                         </arguments>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                          <groupId>org.apache.maven.plugins</groupId>
-                          <artifactId>maven-antrun-plugin</artifactId>
-                          <executions>
-                                 <execution>
-                                 <id>copy-swf-files</id>
-                                 <phase>test</phase>
-                                 <goals>
-                                                       <goal>run</goal>
-                                               </goals>
-                                 <configuration>
-                                        <target name="copy ddl to doc folder"> 
     
-                                               <copy todir="../docs/db/ddl/">
-                                                       <fileset 
dir="${project.build.directory}/../" includes="*.ddl">
+    </dependencies>    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>my-execution</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <mainClass>org.apache.juddi.ddl.generator.App</mainClass>
+                    <arguments>
+                        
<argument>juddi-core/target/classes/org/apache/juddi/model/</argument>
+                    </arguments>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-swf-files</id>
+                        <phase>test</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target name="copy ddl to doc folder">      
+                                <copy todir="../docs/db/ddl/">
+                                    <fileset 
dir="${project.build.directory}/../" includes="*.ddl">
                                                                
-                                                       </fileset></copy>
-                                        </target>
-                                 </configuration>                       
-                          </execution> 
-                        </executions>
-                       </plugin>
-               </plugins>
-       </build>
+                                    </fileset>
+                                </copy>
+                            </target>
+                        </configuration>                       
+                    </execution> 
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/juddi/blob/79f0ab8c/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
----------------------------------------------------------------------
diff --git 
a/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java 
b/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
index 3db85b9..33e922e 100644
--- a/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
+++ b/juddi-ddl-generator/src/main/java/org/apache/juddi/ddl/generator/App.java
@@ -1,4 +1,5 @@
 package org.apache.juddi.ddl.generator;
+
 /*
  * Copyright 2001-2008 The Apache Software Foundation.
  * 
@@ -16,46 +17,55 @@ package org.apache.juddi.ddl.generator;
  */
 import java.io.File;
 import java.io.IOException;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.EnumSet;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
-import org.hibernate.cfg.AnnotationConfiguration;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistry;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 import org.hibernate.tool.hbm2ddl.SchemaExport;
+import org.hibernate.tool.hbm2ddl.SchemaExport.Action;
+import org.hibernate.tool.schema.TargetType;
 
 /**
- * Source: 
http://jandrewthompson.blogspot.com/2009/10/how-to-generate-ddl-scripts-from.html
+ * Source:
+ * 
http://jandrewthompson.blogspot.com/2009/10/how-to-generate-ddl-scripts-from.html
+ * https://stackoverflow.com/a/33761464/1203182
+ * https://stackoverflow.com/a/41894432/1203182
+ * 
  * @author john.thompson
+ * @author Alex O'Ree
  *
  */
 public class App {
 
-        private AnnotationConfiguration cfg;
+        private List<Class> jpaClasses = new ArrayList<>();
 
         public App(String packageName) throws Exception {
-                cfg = new AnnotationConfiguration();
-                cfg.setProperty("hibernate.hbm2ddl.auto", "create");
+
                 List<Class> classesForPackage = 
getClassesForPackage(org.apache.juddi.model.Address.class.getPackage());
                 for (Class<Object> clazz : classesForPackage) {
-                        cfg.addAnnotatedClass(clazz);
+
+                        jpaClasses.add(clazz);
                 }
         }
-        
-         public App(String dir,String packageName) throws Exception {
-                cfg = new AnnotationConfiguration();
-                cfg.setProperty("hibernate.hbm2ddl.auto", "create");
+
+        public App(String dir, String packageName) throws Exception {
+
                 List<Class> c = new ArrayList<Class>();
-                processDirectory(new File("../" + dir), packageName,c);
-                
-                processDirectory(new File(dir), packageName,c);
+                processDirectory(new File("../" + dir), packageName, c);
+
+                processDirectory(new File(dir), packageName, c);
                 for (Class<Object> clazz : c) {
-                        cfg.addAnnotatedClass(clazz);
+
+                        jpaClasses.add(clazz);
                 }
-                
-                
+
         }
 
         /**
@@ -64,12 +74,24 @@ public class App {
          * @param dbDialect to use
          */
         private void generate(Dialect dialect) {
-                cfg.setProperty("hibernate.dialect", 
dialect.getDialectClass());
 
-                SchemaExport export = new SchemaExport(cfg);
+                StandardServiceRegistryBuilder ssrb = new 
StandardServiceRegistryBuilder();
+                ssrb.applySetting("hibernate.dialect", 
dialect.getDialectClass());
+                StandardServiceRegistry standardServiceRegistry = ssrb.build();
+
+                MetadataSources metadataSources = new 
MetadataSources(standardServiceRegistry);
+                for (Class clzz : jpaClasses) {
+                        metadataSources.addAnnotatedClass(clzz);
+                }
+
+                Metadata metadata = metadataSources.buildMetadata();
+
+                SchemaExport export = new SchemaExport();
+
                 export.setDelimiter(";");
                 export.setOutputFile(dialect.name().toLowerCase() + ".ddl");
-                export.execute(true, false, false, true);
+                //export.execute(true, false, false, true);
+                export.execute(EnumSet.of(TargetType.SCRIPT), Action.BOTH, 
metadata);
         }
 
         /**
@@ -78,7 +100,7 @@ public class App {
         public static void main(String[] args) throws Exception {
                 App gen = null;
                 if (args != null && args.length == 1) {
-                        gen = new App(args[0],"org.apache.juddi.model");
+                        gen = new App(args[0], "org.apache.juddi.model");
                 } else {
                         gen = new App("org.apache.juddi.model");
                 }
@@ -99,11 +121,12 @@ public class App {
                 }
         }
 
-        private static void processDirectory(File directory, String 
pkgname,List<Class> classes) {
+        private static void processDirectory(File directory, String pkgname, 
List<Class> classes) {
                 log("Reading Directory '" + directory + "'");
                 // Get the list of the files contained in the package
-                if (!directory.exists())
+                if (!directory.exists()) {
                         return;
+                }
                 String[] files = directory.list();
                 for (int i = 0; i < files.length; i++) {
                         String fileName = files[i];
@@ -206,7 +229,7 @@ public class App {
                                 directory = new 
File(resource.toURI().getPath());
                         } catch (NullPointerException x) {
                                 throw new ClassNotFoundException(packageName + 
" (" + directory
-                                     + ") does not appear to be a valid 
package");
+                                        + ") does not appear to be a valid 
package");
                         }
                         if (directory.exists()) {
                                 String[] files = directory.list();
@@ -214,7 +237,7 @@ public class App {
                                         if (files[i].endsWith(".class")) {
 // removes the .class extension
                                                 
classes.add(Class.forName(packageName + '.'
-                                                     + files[i].substring(0, 
files[i].length() - 6)));
+                                                        + 
files[i].substring(0, files[i].length() - 6)));
                                         }
                                 }
                         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to