You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by as...@apache.org on 2007/04/02 23:17:00 UTC

svn commit: r524923 - in /incubator/ode/trunk: Rakefile bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java tasks/hibernate.rake

Author: assaf
Date: Mon Apr  2 14:16:59 2007
New Revision: 524923

URL: http://svn.apache.org/viewvc?view=rev&rev=524923
Log:
Added Hibernate tasks for dao-hibernate(-db)

Added:
    incubator/ode/trunk/tasks/hibernate.rake
Modified:
    incubator/ode/trunk/Rakefile
    incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java

Modified: incubator/ode/trunk/Rakefile
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/Rakefile?view=diff&rev=524923&r1=524922&r2=524923
==============================================================================
--- incubator/ode/trunk/Rakefile (original)
+++ incubator/ode/trunk/Rakefile Mon Apr  2 14:16:59 2007
@@ -1,5 +1,6 @@
 require "buildr/lib/buildr.rb"
 
+
 # Keep this structure to allow the build system to update version numbers.
 VERSION_NUMBER = "2.0-SNAPSHOT"
 NEXT_VERSION = "2.1"
@@ -69,8 +70,10 @@
 repositories.remote << "http://pxe.intalio.org/public/maven2"
 repositories.remote << "http://people.apache.org/repo/m2-incubating-repository"
 repositories.remote << "http://repo1.maven.org/maven2"
+repositories.remote << "http://people.apache.org/repo/m2-snapshot-repository"
 repositories.deploy_to[:url] ||= "sftp://ode.intalio.org/var/www/public/maven2"
 
+
 define "ode", :group=>"org.apache.ode", :version=>VERSION_NUMBER do
 
   compile.options.source = "1.5"
@@ -89,26 +92,12 @@
       JAVAX.activation, JAVAX.servlet, JAVAX.stream,
       JAVAX.transaction, JENCKS, WSDL4J, XMLBEANS
 
-=begin
-    tests.compile.with *compile.classpath
     tests.compile.with project("ode:tools")
-=end
-
-    package :jar
-  end
+    tests.run.with XERCES, WOODSTOX, AXIOM, WS_COMMONS.xml_schema, JAVAX.javamail
 
-  desc "ODE JBI Integration Layer"
-  define "jbi" do
-    compile.with project("ode:bpel-api"), project("ode:bpel-connector"),
-      project("ode:bpel-dao"), project("ode:bpel-epr"), project("ode:bpel-obj"),
-      project("ode:bpel-runtime"), project("ode:bpel-scheduler-quartz"),
-      project("ode:bpel-schemas"), project("ode:bpel-store"),
-      project("ode:utils"),
-      COMMONS.logging, COMMONS.pool, JAVAX.transaction, JBI, LOG4J, WSDL4J, XERCES
     package :jar
   end
 
-
   desc "ODE Axis2 Based Web Application"
   define "axis2-war" do
     libs = project("ode:axis2"), project("ode:bpel-api"),
@@ -120,7 +109,7 @@
       project("ode:dao-hibernate"), project("ode:jacob"),
       project("ode:jca-ra"), project("ode:jca-server"),
       project("ode:utils"),
-      project("ode:dao-jpa"), project("ode:dao-jpa-ojpa-derby"),
+      project("ode:dao-jpa"),
       AXIS2_ALL, ANNONGEN, BACKPORT, COMMONS.codec,
       COMMONS.collections, COMMONS.fileupload, COMMONS.httpclient,
       COMMONS.lang, COMMONS.pool, DERBY, DERBY_TOOLS,
@@ -132,19 +121,17 @@
       WS_COMMONS.axiom, WS_COMMONS.neethi, WS_COMMONS.xml_schema,
       XALAN, XERCES, XMLBEANS
 
