<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/fiveruns/json.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/add/core.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/add/rails.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/common.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/pure.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/pure/generator.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/pure/parser.rb</filename>
    </added>
    <added>
      <filename>lib/fiveruns/json/version.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -19,7 +19,6 @@ begin
     s.description = &quot;Provides an API to send metrics to the FiveRuns Dash service&quot; 
     s.authors = [&quot;FiveRuns Development Team&quot;] 
     s.files =  FileList['README.rdoc', 'Rakefile', 'version.yml', &quot;{lib,test,recipes,examples}/**/*&quot;, ] 
-    s.add_dependency 'json' 
   end 
 rescue LoadError 
   puts &quot;Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com&quot; 
@@ -35,4 +34,4 @@ task :coverage do
     FileUtils.cp_r 'coverage', ccout
   end
   system &quot;open coverage/index.html&quot; if PLATFORM['darwin']
-end
\ No newline at end of file
+end</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -6,10 +6,10 @@ Gem::Specification.new do |s|
 
   s.required_rubygems_version = Gem::Requirement.new(&quot;&gt;= 0&quot;) if s.respond_to? :required_rubygems_version=
   s.authors = [&quot;FiveRuns Development Team&quot;]
-  s.date = %q{2009-02-26}
+  s.date = %q{2009-03-03}
   s.description = %q{Provides an API to send metrics to the FiveRuns Dash service}
   s.email = %q{dev@fiveruns.com}
