More at rubyonrails.org: Overview | Download | Deploy | Code | Screencasts | Documentation | Community | Blog

#2 Aaron Patterson - Edge
Showing 355 commits

Hash Date Message
49ba271 30 Aug 2015 add a method for getting the http auth salt
e5e2bbd 30 Aug 2015 env to get_header conversion
bf203e4 27 Aug 2015 Revert "this always sets :public to false, so just do that"
cae2b5b 27 Aug 2015 this always sets :public to false, so just do that
d05d7e2 27 Aug 2015 remove dependency on `@cache_control` ivar
53265e8 27 Aug 2015 remove `@etag` ivar
4e88f4f 27 Aug 2015 use the abstract API in modules
f597dc5 27 Aug 2015 remove useless conditional
14af136 27 Aug 2015 implement the API required by the abstract Rack request.
97d088e 27 Aug 2015 use the non-hash dependent Rack utils API
c967c5e 26 Aug 2015 remove redefined method
e6425f6 26 Aug 2015 Remove useless conditional
446b685 26 Aug 2015 remove useless code
3b8395a 26 Aug 2015 only call self.content_type= when there is a response
2ceb16e 26 Aug 2015 Pull `plain` content type handling up to `render`
fa09bf4 26 Aug 2015 stop passing the options hash to `_process_format`
d474387 26 Aug 2015 remove RackDelegation module
6570ab7 26 Aug 2015 remove useless method
3cc35be 26 Aug 2015 include ActionView::Rendering in the minimal controller
11ccdc8 26 Aug 2015 remove useless status set
54becd1 26 Aug 2015 `headers` should delegate to the response object
27daea8 26 Aug 2015 use the content_type method on the request object
02f5a28 26 Aug 2015 ask the response for the status
ab0703e 26 Aug 2015 remove useless conditional
44454bd 26 Aug 2015 remove useless conditional
a50d55a 26 Aug 2015 remove ivars from the "protected" list
109fb8e 26 Aug 2015 remove useless conditional
51c7ac1 26 Aug 2015 provide a request and response to all controllers
85a78d9 26 Aug 2015 :snip: whitespace
27902c7 26 Aug 2015 Fix another rack SPEC violation
7401c4a 26 Aug 2015 rack SPEC doesn't allow `first` on the body
d1b9a13 25 Aug 2015 move response allocation to the class level
67b2841 25 Aug 2015 adding a direct dispatch method to controller classes
a26033b 25 Aug 2015 always dispatch to controllers the same way
702965c 25 Aug 2015 always return a controller class from the `controller_cl...
211f55d 25 Aug 2015 use `caller_locations` instead of `caller`
c82248e 25 Aug 2015 remove more direct `env` mutations
d4e1f58 24 Aug 2015 remove another `@env` access
cccc759 24 Aug 2015 remove more direct access to `env`
a1ff558 24 Aug 2015 fewer calls to `env`
c25cf09 24 Aug 2015 override `controller_class` on the request
c4c5918 24 Aug 2015 stop using `@env` in the GET / POST methods
ec9c237 24 Aug 2015 rm useless method
7a62cc7 24 Aug 2015 remove dead code :bomb:
9b20b1c 24 Aug 2015 pull up dispatcher allocation
59e3b64 24 Aug 2015 directly ask the request for the controller class
74020eb 24 Aug 2015 use `make_set` helper method to generate route sets
31cc4d6 24 Aug 2015 remove setter for the dispatcher class
b0e7db9 24 Aug 2015 remove useless ivar
2237ee0 24 Aug 2015 subclass and delegate rather than mutating existing objects
337684f 24 Aug 2015 use a custom request class to determine the controller c...
9503e65 24 Aug 2015 use methods on the request object instead of accessing env
71d0b61 24 Aug 2015 use `Request#path_info` instead of direct ENV access
feb248c 24 Aug 2015 remove env access from debug_exceptions
f16a33b 24 Aug 2015 remove more `env` access
97c65aa 23 Aug 2015 remove more env access
7de86d2 23 Aug 2015 remove more env access
a682b44 23 Aug 2015 convert more `@env` access to get / set header
f038ed2 23 Aug 2015 remove usage of `@env`
5fe1416 23 Aug 2015 use a request object in the session middleware
4f244f7 22 Aug 2015 move more `@env` access to method calls
3ca8f91 22 Aug 2015 move ORIGINAL_SCRIPT_NAME to the metaprogrammed methods
39837b1 22 Aug 2015 metaprogram the HTTP_X_REQUEST_ID method
64f6dc6 22 Aug 2015 use `body_stream` instead of getting the env value ourse...
3e0b932 22 Aug 2015 convert `@env` use to get / set header
383f18b 22 Aug 2015 use get / set header to avoid depending on the `env` ivar
4276b21 22 Aug 2015 Refactor to remove controller class from route to request
ec760e6 22 Aug 2015 set cached values in the env hash
7bd34c1 22 Aug 2015 stop directly accessing `@env` in mime_negotiation
992bf07 22 Aug 2015 use public API to fetch the parameter filter
bce4ff7 21 Aug 2015 use methods on the request object to implement `fetch`
c0c7268 21 Aug 2015 dup the env hash on Header#env
1fbf5ad 21 Aug 2015 dup the request and mutate its headers object.
ba2173a 21 Aug 2015 use `set_header` rather than []=
fbf6b98 21 Aug 2015 use accessors on the request object for manipulating env
34fa665 21 Aug 2015 pass a request object to the headers object
c6cfcc6 21 Aug 2015 move header allocation to a helper method
867810c 20 Aug 2015 set route precedence at allocation time
7354ef1 20 Aug 2015 argh!!!
d226ba5 20 Aug 2015 smooth move aaron.... :bomb:
51211a9 20 Aug 2015 point at rack master
7187339 18 Aug 2015 make the routes reader private
62383dd 18 Aug 2015 don't touch internals
d993cb3 18 Aug 2015 drop array allocations when building paths
4d9475b 18 Aug 2015 symbols will always be constructed with strings. :bomb:
01d8895 18 Aug 2015 drop string allocations for each resource
0b476de 18 Aug 2015 use the strategy pattern to match request verbs
c989e2c 17 Aug 2015 switch Route constructors and pass in the regexp
bb10030 17 Aug 2015 split the verb regex from the constraints hash
23cfdd4 17 Aug 2015 test the verb method on the route, specifically
c42db41 17 Aug 2015 routes are always constructed with a hash for the condit...
1ce74b0 17 Aug 2015 introduce an alternate constructor for Route objects
559e7f9 17 Aug 2015 drop object allocation during routes setup
8d7b883 17 Aug 2015 avoid is_a? checks
56f734a 17 Aug 2015 pull RegexpOffsets in to a method
15bc6b6 17 Aug 2015 `required_defaults` is always passed in, remove conditional
d12ff4f 17 Aug 2015 use predicate methods to avoid is_a? checks
e9777ef 17 Aug 2015 default pattern to use a joined string
fe19d07 15 Aug 2015 move route allocation to a factory method on the mapping...
703275b 15 Aug 2015 use the mapper to build the routing table
05eea6a 15 Aug 2015 only process `via` once
a293812 15 Aug 2015 only keep one hash of named routes
4bdd92d 14 Aug 2015 rm add_route2
6c48d93 14 Aug 2015 pass pass the mapping object down the add_route stack
5ba6966 14 Aug 2015 pass the mapping object to build_route
68dd5ab 14 Aug 2015 remove `process_path`
565582c 14 Aug 2015 explicitly return nil from `get_to_from_path`
b543ee7 14 Aug 2015 extract method on determining :to from the path
b10b279 14 Aug 2015 deprecate passing a string for both the beginning path a...
b6146b0 14 Aug 2015 rm path_params method
4a591ce 14 Aug 2015 extract method on wildcard path parameter handling
b592c5b 14 Aug 2015 pass the path ast down
aaaa679 14 Aug 2015 pull up path parsing
7fa6600 14 Aug 2015 use predicate methods instead of hard coding verb strings
c3284e2 14 Aug 2015 implement `requirements` in terms of routes
ad311f2 14 Aug 2015 remove hard coded regular expression
715abbb 14 Aug 2015 stop adding path_info to the conditions hash
1eb6b4a 14 Aug 2015 pull up path normalization.
6143723 14 Aug 2015 extract ast finding to a method
60adf11 14 Aug 2015 implement the `asts` method in terms of paths / patterns
95a5d17 13 Aug 2015 `build_path` doesn't need the path variable anymore
947ebe9 13 Aug 2015 remove Strexp
4868692 13 Aug 2015 pass anchor directly to `Pattern`
36f26fd 13 Aug 2015 we already have access to the AST, so just use it
b3d73e7 13 Aug 2015 remove default arguments that aren't used
45d594f 13 Aug 2015 pull up options_constrants extraction
b778f63 13 Aug 2015 remove `as`
e38a456 13 Aug 2015 remove anchor from mapping
aef421e 13 Aug 2015 pull `anchor` extraction up
33dc653 13 Aug 2015 raise if `anchor` is passed to `scope`
ba7602b 13 Aug 2015 remove the `add_request_method` method
a4f7809 13 Aug 2015 remove side effects in `normalize_defaults`
3e3e23f 13 Aug 2015 remove unnecessary deletes
ec89518 12 Aug 2015 pull `formatted` up the stack
d61e3c7 12 Aug 2015 add a regression test for scoped `format` params
3955688 12 Aug 2015 pull `format` out of the options hash
2a05a72 12 Aug 2015 store `via` outside the options hash
f514c9c 12 Aug 2015 don't mutate the caller's variables
33d20ea 12 Aug 2015 store `:only` and `:except` outside the normal options hash
e2735b2 12 Aug 2015 add a regression test for adding arbitrary keys to `scope`
1c94317 12 Aug 2015 add a method to `Scope` for getting mapping options
b106ddd 12 Aug 2015 fix via handling when it's in a scope
f88c68a 12 Aug 2015 simplify `split_constraints`
c10d7d1 12 Aug 2015 remove side effects from `normalize_format`
58117fa 12 Aug 2015 pull via checking up to via extraction
b59ff24 12 Aug 2015 pull `via` extraction up
b46c67f 12 Aug 2015 pull `via` all the way out of `add_route`
4c641c6 12 Aug 2015 add a test for adding "via" using `scope`
3042b71 12 Aug 2015 make `constraints` more functional
463339c 12 Aug 2015 make `split_constraints` more functional.
b9a622f 12 Aug 2015 switch === to case / when
cbf1617 12 Aug 2015 only call `split_constraints` once
3420849 12 Aug 2015 only do is_a? checks on `options_constraints` once
ea4da19 12 Aug 2015 Mapping instances don't need `scope` anymore
175280c 12 Aug 2015 pull scope[:constraints] up
0988ad0 12 Aug 2015 pull :format up a little bit
97d7dc4 11 Aug 2015 pull `to` up
c25d170 11 Aug 2015 push scope access up for modules
41e7923 11 Aug 2015 path is never nil
5935e4c 11 Aug 2015 push option decomposition up a bit more
763dd50 11 Aug 2015 split options hash and pass values down
1a830cb 11 Aug 2015 split paths by type
0c3f8e3 11 Aug 2015 pull option duping up
7df7c70 11 Aug 2015 one fewer hash mutation
97bbde7 11 Aug 2015 pull up the "options.delete(:controller)" logic
934bdf6 11 Aug 2015 push `action` option extraction up one frame.
8adf25a 11 Aug 2015 try to pass fewer options to `scope`
7f3cfb6 11 Aug 2015 always cast `name` to a symbol, and never to_s it
f727bd2 11 Aug 2015 pull path conditional up
e852daa 10 Aug 2015 pull `defaults` extraction up the stack.
7c6c048 10 Aug 2015 avoid calling `scope` on `defaults` methods
d193b3b 10 Aug 2015 let the `controller` method push / pop the stack
ae3269b 10 Aug 2015 remove another call to `scope`
628a23c 10 Aug 2015 remove dead code
6ac882b 10 Aug 2015 avoid is_a? calls
3c87753 10 Aug 2015 avoid another call to `scope`
6bc8ada 10 Aug 2015 push `with_scope_level` up so resource_scope doesn't know
d4e1a75 10 Aug 2015 reuse the same frame so we don't need a singleton hash
8e014f2 10 Aug 2015 add a null node at the top of the stack
53454bf 10 Aug 2015 remove `@nesting` ivar
d9603cb 10 Aug 2015 pass `shallow` in to the resource constructor
6a9d192 10 Aug 2015 we have the resource on the stack, so just use it
919e7d3 10 Aug 2015 push `scope` calls up one frame
378e3a6 09 Aug 2015 remove useless hash
f360689 09 Aug 2015 stop calling `scope` internally
5a18b85 09 Aug 2015 remove useless conditional
1b73d53 08 Aug 2015 eliminate assignment in conditional
dc1b937 08 Aug 2015 Remove `defaults` hash from `Dispatcher`
175e92c 08 Aug 2015 eliminate runtime conditional
246bfcb 08 Aug 2015 whitespace
5e81e6c 08 Aug 2015 remove the setter from `Scope`
05934d2 07 Aug 2015 deprecate the env method on controller instances
869b007 07 Aug 2015 the request object manages `env`
1f80f3a 07 Aug 2015 remove vestigial code
81cfdf2 07 Aug 2015 stop using @_env in the controller instance
2a3c47f 07 Aug 2015 finish deprecating handling strings and symbols
4485351 07 Aug 2015 the request class is never changed, so just use it direc...
e4f9a0b 07 Aug 2015 use Proc.new to reduce some conditionals
83b767c 07 Aug 2015 Using strings or symbols for middleware class names is d...
435b224 07 Aug 2015 move `valid?` conditional to the constructor
27eddbb 07 Aug 2015 simplify the Middleware constructor
9b7ecf0 07 Aug 2015 refactor param parsing middleware to use request objects
85969c7 07 Aug 2015 move flash hash access to methods on the request object
07b2ff0 06 Aug 2015 use a request object to access info from env in GetIp
6716ad5 06 Aug 2015 ask the request if we should show exceptions
38251d2 06 Aug 2015 prevent string allocations
6d85804 06 Aug 2015 ExceptionWrapper doesn't need to know about `env`
6caeec5 06 Aug 2015 reuse the request object in the File serving middleware
595bef5 06 Aug 2015 get the underlying REQUEST_METHOD from the superclass
8f27d60 06 Aug 2015 use a request object to reduce string allocations and no...
3908a6d 06 Aug 2015 remove dead code
1989b20 06 Aug 2015 ask the request for the cookie jar
447c2cb 06 Aug 2015 add a setter for the cookie jar
e18ebd2 06 Aug 2015 remove request reference from chained jars
3d32a50 06 Aug 2015 remove `@host` ivar
aad33d5 06 Aug 2015 remove @secure ivar
78960cf 06 Aug 2015 CookieJar does not need the key_generator parameter anymore
197141a 06 Aug 2015 eliminate key_generator ivar
de6b43b 06 Aug 2015 sop passing host and secure to the build method
e6074a3 06 Aug 2015 stop using an options hash with the cookie jar
de59e6e 06 Aug 2015 move env access to the request object.
a31bfe6 06 Aug 2015 routes in the env via the request object
df71e48 05 Aug 2015 allocate a request object to avoid hash allocations
52cf1a7 22 Jul 2015 rm `deep_munge`. You will live on in our hearts (and git...
3f29929 22 Jul 2015 push param encoding in to the utils module
f620d6c 22 Jul 2015 stop keeping track of keys when "deep munging"
14e8377 22 Jul 2015 recurse for arrays in `normalize_encode_params`
5046d51 21 Jul 2015 drop conditionals in conversion logic
c75153d 21 Jul 2015 rearrange logic to use positive branches
0fedae6 17 Jul 2015 push fields_for_style? in to a protected method
e956172 17 Jul 2015 push is_a checks up the stack
7779e63 17 Jul 2015 remove useless conditional
89448a7 17 Jul 2015 remove useless conditionals
2df8e86 17 Jul 2015 stop passing `params` to `array_of_permitted_scalars_fil...
55d0e6f 17 Jul 2015 push key checking up
cb3f255 17 Jul 2015 remove useless function
4d4d764 14 Jul 2015 Rack implements `redirect?` so we don't need it
468a55b 14 Jul 2015 Merge pull request #20866 from jdantonio/countdown-latch
9cff248 14 Jul 2015 only call methods that are on the superclass
908bc79 14 Jul 2015 use a lookup table for `assert_response`
d9fe10c 14 Jul 2015 only have one TestResponse class
b37e29e 14 Jul 2015 move buffer caching on to the buffer
cc60b5e 10 Jul 2015 remove Rack::Lock for webrick
8f81f7a 10 Jul 2015 Merge pull request #17102 from matthewd/load-interlock
e459b29 10 Jul 2015 default `PATH_INFO` to the generated path
8b4eca0 10 Jul 2015 always default the SCRIPT_NAME to whatever is on the con...
85903d1 10 Jul 2015 Remove useless conditional
3c5bd78 10 Jul 2015 we don't really need an extra method to set the script name
889a4a3 10 Jul 2015 remove useless ivar clearing
314ac0c 10 Jul 2015 call the `path_parameters=` setter rather than rely on m...
79ab812 10 Jul 2015 remove param dup'ing logic
11bc078 10 Jul 2015 no more HWIA
0adb8f8 10 Jul 2015 Parameters are converted to a query string
f1fcf9b 10 Jul 2015 start collecting `env` mutations
c546a2b 10 Jul 2015 encode / decode parameters before assigning them to the ...
f3bae24 10 Jul 2015 start disconnecting the parameter parser from the instance
a1d7d65 10 Jul 2015 drop a conditional by always assigning
eb10496 09 Jul 2015 drop runtime conditionals in parameter parsing
140d5a3 09 Jul 2015 use `Rack::Test::UploadedFile` when uploading files
394b7be 09 Jul 2015 set parameters as a query string
40ed4ee 09 Jul 2015 use JSON to communicate between the controller and the t...
5ea8efe 08 Jul 2015 build and assign parameters rather than rely on mutations
2838a1f 08 Jul 2015 use new constructor. (Oops! :bomb:)
9f09848 08 Jul 2015 assign the cookie hash on request allocation
f65fd25 08 Jul 2015 request objects are no longer recycled
b5a9525 08 Jul 2015 pass the variant as a parameter to more reflect real wor...
78a5124 08 Jul 2015 add a new constructor for allocating test requests
db41f33 08 Jul 2015 make `env` a required parameter
3cae6bc 08 Jul 2015 pass the starting env and session to build_request
4b1a0ad 08 Jul 2015 remove call to build_request
3806eb7 08 Jul 2015 pass the session and env in to the test request
460079a 08 Jul 2015 let the superclass build the request and response
ef2d7a6 08 Jul 2015 remove useless `new` implementation
2b5d309 08 Jul 2015 allocate new responses rather than recycling them
59a9068 07 Jul 2015 pass variants in rather than mutating the request.
17439e3 25 Jun 2015 remove bad test.
5690358 17 Jun 2015 Remove ContentLength middleware from the defaults.
9b63529 16 Jun 2015 enforce a depth limit on XML documents
50176b5 16 Jun 2015 remove `header=` on the response object.
dd8c76d 15 Jun 2015 set the default charset in response initialize
3692ca5 13 Jun 2015 don't hold a reference to `env` in the options object
04e727d 12 Jun 2015 Merge pull request #18365 from pocke/fix_datatime_compare
bbbe1a5 09 Jun 2015 remove unused code
877c133 09 Jun 2015 we only care about methods that the request object respo...
8037d7e 09 Jun 2015 extract required_defaults from the conditions hash befor...
6c44161 03 Jun 2015 pass check_ip and proxies to GetIp constructor
c10630b 23 May 2015 remove useless ivar
cf985d1 23 May 2015 add a branch to eliminate multiple nil checks
42e66fa 22 May 2015 move request id manipulation to the request object
0e12300 19 May 2015 parent_reflection should store only a reflection object
fcc4683 04 May 2015 Merge pull request #17632 from eugeneius/schema_cache_du...
7bdc763 19 Mar 2015 Merge pull request #19404 from dmathieu/remove_rack_env
5eaeb37 05 Mar 2015 don't need to rescue Exception in this case
ff18049 05 Mar 2015 :cut: remove unnecessary rescue Exceptions
67c1fa9 05 Mar 2015 remove unnecessary rescue
798a14a 05 Mar 2015 pass a config to the route set
c210892 04 Mar 2015 Drop request class from RouteSet constructor.
d596326 04 Mar 2015 Merge pull request #19191 from tjschuck/cache_timestamp_...
12f2fc5 02 Mar 2015 Merge pull request #15806 from tgxworld/partition_routes...
0727851 02 Mar 2015 Revert "mutate the transaction object to reflect state"
0814bb6 02 Mar 2015 be optimistic about missing route keys
b1051c5 02 Mar 2015 use arg size for parallel iteration
37654d1 02 Mar 2015 ask the routes objects for its Rack env key
a38732c 02 Mar 2015 delete unused method
ec51c3f 02 Mar 2015 ask the txn for it's state, not a state object
393e65b 02 Mar 2015 mutate the transaction object to reflect state
7be5010 02 Mar 2015 change if! to unless
57d35b2 02 Mar 2015 call `sync_with_transaction_state` inside `persisted?` t...
10058ea 02 Mar 2015 remove useless instance variable
3a156ec 02 Mar 2015 remove useless conditional
95c76a7 02 Mar 2015 drop allocations for string and class polymorphic routes
4cfa10c 02 Mar 2015 refactor `handle_model` to use private helper methods fo...
402331e 02 Mar 2015 drop string allocations per model url_for call in views
cad20f7 01 Mar 2015 move _generate_paths_by_default to where it is used
92849df 01 Mar 2015 drop allocations when handling model url generation
149a1e1 25 Feb 2015 cache quoted column names in SQLite3
4cd0da5 25 Feb 2015 Merge pull request #19068 from pda/ar-translate-exceptio...
f4bee7e 25 Feb 2015 Merge pull request #17426 from jpcody/fixture_associatio...
a71350c 16 Feb 2015 Revert "Don't unhook autoloading in production"
b03b09d 12 Feb 2015 remove meta programming
4cf3b8a 12 Feb 2015 there is always an integration session, so remove the check
303567e 12 Feb 2015 lazily create the integration session
fa63448 12 Feb 2015 use before_setup to set up test instance variables
83c1973 02 Feb 2015 Merge pull request #18612 from eileencodes/fix-validates...
58410b3 01 Feb 2015 add destroyed records to the currend transaction
c7f22c7 01 Feb 2015 make the private methods private
da8de91 01 Feb 2015 push add to transaction logic down to the instance
f958ec1 01 Feb 2015 stop making calls to add_record
e87ff50 01 Feb 2015 remove conditional that is always true
e6d8f43 01 Feb 2015 Merge pull request #18721 from sj26/pre-discard-flash
aa8ade5 01 Feb 2015 Merge branch 'master' into mdluo-master
e2ccfeb 01 Feb 2015 Merge pull request #18760 from hjoo/fix_fixtures
c792203 01 Feb 2015 Merge pull request #18512 from vipulnsward/18492-fixture...
6b4a595 31 Jan 2015 Merge pull request #18700 from nygrenh/better-required-m...
1fb9e6e 28 Jan 2015 improve performance of integration tests.
4080dd2 30 Dec 2014 stop referencing `env` in url_for
87a7591 30 Dec 2014 use methods on the request rather than direct hash access
6818c2c 30 Dec 2014 Merge pull request #18219 from jaroslawr/master
4c2aaca 13 Dec 2014 Merge pull request #18019 from eileencodes/pass-connecti...
e47b523 01 Dec 2014 ugh, forgot to add this test to cdd90f39d796986dabf1678b...
c9a5ed2 01 Dec 2014 Merge pull request #17827 from rkh/rkh-fix-or-pattern
4dacedf 16 Nov 2014 correctly escape backslashes in request path globs
9c37d8e 10 Oct 2014 FileHandler should not be called for files outside the root
ace0322 04 Dec 2013 Merge pull request #13151 from hone/3-1-stable
5aeb472 01 Dec 2013 Only use valid mime type symbols as cache keys
e97530f 01 Dec 2013 Only use valid mime type symbols as cache keys
4d47885 09 Apr 2013 Merge branch '2-3-later' into 2-3-stable
46c26e8 09 Apr 2013 Merge branch '3-1-later' into 3-1-stable
77403a9 16 Mar 2013 fix protocol checking in sanitization [CVE-2013-1857]
f2839f1 11 Feb 2013 Revert "Merge pull request #9126 from mbarb0sa/bugfix/js...
182d4e3 11 Feb 2013 Merge branch '3-0-sec' into 3-0-stable
360af4e 11 Feb 2013 Merge pull request #9126 from mbarb0sa/bugfix/json-decod...
f8a2ec2 10 Feb 2013 adding test for CVE
b0bf30c 10 Feb 2013 adding test for CVE
10513d2 30 Jan 2013 Merge pull request #9111 from jsomara/3-0-json-fix