-    # resources filter(path_to(:base_dir, "../axis2/src/main/wsdl/*")).into(path_to(:target_dir, "resources"))
-    # resources filter(path_to(:base_dir, "../bpel-schemas/src/main/xsd/pmapi.xsd")).into(path_to(:target_dir, "resources"))
-
-    package(:war).with(:libs=>libs).path("WEB-INF").
-      merge(project("ode:dao-jpa-ojpa-derby").package(:zip))
-    package(:war).path("WEB-INF").include project("ode:axis2").path_to("src/main/wsdl/*")
-    package(:war).path("WEB-INF").include project("ode:bpel-schemas").path_to("src/main/xsd/pmapi.xsd")
+    package(:war).with(:libs=>libs).path("WEB-INF").tap do |web_inf|
+      web_inf.merge project("ode:dao-jpa-ojpa-derby").package(:zip)
+      web_inf.merge project("ode:dao-hibernate-db").package(:zip)
+      web_inf.include project("ode:axis2").path_to("src/main/wsdl/*")
+      web_inf.include project("ode:bpel-schemas").path_to("src/main/xsd/pmapi.xsd")
+    end
 
     webserve.using(:war_path=>package(:war).name, :context_path=>"/ode",
-                   :process_alias=>{"HelloWorld2"=>"distro-axis2/src/examples/HelloWorld2",
-                                    "DynPartner"=>"distro-axis2/src/examples/DynPartner",
-                                    "MagicSession"=>"distro-axis2/src/examples/MagicSession"}
-    )
+      :process_alias=>{"HelloWorld2"=>"distro-axis2/src/examples/HelloWorld2",
+                       "DynPartner"=>"distro-axis2/src/examples/DynPartner",
+                       "MagicSession"=>"distro-axis2/src/examples/MagicSession"} )
   end
 
   desc "ODE APIs"
@@ -203,8 +190,8 @@
     jjtree_out = path_to(:target_dir, "generated/jjtree")
     javacc_out = path_to(:target_dir, "generated/javacc")
 
-    prepare JavaCC.jjtree_task(path_to(jjtree_out, "org/apache/ode/ql/jcc")=>jjtree_src).using(:build_node_files=>false)
-    prepare JavaCC.javacc_task(path_to(javacc_out, "org/apache/ode/ql/jcc")=>jjtree_out)
+    prepare Java::JavaCC.jjtree_task(path_to(jjtree_out, "org/apache/ode/ql/jcc")=>jjtree_src).using(:build_node_files=>false)
+    prepare Java::JavaCC.javacc_task(path_to(javacc_out, "org/apache/ode/ql/jcc")=>jjtree_out)
 
     compile.with project("ode:bpel-api"), project("ode:bpel-compiler"),
       project("ode:bpel-obj"), project("ode:jacob"), project("ode:utils"),
@@ -231,19 +218,11 @@
     # Include the generated sources.
     compile.from generated
 
-=begin
-    tests.resources do |task|
-      #rm_rf path_to(:test_target_dir, "derby-db")
-      if tests.compile.compiled?
-        unzip(artifact("#{group}:ode-dao-jpa-ojpa-derby:zip:#{version}")).into(path_to(:test_target_dir, "derby-db")).invoke
-      end
-    end
-    tests.compile.with *compile.classpath
     tests.compile.with project("ode:bpel-scheduler-quartz"),
       project("ode:dao-jpa"),
       COMMONS.pool, COMMONS.lang, DERBY, JAVAX.connector, JAVAX.transaction,
-      LOG4J, XERCES, OpenJPA::REQUIRES, QUARTZ, XALAN
-=end
+      LOG4J, XERCES, Java::OpenJPA::REQUIRES, QUARTZ, XALAN
+    tests.resources unzip(project("ode:dao-jpa-ojpa-derby").package(:zip)).into(path_to(:test_target_dir, "derby-db"))
 
     package :jar
   end
@@ -260,10 +239,8 @@
     schemas = [ path_to(:src_dir, "main/xsd/pmapi.xsdconfig"),
                 path_to(:src_dir, "main/xsd/dd.xsdconfig"), path_to(:src_dir, "main/xsd") ]
     generated = path_to(:target_dir, "generated")
-    prepare XMLBeans.compile_task(generated=>schemas).
-      using(:javasource=>compile.options.source,
-            :classes=>path_to(:java_target_dir),
-            :jar=>path_to(:target_dir, "xmlbeans.jar"))
+    prepare Java::XMLBeans.compile_task(generated=>schemas).
+      using(:javasource=>compile.options.source, :classes=>path_to(:java_target_dir))
 
     compile.from generated
     compile.with JAVAX.stream, XMLBEANS
@@ -284,10 +261,12 @@
       HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J
 
     compile do |task|
