www.it-ebooks.info Flex on Java BERNERD ALLMON JEREMY ANDERSON 11 MANN ING Greenwich (74 ü w. long.) www.it-ebooks.info For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 180 Broad St. Suite 1323 Stamford, CT 06901 Email: orders@manning.com ©2011 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. © Recognizing the importance of preserving what has been written, it is Manning's policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. 180 Broad St. Suite 1323 Stamford, CT 06901 Development Editors: Copyeditor: Typesetters: Cover designer: Nermina Pascal-Miller Sebastian Stirling Betsey Henkels Dennis Dalinnik Marija Tudor ISBN 9781933988795 Printed in the United States of America 123456789 10 - MAL - 16 15 14 13 12 11 10 www.it-ebooks.info contents foreword xi preface xiii acknowledgments xv about this book xvii author online xix about the authors xx about the cover illustration xxi PARTI LAYING THE FOUNDATION 1 J Some Flex with your Java? 3 1.1 A whirlwind tour of Flex 5 MXMLandActionScript 5' The Rex SDK 6 Flash Player 10 6 1.2 Creating an application in Flex 7 1.3 Finding the right tools and patterns 8 Building a Flex interface. 9 • Integrating with web services 9 • Integration with BlazeDS, logging, and messaging 10 • Securing Hex applica tions 10 • Crea ting custom Flex controls with Dégrafa II' Desktop 2.0 with Adobe AIR II' Flex and Grails 11 1.4 Summary 11 V www.it-ebooks.info X CONTENTS Beginning with Java 12 2.1 Working with AppFuse 13 2.2 Generating the application structure with Maven 13 Download and install the JDK 14 • Download and install MySQL 15 • Download and install Maven 15 • Create a Maven multimodule project 16 1 Maven provides a build able project 18* Running the NexBugs web application 19 2.3 Build the model objects 20 2.4 Build the DAOs 23 2.5 Build the services 24 2.6 Wiring things together with Spring 2V 2.7 Constructing the web tier 28 Building Struts 2 action classes 28 • Editing the issue menu item 30 • Adding JSP resources 30 • Adding property resources 33 • Configuring the struts.xml 34 Configuring Hibernate 36 2.8 Summary 37 Getting rich with Flex 38 3.1 Generating the application structure 38 3.2 Configuring the flex-bugs-ria module 40 3.3 Configure Maven for the flex-bugs-web module 42 3.4 Adding a wrapper for our SWF 44 3.5 "Hello World!" in Flex 44 3.6 Developing the FlexBugs application 46 Introducing ViewStack 47 * HeaderView 49 • FooterView Master view 52 • Detail view 53 • Commen ts view 54 3.7 Laying out the components 55 3.8 Creating a pop-up component 57 3.9 The finished application 58 3.10 Summary 59 Connecting to web services 60 4.1 Model View Presenter 61 4.2 Web services in Flex 62 4.3 Dispatching and handling events 63 Creating a custom ei>ent, 63 • Event, dispatching 64 www.it-ebooks.info CONTENTS vii 4.4 Creating Issue and Comment transfer objects 65 4.5 Enhancing the master view 66 Creating a Presenter for the master view 67 * Creating an Issue Model 69 • Updating the master view 70 4.6 Enhancing the detail view 72 Creating a DetailPresenter 72 • Updating the IssueModel 75 • Updating the detail view 76 4.7 Enhancing the comments view 77 Creating a comments presenter 77 • Creating a comment model 80 • CommentView 81 4.8 Adding a pop-up form for editing comments 83 Updating the CommentPresenter 83 • Updating the CommentModel 85 • Creating the pop-up component 85* Updating CommentsListView 87 4.9 Summary 88 PART II BLAZEDS REMOTING 89 5 BlazeDS remoting and logging 91 5.1 Introducing BlazeDS 92 5.2 Getting BlazeDS 93 5.3 Building a BlazeDS configuration Maven module 94 Configuring BlazeDS 96 5.4 Exposingjava services to Flex remoting 100 Web module configura tion upda tes 100 • Expose AMF remoting destinations 102 5.5 Connecting to Java with BlazeDS 104 5.6 Logging 105 BlazeDS logging 105 • Built-in BlazeDS benchmarking 107 5.7 Summaiy 110 Flex messaging 112 6.1 Setting up BlazeDS for messaging 113 Modifying the : services-config.xml 113 • Updating the webapp server-side module 114 www.it-ebooks.info viii CONTENTS 6.2 Modifying the client for messaging 117 Creating a ChannelSetFactory 117 • Changing the IssueModel 118 6.3 Summaiy 120 PART III THE JOYS OF FLEX ON JAVA 121 7 8 Securing and personalizing your application 123 7.1 Authentication 124 Modifying the ChannelSetFactory 124 • Creating a UserEvent 125 • Creating a login panel 126 • Creating a login Presenter 128 • Creating a login manager 130 Upda ting the header 131 • Enabling security for Flex 132 7.2 Authorization 133 Hex Spring Security primer 133 • Spring Integration Security 135 • @Secured annotations 135 Overriding default security settings 137 • Updating IssueModel and CommentModel 138 7.3 Personalization 139 Adding the• UserServiceto the : LoginModel 140 • Updating the LoginPresenter 141 • Updating the DetailPresenter and CommentsListPresenter 142 7.4 Summaiy 145 Charting with Degrafa 147 8.1 Drawing in Flex 148 8.2 Common Degrafa concepts 149 8.3 Creating a pie chart for fun and profit 150 New custom ei>ent. 151 • PieChart component 152 PieChartSlice 154 • Custom ItemRenderer 155 • Presenter for the PieChart 156 • Model for the PieChart, 158 8.4 Adding your pie chart to the application 159 Updating the GraphView 159 • Creating a Presenter for the GraphView 161 • Creating the graph model 163 8.5 Beyond the example 165 8.6 Summaiy 167 www.it-ebooks.info X CONTENTS Desktop 2.0 with AIR 168 9.1 Creating a common library 169 Creating an SWC project 170 ' Extracting common classes 172 ' Extracting a MainCanvas 172 9.2 Creating the AIR application 174 9.3 Packaging the AIR application 176 Crea ting a project to package the AIR app 177 * Genera ting a certificate 177 * Adding icons 178 * Adding the AIR configuration 179 * Configuring the package build 180 9.4 Distributing the AIR application 186 Assembly configuration 187 * Updating the build 187 * Creating a download badge 189 9.5 Summaiy 191 Testing your Flex application 192 10.1 Unit testing and TDD 193 10.2 Updating the project 194 10.3 Testing the Presenter 196 Testing refresh issues 198* Issues result event test 199* Testing issue removed 200 Remove issue result test 201 10.4 Testing the View 202 Testing the issues set property 203 * Testing resetlssueGrid function 204 * Testing refresh issues button click 204 Testing DataGrid item select 205 10.5 Testing the Model 206 Mocking and Remote-Object 207 * Testing getlssues 209 * Testing get single issue 209 10.6 Continuous integration with Hudson 210 Downloading and installing Hudson 211 * Configuring Hudson 211 * Con figuring a Hudson job 214 10.7 Summaiy 217 Flex on Grails 218 11.1 Why Groovy and Grails? 218 11.2 Downloading and installing Grails 219 www.it-ebooks.info X CONTENTS 11.3 Creating the Grails application 220 Create the Contact domain model 221 • Create the ContactService 222 • Bootstrap sample data 223 11.4 Getting rich with Flex 223 Installing the Flex plugin 223 • Creating the domain classes in Flex 224 • Creating the Flex application 225 • Adding the RemoteSeruice 228 • Putting it all together 228 11.5 Install the Grails JMS and ActiveMQ plugins 229 11.6 Add the ActiveMQ Spring bean 230 11.7 Subscribe the Flex client to the Grails JMS service 230 Update the services-config.xml 231 • Modifying the ContactService 232 • Update the Main, mxml 233 11.8 Summary 234 index 235 www.it-ebooks.info foreword Every ten to fifteen years there is a radical software paradigm shift. Many of us experi- enced die last shift as die web gained momentum and software was rebuilt for a new and game-changing deployment model. Today we are in die midst of anodier great software paradigm shift. User and business needs now require software to be more usable, extensible, and portable. Rich Internet Applications (RIAs) represent a new generation of software. As the name implies, RIAs provide users with a rich and interactive experience. At the same time, they offer the ease of deployment that made early web applications so successful. RIAs are the future of software because they combine the strengths of the web deploy- ment model with the full client capabilities of thick-client software. Since 2004 Adobe Flex has been die most prolific toolkit for building RIAs. A pri- mary advantage of Flex for RIA development is that it integrates easily with any back- end technology. By providing native XML, SOAP, and Data Remoting capabilities, Flex enables developers to build rich new UIs on top of existing services. For Java develop- ers this combination is especially compelling because many Java systems have already embraced service-oriented architectures with SOAP Web Services, Spring, or one of numerous other technologies. The union of Java on the backend and Flex on die frontend is so powerful that hundreds of thousands of developers have already embraced this new paradigm to create better software. You've probably picked up this book because you want to do the same tiling—build better software. We all want to build software that we are proud of—software that users will love. Flex on Java will teach you how to do just that. xi www.it-ebooks.info [...]... were trying to accomplish—demonstrating Flex and Java A f t e r much reflection and discussion o n the sample application, we decided to scrap it and use AppFuse, an o p e n source platform f o r quickly building Java w e b applications, as the basis f o r our application This allowed us to construct a sample application in just one short chapter AppFuse provided many functions out o f the b o x that... a robust Flex client that sits on top of a Java server-side application will be discussed throughout as it pertains to the integration of the two and passing data back and forth A l o n g with the main topic of integrating Flex with Java, topics such as Maven, Spring integration, adding security and personalization, charting, messaging, AIR desktop applications, logging, continuous integration, AppFuse,... application you can play with W e g o on to build a Flex client f o r the Java application that ties into some Java web services Part 1 covers the first four chapters In chapters 5 and 6 we dive deeper into backend integration with Java on the server side Part 2 introduces topics that allow Flex to connect to Java through object remoting, logging, and messaging Using the Spring Framework f o r Flex integration... b o o k on Flex f r o m a web developer perspective to Michael Stephens at Manning T h e b o o k took many shapes A t one time, we contemplated writing a b o o k on both Java and NET with Flex; we finally settled on an early version of what you now h o l d in your hands T h e main premise of the b o o k is that you can add a Flex f r o n t e n d to an existing application T h e first version of this... Online T h e purchase of Flex on Java includes free access to a private forum run by Manning Publications where you can make comments about die book, ask technical questions, and receive help f r o m die autiiors and otiier users To access and subscribe to die forum, point your browser to www.manning.com/FlexonJava This page provides information on how to get on the forum once you are registered, what... 2) is to create a Java application that will expose web services you will later use to connect to them f r o m a Flex client In chapter 3, you will create a Flex application and words like AppFuse, Flex Mojos, and FNA enter your vocabulary T h e focus of chapter 4 is to continue building the client-side application and you will begin building a Flex client that will connect to the Java web services... t 1 lays the foundation of Flex on Java by touring Flex, Java, and other supporting technologies that you will use throughout the book In these first four chapters, you will build a sample Java web application to use with numerous code examples throughout the book T h e Java web application is built using a service-oriented architecture (SOA) A f t e r making a whirlwind tour of Flex (chapter 1), your... integration techniques f o r Flex and Java, not language fundamentals, it was done so to make it easy f o r even Flex or Java beginners to get rolling quickly with both How the book is organized Flex on Java is made up of three parts: • Part 1 Getting started • Part 2 Strengthening the backend • Part 3 Going above and beyond W e start off by introducing the two technologies and building a sample Java application... rolling with Groovy and Grails development Integrating Flex with Grails is in many respects easier than integrating Flex with Java Flex d e v e l o p m e n t is n o w bolstered by many o f the benefits o f Java- like frameworks f o r p e r f o r m i n g unit testing, functional testing, and continuous integration T h e combination o f Java and the Flex Software D e v e l o p m e n t Kit (SDK) allows developers... set o f unit tests T h e Flex SDK and Flash Player are d i e two key elements in making a Flex application c o m e to life 1.1.2 The Flex SDK T h e Flex 4 SDK comes in two flavors: d i e Free A d o b e Flex SDK and the Open Source Flex SDK Both contain everytiiing you n e e d f o r developing, optimizing, and d e b u g g i n g Flex applications T h e SDKs include d i e ActionScript and M X M L compilers, . issue 209 10.6 Continuous integration with Hudson 210 Downloading and installing Hudson 211 * Configuring Hudson 211 * Con figuring a Hudson job 214 10.7 Summaiy 217 Flex on Grails 218 11.1. BlazeDS configuration Maven module 94 Configuring BlazeDS 96 5.4 Exposingjava services to Flex remoting 100 Web module configura tion upda tes 100 • Expose AMF remoting destinations 102 5.5 Connecting. www.it-ebooks.info Flex on Java BERNERD ALLMON JEREMY ANDERSON 11 MANN ING Greenwich (74 ü w. long.) www.it-ebooks.info For online information and ordering of this and other