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 mailingli...@kataputt.com 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 (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com