-      OpenJPA.enhance(:output=>compile.target, :classpath=>compile.classpath,
+      Java::OpenJPA.enhance(:output=>compile.target, :classpath=>compile.classpath,
         :properties=>path_to(:resources_dir, "META-INF/persistence.xml"))
     end
 
+    tests.run.with DOM4J
+
     package :jar
   end
 
@@ -297,15 +276,11 @@
       project("ode:bpel-dao"), project("ode:bpel-runtime"),
       project("ode:bpel-store"), project("ode:utils"),
       DERBY, WSDL4J
-    
-    tests.resources.into(path_to(:test_target_dir))
-    tests.compile.with *compile.classpath
-    tests.compile.with project("ode:bpel-schemas"), project("ode:bpel-scheduler-quartz"),
-      project("ode:bpel-obj"), project("ode:dao-jpa"),
-      project("ode:jacob"),
-      COMMONS.pool, COMMONS.lang, COMMONS.logging, DERBY, JAVAX.connector,
-      JAVAX.transaction, JAVAX.stream, JAXEN, HSQLDB, LOG4J, XERCES, OpenJPA::REQUIRES,
-      QUARTZ, SAXON, XALAN, XMLBEANS
+
+    tests.compile.with project("ode:dao-jpa"), JAVAX.persistence
+    tests.run.with project("ode:bpel-obj"), project("ode:jacob"), project("ode:bpel-schemas"), project("ode:dao-jpa"),
+      COMMONS.collections, COMMONS.lang, COMMONS.logging,
+      JAVAX.connector, JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, OPENJPA, SAXON, XERCES, XMLBEANS, XALAN
 
     package :jar
   end
@@ -315,9 +290,46 @@
     compile.with project("ode:bpel-api"), project("ode:bpel-dao"),
       project("ode:bpel-ql"), project("ode:utils"),
       COMMONS.lang, COMMONS.logging, JAVAX.transaction, HIBERNATE, DOM4J
+
+    compile do
+      Java::Hibernate.xdoclet :source=>compile.sources, :include=>"**/*.java",
+        :target=>compile.target, :excludedtags=>"@version,@author,@todo"
+    end
+
     package :jar
   end
 
+  desc "ODE Hibernate Compatible Databases"
+  define "dao-hibernate-db" do
+
+    def predefined_for(name) ; file(path_to(:src_dir, "main", "sql", "tables_#{name}.sql")); end
+    def properties_for(name) ; file(path_to(:src_dir, "main", "sql", "ode.#{name}.properties")); end
+
+    dao_hibernate = project("ode:dao-hibernate").compile.target
+    bpel_store = project("ode:bpel-store").compile.target
+
+    export_task = Java::Hibernate.schemaexport_task
+    export = lambda do |properties, sources, target|
+      export_task.enhance([properties, sources]) do |task| 
+        task.ant.schemaexport(:properties=>properties.to_s, :quiet=>"yes", :text=>"yes", :delimiter=>";",
+          :drop=>"no", :create=>"yes", :output=>target.to_s) { fileset(:dir=>sources.to_s) { include :name=>"**/*.hbm.xml" } }
+      end
+      file_create(target.to_s) { export_task.invoke }
+    end
+
+    build file_create(path_to(:target_dir)) { |task| mkpath task.name }
+    runtime_sql = export.call(properties_for(:derby), dao_hibernate, path_to(:target_dir, "runtime.sql")) 
+    store_sql = export.call(properties_for(:derby), bpel_store, path_to(:target_dir, "store.sql")) 
+    derby_sql = concat(path_to(:target_dir, "derby.sql")=>[ predefined_for(:derby), runtime_sql, store_sql ]) 
+    %w{ firebird hsql postgres sqlserver }.each do |db|
+      partial = export.call(properties_for(db), dao_hibernate, path_to(:target_dir, "partial.#{db}.sql"))
+      build concat(path_to(:target_dir, "#{db}.sql")=>[ predefined_for(db), partial ])
+    end
+
+    build derby_db = Derby.create(path_to(:target_dir, "derby/hibdb")=>derby_sql)
+    package :zip, :include=>derby_db
+  end
+
   desc "ODE OpenJPA DAO Implementation"
   define "dao-jpa" do
     compile.with project("ode:bpel-api"), project("ode:bpel-dao"), project("ode:utils"),
@@ -325,7 +337,7 @@
       OPENJPA, XERCES
 
     compile do |task|
-      OpenJPA.enhance :output=>compile.target, :classpath=>compile.classpath,
+      Java::OpenJPA.enhance :output=>compile.target, :classpath=>compile.classpath,
         :properties=>path_to(:resources_dir, "META-INF/persistence.xml" )
     end
     package :jar
@@ -339,13 +351,18 @@
     quartz_sql = path_to(:src_dir, "main/scripts/quartz-derby.sql")
     derby_sql = file(path_to(:target_dir, "derby.sql")=>[derby_xml, quartz_sql]) do |task|
       mkpath path_to(:target_dir), :verbose=>false
-      OpenJPA.mapping_tool :properties=>derby_xml, :action=>"build", :sql=>task.name,
+      Java::OpenJPA.mapping_tool :properties=>derby_xml, :action=>"build", :sql=>task.name,
         :classpath=>artifacts( project("ode:bpel-store"), project("ode:dao-jpa"),
                       project("ode:bpel-api"), project("ode:bpel-dao"),
                       project("ode:utils") )
       File.open(task.name, "a") { |file| file.write File.read(quartz_sql) }
     end
 
+    tests.compile.with project("ode:bpel-api"), project("ode:bpel-dao"),
+      project("ode:bpel-obj"), project("ode:dao-jpa"), project("ode:utils"),
+      COMMONS.collections, COMMONS.logging, JAVAX.persistence, JAVAX.transaction, 
+      OPENJPA, XERCES, WSDL4J
+
     build derby_db = Derby.create(path_to(:target_dir, "derby/jpadb")=>derby_sql)
     package :zip, :include=>derby_db
   end
@@ -393,6 +410,17 @@
   desc "ODE Jacob APR Code Generation"
   define "jacob-ap" do
     compile.with Java.tools
+    package :jar
+  end
+
+  desc "ODE JBI Integration Layer"
+  define "jbi" do
+    compile.with project("ode:bpel-api"), project("ode:bpel-connector"),
+      project("ode:bpel-dao"), project("ode:bpel-epr"), project("ode:bpel-obj"),
+      project("ode:bpel-runtime"), project("ode:bpel-scheduler-quartz"),
+      project("ode:bpel-schemas"), project("ode:bpel-store"),
+      project("ode:utils"),
+      COMMONS.logging, COMMONS.pool, JAVAX.transaction, JBI, LOG4J, WSDL4J, XERCES
     package :jar
   end
 

Modified: incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java?view=diff&rev=524923&r1=524922&r2=524923
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java Mon Apr  2 14:16:59 2007
@@ -28,6 +28,7 @@
 
 import org.apache.ode.bpel.compiler.api.CompilationException;
 import org.apache.ode.bpel.compiler.api.CompilerContext;
+import org.apache.ode.bpel.compiler.api.SourceLocation;
 import org.apache.ode.bpel.compiler.bom.Activity;
 import org.apache.ode.bpel.compiler.bom.BpelObject;
 import org.apache.ode.bpel.compiler.bom.Expression;
@@ -199,5 +200,8 @@
     public OScope compileSLC(ScopeLikeActivity child, Variable[] variables) {
         // TODO Auto-generated method stub
         return null;
+    }
+
+    public void recoveredFromError(SourceLocation location, CompilationException error) {
     }
 }

