Commit Graph

60 Commits

Author SHA1 Message Date
Blake Watters
9299cabc11 Implemented flexible logging solution utilizing the excellent LibComponentLogging library. 2011-06-11 20:25:28 -04:00
Blake Watters
f2ceefa012 Merge Request Queue (See issue #75):
* Introduces RKRequestCache for cacheing responses (supports ETag conditional GET, use cache if available, use cache on error, etc.) closes #75
    * Updates to Three20 layer to eliminate need for intermediary TTTableItem classes closes #76
    * Fixes to ensure iOS 3.x compatability:
        * Switched compiler to Clang
        * Updated conditional checks for UIBackgroundTask symbols to ensure runtime safety on iOS 3.x
        * Removed unnecessary linkage against UIKit and CoreFoundation from library targets
    * Fix for issue where RKRequest objects could become stuck in infinite loop within RKRequestQueue loadNextInQueue if you start
      a request and then cancel immediately. On cancel only decrement loadCount if the request has start loading. refs #122
2011-06-11 19:28:44 -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
Pat Shields
eecf87e71a Don't leak object passed in to loader. 2011-05-27 12:46:36 -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
Andrew Newdel
e277e636f8 Add a modified handleTargetObject implementation from RKManagedObjectLoader to give RKObject a chance to respond to willSendWithObjectLoader. 2011-04-21 19:32:29 -04:00
Andrew Newdel
bbce5abfd4 Use the keyPath property to map a subset of the response for a single target object. 2011-04-21 19:24:41 -04:00
Blake Watters
9af6a59c79 Initial implementation of documentation generation using the Appledoc parser. refs #48
* Cleaned up various mismatches in method signatures that were preventing documentation generation
* Removed naked ampersands from comments as they cause XML parser failures during docset generation via appledoc
2011-04-14 22:55:58 -04:00
Blake Watters
9593612aab Closes gh-47. Initial implementation of OS X build integrating changes submitted by Felix Holmgren (https://github.com/Felixyz/RestKit).
* Factored out display of alerts into RKAlert interface that hides the differences between UIKit and OS X Cocoa.
* Added macosx to supported platforms to enable build on OS X.
* Configured project to use conditional architectures to enable building on OS X and iOS from the same targets.
* Implemented a bare-bones OS X example app.
* Create `rake build` task for building RestKit against iOS and OS X SDK for quick testing.
2011-04-12 21:02:25 -04:00
Blake Watters
9dcd7f3022 Removed superclass call to didFinishLoad: in RKObjectLoader. Was resulting in duplicated dispatch of life-cycle requests. Fixes #44 2011-04-12 19:11:31 -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
c90ec2770d Finished cleanup of HTTP AUTH and XML Support. Ready to tag 0.9.1 2011-03-28 23:29:06 -04:00
Blake Watters
69c051a57a Aligned target name with JSON parsers 2011-03-27 23:05:24 -04:00
Blake Watters
a298bc4dcf Fix build problems 2011-03-27 22:53:08 -04:00
Blake Watters
227f35a20d Merge branch '0.9' into xml-parser
Conflicts:
	Examples/RKTwitter/Classes/RKTwitterViewController.m
	README.md
	RestKit.xcodeproj/project.pbxproj
2011-03-27 22:29:19 -04:00
Blake Watters
2109fae1ba Finished cleaning up Core Data support. Happy with the new organization 2011-03-19 22:06:51 -04:00
Blake Watters
88a1b013fc Merge remote branch 'origin/0.9' into core-data-cleanup
Conflicts:
	Code/CoreData/CoreData.h
	Code/CoreData/RKManagedObjectStore.h
	Code/CoreData/RKManagedObjectStore.m
	Code/CoreData/RKObjectSeeder.h
	Code/CoreData/RKObjectSeeder.m
	Code/ObjectMapping/RKObjectLoader.m
	Code/ObjectMapping/RKObjectManager.m
	Code/ObjectMapping/RKObjectMapper.m
	RestKit.xcodeproj/project.pbxproj
2011-03-19 21:26:13 -04:00
Jeremy Ellison
bc482efd31 Working XML Support. Twitter example working (XML and JSON) 2011-03-01 13:54:00 -05:00
Blake Watters
e03c6d3d10 Fixed crash during dealloc of RKClient due to initialization of baseURL observer using a blank host. Updated the object mapper to support class/keypath when loading a single object. Some updates to the UISpec harness to get things working again. 2011-02-25 14:42:50 -05:00
Blake Watters
3467ac5d49 DiscussionBoard and RKTwitter now build properly. May fold the code back out of RKManagedObjectLoader tomorrow. 2011-02-13 02:19:53 -05:00
Blake Watters
f83dc271f9 Finished cleaning up dependencies on Core Data. RKTwitter now builds without linking against Core Data or libRKCoreData.a 2011-02-13 02:04:51 -05:00
Blake Watters
b9e4f57fb0 Work in progress factoring Core Data dependencies out of the Object Mapping layer 2011-02-13 01:19:37 -05:00
Blake Watters
39a77057ed Removed saveObjectStore method on RKObjectManager, step toward separating Core Data from the base object mapping. RKObjectLoader now ensures that the object store is persisted appropriately before object loaders are sent 2011-01-21 00:56:17 -05:00
Blake Watters
07796df253 Refactored the Rails router to respect properties specified by the model objects. Introduced new support to allow models to modify RESTful object loaders just before they are sent. Sample app completely works. Really fucking happy with how this is turning out! 2011-01-21 00:15:02 -05:00
Jeremy Ellison
ac53cf9f2e Always return an NSManagedObjectContext from the NSThreadDictionary. Do not bless the one on the main thread. Ensure merges happen on the main thread.
Clean up error alert because of removal of goOffline support (as it was broken).
2011-01-13 14:33:28 -05:00
Jeremy Ellison
471a4ad137 RKObjectLoader should be set up with the object managers client, not the shared one.
This fixes support for apps using multiple baseURLs via multiple clients or managers.
2011-01-13 13:41:52 -05:00
Jeremy Ellison
6a5ee2af7e Revert "Remove per-file copyrights"
This reverts commit 91e7c6bb5e.
2011-01-12 15:27:19 -05:00
Jeremy Ellison
91e7c6bb5e Remove per-file copyrights 2011-01-12 15:05:22 -05:00
Jeremy Ellison
a4c3fc9dae Merge branch 'master' of github.com:twotoasters/RestKit 2011-01-06 15:48:31 -05:00
Jeremy Ellison
f690fa19f3 The RKRailsRouter no longer sends params with delete requests.
The RKObjectLoader will now clean up deleted objects inside of processLoadModelsInBackground:
2011-01-06 15:47:09 -05:00
Jeff Arena
88489747e8 add additional response convenience method for checking for a 503 response code; quiet a compiler warning regarding depracated client class method; add default support for generating a uialertview when restkit encounters a 503 response; added ability to turn 503 error on/off, as well as ability to customize the alert 2011-01-06 11:55:43 -08:00
Jeff Arena
e991ad7033 change RKRequest delegate didfinishload method signature to be a bit cleaner; added code to turn off the reachability observer when the app becomes inactive; changed online/offline state code to support an undetermined state at initial launch, so as to ensure we get all our proper notifications during first run; remove unnecessary debug logging from rkrequestqueue; removed three20 model code that was triggering a forced offline state, which currently does not have a recovery path (e.g. if the app is forced offline, we currently have no built-in mechanism to allow a force back online) 2010-12-08 09:45:26 -08:00
Jeff Arena
d91223b6fa fixed a crash related to parsing a non-JSON error from a response string; fixed issue with callbacks being fired after a request has been cancelled; fixed leak of resourcePath in RKRequestTTModel; fixed issue with autoreleasepool being drained before background thread objects have been transferred to the callback method; fixed issues with mutating the requestqueue array during enumeration while performing bulk cancels; added additional logging that has been helpful in tracking down many of these crashes (to be removed prior to merge to master) 2010-12-02 19:28:25 -08:00
Jeff Arena
507509fd3e bug fixes for issues related to error conditions that were preventing our request lifecycle from completing correctly 2010-12-02 14:17:58 -08:00
Jeff Arena
c9ba879937 removed duplicate delegates on RKObjectLoader; inverted control for communicating request completion from RKResponse to RKRequest; added state tracking to RKRequest for loaded and loading states; changed queue processing logic to check request states before firing new requests; removed retains of RKObjectLoader from RKRequestTTModel since our queue is handling retains for all asynchronous RKRequest flavors; added separate state tracking to RKRequestTTModel since there are subtle differences between the meaning of loaded/loading in Three20 versus our RKRequest states; removed delegate forwarding code from RKObjectLoader since it is no longer an RKRequestDelegate (which was quite ugly to begin with); removed unnecessary error contructor for RKResponse that was only being used to fire delegate callbacks when an RKRequest failed to fire in offline mode; added TODOs to deep-dive into synchronous request handling 2010-12-02 13:22:38 -08:00
Jeff Arena
6249ece2bc Merge branch 'reachability-queue-three20' of git://github.com/twotoasters/RestKit into reachability-queue-three20
Conflicts:
	Code/Network/RKRequest.m
	RestKit.xcodeproj/project.pbxproj
2010-12-01 21:06:54 -08:00
Jeff Arena
39f3d568e2 added reachability support at the manager and client level; added code to short circuit requests if offline; fixed issue with source parameter on loader related to passing managed objects across thread boundaries; added resource path property to the loader 2010-11-30 19:38:27 -08:00
Jeff Arena
7e1e1807bd dry-up object store saves on the manager; use an ivar over the request userdata for storing the source on the manager 2010-11-09 09:35:13 -08:00
Jeff Arena
e6c5d9adee fixed delegate call that was improperly passing an nsstring in place of an nserror 2010-11-01 20:34:03 -07:00
Blake Watters
66bcb412c1 Check for JSON response type before parsing 2010-10-28 16:09:40 -04:00
Blake Watters
81c66cb37f Add check to RKObjectLoader to verify that the response type isJSON before starting mapping. This can avoid a nasty crash if the remote side sends back an HTML payload (i.e. an error page) 2010-10-27 13:00:24 -04:00
Blake Watters
0127df862d Added support for tracking upload progress 2010-10-26 14:05:29 -04:00
Blake Watters
ec0c221a33 Allow for mapping directly into an object that doesn't have an element registered with the mapper. We check that the class implements RKObjectMappable and blow up otherwise. Updated comments on the loader... 2010-10-21 13:31:21 -04:00
Blake Watters
4427844e07 Introduced objectLoaderDidLoadUnexpectedResponse: delegate method for handling odd-ball responses during an object load 2010-10-20 21:04:20 -04:00
Blake Watters
bd48ae37db Changed globalClient and globalManager to sharedClient and sharedManager to be more in line with Cocoa framework. Marked old methods as deprecated. 2010-10-20 20:29:27 -04:00
Blake Watters
1a42e8865e Remove accidentally committed log statement 2010-10-20 15:00:59 -04:00
Blake Watters
d1883ddc11 make object loader retain self during send operations 2010-10-20 13:57:16 -04:00
Blake Watters
3dff8b0f0d Merge branch 'master' of github.com:twotoasters/RestKit into managedobjectcleanup
Conflicts:
	Code/ObjectMapping/RKObjectLoader.m
2010-10-19 14:28:18 -04:00