-  s.files = [&quot;README.rdoc&quot;, &quot;Rakefile&quot;, &quot;version.yml&quot;, &quot;lib/fiveruns&quot;, &quot;lib/fiveruns/dash&quot;, &quot;lib/fiveruns/dash/configuration.rb&quot;, &quot;lib/fiveruns/dash/exception_recorder.rb&quot;, &quot;lib/fiveruns/dash/host.rb&quot;, &quot;lib/fiveruns/dash/instrument.rb&quot;, &quot;lib/fiveruns/dash/metric.rb&quot;, &quot;lib/fiveruns/dash/recipe.rb&quot;, &quot;lib/fiveruns/dash/reporter.rb&quot;, &quot;lib/fiveruns/dash/scm.rb&quot;, &quot;lib/fiveruns/dash/session.rb&quot;, &quot;lib/fiveruns/dash/store&quot;, &quot;lib/fiveruns/dash/store/file.rb&quot;, &quot;lib/fiveruns/dash/store/http.rb&quot;, &quot;lib/fiveruns/dash/threads.rb&quot;, &quot;lib/fiveruns/dash/trace.rb&quot;, &quot;lib/fiveruns/dash/typable.rb&quot;, &quot;lib/fiveruns/dash/update.rb&quot;, &quot;lib/fiveruns/dash/util.rb&quot;, &quot;lib/fiveruns/dash/version.rb&quot;, &quot;lib/fiveruns/dash.rb&quot;, &quot;test/collector_communication_test.rb&quot;, &quot;test/configuration_test.rb&quot;, &quot;test/exception_recorder_test.rb&quot;, &quot;test/file_store_test.rb&quot;, &quot;test/fixtures&quot;, &quot;test/fixtures/http_store_test&quot;, &quot;test/fixtures/http_store_test/response.json&quot;, &quot;test/http_store_test.rb&quot;, &quot;test/metric_test.rb&quot;, &quot;test/recipe_test.rb&quot;, &quot;test/reliability_test.rb&quot;, &quot;test/reporter_test.rb&quot;, &quot;test/scm_test.rb&quot;, &quot;test/session_test.rb&quot;, &quot;test/test_helper.rb&quot;, &quot;test/tracing_test.rb&quot;, &quot;test/update_test.rb&quot;, &quot;recipes/jruby.rb&quot;, &quot;recipes/ruby.rb&quot;]
+  s.files = [&quot;README.rdoc&quot;, &quot;Rakefile&quot;, &quot;version.yml&quot;, &quot;lib/fiveruns&quot;, &quot;lib/fiveruns/dash&quot;, &quot;lib/fiveruns/dash/configuration.rb&quot;, &quot;lib/fiveruns/dash/exception_recorder.rb&quot;, &quot;lib/fiveruns/dash/host.rb&quot;, &quot;lib/fiveruns/dash/instrument.rb&quot;, &quot;lib/fiveruns/dash/metric.rb&quot;, &quot;lib/fiveruns/dash/recipe.rb&quot;, &quot;lib/fiveruns/dash/reporter.rb&quot;, &quot;lib/fiveruns/dash/scm.rb&quot;, &quot;lib/fiveruns/dash/session.rb&quot;, &quot;lib/fiveruns/dash/store&quot;, &quot;lib/fiveruns/dash/store/file.rb&quot;, &quot;lib/fiveruns/dash/store/http.rb&quot;, &quot;lib/fiveruns/dash/threads.rb&quot;, &quot;lib/fiveruns/dash/trace.rb&quot;, &quot;lib/fiveruns/dash/typable.rb&quot;, &quot;lib/fiveruns/dash/update.rb&quot;, &quot;lib/fiveruns/dash/util.rb&quot;, &quot;lib/fiveruns/dash/version.rb&quot;, &quot;lib/fiveruns/dash.rb&quot;, &quot;lib/fiveruns/json&quot;, &quot;lib/fiveruns/json/add&quot;, &quot;lib/fiveruns/json/add/core.rb&quot;, &quot;lib/fiveruns/json/add/rails.rb&quot;, &quot;lib/fiveruns/json/common.rb&quot;, &quot;lib/fiveruns/json/pure&quot;, &quot;lib/fiveruns/json/pure/generator.rb&quot;, &quot;lib/fiveruns/json/pure/parser.rb&quot;, &quot;lib/fiveruns/json/pure.rb&quot;, &quot;lib/fiveruns/json/version.rb&quot;, &quot;lib/fiveruns/json.rb&quot;, &quot;test/collector_communication_test.rb&quot;, &quot;test/configuration_test.rb&quot;, &quot;test/exception_recorder_test.rb&quot;, &quot;test/file_store_test.rb&quot;, &quot;test/fixtures&quot;, &quot;test/fixtures/http_store_test&quot;, &quot;test/fixtures/http_store_test/response.json&quot;, &quot;test/http_store_test.rb&quot;, &quot;test/metric_test.rb&quot;, &quot;test/recipe_test.rb&quot;, &quot;test/reliability_test.rb&quot;, &quot;test/reporter_test.rb&quot;, &quot;test/scm_test.rb&quot;, &quot;test/session_test.rb&quot;, &quot;test/test_helper.rb&quot;, &quot;test/tracing_test.rb&quot;, &quot;test/update_test.rb&quot;, &quot;recipes/jruby.rb&quot;, &quot;recipes/ruby.rb&quot;]
   s.has_rdoc = true
   s.homepage = %q{http://github.com/fiveruns/dash-ruby}
   s.rdoc_options = [&quot;--inline-source&quot;, &quot;--charset=UTF-8&quot;]
@@ -23,11 +23,8 @@ Gem::Specification.new do |s|
     s.specification_version = 2
 
     if Gem::Version.new(Gem::RubyGemsVersion) &gt;= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q&lt;json&gt;, [&quot;&gt;= 0&quot;])
     else
-      s.add_dependency(%q&lt;json&gt;, [&quot;&gt;= 0&quot;])
     end
   else
-    s.add_dependency(%q&lt;json&gt;, [&quot;&gt;= 0&quot;])
   end
 end</diff>
      <filename>dash-ruby.gemspec</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,10 @@
 require 'rubygems'
 
+module Fiveruns; end
+
+# Pull in our forked copy of the pure JSON gem
+require 'fiveruns/json'
+
 require 'pathname'
 require 'thread'
 require 'time'