Added: incubator/ode/trunk/tasks/hibernate.rake
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/tasks/hibernate.rake?view=auto&rev=524923
==============================================================================
--- incubator/ode/trunk/tasks/hibernate.rake (added)
+++ incubator/ode/trunk/tasks/hibernate.rake Mon Apr  2 14:16:59 2007
@@ -0,0 +1,48 @@
+module Buildr
+  module Java
+    module Hibernate
+
+      REQUIRES = OpenObject.new
+      REQUIRES.collections  = "commons-collections:commons-collections:jar:3.1"
+      REQUIRES.logging      = "commons-logging:commons-logging:jar:1.0.3"
+      REQUIRES.dom4j        = "dom4j:dom4j:jar:1.6.1"
+      REQUIRES.hibernate    = "org.hibernate:hibernate:jar:3.1.2"
+      REQUIRES.xdoclet      = [ "xdoclet:xdoclet-hibernate-module:jar:1.2.3", "xdoclet:xdoclet-xdoclet-module:jar:1.2.3",
+                                "xdoclet:xdoclet:jar:1.2.3", "xdoclet:xjavadoc:jar:1.1-j5" ]
+
+      class << self
+
+        def xdoclet(options)
+          ant("hibernatedoclet") do |ant|
+            ant.taskdef :name=>"hibernatedoclet", :classname=>"xdoclet.modules.hibernate.HibernateDocletTask", :classpath=>requires
+            ant.hibernatedoclet :destdir=>options[:target].to_s, :excludedtags=>options[:excludedtags], :force=>"true" do
+              hibernate :version=>"3.0"
+              fileset :dir=>options[:source].to_s, :includes=>options[:include]
+            end
+          end
+        end
+
+        def schemaexport(name = "schemaexport")
+          ant(name) do |ant|
+            ant.taskdef :name=>"schemaexport", :classname=>"org.hibernate.tool.hbm2ddl.SchemaExportTask", :classpath=>requires
+          end
+        end
+
+        def schemaexport_task(name = "schemaexport")
+          task(name).tap do |task|
+            class << task ; attr_accessor :ant ; end
+            task.enhance { |task| task.ant = schemaexport(name) }
+          end
+        end
+
+      protected
+
+        def requires()
+          @requires ||= artifacts(REQUIRES.to_hash.values).each(&:invoke).map(&:to_s).join(File::PATH_SEPARATOR)
+        end
+
+      end
+
+    end
+  end
+end