You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by do...@apache.org on 2013/09/27 00:59:40 UTC
svn commit: r1526732 - in /buildr/trunk: CHANGELOG lib/buildr/ide/idea.rb
Author: donaldp
Date: Thu Sep 26 22:59:40 2013
New Revision: 1526732
URL: http://svn.apache.org/r1526732
Log:
Auto-detect jpa provider in Intellij IDEA facet generation if persistence.xml file is present and provider not specified.
Modified:
buildr/trunk/CHANGELOG
buildr/trunk/lib/buildr/ide/idea.rb
Modified: buildr/trunk/CHANGELOG
URL: http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=1526732&r1=1526731&r2=1526732&view=diff
==============================================================================
--- buildr/trunk/CHANGELOG (original)
+++ buildr/trunk/CHANGELOG Thu Sep 26 22:59:40 2013
@@ -1,4 +1,6 @@
1.4.13 (Pending)
+* Added: Auto-detect jpa provider in Intellij IDEA facet generation if
+ persistence.xml file is present and provider not specified.
* Added: Auto-detect jruby version in Intellij IDEA facet generation if
.ruby-version file is present.
* Added: Improve support for auto-detection of ejb and web descriptors
Modified: buildr/trunk/lib/buildr/ide/idea.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/ide/idea.rb?rev=1526732&r1=1526731&r2=1526732&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/ide/idea.rb (original)
+++ buildr/trunk/lib/buildr/ide/idea.rb Thu Sep 26 22:59:40 2013
@@ -353,25 +353,46 @@ module Buildr #:nodoc:
def add_jpa_facet(options = {})
name = options[:name] || "JPA"
+
+ source_roots = [buildr_project.compile.sources, buildr_project.resources.sources].flatten
+ default_deployment_descriptors = []
+ ['orm.xml', 'persistence.xml'].
+ each do |descriptor|
+ source_roots.each do |path|
+ d = "#{path}/META-INF/#{descriptor}"
+ default_deployment_descriptors << d if File.exist?(d)
+ end
+ end
+ deployment_descriptors = options[:deployment_descriptors] || default_deployment_descriptors
+
factory_entry = options[:factory_entry] || buildr_project.name.to_s
validation_enabled = options[:validation_enabled].nil? ? true : options[:validation_enabled]
- provider_enabled = options[:provider_enabled] || 'Hibernate'
- default_persistence_xml = buildr_project._(:source, :main, :resources, "META-INF/persistence.xml")
- persistence_xml = options[:persistence_xml] || default_persistence_xml
- default_orm_xml = buildr_project._(:source, :main, :resources, "META-INF/orm.xml")
- orm_xml = options[:orm_xml] || default_orm_xml
+ if options[:provider_enabled]
+ provider = options[:provider_enabled]
+ else
+ provider = nil
+ {'org.hibernate.ejb.HibernatePersistence' => 'Hibernate',
+ 'org.eclipse.persistence.jpa.PersistenceProvider' => 'EclipseLink'}.
+ each_pair do |match, candidate_provider|
+ deployment_descriptors.each do |descriptor|
+ if File.exist?(descriptor) && /#{Regexp.escape(match)}/ =~ IO.read(descriptor)
+ provider = candidate_provider
+ end
+ end
+ end
+ end
+
add_facet(name, "jpa") do |f|
f.configuration do |c|
- c.setting :name => "validation-enabled", :value => validation_enabled
- c.setting :name => "provider-name", :value => provider_enabled
+ if provider
+ c.setting :name => "validation-enabled", :value => validation_enabled
+ c.setting :name => "provider-name", :value => provider
+ end
c.tag!('datasource-mapping') do |ds|
ds.tag!('factory-entry', :name => factory_entry)
end
- if File.exist?(persistence_xml) || default_persistence_xml != persistence_xml
- c.deploymentDescriptor :name => 'persistence.xml', :url => file_path(persistence_xml)
- end
- if File.exist?(orm_xml) || default_orm_xml != orm_xml
- c.deploymentDescriptor :name => 'orm.xml', :url => file_path(orm_xml)
+ deployment_descriptors.each do |descriptor|
+ c.deploymentDescriptor :name => File.basename(descriptor), :url => file_path(descriptor)
end
end
end