]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-1910 Add a web service to upgrade database version
authorsimonbrandhof <simon.brandhof@gmail.com>
Wed, 3 Nov 2010 14:29:26 +0000 (14:29 +0000)
committersimonbrandhof <simon.brandhof@gmail.com>
Wed, 3 Nov 2010 14:29:26 +0000 (14:29 +0000)
sonar-server/src/main/webapp/WEB-INF/app/controllers/api/server_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/controllers/setup_controller.rb

index b033007963ce8aadb131263a60699f9cf1c40c88..1982ac48d881397d15b556b94c867f672429ecbd 100644 (file)
@@ -21,8 +21,14 @@ class Api::ServerController < Api::ApiController
 
   skip_before_filter :check_authentication, :except => 'system'
   before_filter :admin_required, :only => 'system'
+
+  # prevent HTTP proxies from caching server status
   before_filter :set_cache_buster, :only => 'index'
-  
+
+  # execute database setup
+  verify :method => :post, :only => [ :setup ]
+  skip_before_filter :check_database_version, :setup
+
   def key
     render :text => Java::OrgSonarServerPlatform::Platform.getServer().getId()
   end
@@ -58,6 +64,25 @@ class Api::ServerController < Api::ApiController
       format.text { render :text => text_not_supported}
     end
   end
+
+  def setup
+    begin
+      DatabaseVersion.setup unless DatabaseVersion.uptodate?
+      hash={:status => 'ok'}
+      respond_to do |format|
+        format.json{ render :json => jsonp(hash) }
+        format.xml { render :xml => hash.to_xml(:skip_types => true, :root => 'setup') }
+        format.text { render :text => hash[:status] }
+      end
+    rescue => e
+      hash={:status => 'ko', :msg => e.message}
+      respond_to do |format|
+        format.json{ render :json => jsonp(hash) }
+        format.xml { render :xml => hash.to_xml(:skip_types => true, :root => 'setup') }
+        format.text { render :text => hash[:status] }
+      end
+    end
+  end
   
   
   private
index 58b1a0d71ea44cf2a7448fcf873475d8dcadf5cc..b452dd7ab57c5e0b2f6f410d63978df196167df9 100644 (file)
@@ -19,7 +19,7 @@
  #
 class SetupController < ApplicationController
   skip_before_filter :check_database_version, :check_authentication
-  
+
   SECTION=Navigation::SECTION_CONFIGURATION
   
   # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
@@ -40,9 +40,8 @@ class SetupController < ApplicationController
   end
 
   def setup_database
-    unless DatabaseVersion.uptodate?
-      DatabaseVersion.setup
-         end
+    # do not forget that this code is also in /api/server/setup (see api/server_controller.rb)
+    DatabaseVersion.setup unless DatabaseVersion.uptodate?
     redirect_to home_path
   end
 end