@@ -9,9 +14,6 @@ $:.unshift(File.dirname(__FILE__))
 
 # NB: Pre-load ALL Dash files here so we do not accidentally
 # use ActiveSupport's autoloading.
-
-module Fiveruns; end
-
 require 'dash/version'
 require 'dash/util'
 require 'dash/configuration'</diff>
      <filename>lib/fiveruns/dash.rb</filename>
    </modified>
    <modified>
      <diff>@@ -51,7 +51,7 @@ module Fiveruns::Dash
     def send_trace(trace)
       if trace.data
         payload = TracePayload.new(trace)
-        Fiveruns::Dash.logger.debug &quot;Sending trace: #{payload.to_json}&quot;
+        Fiveruns::Dash.logger.debug &quot;Sending trace: #{payload.to_fjson}&quot;
         Thread.new { Update.new(payload).store(*update_locations) }
       else
         Fiveruns::Dash.logger.debug &quot;No trace to send&quot;      
@@ -135,11 +135,8 @@ module Fiveruns::Dash
     
     def send_info_update
       @info_update_sent ||= begin
-        # Pull in JSON at the last minute, to work around Rails incompatabilities
-        # http://groups.google.com/group/rubyonrails-core/browse_thread/thread/54e5453eaac6687b#
-        require 'json'
         payload = InfoPayload.new(@session.info, @started_at)
-        Fiveruns::Dash.logger.debug &quot;Sending info: #{payload.to_json}&quot;
+        Fiveruns::Dash.logger.debug &quot;Sending info: #{payload.to_fjson}&quot;
         result = Update.new(payload).store(*update_locations)
         send_fake_info(payload)
         result
@@ -153,7 +150,7 @@ module Fiveruns::Dash
           Fiveruns::Dash.logger.debug &quot;No exceptions for this interval&quot;
         else
           payload = ExceptionsPayload.new(data)
-          Fiveruns::Dash.logger.debug &quot;Sending exceptions: #{payload.to_json}&quot;
+          Fiveruns::Dash.logger.debug &quot;Sending exceptions: #{payload.to_fjson}&quot;
           Update.new(payload).store(*update_locations)
         end        
       else
@@ -167,7 +164,7 @@ module Fiveruns::Dash
       if @info_update_sent
         data = @session.data
         payload = DataPayload.new(data)
-        Fiveruns::Dash.logger.debug &quot;Sending data: #{payload.to_json}&quot;
+        Fiveruns::Dash.logger.debug &quot;Sending data: #{payload.to_fjson}&quot;
         result = Update.new(payload).store(*update_locations)
         send_fake_data(payload)
         result
@@ -189,7 +186,7 @@ module Fiveruns::Dash
     def send_fake_data(payload)
       fake_host_count.times do |idx|
         payload.params[:process_id] = Fiveruns::Dash.process_ids[idx+1]
-        Fiveruns::Dash.logger.debug &quot;Sending data: #{payload.to_json}&quot;
+        Fiveruns::Dash.logger.debug &quot;Sending data: #{payload.to_fjson}&quot;
         Update.new(payload).store(*update_locations)
       end
     end
@@ -199,7 +196,7 @@ module Fiveruns::Dash
       fake_host_count.times do |idx|
         payload.params[:mac] += idx.to_s
         payload.params[:hostname] = host + idx.to_s
-        Fiveruns::Dash.logger.debug &quot;Sending info: #{payload.to_json}&quot;
+        Fiveruns::Dash.logger.debug &quot;Sending info: #{payload.to_fjson}&quot;
         Update.new(payload).store(*update_locations)
       end
     end</diff>
      <filename>lib/fiveruns/dash/reporter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ module Fiveruns::Dash::Store
     end
     
     def write_to(path)
-      ::File.open(path, 'w') { |f| f.write @payload.to_json }
+      ::File.open(path, 'w') { |f| f.write @payload.to_fjson }
     end
     
     def filename(directory)</diff>
      <filename>lib/fiveruns/dash/store/file.rb</filename>
    </modified>
    <modified>
      <diff>@@ -68,7 +68,7 @@ module Fiveruns::Dash::Store
       end
       case response.code.to_i
       when 201
