Blake Watters
d9d0f7a650
Eliminated the global sharedQueue in favor of allowing each RKClient to own its a private queue. This eliminates problems where multiple clients are tracking reachability notifications and mutating the suspension state on a single queue. If you want to use a single queue across multiple RKClient instances, you can assign a single queue to both and worry about suspension and reachability yourself. fixes #278
2011-09-03 15:52:45 -04:00
Blake Watters
7ca39d8127
Rename spec target. Remove .orig file hanging out in git
2011-08-29 20:35:24 -04:00
Blake Watters
d81079168c
Expanded rake validate task to build all the example projects. fixes #300
2011-08-16 21:11:21 -04:00
Blake Watters
570b13ca07
Updated Object Mapping documentation, added support for inferring object mappings based off of the type of the object used in postObject:, putObject:, etc. Made KVC validation optional.
2011-07-23 23:47:03 -04:00
Blake Watters
7246afc998
Fixes to enable RestKit Core Data to be easily unit tested from a Unit Testing bundle. Improved thread safety in the request queue and fixed an issue where requests dispatched from background threads would not get callback methods due to thread termination. The request queue now guarantees requests are sent from the main thread.
2011-07-21 11:33:17 -04:00
Blake Watters
ae29401841
Added specs for zero-length Content-Length header when params is nil or empty
2011-07-20 22:56:22 -04:00
Blake Watters
40eb842dcc
Store new objects by lookupValue instead of primaryKeyValue. This avoids creation of duplicated objects the are manufactured by findOrCreateInstanceOfEntity:
2011-07-07 22:40:46 -04:00
Blake Watters
73fb461a8b
Reworked object mapping behaviors to better accommodate situations where the server side responds with a successful status code and a payload that does not contain any mappable attributes or relationships. We now consider this to be successful. If a mapping operation is performed that does not result in any mappings being applied, it will return NO without setting an error. If an instance of RKObjectMapper is invoked that does not find any mappable content in the payload, this will result in an unmappable content error. The object loader guards against this by not attempting to map any empty payloads. This should ensure that you only get the unmappable content error if you have asked RK to load and map a payload it cannot find an object mapping for.
2011-07-07 09:53:46 -04:00
Blake Watters
c171bed7d3
Don't generate an unmappable content error if a successful status code is returned along with an empty response body. This enables the use of the status code to indicate success without any content for mapping. In these cases, we wrap the targetObject of the loader into a RKObjectMappingResult at the @"" keyPath so that the delegates are invoked as expected. closes #189
2011-07-06 22:01:10 -04:00
Blake Watters
6376274900
Fixes for URL encoding of paramters in GET request. closes #193
2011-07-06 15:27:40 -04:00
Blake Watters
dddc4c3d0a
Fix for crash when coercing an empty object mapping result set into a singular result with asObject. closes #190
2011-07-05 16:56:34 -04:00
Blake Watters
348e86cbc8
Fix for inappropriate suspension of the main queue when using an IP address instead of a hostname.
2011-07-05 16:23:38 -04:00
Blake Watters
f0e8e8d44f
Coerce primary keys to strings in the thread-local lookup cache to handle lookups for numeric or string keys coming back in the JSON
2011-07-02 15:03:08 -04:00
Blake Watters
546eb627cd
Respect the root keyPath when constructing a temporary object mapping provider. Covers the case where an object mapping targeting nested content is being directly specified.
2011-07-02 11:04:56 -04:00
Blake Watters
72f26690ed
Fixing crash from over-release of RKParams.
2011-06-30 17:19:12 -04:00
Blake Watters
3b89382da7
Fix broken test around creation of request serialization
2011-06-30 13:11:31 -04:00
Blake Watters
7053a8ca97
Add support for sending objects of one type and getting back another. Target object has been disambiguated into sourceObject and targetObject
...
and act independently with regards to serialization and destination mapping. When you leverage the getObject:mapResponseWith: flavor of methods,
the type of your sourceObject is checked with the destination type of the object mapping. If they agree, it is assumed that you are trying to update
the object with the results of the mapping and targetObject is set appropriately. If they do not match, the targetObject is set to nil so that new
objects will be loaded. closes #161 , #168
2011-06-30 10:33:39 -04:00
Blake Watters
2ac45f5ccc
Refactored object loaders to provide easier support for non-nested JSON responses. There are new flavors of getObject:, postObject:, etc.
...
that allow the developer to explicitly specify the object mapping to use for processing the response. closes #168
2011-06-30 10:33:39 -04:00
Blake Watters
2e7adbdc1e
Restore the managed object cache functionality and add test coverage so it does not break again. fixes #167
2011-06-29 22:08:35 -04:00
Blake Watters
d57b784c30
Don't delete the managed object unless we were responsible for saving it in the first place. closes #125
2011-06-29 21:04:17 -04:00
Blake Watters
6faa525344
Added specs and support for either failing out the mapping operation or skipping over an attribute depending on key/value validation response. If NO is returned and a validation error is returned, the mapping operation will fail. If NO is returned without an error, the attribute will be skipped and a warning will be logged. You can also mutate the values. closes #166
2011-06-29 15:07:43 -04:00
Blake Watters
c97af0802b
Added new spec for RKURL. Implemented encoding of plus characters. fixes #170
2011-06-29 13:59:40 -04:00
Blake Watters
2a8ece97c1
Improvements to reachability, the request queue, logging throughout the network layer, decoupling of components via notifications, reliability improvements for unit tests in the cache layer. Improved thread-local cleanup routines inside the managed object store. Changing base URL's is now more reliable. fixes #171 , #158 , #113 , #104 , #102
2011-06-29 13:28:14 -04:00
Blake Watters
1cfa273224
Added new logging to the RKRequestQueue for inspecting what is happening. Eliminated use of copy during iteration of the request queue to avoid issues with re-entrant invocations of the queue resulting in the queue becoming starved. Fixed a number of flaky tests by making the RKSpec helpers stub out network availability. closes #164
2011-06-28 18:18:49 -04:00
Blake Watters
3dfbaf1810
Updated to support setting default value instead of nil when an attribute is missing in the payload. For Core Data backed models, we consult the entity definition to obtain the default value. closes #117
2011-06-28 15:22:04 -04:00
Blake Watters
851df3bcba
Changed signature of willMapData: to allow you to completely replace the mappableData.
2011-06-28 11:46:03 -04:00
Blake Watters
0949337749
Allow modification of the data in objectLoader:willMapData: by creating a mutable copy of the parsed data if the delegate method is implemented.
2011-06-27 16:37:55 -04:00
Blake Watters
0ca4a0feea
Added unit tests to loaders to investigate loading an array bug reports
2011-06-23 08:49:20 -04:00
Blake Watters
64db97ce60
Helper methods for retrieving attribute and relationship mappings by attribute/relationship keyPath. Useful for customizing serialization mappings that were built using inverseMapping.
2011-06-22 10:43:42 -04:00
Blake Watters
8ad1a84281
Reworked object loader to check if a response is mappable even if it is an error. We had an assertion failure that could be triggered by trying to load a remote error payload in a non-mappable format (i.e. text/html).
2011-06-21 13:27:15 -04:00
Blake Watters
3204682f72
Added object mapping management to the mapping provider for folks who don't have keyPaths. Deprecated setMapping:forKeyPath: in favor of setObjectMapping:forKeyPath: for consistency with the other method signatures.
2011-06-20 10:49:40 -04:00
Blake Watters
3bf4b7bc0f
Implemented nested mapping for structures similar to the BuildBot JSON structure. fixes #112
2011-06-17 15:36:28 -04:00
Blake Watters
323d5e30b1
Add support for mapping from NSNumber to NSDate by coercing to a time interval since 1970. fixes #141
2011-06-16 17:33:21 -04:00
Blake Watters
e65ea71b20
Updates to make parsedBody: implementation ready for merge. Migrated all remaining specs to RKSpec so failures don't cause crashes when you use the Hamcrest helpers. closes #153
2011-06-15 10:47:45 -04:00
Blake Watters
dafe3486e9
Added cache component to logging. Chased down some mystery failing tests. Added thorough logging to RKRequestCache.
2011-06-11 20:27:33 -04:00
Blake Watters
9299cabc11
Implemented flexible logging solution utilizing the excellent LibComponentLogging library.
2011-06-11 20:25:28 -04:00
Blake Watters
f3c0995d5e
Implementation of Object Mapping 2.0 design:
...
* Removed RestKit from inheritance hierarchy
* Mappings are implemented as concrete classes
* Mapper is much more flexible & powerful
* Much more robust error handling
* Serialization is reimplemented as an object mapping operation
* Added ability to serialize to JSON natively
* Reworked Core Data integration
* Simplified the codebase substantially
2011-06-11 19:26:56 -04:00
Victor Kryukov
eca655abbd
Add Three20.bundle to make sure TTAlert works
2011-06-11 14:47:41 +04:00
Blake Watters
4321da03b1
Expanded specs and began migrating all the content for testing out in the Fixtures directory. Fixtures is now the root for the Sinatra app and there are new helpers in RKSpecEnvironment.m. Added specs for several users use cases from the mailing list. Introduced a new warning when attempting to map did not set any properties.
2011-05-02 20:57:18 -04:00
Blake Watters
87d0cd13de
Added support for registering object class mappings as keyPaths in addition to element names. closes #82
2011-04-28 13:09:50 -04:00
Blake Watters
308b6c5dd2
Updates to RKObjectLoader to fix issues where keyPath was not always respected and willSendForObjectLoader: not invoked as expected. Expanded spec coverage to fix these issues. fixes #80 , fixes #81
2011-04-28 00:05:55 -04:00
Blake Watters
a648d26460
[ #11477593 ] Implemented background request policies and Specs. This provides functionality for continuing a request in the background using an iOS background task.
...
Introduces four modes for handling background requests:
* RKRequestBackgroundPolicyNone - The default behavior replicating pre-background behavior. No special action is taken with regards to backgrounding.
* RKRequestBackgroundPolicyCancel - On transition to the background, requests with this policy set will be cancelled automatically and the delegate informed.
* RKRequestBackgroundPolicyContinue - Requests with this policy will be continued in the background after the app has been transitioned.
* RKRequestBackgroundPolicyRequeue - Requests with this policy will be cancelled and then immediately placed onto the queue for processing the next time the app is returned to the foreground.
2011-04-05 13:06:06 -04:00
Blake Watters
9ed062121e
Fix for crash based on set nil for missing element policy. Added specs covering the crash. Merging directly to 0.9.1 and tagging as 0.9.1.1
2011-03-29 10:47:11 -04:00
Blake Watters
69c051a57a
Aligned target name with JSON parsers
2011-03-27 23:05:24 -04:00
Blake Watters
6fd9586e9c
Fixed RestKit aggregate build scheme
2011-03-25 10:54:43 -04:00
Blake Watters
b65e93cebb
Updated response loader to handle RKResponse and object arrays
2011-03-24 22:53:49 -04:00
Blake Watters
e143a51d10
Worked through remaining issues with Archive builds by switching RestKit aggregate target to a real target, avoiding the copy issues with RestKit.h. Made Skip Install a project level default. Believe we are all set finally
2011-03-24 12:09:07 -04:00
Blake Watters
3fa84490b6
Merge branch 'jsonkit' of https://github.com/GateGuru/RestKit into GateGuru-jsonkit
...
Conflicts:
RestKit.xcodeproj/project.pbxproj
2011-03-19 22:47:22 -04:00
Blake Watters
2109fae1ba
Finished cleaning up Core Data support. Happy with the new organization
2011-03-19 22:06:51 -04:00