Sounds fantastic. Any plans for an electronic version of the book? I'll buy it 
right now if it's available. 


On Jun 16, 2013, at 3:50 AM, Markus Ruggiero wrote:

> One year ago at WOWODC12 I said I'd write a WO Book. It was not done by year 
> end as I hoped, but now it is here!!! I wrote it just for fun, it's a hobby 
> project and so I often had to interrupt working on it when a customer 
> threatened my with work he was willing to pay for. Anyway, it's done now, 
> just some minor formatting task left for the final print. And already I do 
> have more than enough ideas for a successor. No promise yet, might take 
> another year -- and of course only when there is interest being shown.
> 
> The book will go to print within the next couple weeks. 
> 
> I'll bring pre-print evaluation copies to WOWODC13. One more reason to come 
> to Montréal!! Be the first to actually see and browse and read the new book 
> about WebObjects and Wonder.
> 
> Table of Contents
> Part A  - The Environment     8
> 1     Introduction    9
> 1.1   A bit of history        9
> 1.2   Where do we stand today?        10
> 1.3   What do you need to create great Project Wonder applications?   10
> 1.4   Hi-level overview of the frameworks     10
> 1.4.1 What is a Framework?    11
> 1.4.2 WebObjects Frameworks   11
> 1.4.3 Project Wonder Frameworks       11
> 2     Setting up your development environment 13
> 2.1   What do you need?       13
> 2.1.1 Hardware suitable for Project Wonder development        13
> 2.1.2 Software needed for Project Wonder development  13
> 2.2   Where goes what?        14
> 2.3   Installing the tools    16
> 2.3.1 Automatic installation of Eclipse and WOLips    16
> 2.3.2 Manual installation of Eclipse and WOLips       17
> 2.4   Installing the frameworks       20
> 2.4.1 Installing WebObjects   20
> 2.4.2 Installing Project Wonder       21
> 2.4.3 Final test if everything is installed properly  30
> 3     Where to get help       34
> Part B - Basic Concepts and Classes   36
> 4     Our first application   37
> 4.1   Overview of the request-response-loop   37
> 4.2   Direct connect during development       37
> 4.3   Layout of the BasicConcepts Project     37
> 4.4   Editing and working with Components     40
> 5     Design patterns 47
> 5.1   Model View Controller   47
> 5.2   Key Value Coding        49
> 5.2.1 Let’s play a bit with key-value-coding  49
> 5.2.2 For the Curious: The NSKeyValueCoding Interface 52
> 5.3   Summary 52
> 6     Request Response Loop   53
> 6.1   The WOAdaptor   54
> 6.2   The classes WORequest and ERXRequest    55
> 6.3   The classes WOResponse and ERXResponse  56
> 6.4   The classes WOContext and ERXWOContext  56
> 6.5   Summary 57
> 7     Application, Session, and Component Classes     58
> 7.1   The Application class ERXApplication    58
> 7.1.1 Playing with the application class      59
> 7.2   The Session class ERXSession    60
> 7.2.1 Session mechanics in Wonder     61
> 7.2.2 Session id with cookies 62
> 7.2.3 Lifetime of a session   64
> 7.3   The view/controller combo WOComponent and the controller class 
> ERXComponent     66
> 7.3.1 What is a (WO)component?        66
> 7.3.2 Layout of a component   66
> 7.3.3 Creating a new component object 67
> 7.3.4 The view part of a component    68
> 7.3.5 Other parts of a component      69
> 7.4   Summary 70
> 8     Flow of control 71
> 8.1   awake() and sleep() methods     71
> 8.2   Processing the request  73
> 8.2.1 Phase 1, getting input data from the request    73
> 8.2.2 Phase 2, acting upon the request, processing the data   74
> 8.2.3 Phase 3, generating the response        74
> 8.3   Handling of navigation  74
> 8.4   The page cache and backtracking 77
> 8.5   Summary 79
> 9     Wonder has its own advanced collection classes  80
> 9.1   Array-like classes NSArray and NSMutableArray   80
> 9.2   Playing with NSArray and NSMutableArray 80
> 9.3   HashMap-like classes NSDictionary and NSMutableDictionary       81
> 9.4   Playing with NSDictionary and NSMutableDictionary       81
> 9.5   Summary 82
> 10    Repeating and Conditional HTML  83
> 10.1  Repeating Data in a Web Page with WORepetiton   83
> 10.2  Conditional HTML        86
> 10.3  Summary 88
> 11    HTML forms and gathering user input     89
> 11.1  The WOForm element      89
> 11.2  Text input fields       89
> 11.2.1        WOTextField     90
> 11.2.2        WOText  91
> 11.2.3        WOPasswordField 91
> 11.3  Checkboxes and Radio Buttons    91
> 11.4  Popup Buttons and Selection Lists       94
> 11.5  Arbitrary Dynamic html Elements? WOGenericElement and 
> WOGenericContainer to the rescue  96
> 11.6  Actions make Things happen – Elements that can trigger Actions  96
> 11.7  Summary 99
> 12    Custom Components       100
> 12.1  Creating a custom component     100
> 12.2  The WOComponentContent Component        108
> Part C - Enterprise Objects   111
> 13    Enterprise Objects      112
> 13.1  What are Enterprise Objects?    112
> 13.2  Enterprise Objects have Behavior        112
> 13.3  The Technical Side of Enterprise Objects        112
> 14    The Editing Context     114
> 14.1  The classes ERXEC and EOEditingContext  114
> 14.2  Accessing the editing context   114
> 14.3  Working with your own editing context   115
> 15    Objects and the Relational World – The Data Model       116
> 15.1  Entities, Classes, and Relational Tables        116
> 15.2  Creating the EOModel    117
> 15.3  Creating entities       122
> 15.4  Creating attributes and other entities  124
> 15.4.1        Attribute Settings      126
> 15.5  Adding simple relationships     128
> 15.6  Adding a many-to-many relationship      129
> 15.7  Add the JDBC driver for your database to the project    132
> 15.8  Generating the database structure       133
> 15.9  Generating the Java class files 134
> 15.9.1        How Java class files are being generated        135
> 16    Fetching Enterprise Objects     139
> 16.1  Qualifying – How To Build Qualifiers    139
> 16.1.1        Testing for equality    139
> 16.1.2        Wildcard qualifying     139
> 16.1.3        Qualifying across a key path    139
> 16.1.4        Building an SQL like qualifying string  139
> 16.1.5        Qualifying for NULL values      140
> 16.1.6        In-Memory Filtering of an Array 140
> 16.2  What Order Do You Like Your Objects? – Sorting  140
> 16.2.1        In-Memory Sorting of an Array   141
> 16.3  The Fetch Specification ERXFetchSpecification   141
> 16.3.1        Building a Fetch Specification Manually in Code 141
> 16.4  FetchSpecification in the Model 142
> 16.5  Putting it all together 146
> 16.6  Using the Wonder Convenience Methods for Fetching       146
> 16.7  Using EOUtilities Convenience Methods   147
> 16.8  A Complete Fetch Example        147
> 17    Editing Enterprise Objects      152
> 17.1  The Editing Context revisited   152
> 17.2  Creating New Enterprise Objects 153
> 17.3  Deleting Enterprise Objects     153
> 17.4  Saving Changes, Reverting Enterprise Objects to Previous State  153
> 18    Working with Relationships      155
> 18.1  Adding an Object to a Relationship      156
> 18.2  Breaking the Relationship between Objects       156
> 18.3  WOToOneRelationship and WOToManyRelationship Components 157
> Part D - More Useful Things   159
> 19    Working with Cookies    160
> 19.1  Sending cookies in the response 160
> 19.2  Receiving cookies in the request        161
> 19.3  A cookie example        161
> 19.4  Issues with cookies     165
> 20    Display Groups and Batch Navigation     166
> 20.1  What is a display group?        166
> 20.2  Using a display group   166
> 20.3  Defining and Initializing a Display Group with the Graphical Editor     
> 169
> 20.4  Batch Navigation with Display Groups    172
> 20.5  How does a display group work under the hood?   175
> 20.6  “To DisplayGroup” or not “To DisplayGroup”, that’s the Question!        
> 176
> 20.7  Initializing a Display Group in Code    176
> 21    Direct Actions  177
> 21.1  Direct Actions – a Lightweight Request-Response-Loop    177
> 21.2  There are different request handlers to a Wonder application    177
> 21.3  Setting the Default Request Handler     178
> 21.4  Direct Actions in Action        178
> 21.4.1        The Main component      179
> 21.4.2        Direct Action Methods   181
> 21.4.3        Accessing Form Values   181
> 21.4.4        Accessing the Database and the Editing Context  182
> 21.5  Direct Actions and Sessions     182
> 21.6  Creating direct action URLs     183
> 21.7  When would you use direct actions?      183
> 21.8  Example: Using a direct action to generate a CSV file   184
> 22    Debugging and Logging   186
> 22.1  Generating log output to the console    186
> 22.1.1        Using NSLog     186
> 22.1.2        Logging with Log4j      187
> 22.1.3        Logging SQL statements  188
> Part E - Deployment   191
> 23    Introduction to Deployment      192
> 23.1  Requirements    192
> 23.2  The Big Picture 193
> 23.3  Deployment Architecture 194
> 23.4  Split install   194
> 23.5  The Role of wotaskd     194
> 23.6  The Role of JavaMonitor 195
> 24    Setting up the Server   197
> 24.1  Preparing the Directory Structure       197
> 24.2  Installing JavaMonitor and wotaskd      197
> 24.3  Setting up the Web Server and WOAdaptor 200
> 24.4  Creating Symbolic Links for Convenience 203
> 24.5  Setting up the Server in JavaMonitor    204
> 25    Building Your Application for Deployment        209
> 26    Deploying Your Application      216
> 26.1  Bring the Application over to the Server        216
> 26.2  Making the Application known to JavaMonitor and wotaskd 217
> 26.3  Managing the application with JavaMonitor       221
> 26.3.1        Configuring the Site    221
> 26.3.2        Application Settings    226
> Table of Pictures and Graphics        230
> Index         233
> 
> 
> 
> Markus Ruggiero
> [email protected]
> Check out the new book about Project Wonder and WebObjects on 
> http://www.kataputt.com/
> 
> 
> 
> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/sparky005s%40yahoo.com
> 
> This email sent to [email protected]

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to