-        data = JSON.load(response.body)
+        data = FiverunsJSON.load(response.body)
         set_trace_contexts(data)
         true
       when 400..499
@@ -78,9 +78,9 @@ module Fiveruns::Dash::Store
         Fiveruns::Dash.logger.debug &quot;Received unknown response from Dash service (#{response.inspect})&quot;
         false
       end
-    rescue JSON::ParserError =&gt; e
+    rescue FiverunsJSON::ParserError =&gt; e
       puts response.body
-      Fiveruns::Dash.logger.error &quot;Received non-JSON response (#{response.inspect})&quot;
+      Fiveruns::Dash.logger.error &quot;Received non-FiverunsJSON response (#{response.inspect})&quot;
       false
     end
     </diff>
      <filename>lib/fiveruns/dash/store/http.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,10 +27,10 @@ module Fiveruns::Dash
       end
     end
         
-    def to_json
+    def to_fjson
       { :context =&gt; context,
         :data =&gt; (@data || {})
-      }.to_json
+      }.to_fjson
     end
     
     private
@@ -51,11 +51,11 @@ module Fiveruns::Dash
         @children ||= []
       end
             
-      def to_json
+      def to_fjson
         {
           :metrics =&gt; metrics,
           :children =&gt; children,
-        }.to_json
+        }.to_fjson
       end
       
     end</diff>
      <filename>lib/fiveruns/dash/trace.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,7 @@ module Fiveruns::Dash
         response = http.post(&quot;/apps/#{token}/ping&quot;, multipart.to_s, &quot;Content-Type&quot; =&gt; multipart.content_type)
         case response.code.to_i
         when 201
-          data = JSON.load(response.body)
+          data = ::Fiveruns::JSON.load(response.body)
           [:success, &quot;Found application '#{data['name']}'&quot;]
         else
           # Error message
@@ -133,8 +133,8 @@ module Fiveruns::Dash
       {}
     end
     
-    def to_json
-      @data.to_json
+    def to_fjson
+      @data.to_fjson
     end
     
     #######
@@ -146,7 +146,7 @@ module Fiveruns::Dash
     end
 
     def compressed
-      Zlib::Deflate.deflate(to_json)
+      Zlib::Deflate.deflate(to_fjson)
     end
 
   end</diff>
      <filename>lib/fiveruns/dash/update.rb</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,7 @@ module Fiveruns::Dash::Store::HTTP
       Fiveruns::Dash.logger.debug &quot;Received unknown response from Dash service (#{response.inspect})&quot;
       false
     end
-  rescue JSON::ParserError =&gt; e
+  rescue ::Fiveruns::JSON::ParserError =&gt; e
     puts response.body
     Fiveruns::Dash.logger.error &quot;Received non-JSON response (#{response.inspect})&quot;
     false</diff>
      <filename>test/collector_communication_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>78035b2bc92ade23e5d3a822b88294543f0ee947</id>
    </parent>
  </parents>
  <author>
    <name>Mike Perham</name>
    <email>mperham@gmail.com</email>
  </author>
  <url>http://github.com/fiveruns/dash-ruby/commit/e945949c41fc9b91993b76f470cbb892e1c846a0</url>
  <id>e945949c41fc9b91993b76f470cbb892e1c846a0</id>
  <committed-date>2009-03-03T12:56:58-08:00</committed-date>
  <authored-date>2009-03-03T12:56:58-08:00</authored-date>
  <message>Add our own private version of JSON.  All json methods are now called
&quot;fjson&quot;, so &quot;to_fjson&quot; and &quot;fjson_create&quot;.  All JSON classes and
constants have moved to Fiveruns::JSON</message>
  <tree>2e7499e610cc4316edfd05a915ba213c39797527</tree>
  <committer>
    <name>Mike Perham</name>
    <email>mperham@gmail.com</email>
  </committer>
</commit>
